diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..3729ff0 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,25 @@ +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/azds.yaml +**/bin +**/charts +**/docker-compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md \ No newline at end of file diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..c426b48 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,158 @@ +root = true + +[*] +roslynator_accessibility_modifiers = explicit +roslynator_use_anonymous_function_or_method_group = anonymous_function|method_group +roslynator_enum_has_flag_style = method +roslynator_object_creation_type_style = explicit|implicit|implicit_when_type_is_obvious + +indent_style = space + +trim_trailing_whitespace = true + +insert_final_newline = false + +[*.md] +trim_trailing_whitespace = false + +[*.json] +indent_size = 2 + +[*.cs] +dotnet_sort_system_directives_first = true:warning + +csharp_style_namespace_declarations = file_scoped:warning + +csharp_style_var_for_built_in_types = false:warning + +csharp_style_var_when_type_is_apparent = true:warning + +csharp_style_var_elsewhere = true:warning + +csharp_new_line_before_members_in_anonymous_types = true:warning + +# SA1623: Property summary documentation should match accessors +dotnet_diagnostic.SA1623.severity = none + +# SA1101: Prefix local calls with this +dotnet_diagnostic.SA1101.severity = none + +# SA1642: Constructor summary documentation should begin with standard text +dotnet_diagnostic.SA1642.severity = none + +# SA1309: Field names should not begin with underscore +dotnet_diagnostic.SA1309.severity = none + +# RCS1194: Implement exception constructors. +dotnet_diagnostic.RCS1194.severity = none + +# SA1000: Keywords should be spaced correctly +dotnet_diagnostic.SA1000.severity = none + +# SA1124: Do not use regions +dotnet_diagnostic.SA1124.severity = none + +# SA1413: Use trailing comma in multi-line initializers +dotnet_diagnostic.SA1413.severity = none + +# SA1201: Elements should appear in the correct order +dotnet_diagnostic.SA1201.severity = suggestion + +# SA1638: File header file name documentation should match file name +dotnet_diagnostic.SA1638.severity = warning + +# SA1633: File should have header +dotnet_diagnostic.SA1633.severity = none + +# SA1404: Code analysis suppression should have justification +dotnet_diagnostic.SA1404.severity = none + +# SA1206: Declaration keywords should follow order +dotnet_diagnostic.SA1206.severity = none + +# CA1040: Avoid empty interfaces +dotnet_diagnostic.CA1040.severity = none + +# RCS1012: Use explicit type instead of 'var' +dotnet_diagnostic.RCS1012.severity = none + +# RCS1008: Use explicit type instead of 'var' +dotnet_diagnostic.RCS1008.severity = none + +# CA1725 +dotnet_diagnostic.CA1725.severity = none + +# RCS1009: Use explicit type instead of 'var' +dotnet_diagnostic.RCS1009.severity = none + +# SA1402: File may only contain a single type +dotnet_diagnostic.SA1402.severity = suggestion + +# CA1711 +dotnet_diagnostic.CA1711.severity = none + +# CA1720: Identifier contains type name +dotnet_diagnostic.CA1720.severity = none + +# IDE0022: Use block body for methods +dotnet_diagnostic.IDE0022.severity = none + +# SA1011: Closing square brackets should be spaced correctly +dotnet_diagnostic.SA1011.severity = none + +# CA1721 +dotnet_diagnostic.CA1721.severity = none + +# SA1313: Parameter names should begin with lower-case letter +dotnet_diagnostic.SA1313.severity = none + +# SecurityIntelliSenseCS: MS Security rules violation +dotnet_diagnostic.SecurityIntelliSenseCS.severity = suggestion + +# SA1123: Do not place regions within elements +dotnet_diagnostic.SA1123.severity = none + +# RCS1046: Add suffix 'Async' to asynchronous method name +dotnet_diagnostic.RCS1046.severity = warning + +# SA1625: Element documentation should not be copied and pasted +dotnet_diagnostic.SA1625.severity = none + +# SCS9999 +dotnet_diagnostic.SCS9999.severity = none + +# RCS1090 Add call to 'ConfigureAwait' +dotnet_diagnostic.RCS1090.severity = none + +# RCS1170 Use read-only auto-implemented property +dotnet_diagnostic.RCS1170.severity = none + +# SA1649 +dotnet_diagnostic.SA1649.severity = none + +# RCS1021 Use expression-bodied lambda. +dotnet_diagnostic.RCS1021.severity = none + +# RCS1047 Remove suffix 'Async' from non-asynchronous method name. +# dotnet_diagnostic.RCS1047.severity = silent + +# SA1600 Elements should be documented +dotnet_diagnostic.SA1600.severity = silent + +# CS1591 Missing XML comment for publicly visible type or member +dotnet_diagnostic.CS1591.severity = none + +# SA1602: Enumeration items should be documented +dotnet_diagnostic.SA1602.severity = none + +# CA1720 Identifier 'Decimal' contains type name +dotnet_diagnostic.CA1720.severity = none + +# SA1601: Partial elements should be documented +dotnet_diagnostic.SA1601.severity = silent + +# CA1711 Rename type name UserEventHandler so that it does not end in 'EventHandler' +dotnet_diagnostic.CA1711.severity = none + +# CA1307: Specify StringComparison for clarity +dotnet_diagnostic.CA1307.severity = none \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..1ff0c42 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,63 @@ +############################################################################### +# Set default behavior to automatically normalize line endings. +############################################################################### +* text=auto + +############################################################################### +# Set default behavior for command prompt diff. +# +# This is need for earlier builds of msysgit that does not have it on by +# default for csharp files. +# Note: This is only used by command line +############################################################################### +#*.cs diff=csharp + +############################################################################### +# Set the merge driver for project and solution files +# +# Merging from the command prompt will add diff markers to the files if there +# are conflicts (Merging from VS is not affected by the settings below, in VS +# the diff markers are never inserted). Diff markers may cause the following +# file extensions to fail to load in VS. An alternative would be to treat +# these files as binary and thus will always conflict and require user +# intervention with every merge. To do so, just uncomment the entries below +############################################################################### +#*.sln merge=binary +#*.csproj merge=binary +#*.vbproj merge=binary +#*.vcxproj merge=binary +#*.vcproj merge=binary +#*.dbproj merge=binary +#*.fsproj merge=binary +#*.lsproj merge=binary +#*.wixproj merge=binary +#*.modelproj merge=binary +#*.sqlproj merge=binary +#*.wwaproj merge=binary + +############################################################################### +# behavior for image files +# +# image files are treated as binary by default. +############################################################################### +#*.jpg binary +#*.png binary +#*.gif binary + +############################################################################### +# diff behavior for common document formats +# +# Convert binary document formats to text before diffing them. This feature +# is only available from the command line. Turn it on by uncommenting the +# entries below. +############################################################################### +#*.doc diff=astextplain +#*.DOC diff=astextplain +#*.docx diff=astextplain +#*.DOCX diff=astextplain +#*.dot diff=astextplain +#*.DOT diff=astextplain +#*.pdf diff=astextplain +#*.PDF diff=astextplain +#*.rtf diff=astextplain +#*.RTF diff=astextplain diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8afdcb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1,454 @@ +## Ignore Visual Studio temporary files, build results, and +## files generated by popular Visual Studio add-ons. +## +## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore + +# User-specific files +*.rsuser +*.suo +*.user +*.userosscache +*.sln.docstates + +# User-specific files (MonoDevelop/Xamarin Studio) +*.userprefs + +# Mono auto generated files +mono_crash.* + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +x86/ +[Ww][Ii][Nn]32/ +[Aa][Rr][Mm]/ +[Aa][Rr][Mm]64/ +bld/ +[Bb]in/ +[Oo]bj/ +[Ll]og/ +[Ll]ogs/ + +# Visual Studio 2015/2017 cache/options directory +.vs/ +# Uncomment if you have tasks that create the project's static files in wwwroot +#wwwroot/ + +# Visual Studio 2017 auto generated files +Generated\ Files/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +# NUnit +*.VisualState.xml +TestResult.xml +nunit-*.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +# Benchmark Results +BenchmarkDotNet.Artifacts/ + +# .NET Core +project.lock.json +project.fragment.lock.json +artifacts/ + +# Tye +.tye/ + +# ASP.NET Scaffolding +ScaffoldingReadMe.txt + +# StyleCop +StyleCopReport.xml + +# Files built by Visual Studio +*_i.c +*_p.c +*_h.h +*.ilk +*.meta +*.obj +*.iobj +*.pch +*.pdb +*.ipdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*_wpftmp.csproj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opendb +*.opensdf +*.sdf +*.cachefile +*.VC.db +*.VC.VC.opendb + +# Visual Studio profiler +*.psess +*.vsp +*.vspx +*.sap + +# Visual Studio Trace Files +*.e2e + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# AxoCover is a Code Coverage Tool +.axoCover/* +!.axoCover/settings.json + +# Coverlet is a free, cross platform Code Coverage Tool +coverage*.json +coverage*.xml +coverage*.info + +# Visual Studio code coverage results +*.coverage +*.coveragexml + +# NCrunch +_NCrunch_* +.*crunch*.local.xml +nCrunchTemp_* + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +# Note: Comment the next line if you want to checkin your web deploy settings, +# but database connection strings (with potential passwords) will be unencrypted +*.pubxml +*.publishproj + +# Microsoft Azure Web App publish settings. Comment the next line if you want to +# checkin your Azure Web App publish settings, but sensitive information contained +# in these scripts will be unencrypted +PublishScripts/ + +# NuGet Packages +*.nupkg +# NuGet Symbol Packages +*.snupkg +# The packages folder can be ignored because of Package Restore +**/[Pp]ackages/* +# except build/, which is used as an MSBuild target. +!**/[Pp]ackages/build/ +# Uncomment if necessary however generally it will be regenerated when needed +#!**/[Pp]ackages/repositories.config +# NuGet v3's project.json files produces more ignorable files +*.nuget.props +*.nuget.targets + +# Microsoft Azure Build Output +csx/ +*.build.csdef + +# Microsoft Azure Emulator +ecf/ +rcf/ + +# Windows Store app package directories and files +AppPackages/ +BundleArtifacts/ +Package.StoreAssociation.xml +_pkginfo.txt +*.appx +*.appxbundle +*.appxupload + +# Visual Studio cache files +# files ending in .cache can be ignored +*.[Cc]ache +# but keep track of directories ending in .cache +!?*.[Cc]ache/ + +# Others +ClientBin/ +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.jfm +*.pfx +*.publishsettings +orleans.codegen.cs + +# Including strong name files can present a security risk +# (https://github.com/github/gitignore/pull/2483#issue-259490424) +#*.snk + +# Since there are multiple workflows, uncomment next line to ignore bower_components +# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) +#bower_components/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm +ServiceFabricBackup/ +*.rptproj.bak + +# SQL Server files +*.mdf +*.ldf +*.ndf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings +*.rptproj.rsuser +*- [Bb]ackup.rdl +*- [Bb]ackup ([0-9]).rdl +*- [Bb]ackup ([0-9][0-9]).rdl + +# Microsoft Fakes +FakesAssemblies/ + +# GhostDoc plugin setting file +*.GhostDoc.xml + +# Node.js Tools for Visual Studio +.ntvs_analysis.dat +node_modules/ + +# Visual Studio 6 build log +*.plg + +# Visual Studio 6 workspace options file +*.opt + +# Visual Studio 6 auto-generated workspace file (contains which files were open etc.) +*.vbw + +# Visual Studio LightSwitch build output +**/*.HTMLClient/GeneratedArtifacts +**/*.DesktopClient/GeneratedArtifacts +**/*.DesktopClient/ModelManifest.xml +**/*.Server/GeneratedArtifacts +**/*.Server/ModelManifest.xml +_Pvt_Extensions + +# Paket dependency manager +.paket/paket.exe +paket-files/ + +# FAKE - F# Make +.fake/ + +# CodeRush personal settings +.cr/personal + +# Python Tools for Visual Studio (PTVS) +__pycache__/ +*.pyc + +# Cake - Uncomment if you are using it +# tools/** +# !tools/packages.config + +# Tabs Studio +*.tss + +# Telerik's JustMock configuration file +*.jmconfig + +# BizTalk build output +*.btp.cs +*.btm.cs +*.odx.cs +*.xsd.cs + +# OpenCover UI analysis results +OpenCover/ + +# Azure Stream Analytics local run output +ASALocalRun/ + +# MSBuild Binary and Structured Log +*.binlog + +# NVidia Nsight GPU debugger configuration file +*.nvuser + +# MFractors (Xamarin productivity tool) working folder +.mfractor/ + +# Local History for Visual Studio +.localhistory/ + +# BeatPulse healthcheck temp database +healthchecksdb + +# Backup folder for Package Reference Convert tool in Visual Studio 2017 +MigrationBackup/ + +# Ionide (cross platform F# VS Code tools) working folder +.ionide/ + +# Fody - auto-generated XML schema +FodyWeavers.xsd + +## +## Visual studio for Mac +## + + +# globs +Makefile.in +*.userprefs +*.usertasks +config.make +config.status +aclocal.m4 +install-sh +autom4te.cache/ +*.tar.gz +tarballs/ +test-results/ + +# Mac bundle stuff +*.dmg +*.app + +# content below from: https://github.com/github/gitignore/blob/master/Global/macOS.gitignore +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + +# content below from: https://github.com/github/gitignore/blob/master/Global/Windows.gitignore +# Windows thumbnail cache files +Thumbs.db +ehthumbs.db +ehthumbs_vista.db + +# Dump file +*.stackdump + +# Folder config file +[Dd]esktop.ini + +# Recycle Bin used on file shares +$RECYCLE.BIN/ + +# Windows Installer files +*.cab +*.msi +*.msix +*.msm +*.msp + +# Windows shortcuts +*.lnk + +# JetBrains Rider +.idea/ +*.sln.iml + +## +## Visual Studio Code +## +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json diff --git a/.nojekyll b/.nojekyll deleted file mode 100644 index e69de29..0000000 diff --git a/.template.config/icon.png b/.template.config/icon.png new file mode 100644 index 0000000..fd9fa41 Binary files /dev/null and b/.template.config/icon.png differ diff --git a/.template.config/ide.host.json b/.template.config/ide.host.json new file mode 100644 index 0000000..837778b --- /dev/null +++ b/.template.config/ide.host.json @@ -0,0 +1,5 @@ +{ + "$schema": "http://json.schemastore.org/vs-2017.3.host", + "order": 0, + "icon": "icon.png" +} \ No newline at end of file diff --git a/.template.config/template.json b/.template.config/template.json new file mode 100644 index 0000000..5fbff2b --- /dev/null +++ b/.template.config/template.json @@ -0,0 +1,51 @@ +{ + "$schema": "http://json.schemastore.org/template", + "author": "Mukesh Murugan", + "classifications": [ + "Blazor", + "WASM", + "WebAssembly", + "Clean Architecture", + "Boilerplate", + "macOS", + "Windows", + "Cloud", + "Web" + ], + "tags": { + "language": "C#", + "type": "project" + }, + "identity": "FullStackHero.BlazorWebAssembly.Boilerplate", + "name": "Blazor WebAssembly Boilerplate - FullStackHero", + "description": "Clean Architecture Boilerplate Template for .NET 6.0 Blazor WebAssembly built for FSH WebAPI with the goodness of MudBlazor Components.", + "shortName": "fsh-blazor", + "sourceName": "FSH.BlazorWebAssembly", + "preferNameDirectory": true, + "sources": [ + { + "source": "./", + "target": "./", + "exclude": [ + ".template.config/**" + ] + } + ], + "primaryOutputs": [ + { + "path": "./" + } + ], + "postActions": [ + { + "description": "Restore NuGet packages required by this project.", + "manualInstructions": [ + { + "text": "Run 'dotnet restore'" + } + ], + "actionId": "210D431B-A78B-4D2F-B762-4ED3E3EA9025", + "continueOnError": true + } + ] +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..cfcc0fe --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,12 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Launch and Debug Standalone Blazor WebAssembly App", + "type": "blazorwasm", + "request": "launch", + "cwd": "${workspaceFolder}/src/Host", + "url": "https://localhost:5002" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..fe20a1c --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "razor.disableBlazorDebugPrompt": true, + "cSpell.words": [ + "Blazored", + "borderradius", + "Upto" + ] +} \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..444731d --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,42 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "build", + "command": "dotnet", + "type": "process", + "args": [ + "build", + "${workspaceFolder}/src/Host/Host.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "publish", + "command": "dotnet", + "type": "process", + "args": [ + "publish", + "${workspaceFolder}/src/Host/Host.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + }, + { + "label": "watch", + "command": "dotnet", + "type": "process", + "args": [ + "watch", + "run", + "${workspaceFolder}/src/Host/Host.csproj", + "/property:GenerateFullPaths=true", + "/consoleloggerparameters:NoSummary" + ], + "problemMatcher": "$msCompile" + } + ] +} \ No newline at end of file diff --git a/404.html b/404.html deleted file mode 100644 index 4e0cb04..0000000 --- a/404.html +++ /dev/null @@ -1,110 +0,0 @@ - - - - - - - Blazor WebAssembly Boilerplate - - - - - - - - - - - - -
- - -
-
-
-
-
- -
-
-
- -
- An unhandled error has occurred. - Reload - 🗙 -
- - - - - - - - - \ No newline at end of file diff --git a/Directory.Build.props b/Directory.Build.props new file mode 100644 index 0000000..35a60b8 --- /dev/null +++ b/Directory.Build.props @@ -0,0 +1,27 @@ + + + + $(MSBuildThisFileDirectory)dotnet.ruleset + false + false + true + $(OutputPath)$(AssemblyName).xml + true + enable + enable + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + \ No newline at end of file diff --git a/Directory.Build.targets b/Directory.Build.targets new file mode 100644 index 0000000..fd9797b --- /dev/null +++ b/Directory.Build.targets @@ -0,0 +1,5 @@ + + + $(OutputPath)$(AssemblyName).xml + + \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..52246cd --- /dev/null +++ b/Dockerfile @@ -0,0 +1,26 @@ +FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base +WORKDIR /app +EXPOSE 80 +EXPOSE 443 + +FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build +WORKDIR /src + +COPY ["src/Host/Host.csproj", "src/Host/"] +COPY ["src/Shared/Shared.csproj", "src/Shared/"] +COPY ["src/Client/Client.csproj", "src/Client/"] +COPY ["src/Client.Infrastructure/Client.Infrastructure.csproj", "src/Client.Infrastructure/"] + +RUN dotnet restore "src/Host/Host.csproj" + +COPY . . +WORKDIR "/src/src/Host" + +RUN dotnet publish "Host.csproj" -c Release --no-restore -o /app/publish + +FROM base AS final +WORKDIR /app + +COPY --from=build /app/publish . + +ENTRYPOINT ["dotnet", "RewardsPlus.BlazorWebAssembly.Host.dll"] \ No newline at end of file diff --git a/FSH.BlazorWebAssembly.nuspec b/FSH.BlazorWebAssembly.nuspec new file mode 100644 index 0000000..215e16a --- /dev/null +++ b/FSH.BlazorWebAssembly.nuspec @@ -0,0 +1,25 @@ + + + + FullStackHero.BlazorWebAssembly.Boilerplate + Blazor WebAssembly Boilerplate - FullStackHero + 0.0.1-rc + Mukesh Murugan + + Clean Architecture Boilerplate Template for .NET 6.0 Blazor WebAssembly built for FSH WebAPI with the goodness of MudBlazor Components. + + en-US + MIT + 2021 + https://fullstackhero.net/blazor-webassembly-boilerplate/general/getting-started/ + + + + + cleanarchitecture clean architecture blazor mukesh codewithmukesh fullstackhero solution csharp wasm webassembly mudblazor + ./content/icon.png + + + + + \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..6599f6d --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2022 fullstackhero + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ + diff --git a/RewardsPlus.BlazorWebAssembly.sln b/RewardsPlus.BlazorWebAssembly.sln new file mode 100644 index 0000000..2c94ebb --- /dev/null +++ b/RewardsPlus.BlazorWebAssembly.sln @@ -0,0 +1,62 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31808.319 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Host", "src\Host\Host.csproj", "{CB2F88F0-F072-420C-9B43-162C2C0773F5}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Client", "src\Client\Client.csproj", "{D5DB6E8A-0161-4EF1-B4D9-467E9A7EF9A7}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Shared", "src\Shared\Shared.csproj", "{0D7A7E2D-CCF4-496E-9F2B-141712F4C00F}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Client.Infrastructure", "src\Client.Infrastructure\Client.Infrastructure.csproj", "{28E5DFC7-A05B-40DB-9E35-AC1E84C008A2}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{F6BE3160-F6ED-4E11-A33F-063DD9186D84}" + ProjectSection(SolutionItems) = preProject + .dockerignore = .dockerignore + .editorconfig = .editorconfig + .gitignore = .gitignore + Directory.Build.props = Directory.Build.props + Directory.Build.targets = Directory.Build.targets + Dockerfile = Dockerfile + dotnet.ruleset = dotnet.ruleset + global.json = global.json + stylecop.json = stylecop.json + EndProjectSection +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "scripts", "scripts", "{F529F1FF-B2FD-46D5-80A1-D4C726230E40}" + ProjectSection(SolutionItems) = preProject + scripts\nswag-regen.ps1 = scripts\nswag-regen.ps1 + scripts\pull-shared-from-webapi.ps1 = scripts\pull-shared-from-webapi.ps1 + EndProjectSection +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {CB2F88F0-F072-420C-9B43-162C2C0773F5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CB2F88F0-F072-420C-9B43-162C2C0773F5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CB2F88F0-F072-420C-9B43-162C2C0773F5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CB2F88F0-F072-420C-9B43-162C2C0773F5}.Release|Any CPU.Build.0 = Release|Any CPU + {D5DB6E8A-0161-4EF1-B4D9-467E9A7EF9A7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {D5DB6E8A-0161-4EF1-B4D9-467E9A7EF9A7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {D5DB6E8A-0161-4EF1-B4D9-467E9A7EF9A7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {D5DB6E8A-0161-4EF1-B4D9-467E9A7EF9A7}.Release|Any CPU.Build.0 = Release|Any CPU + {0D7A7E2D-CCF4-496E-9F2B-141712F4C00F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0D7A7E2D-CCF4-496E-9F2B-141712F4C00F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0D7A7E2D-CCF4-496E-9F2B-141712F4C00F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0D7A7E2D-CCF4-496E-9F2B-141712F4C00F}.Release|Any CPU.Build.0 = Release|Any CPU + {28E5DFC7-A05B-40DB-9E35-AC1E84C008A2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {28E5DFC7-A05B-40DB-9E35-AC1E84C008A2}.Debug|Any CPU.Build.0 = Debug|Any CPU + {28E5DFC7-A05B-40DB-9E35-AC1E84C008A2}.Release|Any CPU.ActiveCfg = Release|Any CPU + {28E5DFC7-A05B-40DB-9E35-AC1E84C008A2}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {175E8AA9-2BB6-41F9-ACE9-71733ED6EDFD} + EndGlobalSection +EndGlobal diff --git a/_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js b/_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js deleted file mode 100755 index 786ec1a..0000000 --- a/_content/Microsoft.AspNetCore.Components.WebAssembly.Authentication/AuthenticationService.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see AuthenticationService.js.LICENSE.txt */ -var t,e;t={671:function(t){var e;e=function(){return function(t){var e={};function r(n){if(e[n])return e[n].exports;var i=e[n]={i:n,l:!1,exports:{}};return t[n].call(i.exports,i,i.exports,r),i.l=!0,i.exports}return r.m=t,r.c=e,r.d=function(t,e,n){r.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},r.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.t=function(t,e){if(1&e&&(t=r(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var n=Object.create(null);if(r.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)r.d(n,i,function(e){return t[e]}.bind(null,i));return n},r.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return r.d(e,"a",e),e},r.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},r.p="",r(r.s=22)}([function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var n=function(){function t(t,e){for(var r=0;r=4){for(var t=arguments.length,e=Array(t),r=0;r=3){for(var t=arguments.length,e=Array(t),r=0;r=2){for(var t=arguments.length,e=Array(t),r=0;r=1){for(var t=arguments.length,e=Array(t),r=0;r1&&void 0!==arguments[1]?arguments[1]:o.JsonService;if(s(this,t),!e)throw i.Log.error("MetadataService: No settings passed to MetadataService"),new Error("settings");this._settings=e,this._jsonService=new r(["application/jwk-set+json"])}return t.prototype.resetSigningKeys=function(){this._settings=this._settings||{},this._settings.signingKeys=void 0},t.prototype.getMetadata=function(){var t=this;return this._settings.metadata?(i.Log.debug("MetadataService.getMetadata: Returning metadata from settings"),Promise.resolve(this._settings.metadata)):this.metadataUrl?(i.Log.debug("MetadataService.getMetadata: getting metadata from",this.metadataUrl),this._jsonService.getJson(this.metadataUrl).then((function(e){i.Log.debug("MetadataService.getMetadata: json received");var r=t._settings.metadataSeed||{};return t._settings.metadata=Object.assign({},r,e),t._settings.metadata}))):(i.Log.error("MetadataService.getMetadata: No authority or metadataUrl configured on settings"),Promise.reject(new Error("No authority or metadataUrl configured on settings")))},t.prototype.getIssuer=function(){return this._getMetadataProperty("issuer")},t.prototype.getAuthorizationEndpoint=function(){return this._getMetadataProperty("authorization_endpoint")},t.prototype.getUserInfoEndpoint=function(){return this._getMetadataProperty("userinfo_endpoint")},t.prototype.getTokenEndpoint=function(){var t=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this._getMetadataProperty("token_endpoint",t)},t.prototype.getCheckSessionIframe=function(){return this._getMetadataProperty("check_session_iframe",!0)},t.prototype.getEndSessionEndpoint=function(){return this._getMetadataProperty("end_session_endpoint",!0)},t.prototype.getRevocationEndpoint=function(){return this._getMetadataProperty("revocation_endpoint",!0)},t.prototype.getKeysEndpoint=function(){return this._getMetadataProperty("jwks_uri",!0)},t.prototype._getMetadataProperty=function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];return i.Log.debug("MetadataService.getMetadataProperty for: "+t),this.getMetadata().then((function(r){if(i.Log.debug("MetadataService.getMetadataProperty: metadata recieved"),void 0===r[t]){if(!0===e)return void i.Log.warn("MetadataService.getMetadataProperty: Metadata does not contain optional property "+t);throw i.Log.error("MetadataService.getMetadataProperty: Metadata does not contain property "+t),new Error("Metadata does not contain property "+t)}return r[t]}))},t.prototype.getSigningKeys=function(){var t=this;return this._settings.signingKeys?(i.Log.debug("MetadataService.getSigningKeys: Returning signingKeys from settings"),Promise.resolve(this._settings.signingKeys)):this._getMetadataProperty("jwks_uri").then((function(e){return i.Log.debug("MetadataService.getSigningKeys: jwks_uri received",e),t._jsonService.getJson(e).then((function(e){if(i.Log.debug("MetadataService.getSigningKeys: key set received",e),!e.keys)throw i.Log.error("MetadataService.getSigningKeys: Missing keys on keyset"),new Error("Missing keys on keyset");return t._settings.signingKeys=e.keys,t._settings.signingKeys}))}))},n(t,[{key:"metadataUrl",get:function(){return this._metadataUrl||(this._settings.metadataUrl?this._metadataUrl=this._settings.metadataUrl:(this._metadataUrl=this._settings.authority,this._metadataUrl&&this._metadataUrl.indexOf(a)<0&&("/"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+="/"),this._metadataUrl+=a))),this._metadataUrl}}]),t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UrlUtility=void 0;var n=r(0),i=r(1);e.UrlUtility=function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return t.addQueryParam=function(t,e,r){return t.indexOf("?")<0&&(t+="?"),"?"!==t[t.length-1]&&(t+="&"),t+=encodeURIComponent(e),(t+="=")+encodeURIComponent(r)},t.parseUrlFragment=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#",r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.Global;"string"!=typeof t&&(t=r.location.href);var o=t.lastIndexOf(e);o>=0&&(t=t.substr(o+1)),"?"===e&&(o=t.indexOf("#"))>=0&&(t=t.substr(0,o));for(var s,a={},u=/([^&=]+)=([^&]*)/g,c=0;s=u.exec(t);)if(a[decodeURIComponent(s[1])]=decodeURIComponent(s[2].replace(/\+/g," ")),c++>50)return n.Log.error("UrlUtility.parseUrlFragment: response exceeded expected number of parameters",t),{error:"Response exceeded expected number of parameters"};for(var h in a)return a;return{}},t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.JoseUtil=void 0;var n=r(26),i=function(t){return t&&t.__esModule?t:{default:t}}(r(33));e.JoseUtil=(0,i.default)({jws:n.jws,KeyUtil:n.KeyUtil,X509:n.X509,crypto:n.crypto,hextob64u:n.hextob64u,b64tohex:n.b64tohex,AllowedSigningAlgs:n.AllowedSigningAlgs})},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.OidcClientSettings=void 0;var n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},i=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=e.authority,i=e.metadataUrl,o=e.metadata,l=e.signingKeys,p=e.metadataSeed,v=e.client_id,y=e.client_secret,m=e.response_type,_=void 0===m?f:m,S=e.scope,w=void 0===S?g:S,b=e.redirect_uri,F=e.post_logout_redirect_uri,E=e.client_authentication,x=void 0===E?d:E,A=e.prompt,k=e.display,P=e.max_age,C=e.ui_locales,T=e.acr_values,R=e.resource,I=e.response_mode,D=e.filterProtocolClaims,L=void 0===D||D,N=e.loadUserInfo,U=void 0===N||N,O=e.staleStateAge,B=void 0===O?900:O,M=e.clockSkew,j=void 0===M?300:M,H=e.clockService,K=void 0===H?new s.ClockService:H,V=e.userInfoJwtIssuer,q=void 0===V?"OP":V,J=e.mergeClaims,W=void 0!==J&&J,z=e.stateStore,Y=void 0===z?new a.WebStorageStateStore:z,G=e.ResponseValidatorCtor,X=void 0===G?u.ResponseValidator:G,$=e.MetadataServiceCtor,Q=void 0===$?c.MetadataService:$,Z=e.extraQueryParams,tt=void 0===Z?{}:Z,et=e.extraTokenParams,rt=void 0===et?{}:et;h(this,t),this._authority=r,this._metadataUrl=i,this._metadata=o,this._metadataSeed=p,this._signingKeys=l,this._client_id=v,this._client_secret=y,this._response_type=_,this._scope=w,this._redirect_uri=b,this._post_logout_redirect_uri=F,this._client_authentication=x,this._prompt=A,this._display=k,this._max_age=P,this._ui_locales=C,this._acr_values=T,this._resource=R,this._response_mode=I,this._filterProtocolClaims=!!L,this._loadUserInfo=!!U,this._staleStateAge=B,this._clockSkew=j,this._clockService=K,this._userInfoJwtIssuer=q,this._mergeClaims=!!W,this._stateStore=Y,this._validator=new X(this),this._metadataService=new Q(this),this._extraQueryParams="object"===(void 0===tt?"undefined":n(tt))?tt:{},this._extraTokenParams="object"===(void 0===rt?"undefined":n(rt))?rt:{}}return t.prototype.getEpochTime=function(){return this._clockService.getEpochTime()},i(t,[{key:"client_id",get:function(){return this._client_id},set:function(t){if(this._client_id)throw o.Log.error("OidcClientSettings.set_client_id: client_id has already been assigned."),new Error("client_id has already been assigned.");this._client_id=t}},{key:"client_secret",get:function(){return this._client_secret}},{key:"response_type",get:function(){return this._response_type}},{key:"scope",get:function(){return this._scope}},{key:"redirect_uri",get:function(){return this._redirect_uri}},{key:"post_logout_redirect_uri",get:function(){return this._post_logout_redirect_uri}},{key:"client_authentication",get:function(){return this._client_authentication}},{key:"prompt",get:function(){return this._prompt}},{key:"display",get:function(){return this._display}},{key:"max_age",get:function(){return this._max_age}},{key:"ui_locales",get:function(){return this._ui_locales}},{key:"acr_values",get:function(){return this._acr_values}},{key:"resource",get:function(){return this._resource}},{key:"response_mode",get:function(){return this._response_mode}},{key:"authority",get:function(){return this._authority},set:function(t){if(this._authority)throw o.Log.error("OidcClientSettings.set_authority: authority has already been assigned."),new Error("authority has already been assigned.");this._authority=t}},{key:"metadataUrl",get:function(){return this._metadataUrl||(this._metadataUrl=this.authority,this._metadataUrl&&this._metadataUrl.indexOf(l)<0&&("/"!==this._metadataUrl[this._metadataUrl.length-1]&&(this._metadataUrl+="/"),this._metadataUrl+=l)),this._metadataUrl}},{key:"metadata",get:function(){return this._metadata},set:function(t){this._metadata=t}},{key:"metadataSeed",get:function(){return this._metadataSeed},set:function(t){this._metadataSeed=t}},{key:"signingKeys",get:function(){return this._signingKeys},set:function(t){this._signingKeys=t}},{key:"filterProtocolClaims",get:function(){return this._filterProtocolClaims}},{key:"loadUserInfo",get:function(){return this._loadUserInfo}},{key:"staleStateAge",get:function(){return this._staleStateAge}},{key:"clockSkew",get:function(){return this._clockSkew}},{key:"userInfoJwtIssuer",get:function(){return this._userInfoJwtIssuer}},{key:"mergeClaims",get:function(){return this._mergeClaims}},{key:"stateStore",get:function(){return this._stateStore}},{key:"validator",get:function(){return this._validator}},{key:"metadataService",get:function(){return this._metadataService}},{key:"extraQueryParams",get:function(){return this._extraQueryParams},set:function(t){"object"===(void 0===t?"undefined":n(t))?this._extraQueryParams=t:this._extraQueryParams={}}},{key:"extraTokenParams",get:function(){return this._extraTokenParams},set:function(t){"object"===(void 0===t?"undefined":n(t))?this._extraTokenParams=t:this._extraTokenParams={}}}]),t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.WebStorageStateStore=void 0;var n=r(0),i=r(1);function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}e.WebStorageStateStore=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.prefix,n=void 0===r?"oidc.":r,s=e.store,a=void 0===s?i.Global.localStorage:s;o(this,t),this._store=a,this._prefix=n}return t.prototype.set=function(t,e){return n.Log.debug("WebStorageStateStore.set",t),t=this._prefix+t,this._store.setItem(t,e),Promise.resolve()},t.prototype.get=function(t){n.Log.debug("WebStorageStateStore.get",t),t=this._prefix+t;var e=this._store.getItem(t);return Promise.resolve(e)},t.prototype.remove=function(t){n.Log.debug("WebStorageStateStore.remove",t),t=this._prefix+t;var e=this._store.getItem(t);return this._store.removeItem(t),Promise.resolve(e)},t.prototype.getAllKeys=function(){n.Log.debug("WebStorageStateStore.getAllKeys");for(var t=[],e=0;e0&&void 0!==arguments[0]?arguments[0]:null,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:i.Global.XMLHttpRequest,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;o(this,t),e&&Array.isArray(e)?this._contentTypes=e.slice():this._contentTypes=[],this._contentTypes.push("application/json"),n&&this._contentTypes.push("application/jwt"),this._XMLHttpRequest=r,this._jwtHandler=n}return t.prototype.getJson=function(t,e){var r=this;if(!t)throw n.Log.error("JsonService.getJson: No url passed"),new Error("url");return n.Log.debug("JsonService.getJson, url: ",t),new Promise((function(i,o){var s=new r._XMLHttpRequest;s.open("GET",t);var a=r._contentTypes,u=r._jwtHandler;s.onload=function(){if(n.Log.debug("JsonService.getJson: HTTP response received, status",s.status),200===s.status){var e=s.getResponseHeader("Content-Type");if(e){var r=a.find((function(t){if(e.startsWith(t))return!0}));if("application/jwt"==r)return void u(s).then(i,o);if(r)try{return void i(JSON.parse(s.responseText))}catch(t){return n.Log.error("JsonService.getJson: Error parsing JSON response",t.message),void o(t)}}o(Error("Invalid response Content-Type: "+e+", from URL: "+t))}else o(Error(s.statusText+" ("+s.status+")"))},s.onerror=function(){n.Log.error("JsonService.getJson: network error"),o(Error("Network Error"))},e&&(n.Log.debug("JsonService.getJson: token passed, setting Authorization header"),s.setRequestHeader("Authorization","Bearer "+e)),s.send()}))},t.prototype.postForm=function(t,e,r){var i=this;if(!t)throw n.Log.error("JsonService.postForm: No url passed"),new Error("url");return n.Log.debug("JsonService.postForm, url: ",t),new Promise((function(o,s){var a=new i._XMLHttpRequest;a.open("POST",t);var u=i._contentTypes;a.onload=function(){if(n.Log.debug("JsonService.postForm: HTTP response received, status",a.status),200!==a.status){if(400===a.status&&(r=a.getResponseHeader("Content-Type"))&&u.find((function(t){if(r.startsWith(t))return!0})))try{var e=JSON.parse(a.responseText);if(e&&e.error)return n.Log.error("JsonService.postForm: Error from server: ",e.error),void s(new Error(e.error))}catch(t){return n.Log.error("JsonService.postForm: Error parsing JSON response",t.message),void s(t)}s(Error(a.statusText+" ("+a.status+")"))}else{var r;if((r=a.getResponseHeader("Content-Type"))&&u.find((function(t){if(r.startsWith(t))return!0})))try{return void o(JSON.parse(a.responseText))}catch(t){return n.Log.error("JsonService.postForm: Error parsing JSON response",t.message),void s(t)}s(Error("Invalid response Content-Type: "+r+", from URL: "+t))}},a.onerror=function(){n.Log.error("JsonService.postForm: network error"),s(Error("Network Error"))};var c="";for(var h in e){var l=e[h];l&&(c.length>0&&(c+="&"),c+=encodeURIComponent(h),c+="=",c+=encodeURIComponent(l))}a.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),void 0!==r&&a.setRequestHeader("Authorization","Basic "+btoa(r)),a.send(c)}))},t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SigninRequest=void 0;var n=r(0),i=r(3),o=r(13);e.SigninRequest=function(){function t(e){var r=e.url,s=e.client_id,a=e.redirect_uri,u=e.response_type,c=e.scope,h=e.authority,l=e.data,f=e.prompt,g=e.display,d=e.max_age,p=e.ui_locales,v=e.id_token_hint,y=e.login_hint,m=e.acr_values,_=e.resource,S=e.response_mode,w=e.request,b=e.request_uri,F=e.extraQueryParams,E=e.request_type,x=e.client_secret,A=e.extraTokenParams,k=e.skipUserInfo;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),!r)throw n.Log.error("SigninRequest.ctor: No url passed"),new Error("url");if(!s)throw n.Log.error("SigninRequest.ctor: No client_id passed"),new Error("client_id");if(!a)throw n.Log.error("SigninRequest.ctor: No redirect_uri passed"),new Error("redirect_uri");if(!u)throw n.Log.error("SigninRequest.ctor: No response_type passed"),new Error("response_type");if(!c)throw n.Log.error("SigninRequest.ctor: No scope passed"),new Error("scope");if(!h)throw n.Log.error("SigninRequest.ctor: No authority passed"),new Error("authority");var P=t.isOidc(u),C=t.isCode(u);S||(S=t.isCode(u)?"query":null),this.state=new o.SigninState({nonce:P,data:l,client_id:s,authority:h,redirect_uri:a,code_verifier:C,request_type:E,response_mode:S,client_secret:x,scope:c,extraTokenParams:A,skipUserInfo:k}),r=i.UrlUtility.addQueryParam(r,"client_id",s),r=i.UrlUtility.addQueryParam(r,"redirect_uri",a),r=i.UrlUtility.addQueryParam(r,"response_type",u),r=i.UrlUtility.addQueryParam(r,"scope",c),r=i.UrlUtility.addQueryParam(r,"state",this.state.id),P&&(r=i.UrlUtility.addQueryParam(r,"nonce",this.state.nonce)),C&&(r=i.UrlUtility.addQueryParam(r,"code_challenge",this.state.code_challenge),r=i.UrlUtility.addQueryParam(r,"code_challenge_method","S256"));var T={prompt:f,display:g,max_age:d,ui_locales:p,id_token_hint:v,login_hint:y,acr_values:m,resource:_,request:w,request_uri:b,response_mode:S};for(var R in T)T[R]&&(r=i.UrlUtility.addQueryParam(r,R,T[R]));for(var I in F)r=i.UrlUtility.addQueryParam(r,I,F[I]);this.url=r}return t.isOidc=function(t){return!!t.split(/\s+/g).filter((function(t){return"id_token"===t}))[0]},t.isOAuth=function(t){return!!t.split(/\s+/g).filter((function(t){return"token"===t}))[0]},t.isCode=function(t){return!!t.split(/\s+/g).filter((function(t){return"code"===t}))[0]},t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.State=void 0;var n=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},r=e.id,n=e.data,i=e.created,a=e.request_type;s(this,t),this._id=r||(0,o.default)(),this._data=n,this._created="number"==typeof i&&i>0?i:parseInt(Date.now()/1e3),this._request_type=a}return t.prototype.toStorageString=function(){return i.Log.debug("State.toStorageString"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type})},t.fromStorageString=function(e){return i.Log.debug("State.fromStorageString"),new t(JSON.parse(e))},t.clearStaleState=function(e,r){var n=Date.now()/1e3-r;return e.getAllKeys().then((function(r){i.Log.debug("State.clearStaleState: got keys",r);for(var o=[],s=function(s){var a=r[s];u=e.get(a).then((function(r){var o=!1;if(r)try{var s=t.fromStorageString(r);i.Log.debug("State.clearStaleState: got item from key: ",a,s.created),s.created<=n&&(o=!0)}catch(t){i.Log.error("State.clearStaleState: Error parsing state for key",a,t.message),o=!0}else i.Log.debug("State.clearStaleState: no item in storage for key: ",a),o=!0;if(o)return i.Log.debug("State.clearStaleState: removed item for key: ",a),e.remove(a)})),o.push(u)},a=0;a0&&void 0!==arguments[0]?arguments[0]:{};g(this,t),e instanceof o.OidcClientSettings?this._settings=e:this._settings=new o.OidcClientSettings(e)}return t.prototype.createSigninRequest=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.response_type,n=e.scope,o=e.redirect_uri,s=e.data,u=e.state,c=e.prompt,h=e.display,l=e.max_age,f=e.ui_locales,g=e.id_token_hint,d=e.login_hint,p=e.acr_values,v=e.resource,y=e.request,m=e.request_uri,_=e.response_mode,S=e.extraQueryParams,w=e.extraTokenParams,b=e.request_type,F=e.skipUserInfo,E=arguments[1];i.Log.debug("OidcClient.createSigninRequest");var x=this._settings.client_id;r=r||this._settings.response_type,n=n||this._settings.scope,o=o||this._settings.redirect_uri,c=c||this._settings.prompt,h=h||this._settings.display,l=l||this._settings.max_age,f=f||this._settings.ui_locales,p=p||this._settings.acr_values,v=v||this._settings.resource,_=_||this._settings.response_mode,S=S||this._settings.extraQueryParams,w=w||this._settings.extraTokenParams;var A=this._settings.authority;return a.SigninRequest.isCode(r)&&"code"!==r?Promise.reject(new Error("OpenID Connect hybrid flow is not supported")):this._metadataService.getAuthorizationEndpoint().then((function(e){i.Log.debug("OidcClient.createSigninRequest: Received authorization endpoint",e);var k=new a.SigninRequest({url:e,client_id:x,redirect_uri:o,response_type:r,scope:n,data:s||u,authority:A,prompt:c,display:h,max_age:l,ui_locales:f,id_token_hint:g,login_hint:d,acr_values:p,resource:v,request:y,request_uri:m,extraQueryParams:S,extraTokenParams:w,request_type:b,response_mode:_,client_secret:t._settings.client_secret,skipUserInfo:F}),P=k.state;return(E=E||t._stateStore).set(P.id,P.toStorageString()).then((function(){return k}))}))},t.prototype.readSigninResponseState=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];i.Log.debug("OidcClient.readSigninResponseState");var n="query"===this._settings.response_mode||!this._settings.response_mode&&a.SigninRequest.isCode(this._settings.response_type),o=n?"?":"#",s=new u.SigninResponse(t,o);if(!s.state)return i.Log.error("OidcClient.readSigninResponseState: No state in response"),Promise.reject(new Error("No state in response"));e=e||this._stateStore;var c=r?e.remove.bind(e):e.get.bind(e);return c(s.state).then((function(t){if(!t)throw i.Log.error("OidcClient.readSigninResponseState: No matching state found in storage"),new Error("No matching state found in storage");return{state:l.SigninState.fromStorageString(t),response:s}}))},t.prototype.processSigninResponse=function(t,e){var r=this;return i.Log.debug("OidcClient.processSigninResponse"),this.readSigninResponseState(t,e,!0).then((function(t){var e=t.state,n=t.response;return i.Log.debug("OidcClient.processSigninResponse: Received state from storage; validating response"),r._validator.validateSigninResponse(e,n)}))},t.prototype.createSignoutRequest=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.id_token_hint,n=e.data,o=e.state,s=e.post_logout_redirect_uri,a=e.extraQueryParams,u=e.request_type,h=arguments[1];return i.Log.debug("OidcClient.createSignoutRequest"),s=s||this._settings.post_logout_redirect_uri,a=a||this._settings.extraQueryParams,this._metadataService.getEndSessionEndpoint().then((function(e){if(!e)throw i.Log.error("OidcClient.createSignoutRequest: No end session endpoint url returned"),new Error("no end session endpoint");i.Log.debug("OidcClient.createSignoutRequest: Received end session endpoint",e);var l=new c.SignoutRequest({url:e,id_token_hint:r,post_logout_redirect_uri:s,data:n||o,extraQueryParams:a,request_type:u}),f=l.state;return f&&(i.Log.debug("OidcClient.createSignoutRequest: Signout request has state to persist"),(h=h||t._stateStore).set(f.id,f.toStorageString())),l}))},t.prototype.readSignoutResponseState=function(t,e){var r=arguments.length>2&&void 0!==arguments[2]&&arguments[2];i.Log.debug("OidcClient.readSignoutResponseState");var n=new h.SignoutResponse(t);if(!n.state)return i.Log.debug("OidcClient.readSignoutResponseState: No state in response"),n.error?(i.Log.warn("OidcClient.readSignoutResponseState: Response was error: ",n.error),Promise.reject(new s.ErrorResponse(n))):Promise.resolve({state:void 0,response:n});var o=n.state;e=e||this._stateStore;var a=r?e.remove.bind(e):e.get.bind(e);return a(o).then((function(t){if(!t)throw i.Log.error("OidcClient.readSignoutResponseState: No matching state found in storage"),new Error("No matching state found in storage");return{state:f.State.fromStorageString(t),response:n}}))},t.prototype.processSignoutResponse=function(t,e){var r=this;return i.Log.debug("OidcClient.processSignoutResponse"),this.readSignoutResponseState(t,e,!0).then((function(t){var e=t.state,n=t.response;return e?(i.Log.debug("OidcClient.processSignoutResponse: Received state from storage; validating response"),r._validator.validateSignoutResponse(e,n)):(i.Log.debug("OidcClient.processSignoutResponse: No state from storage; skipping validating response"),n)}))},t.prototype.clearStaleState=function(t){return i.Log.debug("OidcClient.clearStaleState"),t=t||this._stateStore,f.State.clearStaleState(t,this.settings.staleStateAge)},n(t,[{key:"_stateStore",get:function(){return this.settings.stateStore}},{key:"_validator",get:function(){return this.settings.validator}},{key:"_metadataService",get:function(){return this.settings.metadataService}},{key:"settings",get:function(){return this._settings}},{key:"metadataService",get:function(){return this._metadataService}}]),t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TokenClient=void 0;var n=r(7),i=r(2),o=r(0);function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}e.TokenClient=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.JsonService,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService;if(s(this,t),!e)throw o.Log.error("TokenClient.ctor: No settings passed"),new Error("settings");this._settings=e,this._jsonService=new r,this._metadataService=new a(this._settings)}return t.prototype.exchangeCode=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).grant_type=e.grant_type||"authorization_code",e.client_id=e.client_id||this._settings.client_id,e.client_secret=e.client_secret||this._settings.client_secret,e.redirect_uri=e.redirect_uri||this._settings.redirect_uri;var r=void 0,n=e._client_authentication||this._settings._client_authentication;return delete e._client_authentication,e.code?e.redirect_uri?e.code_verifier?e.client_id?e.client_secret||"client_secret_basic"!=n?("client_secret_basic"==n&&(r=e.client_id+":"+e.client_secret,delete e.client_id,delete e.client_secret),this._metadataService.getTokenEndpoint(!1).then((function(n){return o.Log.debug("TokenClient.exchangeCode: Received token endpoint"),t._jsonService.postForm(n,e,r).then((function(t){return o.Log.debug("TokenClient.exchangeCode: response received"),t}))}))):(o.Log.error("TokenClient.exchangeCode: No client_secret passed"),Promise.reject(new Error("A client_secret is required"))):(o.Log.error("TokenClient.exchangeCode: No client_id passed"),Promise.reject(new Error("A client_id is required"))):(o.Log.error("TokenClient.exchangeCode: No code_verifier passed"),Promise.reject(new Error("A code_verifier is required"))):(o.Log.error("TokenClient.exchangeCode: No redirect_uri passed"),Promise.reject(new Error("A redirect_uri is required"))):(o.Log.error("TokenClient.exchangeCode: No code passed"),Promise.reject(new Error("A code is required")))},t.prototype.exchangeRefreshToken=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).grant_type=e.grant_type||"refresh_token",e.client_id=e.client_id||this._settings.client_id,e.client_secret=e.client_secret||this._settings.client_secret;var r=void 0,n=e._client_authentication||this._settings._client_authentication;return delete e._client_authentication,e.refresh_token?e.client_id?("client_secret_basic"==n&&(r=e.client_id+":"+e.client_secret,delete e.client_id,delete e.client_secret),this._metadataService.getTokenEndpoint(!1).then((function(n){return o.Log.debug("TokenClient.exchangeRefreshToken: Received token endpoint"),t._jsonService.postForm(n,e,r).then((function(t){return o.Log.debug("TokenClient.exchangeRefreshToken: response received"),t}))}))):(o.Log.error("TokenClient.exchangeRefreshToken: No client_id passed"),Promise.reject(new Error("A client_id is required"))):(o.Log.error("TokenClient.exchangeRefreshToken: No refresh_token passed"),Promise.reject(new Error("A refresh_token is required")))},t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.ErrorResponse=void 0;var n=r(0);function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function o(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e}e.ErrorResponse=function(t){function e(){var r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=r.error,a=r.error_description,u=r.error_uri,c=r.state,h=r.session_state;if(i(this,e),!s)throw n.Log.error("No error passed to ErrorResponse"),new Error("error");var l=o(this,t.call(this,a||s));return l.name="ErrorResponse",l.error=s,l.error_description=a,l.error_uri=u,l.state=c,l.session_state=h,l}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e}(Error)},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SigninState=void 0;var n=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=r.nonce,i=r.authority,o=r.client_id,h=r.redirect_uri,l=r.code_verifier,f=r.response_mode,g=r.client_secret,d=r.scope,p=r.extraTokenParams,v=r.skipUserInfo;u(this,e);var y=c(this,t.call(this,arguments[0]));if(!0===n?y._nonce=(0,a.default)():n&&(y._nonce=n),!0===l?y._code_verifier=(0,a.default)()+(0,a.default)()+(0,a.default)():l&&(y._code_verifier=l),y.code_verifier){var m=s.JoseUtil.hashString(y.code_verifier,"SHA256");y._code_challenge=s.JoseUtil.hexToBase64Url(m)}return y._redirect_uri=h,y._authority=i,y._client_id=o,y._response_mode=f,y._client_secret=g,y._scope=d,y._extraTokenParams=p,y._skipUserInfo=v,y}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.toStorageString=function(){return i.Log.debug("SigninState.toStorageString"),JSON.stringify({id:this.id,data:this.data,created:this.created,request_type:this.request_type,nonce:this.nonce,code_verifier:this.code_verifier,redirect_uri:this.redirect_uri,authority:this.authority,client_id:this.client_id,response_mode:this.response_mode,client_secret:this.client_secret,scope:this.scope,extraTokenParams:this.extraTokenParams,skipUserInfo:this.skipUserInfo})},e.fromStorageString=function(t){return i.Log.debug("SigninState.fromStorageString"),new e(JSON.parse(t))},n(e,[{key:"nonce",get:function(){return this._nonce}},{key:"authority",get:function(){return this._authority}},{key:"client_id",get:function(){return this._client_id}},{key:"redirect_uri",get:function(){return this._redirect_uri}},{key:"code_verifier",get:function(){return this._code_verifier}},{key:"code_challenge",get:function(){return this._code_challenge}},{key:"response_mode",get:function(){return this._response_mode}},{key:"client_secret",get:function(){return this._client_secret}},{key:"scope",get:function(){return this._scope}},{key:"extraTokenParams",get:function(){return this._extraTokenParams}},{key:"skipUserInfo",get:function(){return this._skipUserInfo}}]),e}(o.State)},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(){return("undefined"!=n&&null!==n&&void 0!==n.getRandomValues?i:o)().replace(/-/g,"")};var n="undefined"!=typeof window?window.crypto||window.msCrypto:null;function i(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^n.getRandomValues(new Uint8Array(1))[0]&15>>t/4).toString(16)}))}function o(){return([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g,(function(t){return(t^16*Math.random()>>t/4).toString(16)}))}t.exports=e.default},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.User=void 0;var n=function(){function t(t,e){for(var r=0;r0){var r=parseInt(Date.now()/1e3);this.expires_at=r+e}}},{key:"expired",get:function(){var t=this.expires_in;if(void 0!==t)return t<=0}},{key:"scopes",get:function(){return(this.scope||"").split(" ")}}]),t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AccessTokenEvents=void 0;var n=r(0),i=r(46);function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}e.AccessTokenEvents=function(){function t(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},r=e.accessTokenExpiringNotificationTime,n=void 0===r?60:r,s=e.accessTokenExpiringTimer,a=void 0===s?new i.Timer("Access token expiring"):s,u=e.accessTokenExpiredTimer,c=void 0===u?new i.Timer("Access token expired"):u;o(this,t),this._accessTokenExpiringNotificationTime=n,this._accessTokenExpiring=a,this._accessTokenExpired=c}return t.prototype.load=function(t){if(t.access_token&&void 0!==t.expires_in){var e=t.expires_in;if(n.Log.debug("AccessTokenEvents.load: access token present, remaining duration:",e),e>0){var r=e-this._accessTokenExpiringNotificationTime;r<=0&&(r=1),n.Log.debug("AccessTokenEvents.load: registering expiring timer in:",r),this._accessTokenExpiring.init(r)}else n.Log.debug("AccessTokenEvents.load: canceling existing expiring timer becase we're past expiration."),this._accessTokenExpiring.cancel();var i=e+1;n.Log.debug("AccessTokenEvents.load: registering expired timer in:",i),this._accessTokenExpired.init(i)}else this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel()},t.prototype.unload=function(){n.Log.debug("AccessTokenEvents.unload: canceling existing access token timers"),this._accessTokenExpiring.cancel(),this._accessTokenExpired.cancel()},t.prototype.addAccessTokenExpiring=function(t){this._accessTokenExpiring.addHandler(t)},t.prototype.removeAccessTokenExpiring=function(t){this._accessTokenExpiring.removeHandler(t)},t.prototype.addAccessTokenExpired=function(t){this._accessTokenExpired.addHandler(t)},t.prototype.removeAccessTokenExpired=function(t){this._accessTokenExpired.removeHandler(t)},t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Event=void 0;var n=r(0);e.Event=function(){function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),this._name=e,this._callbacks=[]}return t.prototype.addHandler=function(t){this._callbacks.push(t)},t.prototype.removeHandler=function(t){var e=this._callbacks.findIndex((function(e){return e===t}));e>=0&&this._callbacks.splice(e,1)},t.prototype.raise=function(){n.Log.debug("Event: Raising event: "+this._name);for(var t=0;t1&&void 0!==arguments[1]?arguments[1]:o.CheckSessionIFrame,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.Global.timer;if(a(this,t),!e)throw i.Log.error("SessionMonitor.ctor: No user manager passed to SessionMonitor"),new Error("userManager");this._userManager=e,this._CheckSessionIFrameCtor=n,this._timer=u,this._userManager.events.addUserLoaded(this._start.bind(this)),this._userManager.events.addUserUnloaded(this._stop.bind(this)),Promise.resolve(this._userManager.getUser().then((function(t){t?r._start(t):r._settings.monitorAnonymousSession&&r._userManager.querySessionStatus().then((function(t){var e={session_state:t.session_state};t.sub&&t.sid&&(e.profile={sub:t.sub,sid:t.sid}),r._start(e)})).catch((function(t){i.Log.error("SessionMonitor ctor: error from querySessionStatus:",t.message)}))})).catch((function(t){i.Log.error("SessionMonitor ctor: error from getUser:",t.message)})))}return t.prototype._start=function(t){var e=this,r=t.session_state;r&&(t.profile?(this._sub=t.profile.sub,this._sid=t.profile.sid,i.Log.debug("SessionMonitor._start: session_state:",r,", sub:",this._sub)):(this._sub=void 0,this._sid=void 0,i.Log.debug("SessionMonitor._start: session_state:",r,", anonymous user")),this._checkSessionIFrame?this._checkSessionIFrame.start(r):this._metadataService.getCheckSessionIframe().then((function(t){if(t){i.Log.debug("SessionMonitor._start: Initializing check session iframe");var n=e._client_id,o=e._checkSessionInterval,s=e._stopCheckSessionOnError;e._checkSessionIFrame=new e._CheckSessionIFrameCtor(e._callback.bind(e),n,t,o,s),e._checkSessionIFrame.load().then((function(){e._checkSessionIFrame.start(r)}))}else i.Log.warn("SessionMonitor._start: No check session iframe found in the metadata")})).catch((function(t){i.Log.error("SessionMonitor._start: Error from getCheckSessionIframe:",t.message)})))},t.prototype._stop=function(){var t=this;if(this._sub=void 0,this._sid=void 0,this._checkSessionIFrame&&(i.Log.debug("SessionMonitor._stop"),this._checkSessionIFrame.stop()),this._settings.monitorAnonymousSession)var e=this._timer.setInterval((function(){t._timer.clearInterval(e),t._userManager.querySessionStatus().then((function(e){var r={session_state:e.session_state};e.sub&&e.sid&&(r.profile={sub:e.sub,sid:e.sid}),t._start(r)})).catch((function(t){i.Log.error("SessionMonitor: error from querySessionStatus:",t.message)}))}),1e3)},t.prototype._callback=function(){var t=this;this._userManager.querySessionStatus().then((function(e){var r=!0;e?e.sub===t._sub?(r=!1,t._checkSessionIFrame.start(e.session_state),e.sid===t._sid?i.Log.debug("SessionMonitor._callback: Same sub still logged in at OP, restarting check session iframe; session_state:",e.session_state):(i.Log.debug("SessionMonitor._callback: Same sub still logged in at OP, session state has changed, restarting check session iframe; session_state:",e.session_state),t._userManager.events._raiseUserSessionChanged())):i.Log.debug("SessionMonitor._callback: Different subject signed into OP:",e.sub):i.Log.debug("SessionMonitor._callback: Subject no longer signed into OP"),r&&(t._sub?(i.Log.debug("SessionMonitor._callback: SessionMonitor._callback; raising signed out event"),t._userManager.events._raiseUserSignedOut()):(i.Log.debug("SessionMonitor._callback: SessionMonitor._callback; raising signed in event"),t._userManager.events._raiseUserSignedIn()))})).catch((function(e){t._sub&&(i.Log.debug("SessionMonitor._callback: Error calling queryCurrentSigninSession; raising signed out event",e.message),t._userManager.events._raiseUserSignedOut())}))},n(t,[{key:"_settings",get:function(){return this._userManager.settings}},{key:"_metadataService",get:function(){return this._userManager.metadataService}},{key:"_client_id",get:function(){return this._settings.client_id}},{key:"_checkSessionInterval",get:function(){return this._settings.checkSessionInterval}},{key:"_stopCheckSessionOnError",get:function(){return this._settings.stopCheckSessionOnError}}]),t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CheckSessionIFrame=void 0;var n=r(0);function i(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}e.CheckSessionIFrame=function(){function t(e,r,n,o){var s=!(arguments.length>4&&void 0!==arguments[4])||arguments[4];i(this,t),this._callback=e,this._client_id=r,this._url=n,this._interval=o||2e3,this._stopOnError=s;var a=n.indexOf("/",n.indexOf("//")+2);this._frame_origin=n.substr(0,a),this._frame=window.document.createElement("iframe"),this._frame.style.visibility="hidden",this._frame.style.position="absolute",this._frame.style.display="none",this._frame.width=0,this._frame.height=0,this._frame.src=n}return t.prototype.load=function(){var t=this;return new Promise((function(e){t._frame.onload=function(){e()},window.document.body.appendChild(t._frame),t._boundMessageEvent=t._message.bind(t),window.addEventListener("message",t._boundMessageEvent,!1)}))},t.prototype._message=function(t){t.origin===this._frame_origin&&t.source===this._frame.contentWindow&&("error"===t.data?(n.Log.error("CheckSessionIFrame: error message from check session op iframe"),this._stopOnError&&this.stop()):"changed"===t.data?(n.Log.debug("CheckSessionIFrame: changed message from check session op iframe"),this.stop(),this._callback()):n.Log.debug("CheckSessionIFrame: "+t.data+" message from check session op iframe"))},t.prototype.start=function(t){var e=this;if(this._session_state!==t){n.Log.debug("CheckSessionIFrame.start"),this.stop(),this._session_state=t;var r=function(){e._frame.contentWindow.postMessage(e._client_id+" "+e._session_state,e._frame_origin)};r(),this._timer=window.setInterval(r,this._interval)}},t.prototype.stop=function(){this._session_state=null,this._timer&&(n.Log.debug("CheckSessionIFrame.stop"),window.clearInterval(this._timer),this._timer=null)},t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.TokenRevocationClient=void 0;var n=r(0),i=r(2),o=r(1);function s(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}var a="access_token",u="refresh_token";e.TokenRevocationClient=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:o.Global.XMLHttpRequest,a=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService;if(s(this,t),!e)throw n.Log.error("TokenRevocationClient.ctor: No settings provided"),new Error("No settings provided.");this._settings=e,this._XMLHttpRequestCtor=r,this._metadataService=new a(this._settings)}return t.prototype.revoke=function(t,e){var r=this,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"access_token";if(!t)throw n.Log.error("TokenRevocationClient.revoke: No token provided"),new Error("No token provided.");if(i!==a&&i!=u)throw n.Log.error("TokenRevocationClient.revoke: Invalid token type"),new Error("Invalid token type.");return this._metadataService.getRevocationEndpoint().then((function(o){if(o){n.Log.debug("TokenRevocationClient.revoke: Revoking "+i);var s=r._settings.client_id,a=r._settings.client_secret;return r._revoke(o,s,a,t,i)}if(e)throw n.Log.error("TokenRevocationClient.revoke: Revocation not supported"),new Error("Revocation not supported")}))},t.prototype._revoke=function(t,e,r,i,o){var s=this;return new Promise((function(a,u){var c=new s._XMLHttpRequestCtor;c.open("POST",t),c.onload=function(){n.Log.debug("TokenRevocationClient.revoke: HTTP response received, status",c.status),200===c.status?a():u(Error(c.statusText+" ("+c.status+")"))},c.onerror=function(){n.Log.debug("TokenRevocationClient.revoke: Network Error."),u("Network Error")};var h="client_id="+encodeURIComponent(e);r&&(h+="&client_secret="+encodeURIComponent(r)),h+="&token_type_hint="+encodeURIComponent(o),h+="&token="+encodeURIComponent(i),c.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),c.send(h)}))},t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.CordovaPopupWindow=void 0;var n=function(){function t(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:o.MetadataService,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:s.UserInfoService,u=arguments.length>3&&void 0!==arguments[3]?arguments[3]:c.JoseUtil,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:a.TokenClient;if(h(this,t),!e)throw i.Log.error("ResponseValidator.ctor: No settings passed to ResponseValidator"),new Error("settings");this._settings=e,this._metadataService=new r(this._settings),this._userInfoService=new n(this._settings),this._joseUtil=u,this._tokenClient=new l(this._settings)}return t.prototype.validateSigninResponse=function(t,e){var r=this;return i.Log.debug("ResponseValidator.validateSigninResponse"),this._processSigninParams(t,e).then((function(e){return i.Log.debug("ResponseValidator.validateSigninResponse: state processed"),r._validateTokens(t,e).then((function(e){return i.Log.debug("ResponseValidator.validateSigninResponse: tokens validated"),r._processClaims(t,e).then((function(t){return i.Log.debug("ResponseValidator.validateSigninResponse: claims processed"),t}))}))}))},t.prototype.validateSignoutResponse=function(t,e){return t.id!==e.state?(i.Log.error("ResponseValidator.validateSignoutResponse: State does not match"),Promise.reject(new Error("State does not match"))):(i.Log.debug("ResponseValidator.validateSignoutResponse: state validated"),e.state=t.data,e.error?(i.Log.warn("ResponseValidator.validateSignoutResponse: Response was error",e.error),Promise.reject(new u.ErrorResponse(e))):Promise.resolve(e))},t.prototype._processSigninParams=function(t,e){if(t.id!==e.state)return i.Log.error("ResponseValidator._processSigninParams: State does not match"),Promise.reject(new Error("State does not match"));if(!t.client_id)return i.Log.error("ResponseValidator._processSigninParams: No client_id on state"),Promise.reject(new Error("No client_id on state"));if(!t.authority)return i.Log.error("ResponseValidator._processSigninParams: No authority on state"),Promise.reject(new Error("No authority on state"));if(this._settings.authority){if(this._settings.authority&&this._settings.authority!==t.authority)return i.Log.error("ResponseValidator._processSigninParams: authority mismatch on settings vs. signin state"),Promise.reject(new Error("authority mismatch on settings vs. signin state"))}else this._settings.authority=t.authority;if(this._settings.client_id){if(this._settings.client_id&&this._settings.client_id!==t.client_id)return i.Log.error("ResponseValidator._processSigninParams: client_id mismatch on settings vs. signin state"),Promise.reject(new Error("client_id mismatch on settings vs. signin state"))}else this._settings.client_id=t.client_id;return i.Log.debug("ResponseValidator._processSigninParams: state validated"),e.state=t.data,e.error?(i.Log.warn("ResponseValidator._processSigninParams: Response was error",e.error),Promise.reject(new u.ErrorResponse(e))):t.nonce&&!e.id_token?(i.Log.error("ResponseValidator._processSigninParams: Expecting id_token in response"),Promise.reject(new Error("No id_token in response"))):!t.nonce&&e.id_token?(i.Log.error("ResponseValidator._processSigninParams: Not expecting id_token in response"),Promise.reject(new Error("Unexpected id_token in response"))):t.code_verifier&&!e.code?(i.Log.error("ResponseValidator._processSigninParams: Expecting code in response"),Promise.reject(new Error("No code in response"))):!t.code_verifier&&e.code?(i.Log.error("ResponseValidator._processSigninParams: Not expecting code in response"),Promise.reject(new Error("Unexpected code in response"))):(e.scope||(e.scope=t.scope),Promise.resolve(e))},t.prototype._processClaims=function(t,e){var r=this;if(e.isOpenIdConnect){if(i.Log.debug("ResponseValidator._processClaims: response is OIDC, processing claims"),e.profile=this._filterProtocolClaims(e.profile),!0!==t.skipUserInfo&&this._settings.loadUserInfo&&e.access_token)return i.Log.debug("ResponseValidator._processClaims: loading user info"),this._userInfoService.getClaims(e.access_token).then((function(t){return i.Log.debug("ResponseValidator._processClaims: user info claims received from user info endpoint"),t.sub!==e.profile.sub?(i.Log.error("ResponseValidator._processClaims: sub from user info endpoint does not match sub in id_token"),Promise.reject(new Error("sub from user info endpoint does not match sub in id_token"))):(e.profile=r._mergeClaims(e.profile,t),i.Log.debug("ResponseValidator._processClaims: user info claims received, updated profile:",e.profile),e)}));i.Log.debug("ResponseValidator._processClaims: not loading user info")}else i.Log.debug("ResponseValidator._processClaims: response is not OIDC, not processing claims");return Promise.resolve(e)},t.prototype._mergeClaims=function(t,e){var r=Object.assign({},t);for(var i in e){var o=e[i];Array.isArray(o)||(o=[o]);for(var s=0;s1)return i.Log.error("ResponseValidator._validateIdToken: No kid found in id_token and more than one key found in metadata"),Promise.reject(new Error("No kid found in id_token and more than one key found in metadata"));o=r[0]}return Promise.resolve(o)}))},t.prototype._getSigningKeyForJwtWithSingleRetry=function(t){var e=this;return this._getSigningKeyForJwt(t).then((function(r){return r?Promise.resolve(r):(e._metadataService.resetSigningKeys(),e._getSigningKeyForJwt(t))}))},t.prototype._validateIdToken=function(t,e){var r=this;if(!t.nonce)return i.Log.error("ResponseValidator._validateIdToken: No nonce on state"),Promise.reject(new Error("No nonce on state"));var n=this._joseUtil.parseJwt(e.id_token);return n&&n.header&&n.payload?t.nonce!==n.payload.nonce?(i.Log.error("ResponseValidator._validateIdToken: Invalid nonce in id_token"),Promise.reject(new Error("Invalid nonce in id_token"))):this._metadataService.getIssuer().then((function(o){return i.Log.debug("ResponseValidator._validateIdToken: Received issuer"),r._getSigningKeyForJwtWithSingleRetry(n).then((function(s){if(!s)return i.Log.error("ResponseValidator._validateIdToken: No key matching kid or alg found in signing keys"),Promise.reject(new Error("No key matching kid or alg found in signing keys"));var a=t.client_id,u=r._settings.clockSkew;return i.Log.debug("ResponseValidator._validateIdToken: Validaing JWT; using clock skew (in seconds) of: ",u),r._joseUtil.validateJwt(e.id_token,s,o,a,u).then((function(){return i.Log.debug("ResponseValidator._validateIdToken: JWT validation successful"),n.payload.sub?(e.profile=n.payload,e):(i.Log.error("ResponseValidator._validateIdToken: No sub present in id_token"),Promise.reject(new Error("No sub present in id_token")))}))}))})):(i.Log.error("ResponseValidator._validateIdToken: Failed to parse id_token",n),Promise.reject(new Error("Failed to parse id_token")))},t.prototype._filterByAlg=function(t,e){var r=null;if(e.startsWith("RS"))r="RSA";else if(e.startsWith("PS"))r="PS";else{if(!e.startsWith("ES"))return i.Log.debug("ResponseValidator._filterByAlg: alg not supported: ",e),[];r="EC"}return i.Log.debug("ResponseValidator._filterByAlg: Looking for keys that match kty: ",r),t=t.filter((function(t){return t.kty===r})),i.Log.debug("ResponseValidator._filterByAlg: Number of keys that match kty: ",r,t.length),t},t.prototype._validateAccessToken=function(t){if(!t.profile)return i.Log.error("ResponseValidator._validateAccessToken: No profile loaded from id_token"),Promise.reject(new Error("No profile loaded from id_token"));if(!t.profile.at_hash)return i.Log.error("ResponseValidator._validateAccessToken: No at_hash in id_token"),Promise.reject(new Error("No at_hash in id_token"));if(!t.id_token)return i.Log.error("ResponseValidator._validateAccessToken: No id_token"),Promise.reject(new Error("No id_token"));var e=this._joseUtil.parseJwt(t.id_token);if(!e||!e.header)return i.Log.error("ResponseValidator._validateAccessToken: Failed to parse id_token",e),Promise.reject(new Error("Failed to parse id_token"));var r=e.header.alg;if(!r||5!==r.length)return i.Log.error("ResponseValidator._validateAccessToken: Unsupported alg:",r),Promise.reject(new Error("Unsupported alg: "+r));var n=r.substr(2,3);if(!n)return i.Log.error("ResponseValidator._validateAccessToken: Unsupported alg:",r,n),Promise.reject(new Error("Unsupported alg: "+r));if(256!==(n=parseInt(n))&&384!==n&&512!==n)return i.Log.error("ResponseValidator._validateAccessToken: Unsupported alg:",r,n),Promise.reject(new Error("Unsupported alg: "+r));var o="sha"+n,s=this._joseUtil.hashString(t.access_token,o);if(!s)return i.Log.error("ResponseValidator._validateAccessToken: access_token hash failed:",o),Promise.reject(new Error("Failed to validate at_hash"));var a=s.substr(0,s.length/2),u=this._joseUtil.hexToBase64Url(a);return u!==t.profile.at_hash?(i.Log.error("ResponseValidator._validateAccessToken: Failed to validate at_hash",u,t.profile.at_hash),Promise.reject(new Error("Failed to validate at_hash"))):(i.Log.debug("ResponseValidator._validateAccessToken: success"),Promise.resolve(t))},t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UserInfoService=void 0;var n=r(7),i=r(2),o=r(0),s=r(4);function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}e.UserInfoService=function(){function t(e){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:n.JsonService,u=arguments.length>2&&void 0!==arguments[2]?arguments[2]:i.MetadataService,c=arguments.length>3&&void 0!==arguments[3]?arguments[3]:s.JoseUtil;if(a(this,t),!e)throw o.Log.error("UserInfoService.ctor: No settings passed"),new Error("settings");this._settings=e,this._jsonService=new r(void 0,void 0,this._getClaimsFromJwt.bind(this)),this._metadataService=new u(this._settings),this._joseUtil=c}return t.prototype.getClaims=function(t){var e=this;return t?this._metadataService.getUserInfoEndpoint().then((function(r){return o.Log.debug("UserInfoService.getClaims: received userinfo url",r),e._jsonService.getJson(r,t).then((function(t){return o.Log.debug("UserInfoService.getClaims: claims received",t),t}))})):(o.Log.error("UserInfoService.getClaims: No token passed"),Promise.reject(new Error("A token is required")))},t.prototype._getClaimsFromJwt=function t(e){var r=this;try{var n=this._joseUtil.parseJwt(e.responseText);if(!n||!n.header||!n.payload)return o.Log.error("UserInfoService._getClaimsFromJwt: Failed to parse JWT",n),Promise.reject(new Error("Failed to parse id_token"));var i=n.header.kid,s=void 0;switch(this._settings.userInfoJwtIssuer){case"OP":s=this._metadataService.getIssuer();break;case"ANY":s=Promise.resolve(n.payload.iss);break;default:s=Promise.resolve(this._settings.userInfoJwtIssuer)}return s.then((function(t){return o.Log.debug("UserInfoService._getClaimsFromJwt: Received issuer:"+t),r._metadataService.getSigningKeys().then((function(s){if(!s)return o.Log.error("UserInfoService._getClaimsFromJwt: No signing keys from metadata"),Promise.reject(new Error("No signing keys from metadata"));o.Log.debug("UserInfoService._getClaimsFromJwt: Received signing keys");var a=void 0;if(i)a=s.filter((function(t){return t.kid===i}))[0];else{if((s=r._filterByAlg(s,n.header.alg)).length>1)return o.Log.error("UserInfoService._getClaimsFromJwt: No kid found in id_token and more than one key found in metadata"),Promise.reject(new Error("No kid found in id_token and more than one key found in metadata"));a=s[0]}if(!a)return o.Log.error("UserInfoService._getClaimsFromJwt: No key matching kid or alg found in signing keys"),Promise.reject(new Error("No key matching kid or alg found in signing keys"));var u=r._settings.client_id,c=r._settings.clockSkew;return o.Log.debug("UserInfoService._getClaimsFromJwt: Validaing JWT; using clock skew (in seconds) of: ",c),r._joseUtil.validateJwt(e.responseText,a,t,u,c,void 0,!0).then((function(){return o.Log.debug("UserInfoService._getClaimsFromJwt: JWT validation successful"),n.payload}))}))}))}catch(t){return o.Log.error("UserInfoService._getClaimsFromJwt: Error parsing JWT response",t.message),void reject(t)}},t.prototype._filterByAlg=function(t,e){var r=null;if(e.startsWith("RS"))r="RSA";else if(e.startsWith("PS"))r="PS";else{if(!e.startsWith("ES"))return o.Log.debug("UserInfoService._filterByAlg: alg not supported: ",e),[];r="EC"}return o.Log.debug("UserInfoService._filterByAlg: Looking for keys that match kty: ",r),t=t.filter((function(t){return t.kty===r})),o.Log.debug("UserInfoService._filterByAlg: Number of keys that match kty: ",r,t.length),t},t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.AllowedSigningAlgs=e.b64tohex=e.hextob64u=e.crypto=e.X509=e.KeyUtil=e.jws=void 0;var n=r(27);e.jws=n.jws,e.KeyUtil=n.KEYUTIL,e.X509=n.X509,e.crypto=n.crypto,e.hextob64u=n.hextob64u,e.b64tohex=n.b64tohex,e.AllowedSigningAlgs=["RS256","RS384","RS512","PS256","PS384","PS512","ES256","ES384","ES512"]},function(t,e,r){"use strict";(function(t){Object.defineProperty(e,"__esModule",{value:!0});var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},n={userAgent:!1},i={};if(void 0===o)var o={};o.lang={extend:function(t,e,r){if(!e||!t)throw new Error("YAHOO.lang.extend failed, please check that all dependencies are included.");var i=function(){};if(i.prototype=e.prototype,t.prototype=new i,t.prototype.constructor=t,t.superclass=e.prototype,e.prototype.constructor==Object.prototype.constructor&&(e.prototype.constructor=e),r){var o;for(o in r)t.prototype[o]=r[o];var s=function(){},a=["toString","valueOf"];try{/MSIE/.test(n.userAgent)&&(s=function(t,e){for(o=0;o>>2]>>>24-o%4*8&255;e[n+o>>>2]|=s<<24-(n+o)%4*8}else for(o=0;o>>2]=r[o>>>2];return this.sigBytes+=i,this},clamp:function(){var t=this.words,e=this.sigBytes;t[e>>>2]&=4294967295<<32-e%4*8,t.length=s.ceil(e/4)},clone:function(){var t=c.clone.call(this);return t.words=this.words.slice(0),t},random:function(t){for(var e=[],r=0;r>>2]>>>24-i%4*8&255;n.push((o>>>4).toString(16)),n.push((15&o).toString(16))}return n.join("")},parse:function(t){for(var e=t.length,r=[],n=0;n>>3]|=parseInt(t.substr(n,2),16)<<24-n%8*4;return new h.init(r,e/2)}},g=l.Latin1={stringify:function(t){for(var e=t.words,r=t.sigBytes,n=[],i=0;i>>2]>>>24-i%4*8&255;n.push(String.fromCharCode(o))}return n.join("")},parse:function(t){for(var e=t.length,r=[],n=0;n>>2]|=(255&t.charCodeAt(n))<<24-n%4*8;return new h.init(r,e)}},d=l.Utf8={stringify:function(t){try{return decodeURIComponent(escape(g.stringify(t)))}catch(t){throw new Error("Malformed UTF-8 data")}},parse:function(t){return g.parse(unescape(encodeURIComponent(t)))}},p=u.BufferedBlockAlgorithm=c.extend({reset:function(){this._data=new h.init,this._nDataBytes=0},_append:function(t){"string"==typeof t&&(t=d.parse(t)),this._data.concat(t),this._nDataBytes+=t.sigBytes},_process:function(t){var e=this._data,r=e.words,n=e.sigBytes,i=this.blockSize,o=n/(4*i),a=(o=t?s.ceil(o):s.max((0|o)-this._minBufferSize,0))*i,u=s.min(4*a,n);if(a){for(var c=0;c>>2]>>>24-i%4*8&255)<<16|(e[i+1>>>2]>>>24-(i+1)%4*8&255)<<8|e[i+2>>>2]>>>24-(i+2)%4*8&255,s=0;4>s&&i+.75*s>>6*(3-s)&63));if(e=n.charAt(64))for(;t.length%4;)t.push(e);return t.join("")},parse:function(t){var r=t.length,n=this._map;(i=n.charAt(64))&&-1!=(i=t.indexOf(i))&&(r=i);for(var i=[],o=0,s=0;s>>6-s%4*2;i[o>>>2]|=(a|u)<<24-o%4*8,o++}return e.create(i,o)},_map:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="}}(),function(t){for(var e=y,r=(i=e.lib).WordArray,n=i.Hasher,i=e.algo,o=[],s=[],a=function(t){return 4294967296*(t-(0|t))|0},u=2,c=0;64>c;){var h;t:{h=u;for(var l=t.sqrt(h),f=2;f<=l;f++)if(!(h%f)){h=!1;break t}h=!0}h&&(8>c&&(o[c]=a(t.pow(u,.5))),s[c]=a(t.pow(u,1/3)),c++),u++}var g=[];i=i.SHA256=n.extend({_doReset:function(){this._hash=new r.init(o.slice(0))},_doProcessBlock:function(t,e){for(var r=this._hash.words,n=r[0],i=r[1],o=r[2],a=r[3],u=r[4],c=r[5],h=r[6],l=r[7],f=0;64>f;f++){if(16>f)g[f]=0|t[e+f];else{var d=g[f-15],p=g[f-2];g[f]=((d<<25|d>>>7)^(d<<14|d>>>18)^d>>>3)+g[f-7]+((p<<15|p>>>17)^(p<<13|p>>>19)^p>>>10)+g[f-16]}d=l+((u<<26|u>>>6)^(u<<21|u>>>11)^(u<<7|u>>>25))+(u&c^~u&h)+s[f]+g[f],p=((n<<30|n>>>2)^(n<<19|n>>>13)^(n<<10|n>>>22))+(n&i^n&o^i&o),l=h,h=c,c=u,u=a+d|0,a=o,o=i,i=n,n=d+p|0}r[0]=r[0]+n|0,r[1]=r[1]+i|0,r[2]=r[2]+o|0,r[3]=r[3]+a|0,r[4]=r[4]+u|0,r[5]=r[5]+c|0,r[6]=r[6]+h|0,r[7]=r[7]+l|0},_doFinalize:function(){var e=this._data,r=e.words,n=8*this._nDataBytes,i=8*e.sigBytes;return r[i>>>5]|=128<<24-i%32,r[14+(i+64>>>9<<4)]=t.floor(n/4294967296),r[15+(i+64>>>9<<4)]=n,e.sigBytes=4*r.length,this._process(),this._hash},clone:function(){var t=n.clone.call(this);return t._hash=this._hash.clone(),t}}),e.SHA256=n._createHelper(i),e.HmacSHA256=n._createHmacHelper(i)}(Math),function(){function t(){return n.create.apply(n,arguments)}for(var e=y,r=e.lib.Hasher,n=(o=e.x64).Word,i=o.WordArray,o=e.algo,s=[t(1116352408,3609767458),t(1899447441,602891725),t(3049323471,3964484399),t(3921009573,2173295548),t(961987163,4081628472),t(1508970993,3053834265),t(2453635748,2937671579),t(2870763221,3664609560),t(3624381080,2734883394),t(310598401,1164996542),t(607225278,1323610764),t(1426881987,3590304994),t(1925078388,4068182383),t(2162078206,991336113),t(2614888103,633803317),t(3248222580,3479774868),t(3835390401,2666613458),t(4022224774,944711139),t(264347078,2341262773),t(604807628,2007800933),t(770255983,1495990901),t(1249150122,1856431235),t(1555081692,3175218132),t(1996064986,2198950837),t(2554220882,3999719339),t(2821834349,766784016),t(2952996808,2566594879),t(3210313671,3203337956),t(3336571891,1034457026),t(3584528711,2466948901),t(113926993,3758326383),t(338241895,168717936),t(666307205,1188179964),t(773529912,1546045734),t(1294757372,1522805485),t(1396182291,2643833823),t(1695183700,2343527390),t(1986661051,1014477480),t(2177026350,1206759142),t(2456956037,344077627),t(2730485921,1290863460),t(2820302411,3158454273),t(3259730800,3505952657),t(3345764771,106217008),t(3516065817,3606008344),t(3600352804,1432725776),t(4094571909,1467031594),t(275423344,851169720),t(430227734,3100823752),t(506948616,1363258195),t(659060556,3750685593),t(883997877,3785050280),t(958139571,3318307427),t(1322822218,3812723403),t(1537002063,2003034995),t(1747873779,3602036899),t(1955562222,1575990012),t(2024104815,1125592928),t(2227730452,2716904306),t(2361852424,442776044),t(2428436474,593698344),t(2756734187,3733110249),t(3204031479,2999351573),t(3329325298,3815920427),t(3391569614,3928383900),t(3515267271,566280711),t(3940187606,3454069534),t(4118630271,4000239992),t(116418474,1914138554),t(174292421,2731055270),t(289380356,3203993006),t(460393269,320620315),t(685471733,587496836),t(852142971,1086792851),t(1017036298,365543100),t(1126000580,2618297676),t(1288033470,3409855158),t(1501505948,4234509866),t(1607167915,987167468),t(1816402316,1246189591)],a=[],u=0;80>u;u++)a[u]=t();o=o.SHA512=r.extend({_doReset:function(){this._hash=new i.init([new n.init(1779033703,4089235720),new n.init(3144134277,2227873595),new n.init(1013904242,4271175723),new n.init(2773480762,1595750129),new n.init(1359893119,2917565137),new n.init(2600822924,725511199),new n.init(528734635,4215389547),new n.init(1541459225,327033209)])},_doProcessBlock:function(t,e){for(var r=(l=this._hash.words)[0],n=l[1],i=l[2],o=l[3],u=l[4],c=l[5],h=l[6],l=l[7],f=r.high,g=r.low,d=n.high,p=n.low,v=i.high,y=i.low,m=o.high,_=o.low,S=u.high,w=u.low,b=c.high,F=c.low,E=h.high,x=h.low,A=l.high,k=l.low,P=f,C=g,T=d,R=p,I=v,D=y,L=m,N=_,U=S,O=w,B=b,M=F,j=E,H=x,K=A,V=k,q=0;80>q;q++){var J=a[q];if(16>q)var W=J.high=0|t[e+2*q],z=J.low=0|t[e+2*q+1];else{W=((z=(W=a[q-15]).high)>>>1|(Y=W.low)<<31)^(z>>>8|Y<<24)^z>>>7;var Y=(Y>>>1|z<<31)^(Y>>>8|z<<24)^(Y>>>7|z<<25),G=((z=(G=a[q-2]).high)>>>19|(X=G.low)<<13)^(z<<3|X>>>29)^z>>>6,X=(X>>>19|z<<13)^(X<<3|z>>>29)^(X>>>6|z<<26),$=(z=a[q-7]).high,Q=(Z=a[q-16]).high,Z=Z.low;W=(W=(W=W+$+((z=Y+z.low)>>>0>>0?1:0))+G+((z+=X)>>>0>>0?1:0))+Q+((z+=Z)>>>0>>0?1:0),J.high=W,J.low=z}$=U&B^~U&j,Z=O&M^~O&H,J=P&T^P&I^T&I;var tt=C&R^C&D^R&D,et=(Y=(P>>>28|C<<4)^(P<<30|C>>>2)^(P<<25|C>>>7),G=(C>>>28|P<<4)^(C<<30|P>>>2)^(C<<25|P>>>7),(X=s[q]).high),rt=X.low;Q=K+((U>>>14|O<<18)^(U>>>18|O<<14)^(U<<23|O>>>9))+((X=V+((O>>>14|U<<18)^(O>>>18|U<<14)^(O<<23|U>>>9)))>>>0>>0?1:0),K=j,V=H,j=B,H=M,B=U,M=O,U=L+(Q=(Q=(Q=Q+$+((X+=Z)>>>0>>0?1:0))+et+((X+=rt)>>>0>>0?1:0))+W+((X+=z)>>>0>>0?1:0))+((O=N+X|0)>>>0>>0?1:0)|0,L=I,N=D,I=T,D=R,T=P,R=C,P=Q+(J=Y+J+((z=G+tt)>>>0>>0?1:0))+((C=X+z|0)>>>0>>0?1:0)|0}g=r.low=g+C,r.high=f+P+(g>>>0>>0?1:0),p=n.low=p+R,n.high=d+T+(p>>>0>>0?1:0),y=i.low=y+D,i.high=v+I+(y>>>0>>0?1:0),_=o.low=_+N,o.high=m+L+(_>>>0>>0?1:0),w=u.low=w+O,u.high=S+U+(w>>>0>>0?1:0),F=c.low=F+M,c.high=b+B+(F>>>0>>0?1:0),x=h.low=x+H,h.high=E+j+(x>>>0>>0?1:0),k=l.low=k+V,l.high=A+K+(k>>>0>>0?1:0)},_doFinalize:function(){var t=this._data,e=t.words,r=8*this._nDataBytes,n=8*t.sigBytes;return e[n>>>5]|=128<<24-n%32,e[30+(n+128>>>10<<5)]=Math.floor(r/4294967296),e[31+(n+128>>>10<<5)]=r,t.sigBytes=4*e.length,this._process(),this._hash.toX32()},clone:function(){var t=r.clone.call(this);return t._hash=this._hash.clone(),t},blockSize:32}),e.SHA512=r._createHelper(o),e.HmacSHA512=r._createHmacHelper(o)}(),function(){var t=y,e=(i=t.x64).Word,r=i.WordArray,n=(i=t.algo).SHA512,i=i.SHA384=n.extend({_doReset:function(){this._hash=new r.init([new e.init(3418070365,3238371032),new e.init(1654270250,914150663),new e.init(2438529370,812702999),new e.init(355462360,4144912697),new e.init(1731405415,4290775857),new e.init(2394180231,1750603025),new e.init(3675008525,1694076839),new e.init(1203062813,3204075428)])},_doFinalize:function(){var t=n._doFinalize.call(this);return t.sigBytes-=16,t}});t.SHA384=n._createHelper(i),t.HmacSHA384=n._createHmacHelper(i)}();var m,_="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";function S(t){var e,r,n="";for(e=0;e+3<=t.length;e+=3)r=parseInt(t.substring(e,e+3),16),n+=_.charAt(r>>6)+_.charAt(63&r);for(e+1==t.length?(r=parseInt(t.substring(e,e+1),16),n+=_.charAt(r<<2)):e+2==t.length&&(r=parseInt(t.substring(e,e+2),16),n+=_.charAt(r>>2)+_.charAt((3&r)<<4));(3&n.length)>0;)n+="=";return n}function w(t){var e,r,n,i="",o=0;for(e=0;e>2),r=3&n,o=1):1==o?(i+=P(r<<2|n>>4),r=15&n,o=2):2==o?(i+=P(r),i+=P(n>>2),r=3&n,o=3):(i+=P(r<<2|n>>4),i+=P(15&n),o=0));return 1==o&&(i+=P(r<<2)),i}function b(t){var e,r=w(t),n=new Array;for(e=0;2*e>15;--o>=0;){var u=32767&this[t],c=this[t++]>>15,h=a*u+c*s;i=((u=s*u+((32767&h)<<15)+r[n]+(1073741823&i))>>>30)+(h>>>15)+a*c+(i>>>30),r[n++]=1073741823&u}return i},m=30):"Netscape"!=n.appName?(F.prototype.am=function(t,e,r,n,i,o){for(;--o>=0;){var s=e*this[t++]+r[n]+i;i=Math.floor(s/67108864),r[n++]=67108863&s}return i},m=26):(F.prototype.am=function(t,e,r,n,i,o){for(var s=16383&e,a=e>>14;--o>=0;){var u=16383&this[t],c=this[t++]>>14,h=a*u+c*s;i=((u=s*u+((16383&h)<<14)+r[n]+i)>>28)+(h>>14)+a*c,r[n++]=268435455&u}return i},m=28),F.prototype.DB=m,F.prototype.DM=(1<>>16)&&(t=e,r+=16),0!=(e=t>>8)&&(t=e,r+=8),0!=(e=t>>4)&&(t=e,r+=4),0!=(e=t>>2)&&(t=e,r+=2),0!=(e=t>>1)&&(t=e,r+=1),r}function I(t){this.m=t}function D(t){this.m=t,this.mp=t.invDigit(),this.mpl=32767&this.mp,this.mph=this.mp>>15,this.um=(1<>=16,e+=16),0==(255&t)&&(t>>=8,e+=8),0==(15&t)&&(t>>=4,e+=4),0==(3&t)&&(t>>=2,e+=2),0==(1&t)&&++e,e}function M(t){for(var e=0;0!=t;)t&=t-1,++e;return e}function j(){}function H(t){return t}function K(t){this.r2=E(),this.q3=E(),F.ONE.dlShiftTo(2*t.t,this.r2),this.mu=this.r2.divide(t),this.m=t}I.prototype.convert=function(t){return t.s<0||t.compareTo(this.m)>=0?t.mod(this.m):t},I.prototype.revert=function(t){return t},I.prototype.reduce=function(t){t.divRemTo(this.m,null,t)},I.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},I.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},D.prototype.convert=function(t){var e=E();return t.abs().dlShiftTo(this.m.t,e),e.divRemTo(this.m,null,e),t.s<0&&e.compareTo(F.ZERO)>0&&this.m.subTo(e,e),e},D.prototype.revert=function(t){var e=E();return t.copyTo(e),this.reduce(e),e},D.prototype.reduce=function(t){for(;t.t<=this.mt2;)t[t.t++]=0;for(var e=0;e>15)*this.mpl&this.um)<<15)&t.DM;for(t[r=e+this.m.t]+=this.m.am(0,n,t,e,0,this.m.t);t[r]>=t.DV;)t[r]-=t.DV,t[++r]++}t.clamp(),t.drShiftTo(this.m.t,t),t.compareTo(this.m)>=0&&t.subTo(this.m,t)},D.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},D.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)},F.prototype.copyTo=function(t){for(var e=this.t-1;e>=0;--e)t[e]=this[e];t.t=this.t,t.s=this.s},F.prototype.fromInt=function(t){this.t=1,this.s=t<0?-1:0,t>0?this[0]=t:t<-1?this[0]=t+this.DV:this.t=0},F.prototype.fromString=function(t,e){var r;if(16==e)r=4;else if(8==e)r=3;else if(256==e)r=8;else if(2==e)r=1;else if(32==e)r=5;else{if(4!=e)return void this.fromRadix(t,e);r=2}this.t=0,this.s=0;for(var n=t.length,i=!1,o=0;--n>=0;){var s=8==r?255&t[n]:C(t,n);s<0?"-"==t.charAt(n)&&(i=!0):(i=!1,0==o?this[this.t++]=s:o+r>this.DB?(this[this.t-1]|=(s&(1<>this.DB-o):this[this.t-1]|=s<=this.DB&&(o-=this.DB))}8==r&&0!=(128&t[0])&&(this.s=-1,o>0&&(this[this.t-1]|=(1<0&&this[this.t-1]==t;)--this.t},F.prototype.dlShiftTo=function(t,e){var r;for(r=this.t-1;r>=0;--r)e[r+t]=this[r];for(r=t-1;r>=0;--r)e[r]=0;e.t=this.t+t,e.s=this.s},F.prototype.drShiftTo=function(t,e){for(var r=t;r=0;--r)e[r+s+1]=this[r]>>i|a,a=(this[r]&o)<=0;--r)e[r]=0;e[s]=a,e.t=this.t+s+1,e.s=this.s,e.clamp()},F.prototype.rShiftTo=function(t,e){e.s=this.s;var r=Math.floor(t/this.DB);if(r>=this.t)e.t=0;else{var n=t%this.DB,i=this.DB-n,o=(1<>n;for(var s=r+1;s>n;n>0&&(e[this.t-r-1]|=(this.s&o)<>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n-=t.s}e.s=n<0?-1:0,n<-1?e[r++]=this.DV+n:n>0&&(e[r++]=n),e.t=r,e.clamp()},F.prototype.multiplyTo=function(t,e){var r=this.abs(),n=t.abs(),i=r.t;for(e.t=i+n.t;--i>=0;)e[i]=0;for(i=0;i=0;)t[r]=0;for(r=0;r=e.DV&&(t[r+e.t]-=e.DV,t[r+e.t+1]=1)}t.t>0&&(t[t.t-1]+=e.am(r,e[r],t,2*r,0,1)),t.s=0,t.clamp()},F.prototype.divRemTo=function(t,e,r){var n=t.abs();if(!(n.t<=0)){var i=this.abs();if(i.t0?(n.lShiftTo(u,o),i.lShiftTo(u,r)):(n.copyTo(o),i.copyTo(r));var c=o.t,h=o[c-1];if(0!=h){var l=h*(1<1?o[c-2]>>this.F2:0),f=this.FV/l,g=(1<=0&&(r[r.t++]=1,r.subTo(y,r)),F.ONE.dlShiftTo(c,y),y.subTo(o,o);o.t=0;){var m=r[--p]==h?this.DM:Math.floor(r[p]*f+(r[p-1]+d)*g);if((r[p]+=o.am(0,m,r,v,0,c))0&&r.rShiftTo(u,r),s<0&&F.ZERO.subTo(r,r)}}},F.prototype.invDigit=function(){if(this.t<1)return 0;var t=this[0];if(0==(1&t))return 0;var e=3&t;return(e=(e=(e=(e=e*(2-(15&t)*e)&15)*(2-(255&t)*e)&255)*(2-((65535&t)*e&65535))&65535)*(2-t*e%this.DV)%this.DV)>0?this.DV-e:-e},F.prototype.isEven=function(){return 0==(this.t>0?1&this[0]:this.s)},F.prototype.exp=function(t,e){if(t>4294967295||t<1)return F.ONE;var r=E(),n=E(),i=e.convert(this),o=R(t)-1;for(i.copyTo(r);--o>=0;)if(e.sqrTo(r,n),(t&1<0)e.mulTo(n,i,r);else{var s=r;r=n,n=s}return e.revert(r)},F.prototype.toString=function(t){if(this.s<0)return"-"+this.negate().toString(t);var e;if(16==t)e=4;else if(8==t)e=3;else if(2==t)e=1;else if(32==t)e=5;else{if(4!=t)return this.toRadix(t);e=2}var r,n=(1<0)for(a>a)>0&&(i=!0,o=P(r));s>=0;)a>(a+=this.DB-e)):(r=this[s]>>(a-=e)&n,a<=0&&(a+=this.DB,--s)),r>0&&(i=!0),i&&(o+=P(r));return i?o:"0"},F.prototype.negate=function(){var t=E();return F.ZERO.subTo(this,t),t},F.prototype.abs=function(){return this.s<0?this.negate():this},F.prototype.compareTo=function(t){var e=this.s-t.s;if(0!=e)return e;var r=this.t;if(0!=(e=r-t.t))return this.s<0?-e:e;for(;--r>=0;)if(0!=(e=this[r]-t[r]))return e;return 0},F.prototype.bitLength=function(){return this.t<=0?0:this.DB*(this.t-1)+R(this[this.t-1]^this.s&this.DM)},F.prototype.mod=function(t){var e=E();return this.abs().divRemTo(t,null,e),this.s<0&&e.compareTo(F.ZERO)>0&&t.subTo(e,e),e},F.prototype.modPowInt=function(t,e){var r;return r=t<256||e.isEven()?new I(e):new D(e),this.exp(t,r)},F.ZERO=T(0),F.ONE=T(1),j.prototype.convert=H,j.prototype.revert=H,j.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r)},j.prototype.sqrTo=function(t,e){t.squareTo(e)},K.prototype.convert=function(t){if(t.s<0||t.t>2*this.m.t)return t.mod(this.m);if(t.compareTo(this.m)<0)return t;var e=E();return t.copyTo(e),this.reduce(e),e},K.prototype.revert=function(t){return t},K.prototype.reduce=function(t){for(t.drShiftTo(this.m.t-1,this.r2),t.t>this.m.t+1&&(t.t=this.m.t+1,t.clamp()),this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3),this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);t.compareTo(this.r2)<0;)t.dAddOffset(1,this.m.t+1);for(t.subTo(this.r2,t);t.compareTo(this.m)>=0;)t.subTo(this.m,t)},K.prototype.mulTo=function(t,e,r){t.multiplyTo(e,r),this.reduce(r)},K.prototype.sqrTo=function(t,e){t.squareTo(e),this.reduce(e)};var V,q,J,W=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],z=(1<<26)/W[W.length-1];function Y(){this.i=0,this.j=0,this.S=new Array}function G(){!function(t){q[J++]^=255&t,q[J++]^=t>>8&255,q[J++]^=t>>16&255,q[J++]^=t>>24&255,J>=256&&(J-=256)}((new Date).getTime())}if(F.prototype.chunkSize=function(t){return Math.floor(Math.LN2*this.DB/Math.log(t))},F.prototype.toRadix=function(t){if(null==t&&(t=10),0==this.signum()||t<2||t>36)return"0";var e=this.chunkSize(t),r=Math.pow(t,e),n=T(r),i=E(),o=E(),s="";for(this.divRemTo(n,i,o);i.signum()>0;)s=(r+o.intValue()).toString(t).substr(1)+s,i.divRemTo(n,i,o);return o.intValue().toString(t)+s},F.prototype.fromRadix=function(t,e){this.fromInt(0),null==e&&(e=10);for(var r=this.chunkSize(e),n=Math.pow(e,r),i=!1,o=0,s=0,a=0;a=r&&(this.dMultiply(n),this.dAddOffset(s,0),o=0,s=0))}o>0&&(this.dMultiply(Math.pow(e,o)),this.dAddOffset(s,0)),i&&F.ZERO.subTo(this,this)},F.prototype.fromNumber=function(t,e,r){if("number"==typeof e)if(t<2)this.fromInt(1);else for(this.fromNumber(t,r),this.testBit(t-1)||this.bitwiseTo(F.ONE.shiftLeft(t-1),N,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(e);)this.dAddOffset(2,0),this.bitLength()>t&&this.subTo(F.ONE.shiftLeft(t-1),this);else{var n=new Array,i=7&t;n.length=1+(t>>3),e.nextBytes(n),i>0?n[0]&=(1<>=this.DB;if(t.t>=this.DB;n+=this.s}else{for(n+=this.s;r>=this.DB;n+=t.s}e.s=n<0?-1:0,n>0?e[r++]=n:n<-1&&(e[r++]=this.DV+n),e.t=r,e.clamp()},F.prototype.dMultiply=function(t){this[this.t]=this.am(0,t-1,this,0,0,this.t),++this.t,this.clamp()},F.prototype.dAddOffset=function(t,e){if(0!=t){for(;this.t<=e;)this[this.t++]=0;for(this[e]+=t;this[e]>=this.DV;)this[e]-=this.DV,++e>=this.t&&(this[this.t++]=0),++this[e]}},F.prototype.multiplyLowerTo=function(t,e,r){var n,i=Math.min(this.t+t.t,e);for(r.s=0,r.t=i;i>0;)r[--i]=0;for(n=r.t-this.t;i=0;)r[n]=0;for(n=Math.max(e-this.t,0);n0)if(0==e)r=this[0]%t;else for(var n=this.t-1;n>=0;--n)r=(e*r+this[n])%t;return r},F.prototype.millerRabin=function(t){var e=this.subtract(F.ONE),r=e.getLowestSetBit();if(r<=0)return!1;var n=e.shiftRight(r);(t=t+1>>1)>W.length&&(t=W.length);for(var i=E(),o=0;o>24},F.prototype.shortValue=function(){return 0==this.t?this.s:this[0]<<16>>16},F.prototype.signum=function(){return this.s<0?-1:this.t<=0||1==this.t&&this[0]<=0?0:1},F.prototype.toByteArray=function(){var t=this.t,e=new Array;e[0]=this.s;var r,n=this.DB-t*this.DB%8,i=0;if(t-- >0)for(n>n)!=(this.s&this.DM)>>n&&(e[i++]=r|this.s<=0;)n<8?(r=(this[t]&(1<>(n+=this.DB-8)):(r=this[t]>>(n-=8)&255,n<=0&&(n+=this.DB,--t)),0!=(128&r)&&(r|=-256),0==i&&(128&this.s)!=(128&r)&&++i,(i>0||r!=this.s)&&(e[i++]=r);return e},F.prototype.equals=function(t){return 0==this.compareTo(t)},F.prototype.min=function(t){return this.compareTo(t)<0?this:t},F.prototype.max=function(t){return this.compareTo(t)>0?this:t},F.prototype.and=function(t){var e=E();return this.bitwiseTo(t,L,e),e},F.prototype.or=function(t){var e=E();return this.bitwiseTo(t,N,e),e},F.prototype.xor=function(t){var e=E();return this.bitwiseTo(t,U,e),e},F.prototype.andNot=function(t){var e=E();return this.bitwiseTo(t,O,e),e},F.prototype.not=function(){for(var t=E(),e=0;e=this.t?0!=this.s:0!=(this[e]&1<1){var h=E();for(n.sqrTo(s[1],h);a<=c;)s[a]=E(),n.mulTo(h,s[a-2],s[a]),a+=2}var l,f,g=t.t-1,d=!0,p=E();for(i=R(t[g])-1;g>=0;){for(i>=u?l=t[g]>>i-u&c:(l=(t[g]&(1<0&&(l|=t[g-1]>>this.DB+i-u)),a=r;0==(1&l);)l>>=1,--a;if((i-=a)<0&&(i+=this.DB,--g),d)s[l].copyTo(o),d=!1;else{for(;a>1;)n.sqrTo(o,p),n.sqrTo(p,o),a-=2;a>0?n.sqrTo(o,p):(f=o,o=p,p=f),n.mulTo(p,s[l],o)}for(;g>=0&&0==(t[g]&1<=0?(r.subTo(n,r),e&&i.subTo(s,i),o.subTo(a,o)):(n.subTo(r,n),e&&s.subTo(i,s),a.subTo(o,a))}return 0!=n.compareTo(F.ONE)?F.ZERO:a.compareTo(t)>=0?a.subtract(t):a.signum()<0?(a.addTo(t,a),a.signum()<0?a.add(t):a):a},F.prototype.pow=function(t){return this.exp(t,new j)},F.prototype.gcd=function(t){var e=this.s<0?this.negate():this.clone(),r=t.s<0?t.negate():t.clone();if(e.compareTo(r)<0){var n=e;e=r,r=n}var i=e.getLowestSetBit(),o=r.getLowestSetBit();if(o<0)return e;for(i0&&(e.rShiftTo(o,e),r.rShiftTo(o,r));e.signum()>0;)(i=e.getLowestSetBit())>0&&e.rShiftTo(i,e),(i=r.getLowestSetBit())>0&&r.rShiftTo(i,r),e.compareTo(r)>=0?(e.subTo(r,e),e.rShiftTo(1,e)):(r.subTo(e,r),r.rShiftTo(1,r));return o>0&&r.lShiftTo(o,r),r},F.prototype.isProbablePrime=function(t){var e,r=this.abs();if(1==r.t&&r[0]<=W[W.length-1]){for(e=0;e>>8,q[J++]=255&X;J=0,G()}function tt(){if(null==V){for(G(),(V=new Y).init(q),J=0;J>24,(16711680&i)>>16,(65280&i)>>8,255&i]))),i+=1;return n}function it(){this.n=null,this.e=0,this.d=null,this.p=null,this.q=null,this.dmp1=null,this.dmq1=null,this.coeff=null}function ot(t,e){this.x=e,this.q=t}function st(t,e,r,n){this.curve=t,this.x=e,this.y=r,this.z=null==n?F.ONE:n,this.zinv=null}function at(t,e,r){this.q=t,this.a=this.fromBigInteger(e),this.b=this.fromBigInteger(r),this.infinity=new st(this,null,null)}et.prototype.nextBytes=function(t){var e;for(e=0;e0&&e.length>0))throw"Invalid RSA public key";this.n=rt(t,16),this.e=parseInt(e,16)}},it.prototype.encrypt=function(t){var e=function(t,e){if(e=0&&e>0;){var i=t.charCodeAt(n--);i<128?r[--e]=i:i>127&&i<2048?(r[--e]=63&i|128,r[--e]=i>>6|192):(r[--e]=63&i|128,r[--e]=i>>6&63|128,r[--e]=i>>12|224)}r[--e]=0;for(var o=new et,s=new Array;e>2;){for(s[0]=0;0==s[0];)o.nextBytes(s);r[--e]=s[0]}return r[--e]=2,r[--e]=0,new F(r)}(t,this.n.bitLength()+7>>3);if(null==e)return null;var r=this.doPublic(e);if(null==r)return null;var n=r.toString(16);return 0==(1&n.length)?n:"0"+n},it.prototype.encryptOAEP=function(t,e,r){var n=function(t,e,r,n){var i=ct.crypto.MessageDigest,o=ct.crypto.Util,s=null;if(r||(r="sha1"),"string"==typeof r&&(s=i.getCanonicalAlgName(r),n=i.getHashLength(s),r=function(t){return Ft(o.hashHex(Et(t),s))}),t.length+2*n+2>e)throw"Message too long for RSA";var a,u="";for(a=0;a>3,e,r);if(null==n)return null;var i=this.doPublic(n);if(null==i)return null;var o=i.toString(16);return 0==(1&o.length)?o:"0"+o},it.prototype.type="RSA",ot.prototype.equals=function(t){return t==this||this.q.equals(t.q)&&this.x.equals(t.x)},ot.prototype.toBigInteger=function(){return this.x},ot.prototype.negate=function(){return new ot(this.q,this.x.negate().mod(this.q))},ot.prototype.add=function(t){return new ot(this.q,this.x.add(t.toBigInteger()).mod(this.q))},ot.prototype.subtract=function(t){return new ot(this.q,this.x.subtract(t.toBigInteger()).mod(this.q))},ot.prototype.multiply=function(t){return new ot(this.q,this.x.multiply(t.toBigInteger()).mod(this.q))},ot.prototype.square=function(){return new ot(this.q,this.x.square().mod(this.q))},ot.prototype.divide=function(t){return new ot(this.q,this.x.multiply(t.toBigInteger().modInverse(this.q)).mod(this.q))},st.prototype.getX=function(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q))},st.prototype.getY=function(){return null==this.zinv&&(this.zinv=this.z.modInverse(this.curve.q)),this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q))},st.prototype.equals=function(t){return t==this||(this.isInfinity()?t.isInfinity():t.isInfinity()?this.isInfinity():!!t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(F.ZERO)&&t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(F.ZERO))},st.prototype.isInfinity=function(){return null==this.x&&null==this.y||this.z.equals(F.ZERO)&&!this.y.toBigInteger().equals(F.ZERO)},st.prototype.negate=function(){return new st(this.curve,this.x,this.y.negate(),this.z)},st.prototype.add=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;var e=t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q),r=t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q);if(F.ZERO.equals(r))return F.ZERO.equals(e)?this.twice():this.curve.getInfinity();var n=new F("3"),i=this.x.toBigInteger(),o=this.y.toBigInteger(),s=(t.x.toBigInteger(),t.y.toBigInteger(),r.square()),a=s.multiply(r),u=i.multiply(s),c=e.square().multiply(this.z),h=c.subtract(u.shiftLeft(1)).multiply(t.z).subtract(a).multiply(r).mod(this.curve.q),l=u.multiply(n).multiply(e).subtract(o.multiply(a)).subtract(c.multiply(e)).multiply(t.z).add(e.multiply(a)).mod(this.curve.q),f=a.multiply(this.z).multiply(t.z).mod(this.curve.q);return new st(this.curve,this.curve.fromBigInteger(h),this.curve.fromBigInteger(l),f)},st.prototype.twice=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var t=new F("3"),e=this.x.toBigInteger(),r=this.y.toBigInteger(),n=r.multiply(this.z),i=n.multiply(r).mod(this.curve.q),o=this.curve.a.toBigInteger(),s=e.square().multiply(t);F.ZERO.equals(o)||(s=s.add(this.z.square().multiply(o)));var a=(s=s.mod(this.curve.q)).square().subtract(e.shiftLeft(3).multiply(i)).shiftLeft(1).multiply(n).mod(this.curve.q),u=s.multiply(t).multiply(e).subtract(i.shiftLeft(1)).shiftLeft(2).multiply(i).subtract(s.square().multiply(s)).mod(this.curve.q),c=n.square().multiply(n).shiftLeft(3).mod(this.curve.q);return new st(this.curve,this.curve.fromBigInteger(a),this.curve.fromBigInteger(u),c)},st.prototype.multiply=function(t){if(this.isInfinity())return this;if(0==t.signum())return this.curve.getInfinity();var e,r=t,n=r.multiply(new F("3")),i=this.negate(),o=this,s=this.curve.q.subtract(t),a=s.multiply(new F("3")),u=new st(this.curve,this.x,this.y),c=u.negate();for(e=n.bitLength()-2;e>0;--e){o=o.twice();var h=n.testBit(e);h!=r.testBit(e)&&(o=o.add(h?this:i))}for(e=a.bitLength()-2;e>0;--e){u=u.twice();var l=a.testBit(e);l!=s.testBit(e)&&(u=u.add(l?u:c))}return o},st.prototype.multiplyTwo=function(t,e,r){var n;n=t.bitLength()>r.bitLength()?t.bitLength()-1:r.bitLength()-1;for(var i=this.curve.getInfinity(),o=this.add(e);n>=0;)i=i.twice(),t.testBit(n)?i=r.testBit(n)?i.add(o):i.add(this):r.testBit(n)&&(i=i.add(e)),--n;return i},at.prototype.getQ=function(){return this.q},at.prototype.getA=function(){return this.a},at.prototype.getB=function(){return this.b},at.prototype.equals=function(t){return t==this||this.q.equals(t.q)&&this.a.equals(t.a)&&this.b.equals(t.b)},at.prototype.getInfinity=function(){return this.infinity},at.prototype.fromBigInteger=function(t){return new ot(this.q,t)},at.prototype.decodePointHex=function(t){switch(parseInt(t.substr(0,2),16)){case 0:return this.infinity;case 2:case 3:return null;case 4:case 6:case 7:var e=(t.length-2)/2,r=t.substr(2,e),n=t.substr(e+2,e);return new st(this,this.fromBigInteger(new F(r,16)),this.fromBigInteger(new F(n,16)));default:return null}},ot.prototype.getByteLength=function(){return Math.floor((this.toBigInteger().bitLength()+7)/8)},st.prototype.getEncoded=function(t){var e=function(t,e){var r=t.toByteArrayUnsigned();if(er.length;)r.unshift(0);return r},r=this.getX().toBigInteger(),n=this.getY().toBigInteger(),i=e(r,32);return t?n.isEven()?i.unshift(2):i.unshift(3):(i.unshift(4),i=i.concat(e(n,32))),i},st.decodeFrom=function(t,e){e[0];var r=e.length-1,n=e.slice(1,1+r/2),i=e.slice(1+r/2,1+r);n.unshift(0),i.unshift(0);var o=new F(n),s=new F(i);return new st(t,t.fromBigInteger(o),t.fromBigInteger(s))},st.decodeFromHex=function(t,e){e.substr(0,2);var r=e.length-2,n=e.substr(2,r/2),i=e.substr(2+r/2,r/2),o=new F(n,16),s=new F(i,16);return new st(t,t.fromBigInteger(o),t.fromBigInteger(s))},st.prototype.add2D=function(t){if(this.isInfinity())return t;if(t.isInfinity())return this;if(this.x.equals(t.x))return this.y.equals(t.y)?this.twice():this.curve.getInfinity();var e=t.x.subtract(this.x),r=t.y.subtract(this.y).divide(e),n=r.square().subtract(this.x).subtract(t.x),i=r.multiply(this.x.subtract(n)).subtract(this.y);return new st(this.curve,n,i)},st.prototype.twice2D=function(){if(this.isInfinity())return this;if(0==this.y.toBigInteger().signum())return this.curve.getInfinity();var t=this.curve.fromBigInteger(F.valueOf(2)),e=this.curve.fromBigInteger(F.valueOf(3)),r=this.x.square().multiply(e).add(this.curve.a).divide(this.y.multiply(t)),n=r.square().subtract(this.x.multiply(t)),i=r.multiply(this.x.subtract(n)).subtract(this.y);return new st(this.curve,n,i)},st.prototype.multiply2D=function(t){if(this.isInfinity())return this;if(0==t.signum())return this.curve.getInfinity();var e,r=t,n=r.multiply(new F("3")),i=this.negate(),o=this;for(e=n.bitLength()-2;e>0;--e){o=o.twice();var s=n.testBit(e);s!=r.testBit(e)&&(o=o.add2D(s?this:i))}return o},st.prototype.isOnCurve=function(){var t=this.getX().toBigInteger(),e=this.getY().toBigInteger(),r=this.curve.getA().toBigInteger(),n=this.curve.getB().toBigInteger(),i=this.curve.getQ(),o=e.multiply(e).mod(i),s=t.multiply(t).multiply(t).add(r.multiply(t)).add(n).mod(i);return o.equals(s)},st.prototype.toString=function(){return"("+this.getX().toBigInteger().toString()+","+this.getY().toBigInteger().toString()+")"},st.prototype.validate=function(){var t=this.curve.getQ();if(this.isInfinity())throw new Error("Point is at infinity.");var e=this.getX().toBigInteger(),r=this.getY().toBigInteger();if(e.compareTo(F.ONE)<0||e.compareTo(t.subtract(F.ONE))>0)throw new Error("x coordinate out of bounds");if(r.compareTo(F.ONE)<0||r.compareTo(t.subtract(F.ONE))>0)throw new Error("y coordinate out of bounds");if(!this.isOnCurve())throw new Error("Point is not on the curve.");if(this.multiply(t).isInfinity())throw new Error("Point is not a scalar multiple of G.");return!0};var ut=function(){var t=new RegExp('(?:false|true|null|[\\{\\}\\[\\]]|(?:-?\\b(?:0|[1-9][0-9]*)(?:\\.[0-9]+)?(?:[eE][+-]?[0-9]+)?\\b)|(?:"(?:[^\\0-\\x08\\x0a-\\x1f"\\\\]|\\\\(?:["/\\\\bfnrt]|u[0-9A-Fa-f]{4}))*"))',"g"),e=new RegExp("\\\\(?:([^u])|u(.{4}))","g"),n={'"':'"',"/":"/","\\":"\\",b:"\b",f:"\f",n:"\n",r:"\r",t:"\t"};function i(t,e,r){return e?n[e]:String.fromCharCode(parseInt(r,16))}var o=new String(""),s=Object.hasOwnProperty;return function(n,a){var u,c,h=n.match(t),l=h[0],f=!1;"{"===l?u={}:"["===l?u=[]:(u=[],f=!0);for(var g=[u],d=1-f,p=h.length;d=0;)delete i[o[h]]}return a.call(e,n,i)}({"":u},"")),u}}();void 0!==ct&&ct||(e.KJUR=ct={}),void 0!==ct.asn1&&ct.asn1||(ct.asn1={}),ct.asn1.ASN1Util=new function(){this.integerToByteHex=function(t){var e=t.toString(16);return e.length%2==1&&(e="0"+e),e},this.bigIntToMinTwosComplementsHex=function(t){var e=t.toString(16);if("-"!=e.substr(0,1))e.length%2==1?e="0"+e:e.match(/^[0-7]/)||(e="00"+e);else{var r=e.substr(1).length;r%2==1?r+=1:e.match(/^[0-7]/)||(r+=2);for(var n="",i=0;i15)throw"ASN.1 length too long to represent by 8x: n = "+t.toString(16);return(128+r).toString(16)+e},this.getEncodedHex=function(){return(null==this.hTLV||this.isModified)&&(this.hV=this.getFreshValueHex(),this.hL=this.getLengthHexFromValue(),this.hTLV=this.hT+this.hL+this.hV,this.isModified=!1),this.hTLV},this.getValueHex=function(){return this.getEncodedHex(),this.hV},this.getFreshValueHex=function(){return""},this.setByParam=function(t){this.params=t},null!=t&&null!=t.tlv&&(this.hTLV=t.tlv,this.isModified=!1)},ct.asn1.DERAbstractString=function(t){ct.asn1.DERAbstractString.superclass.constructor.call(this),this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=wt(this.s).toLowerCase()},this.setStringHex=function(t){this.hTLV=null,this.isModified=!0,this.s=null,this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&("string"==typeof t?this.setString(t):void 0!==t.str?this.setString(t.str):void 0!==t.hex&&this.setStringHex(t.hex))},o.lang.extend(ct.asn1.DERAbstractString,ct.asn1.ASN1Object),ct.asn1.DERAbstractTime=function(t){ct.asn1.DERAbstractTime.superclass.constructor.call(this),this.localDateToUTC=function(t){var e=t.getTime()+6e4*t.getTimezoneOffset();return new Date(e)},this.formatDate=function(t,e,r){var n=this.zeroPadding,i=this.localDateToUTC(t),o=String(i.getFullYear());"utc"==e&&(o=o.substr(2,2));var s=o+n(String(i.getMonth()+1),2)+n(String(i.getDate()),2)+n(String(i.getHours()),2)+n(String(i.getMinutes()),2)+n(String(i.getSeconds()),2);if(!0===r){var a=i.getMilliseconds();if(0!=a){var u=n(String(a),3);s=s+"."+(u=u.replace(/[0]+$/,""))}}return s+"Z"},this.zeroPadding=function(t,e){return t.length>=e?t:new Array(e-t.length+1).join("0")+t},this.getString=function(){return this.s},this.setString=function(t){this.hTLV=null,this.isModified=!0,this.s=t,this.hV=vt(t)},this.setByDateValue=function(t,e,r,n,i,o){var s=new Date(Date.UTC(t,e-1,r,n,i,o,0));this.setByDate(s)},this.getFreshValueHex=function(){return this.hV}},o.lang.extend(ct.asn1.DERAbstractTime,ct.asn1.ASN1Object),ct.asn1.DERAbstractStructured=function(t){ct.asn1.DERAbstractString.superclass.constructor.call(this),this.setByASN1ObjectArray=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array=t},this.appendASN1Object=function(t){this.hTLV=null,this.isModified=!0,this.asn1Array.push(t)},this.asn1Array=new Array,void 0!==t&&void 0!==t.array&&(this.asn1Array=t.array)},o.lang.extend(ct.asn1.DERAbstractStructured,ct.asn1.ASN1Object),ct.asn1.DERBoolean=function(t){ct.asn1.DERBoolean.superclass.constructor.call(this),this.hT="01",this.hTLV=0==t?"010100":"0101ff"},o.lang.extend(ct.asn1.DERBoolean,ct.asn1.ASN1Object),ct.asn1.DERInteger=function(t){ct.asn1.DERInteger.superclass.constructor.call(this),this.hT="02",this.setByBigInteger=function(t){this.hTLV=null,this.isModified=!0,this.hV=ct.asn1.ASN1Util.bigIntToMinTwosComplementsHex(t)},this.setByInteger=function(t){var e=new F(String(t),10);this.setByBigInteger(e)},this.setValueHex=function(t){this.hV=t},this.getFreshValueHex=function(){return this.hV},void 0!==t&&(void 0!==t.bigint?this.setByBigInteger(t.bigint):void 0!==t.int?this.setByInteger(t.int):"number"==typeof t?this.setByInteger(t):void 0!==t.hex&&this.setValueHex(t.hex))},o.lang.extend(ct.asn1.DERInteger,ct.asn1.ASN1Object),ct.asn1.DERBitString=function(t){if(void 0!==t&&void 0!==t.obj){var e=ct.asn1.ASN1Util.newObject(t.obj);t.hex="00"+e.getEncodedHex()}ct.asn1.DERBitString.superclass.constructor.call(this),this.hT="03",this.setHexValueIncludingUnusedBits=function(t){this.hTLV=null,this.isModified=!0,this.hV=t},this.setUnusedBitsAndHexValue=function(t,e){if(t<0||7i.length&&(i=n[r]);return(t=t.replace(i,"::")).slice(1,-1)}function Ut(t){var e="malformed hex value";if(!t.match(/^([0-9A-Fa-f][0-9A-Fa-f]){1,}$/))throw e;if(8!=t.length)return 32==t.length?Nt(t):t;try{return parseInt(t.substr(0,2),16)+"."+parseInt(t.substr(2,2),16)+"."+parseInt(t.substr(4,2),16)+"."+parseInt(t.substr(6,2),16)}catch(t){throw e}}function Ot(t){for(var e=encodeURIComponent(t),r="",n=0;n"7"?"00"+t:t}ft.getLblen=function(t,e){if("8"!=t.substr(e+2,1))return 1;var r=parseInt(t.substr(e+3,1));return 0==r?-1:0=n)break}return s},ft.getNthChildIdx=function(t,e,r){return ft.getChildIdx(t,e)[r]},ft.getIdxbyList=function(t,e,r,n){var i,o,s=ft;return 0==r.length?void 0!==n&&t.substr(e,2)!==n?-1:e:(i=r.shift())>=(o=s.getChildIdx(t,e)).length?-1:s.getIdxbyList(t,o[i],r,n)},ft.getIdxbyListEx=function(t,e,r,n){var i,o,s=ft;if(0==r.length)return void 0!==n&&t.substr(e,2)!==n?-1:e;i=r.shift(),o=s.getChildIdx(t,e);for(var a=0,u=0;u=t.length?null:i.getTLV(t,o)},ft.getTLVbyListEx=function(t,e,r,n){var i=ft,o=i.getIdxbyListEx(t,e,r,n);return-1==o?null:i.getTLV(t,o)},ft.getVbyList=function(t,e,r,n,i){var o,s,a=ft;return-1==(o=a.getIdxbyList(t,e,r,n))||o>=t.length?null:(s=a.getV(t,o),!0===i&&(s=s.substr(2)),s)},ft.getVbyListEx=function(t,e,r,n,i){var o,s,a=ft;return-1==(o=a.getIdxbyListEx(t,e,r,n))?null:(s=a.getV(t,o),"03"==t.substr(o,2)&&!1!==i&&(s=s.substr(2)),s)},ft.getInt=function(t,e,r){null==r&&(r=-1);try{var n=t.substr(e,2);if("02"!=n&&"03"!=n)return r;var i=ft.getV(t,e);return"02"==n?parseInt(i,16):function(t){try{var e=t.substr(0,2);if("00"==e)return parseInt(t.substr(2),16);var r=parseInt(e,16),n=t.substr(2),i=parseInt(n,16).toString(2);return"0"==i&&(i="00000000"),i=i.slice(0,0-r),parseInt(i,2)}catch(t){return-1}}(i)}catch(t){return r}},ft.getOID=function(t,e,r){null==r&&(r=null);try{return"06"!=t.substr(e,2)?r:function(t){if(!Bt(t))return null;try{var e=[],r=t.substr(0,2),n=parseInt(r,16);e[0]=new String(Math.floor(n/40)),e[1]=new String(n%40);for(var i=t.substr(2),o=[],s=0;s0&&(c=c+"."+a.join(".")),c}catch(t){return null}}(ft.getV(t,e))}catch(t){return r}},ft.getOIDName=function(t,e,r){null==r&&(r=null);try{var n=ft.getOID(t,e,r);if(n==r)return r;var i=ct.asn1.x509.OID.oid2name(n);return""==i?n:i}catch(t){return r}},ft.getString=function(t,e,r){null==r&&(r=null);try{return Ft(ft.getV(t,e))}catch(t){return r}},ft.hextooidstr=function(t){var e=function(t,e){return t.length>=e?t:new Array(e-t.length+1).join("0")+t},r=[],n=t.substr(0,2),i=parseInt(n,16);r[0]=new String(Math.floor(i/40)),r[1]=new String(i%40);for(var o=t.substr(2),s=[],a=0;a0&&(h=h+"."+u.join(".")),h},ft.dump=function(t,e,r,n){var i=ft,o=i.getV,s=i.dump,a=i.getChildIdx,u=t;t instanceof ct.asn1.ASN1Object&&(u=t.getEncodedHex());var c=function(t,e){return t.length<=2*e?t:t.substr(0,e)+"..(total "+t.length/2+"bytes).."+t.substr(t.length-e,e)};void 0===e&&(e={ommit_long_octet:32}),void 0===r&&(r=0),void 0===n&&(n="");var h,l=e.ommit_long_octet;if("01"==(h=u.substr(r,2)))return"00"==(f=o(u,r))?n+"BOOLEAN FALSE\n":n+"BOOLEAN TRUE\n";if("02"==h)return n+"INTEGER "+c(f=o(u,r),l)+"\n";if("03"==h){var f=o(u,r);return i.isASN1HEX(f.substr(2))?(w=n+"BITSTRING, encapsulates\n")+s(f.substr(2),e,0,n+" "):n+"BITSTRING "+c(f,l)+"\n"}if("04"==h)return f=o(u,r),i.isASN1HEX(f)?(w=n+"OCTETSTRING, encapsulates\n")+s(f,e,0,n+" "):n+"OCTETSTRING "+c(f,l)+"\n";if("05"==h)return n+"NULL\n";if("06"==h){var g=o(u,r),d=ct.asn1.ASN1Util.oidHexToInt(g),p=ct.asn1.x509.OID.oid2name(d),v=d.replace(/\./g," ");return""!=p?n+"ObjectIdentifier "+p+" ("+v+")\n":n+"ObjectIdentifier ("+v+")\n"}if("0a"==h)return n+"ENUMERATED "+parseInt(o(u,r))+"\n";if("0c"==h)return n+"UTF8String '"+bt(o(u,r))+"'\n";if("13"==h)return n+"PrintableString '"+bt(o(u,r))+"'\n";if("14"==h)return n+"TeletexString '"+bt(o(u,r))+"'\n";if("16"==h)return n+"IA5String '"+bt(o(u,r))+"'\n";if("17"==h)return n+"UTCTime "+bt(o(u,r))+"\n";if("18"==h)return n+"GeneralizedTime "+bt(o(u,r))+"\n";if("1a"==h)return n+"VisualString '"+bt(o(u,r))+"'\n";if("1e"==h)return n+"BMPString '"+bt(o(u,r))+"'\n";if("30"==h){if("3000"==u.substr(r,4))return n+"SEQUENCE {}\n";w=n+"SEQUENCE\n";var y=e;if((2==(S=a(u,r)).length||3==S.length)&&"06"==u.substr(S[0],2)&&"04"==u.substr(S[S.length-1],2)){p=i.oidname(o(u,S[0]));var m=JSON.parse(JSON.stringify(e));m.x509ExtName=p,y=m}for(var _=0;_31)&&128==(192&r)&&(31&r)==n}catch(t){return!1}},ft.isASN1HEX=function(t){var e=ft;if(t.length%2==1)return!1;var r=e.getVblen(t,0),n=t.substr(0,2),i=e.getL(t,0);return t.length-n.length-i.length==2*r},ft.checkStrictDER=function(t,e,r,n,i){var o=ft;if(void 0===r){if("string"!=typeof t)throw new Error("not hex string");if(t=t.toLowerCase(),!ct.lang.String.isHex(t))throw new Error("not hex string");r=t.length,i=(n=t.length/2)<128?1:Math.ceil(n.toString(16))+1}if(o.getL(t,e).length>2*i)throw new Error("L of TLV too long: idx="+e);var s=o.getVblen(t,e);if(s>n)throw new Error("value of L too long than hex: idx="+e);var a=o.getTLV(t,e),u=a.length-2-o.getL(t,e).length;if(u!==2*s)throw new Error("V string length and L's value not the same:"+u+"/"+2*s);if(0===e&&t.length!=a.length)throw new Error("total length and TLV length unmatch:"+t.length+"!="+a.length);var c=t.substr(e,2);if("02"===c){var h=o.getVidx(t,e);if("00"==t.substr(h,2)&&t.charCodeAt(h+2)<56)throw new Error("not least zeros for DER INTEGER")}if(32&parseInt(c,16)){for(var l=o.getVblen(t,e),f=0,g=o.getChildIdx(t,e),d=0;d=e?t:new Array(e-t.length+1).join(r)+t};void 0!==ct&&ct||(e.KJUR=ct={}),void 0!==ct.crypto&&ct.crypto||(ct.crypto={}),ct.crypto.Util=new function(){this.DIGESTINFOHEAD={sha1:"3021300906052b0e03021a05000414",sha224:"302d300d06096086480165030402040500041c",sha256:"3031300d060960864801650304020105000420",sha384:"3041300d060960864801650304020205000430",sha512:"3051300d060960864801650304020305000440",md2:"3020300c06082a864886f70d020205000410",md5:"3020300c06082a864886f70d020505000410",ripemd160:"3021300906052b2403020105000414"},this.DEFAULTPROVIDER={md5:"cryptojs",sha1:"cryptojs",sha224:"cryptojs",sha256:"cryptojs",sha384:"cryptojs",sha512:"cryptojs",ripemd160:"cryptojs",hmacmd5:"cryptojs",hmacsha1:"cryptojs",hmacsha224:"cryptojs",hmacsha256:"cryptojs",hmacsha384:"cryptojs",hmacsha512:"cryptojs",hmacripemd160:"cryptojs",MD5withRSA:"cryptojs/jsrsa",SHA1withRSA:"cryptojs/jsrsa",SHA224withRSA:"cryptojs/jsrsa",SHA256withRSA:"cryptojs/jsrsa",SHA384withRSA:"cryptojs/jsrsa",SHA512withRSA:"cryptojs/jsrsa",RIPEMD160withRSA:"cryptojs/jsrsa",MD5withECDSA:"cryptojs/jsrsa",SHA1withECDSA:"cryptojs/jsrsa",SHA224withECDSA:"cryptojs/jsrsa",SHA256withECDSA:"cryptojs/jsrsa",SHA384withECDSA:"cryptojs/jsrsa",SHA512withECDSA:"cryptojs/jsrsa",RIPEMD160withECDSA:"cryptojs/jsrsa",SHA1withDSA:"cryptojs/jsrsa",SHA224withDSA:"cryptojs/jsrsa",SHA256withDSA:"cryptojs/jsrsa",MD5withRSAandMGF1:"cryptojs/jsrsa",SHAwithRSAandMGF1:"cryptojs/jsrsa",SHA1withRSAandMGF1:"cryptojs/jsrsa",SHA224withRSAandMGF1:"cryptojs/jsrsa",SHA256withRSAandMGF1:"cryptojs/jsrsa",SHA384withRSAandMGF1:"cryptojs/jsrsa",SHA512withRSAandMGF1:"cryptojs/jsrsa",RIPEMD160withRSAandMGF1:"cryptojs/jsrsa"},this.CRYPTOJSMESSAGEDIGESTNAME={md5:y.algo.MD5,sha1:y.algo.SHA1,sha224:y.algo.SHA224,sha256:y.algo.SHA256,sha384:y.algo.SHA384,sha512:y.algo.SHA512,ripemd160:y.algo.RIPEMD160},this.getDigestInfoHex=function(t,e){if(void 0===this.DIGESTINFOHEAD[e])throw"alg not supported in Util.DIGESTINFOHEAD: "+e;return this.DIGESTINFOHEAD[e]+t},this.getPaddedDigestInfoHex=function(t,e,r){var n=this.getDigestInfoHex(t,e),i=r/4;if(n.length+22>i)throw"key is too short for SigAlg: keylen="+r+","+e;for(var o="0001",s="00"+n,a="",u=i-o.length-s.length,c=0;c=0)return!1;if(r.compareTo(n.ONE)<0||r.compareTo(o)>=0)return!1;var a=r.modInverse(o),u=t.multiply(a).mod(o),c=e.multiply(a).mod(o);return s.multiply(u).add(i.multiply(c)).getX().toBigInteger().mod(o).equals(e)},this.serializeSig=function(t,e){var r=t.toByteArraySigned(),n=e.toByteArraySigned(),i=[];return i.push(2),i.push(r.length),(i=i.concat(r)).push(2),i.push(n.length),(i=i.concat(n)).unshift(i.length),i.unshift(48),i},this.parseSig=function(t){var e;if(48!=t[0])throw new Error("Signature not a valid DERSequence");if(2!=t[e=2])throw new Error("First element in signature must be a DERInteger");var r=t.slice(e+2,e+2+t[e+1]);if(2!=t[e+=2+t[e+1]])throw new Error("Second element in signature must be a DERInteger");var i=t.slice(e+2,e+2+t[e+1]);return e+=2+t[e+1],{r:n.fromByteArrayUnsigned(r),s:n.fromByteArrayUnsigned(i)}},this.parseSigCompact=function(t){if(65!==t.length)throw"Signature has the wrong length";var e=t[0]-27;if(e<0||e>7)throw"Invalid signature type";var r=this.ecparams.n;return{r:n.fromByteArrayUnsigned(t.slice(1,33)).mod(r),s:n.fromByteArrayUnsigned(t.slice(33,65)).mod(r),i:e}},this.readPKCS5PrvKeyHex=function(t){if(!1===h(t))throw new Error("not ASN.1 hex string");var e,r,n;try{e=c(t,0,["[0]",0],"06"),r=c(t,0,[1],"04");try{n=c(t,0,["[1]",0],"03")}catch(t){}}catch(t){throw new Error("malformed PKCS#1/5 plain ECC private key")}if(this.curveName=a(e),void 0===this.curveName)throw"unsupported curve name";this.setNamedCurve(this.curveName),this.setPublicKeyHex(n),this.setPrivateKeyHex(r),this.isPublic=!1},this.readPKCS8PrvKeyHex=function(t){if(!1===h(t))throw new e("not ASN.1 hex string");var r,n,i;try{c(t,0,[1,0],"06"),r=c(t,0,[1,1],"06"),n=c(t,0,[2,0,1],"04");try{i=c(t,0,[2,0,"[1]",0],"03")}catch(t){}}catch(t){throw new e("malformed PKCS#8 plain ECC private key")}if(this.curveName=a(r),void 0===this.curveName)throw new e("unsupported curve name");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i),this.setPrivateKeyHex(n),this.isPublic=!1},this.readPKCS8PubKeyHex=function(t){if(!1===h(t))throw new e("not ASN.1 hex string");var r,n;try{c(t,0,[0,0],"06"),r=c(t,0,[0,1],"06"),n=c(t,0,[1],"03")}catch(t){throw new e("malformed PKCS#8 ECC public key")}if(this.curveName=a(r),null===this.curveName)throw new e("unsupported curve name");this.setNamedCurve(this.curveName),this.setPublicKeyHex(n)},this.readCertPubKeyHex=function(t,r){if(!1===h(t))throw new e("not ASN.1 hex string");var n,i;try{n=c(t,0,[0,5,0,1],"06"),i=c(t,0,[0,5,1],"03")}catch(t){throw new e("malformed X.509 certificate ECC public key")}if(this.curveName=a(n),null===this.curveName)throw new e("unsupported curve name");this.setNamedCurve(this.curveName),this.setPublicKeyHex(i)},void 0!==t&&void 0!==t.curve&&(this.curveName=t.curve),void 0===this.curveName&&(this.curveName="secp256r1"),this.setNamedCurve(this.curveName),void 0!==t&&(void 0!==t.prv&&this.setPrivateKeyHex(t.prv),void 0!==t.pub&&this.setPublicKeyHex(t.pub))},ct.crypto.ECDSA.parseSigHex=function(t){var e=ct.crypto.ECDSA.parseSigHexInHexRS(t);return{r:new F(e.r,16),s:new F(e.s,16)}},ct.crypto.ECDSA.parseSigHexInHexRS=function(t){var e=ft,r=e.getChildIdx,n=e.getV;if(e.checkStrictDER(t,0),"30"!=t.substr(0,2))throw new Error("signature is not a ASN.1 sequence");var i=r(t,0);if(2!=i.length)throw new Error("signature shall have two elements");var o=i[0],s=i[1];if("02"!=t.substr(o,2))throw new Error("1st item not ASN.1 integer");if("02"!=t.substr(s,2))throw new Error("2nd item not ASN.1 integer");return{r:n(t,o),s:n(t,s)}},ct.crypto.ECDSA.asn1SigToConcatSig=function(t){var e=ct.crypto.ECDSA.parseSigHexInHexRS(t),r=e.r,n=e.s;if("00"==r.substr(0,2)&&r.length%32==2&&(r=r.substr(2)),"00"==n.substr(0,2)&&n.length%32==2&&(n=n.substr(2)),r.length%32==30&&(r="00"+r),n.length%32==30&&(n="00"+n),r.length%32!=0)throw"unknown ECDSA sig r length error";if(n.length%32!=0)throw"unknown ECDSA sig s length error";return r+n},ct.crypto.ECDSA.concatSigToASN1Sig=function(t){if(t.length/2*8%128!=0)throw"unknown ECDSA concatinated r-s sig length error";var e=t.substr(0,t.length/2),r=t.substr(t.length/2);return ct.crypto.ECDSA.hexRSSigToASN1Sig(e,r)},ct.crypto.ECDSA.hexRSSigToASN1Sig=function(t,e){var r=new F(t,16),n=new F(e,16);return ct.crypto.ECDSA.biRSSigToASN1Sig(r,n)},ct.crypto.ECDSA.biRSSigToASN1Sig=function(t,e){var r=ct.asn1,n=new r.DERInteger({bigint:t}),i=new r.DERInteger({bigint:e});return new r.DERSequence({array:[n,i]}).getEncodedHex()},ct.crypto.ECDSA.getName=function(t){return"2b8104001f"===t?"secp192k1":"2a8648ce3d030107"===t?"secp256r1":"2b8104000a"===t?"secp256k1":"2b81040021"===t?"secp224r1":"2b81040022"===t?"secp384r1":-1!=="|secp256r1|NIST P-256|P-256|prime256v1|".indexOf(t)?"secp256r1":-1!=="|secp256k1|".indexOf(t)?"secp256k1":-1!=="|secp224r1|NIST P-224|P-224|".indexOf(t)?"secp224r1":-1!=="|secp384r1|NIST P-384|P-384|".indexOf(t)?"secp384r1":null},void 0!==ct&&ct||(e.KJUR=ct={}),void 0!==ct.crypto&&ct.crypto||(ct.crypto={}),ct.crypto.ECParameterDB=new function(){var t={},e={};function r(t){return new F(t,16)}this.getByName=function(r){var n=r;if(void 0!==e[n]&&(n=e[r]),void 0!==t[n])return t[n];throw"unregistered EC curve name: "+n},this.regist=function(n,i,o,s,a,u,c,h,l,f,g,d){t[n]={};var p=r(o),v=r(s),y=r(a),m=r(u),_=r(c),S=new at(p,v,y),w=S.decodePointHex("04"+h+l);t[n].name=n,t[n].keylen=i,t[n].curve=S,t[n].G=w,t[n].n=m,t[n].h=_,t[n].oid=g,t[n].info=d;for(var b=0;b=2*a)break}var l={};return l.keyhex=u.substr(0,2*i[t].keylen),l.ivhex=u.substr(2*i[t].keylen,2*i[t].ivlen),l},a=function(t,e,r,n){var o=y.enc.Base64.parse(t),s=y.enc.Hex.stringify(o);return(0,i[e].proc)(s,r,n)};return{version:"1.0.0",parsePKCS5PEM:function(t){return o(t)},getKeyAndUnusedIvByPasscodeAndIvsalt:function(t,e,r){return s(t,e,r)},decryptKeyB64:function(t,e,r,n){return a(t,e,r,n)},getDecryptedKeyHex:function(t,e){var r=o(t),n=(r.type,r.cipher),i=r.ivsalt,u=r.data,c=s(n,e,i).keyhex;return a(u,n,c,i)},getEncryptedPKCS5PEMFromPrvKeyHex:function(t,e,r,n,o){var a="";if(void 0!==n&&null!=n||(n="AES-256-CBC"),void 0===i[n])throw"KEYUTIL unsupported algorithm: "+n;return void 0!==o&&null!=o||(o=function(t){var e=y.lib.WordArray.random(t);return y.enc.Hex.stringify(e)}(i[n].ivlen).toUpperCase()),a="-----BEGIN "+t+" PRIVATE KEY-----\r\n",a+="Proc-Type: 4,ENCRYPTED\r\n",a+="DEK-Info: "+n+","+o+"\r\n",a+="\r\n",(a+=function(t,e,r,n){return(0,i[e].eproc)(t,r,n)}(e,n,s(n,r,o).keyhex,o).replace(/(.{64})/g,"$1\r\n"))+"\r\n-----END "+t+" PRIVATE KEY-----\r\n"},parseHexOfEncryptedPKCS8:function(t){var e=ft,r=e.getChildIdx,n=e.getV,i={},o=r(t,0);if(2!=o.length)throw"malformed format: SEQUENCE(0).items != 2: "+o.length;i.ciphertext=n(t,o[1]);var s=r(t,o[0]);if(2!=s.length)throw"malformed format: SEQUENCE(0.0).items != 2: "+s.length;if("2a864886f70d01050d"!=n(t,s[0]))throw"this only supports pkcs5PBES2";var a=r(t,s[1]);if(2!=s.length)throw"malformed format: SEQUENCE(0.0.1).items != 2: "+a.length;var u=r(t,a[1]);if(2!=u.length)throw"malformed format: SEQUENCE(0.0.1.1).items != 2: "+u.length;if("2a864886f70d0307"!=n(t,u[0]))throw"this only supports TripleDES";i.encryptionSchemeAlg="TripleDES",i.encryptionSchemeIV=n(t,u[1]);var c=r(t,a[0]);if(2!=c.length)throw"malformed format: SEQUENCE(0.0.1.0).items != 2: "+c.length;if("2a864886f70d01050c"!=n(t,c[0]))throw"this only supports pkcs5PBKDF2";var h=r(t,c[1]);if(h.length<2)throw"malformed format: SEQUENCE(0.0.1.0.1).items < 2: "+h.length;i.pbkdf2Salt=n(t,h[0]);var l=n(t,h[1]);try{i.pbkdf2Iter=parseInt(l,16)}catch(t){throw"malformed format pbkdf2Iter: "+l}return i},getPBKDF2KeyHexFromParam:function(t,e){var r=y.enc.Hex.parse(t.pbkdf2Salt),n=t.pbkdf2Iter,i=y.PBKDF2(e,r,{keySize:6,iterations:n});return y.enc.Hex.stringify(i)},_getPlainPKCS8HexFromEncryptedPKCS8PEM:function(t,e){var r=Ct(t,"ENCRYPTED PRIVATE KEY"),n=this.parseHexOfEncryptedPKCS8(r),i=Ht.getPBKDF2KeyHexFromParam(n,e),o={};o.ciphertext=y.enc.Hex.parse(n.ciphertext);var s=y.enc.Hex.parse(i),a=y.enc.Hex.parse(n.encryptionSchemeIV),u=y.TripleDES.decrypt(o,s,{iv:a});return y.enc.Hex.stringify(u)},getKeyFromEncryptedPKCS8PEM:function(t,e){var r=this._getPlainPKCS8HexFromEncryptedPKCS8PEM(t,e);return this.getKeyFromPlainPrivatePKCS8Hex(r)},parsePlainPrivatePKCS8Hex:function(t){var e=ft,r=e.getChildIdx,n=e.getV,i={algparam:null};if("30"!=t.substr(0,2))throw"malformed plain PKCS8 private key(code:001)";var o=r(t,0);if(3!=o.length)throw"malformed plain PKCS8 private key(code:002)";if("30"!=t.substr(o[1],2))throw"malformed PKCS8 private key(code:003)";var s=r(t,o[1]);if(2!=s.length)throw"malformed PKCS8 private key(code:004)";if("06"!=t.substr(s[0],2))throw"malformed PKCS8 private key(code:005)";if(i.algoid=n(t,s[0]),"06"==t.substr(s[1],2)&&(i.algparam=n(t,s[1])),"04"!=t.substr(o[2],2))throw"malformed PKCS8 private key(code:006)";return i.keyidx=e.getVidx(t,o[2]),i},getKeyFromPlainPrivatePKCS8PEM:function(t){var e=Ct(t,"PRIVATE KEY");return this.getKeyFromPlainPrivatePKCS8Hex(e)},getKeyFromPlainPrivatePKCS8Hex:function(t){var e,r=this.parsePlainPrivatePKCS8Hex(t);if("2a864886f70d010101"==r.algoid)e=new it;else if("2a8648ce380401"==r.algoid)e=new ct.crypto.DSA;else{if("2a8648ce3d0201"!=r.algoid)throw"unsupported private key algorithm";e=new ct.crypto.ECDSA}return e.readPKCS8PrvKeyHex(t),e},_getKeyFromPublicPKCS8Hex:function(t){var e,r=ft.getVbyList(t,0,[0,0],"06");if("2a864886f70d010101"===r)e=new it;else if("2a8648ce380401"===r)e=new ct.crypto.DSA;else{if("2a8648ce3d0201"!==r)throw"unsupported PKCS#8 public key hex";e=new ct.crypto.ECDSA}return e.readPKCS8PubKeyHex(t),e},parsePublicRawRSAKeyHex:function(t){var e=ft,r=e.getChildIdx,n=e.getV,i={};if("30"!=t.substr(0,2))throw"malformed RSA key(code:001)";var o=r(t,0);if(2!=o.length)throw"malformed RSA key(code:002)";if("02"!=t.substr(o[0],2))throw"malformed RSA key(code:003)";if(i.n=n(t,o[0]),"02"!=t.substr(o[1],2))throw"malformed RSA key(code:004)";return i.e=n(t,o[1]),i},parsePublicPKCS8Hex:function(t){var e=ft,r=e.getChildIdx,n=e.getV,i={algparam:null},o=r(t,0);if(2!=o.length)throw"outer DERSequence shall have 2 elements: "+o.length;var s=o[0];if("30"!=t.substr(s,2))throw"malformed PKCS8 public key(code:001)";var a=r(t,s);if(2!=a.length)throw"malformed PKCS8 public key(code:002)";if("06"!=t.substr(a[0],2))throw"malformed PKCS8 public key(code:003)";if(i.algoid=n(t,a[0]),"06"==t.substr(a[1],2)?i.algparam=n(t,a[1]):"30"==t.substr(a[1],2)&&(i.algparam={},i.algparam.p=e.getVbyList(t,a[1],[0],"02"),i.algparam.q=e.getVbyList(t,a[1],[1],"02"),i.algparam.g=e.getVbyList(t,a[1],[2],"02")),"03"!=t.substr(o[1],2))throw"malformed PKCS8 public key(code:004)";return i.key=n(t,o[1]).substr(2),i}}}();Ht.getKey=function(t,e,r){var n,i=(y=ft).getChildIdx,o=(y.getV,y.getVbyList),s=ct.crypto,a=s.ECDSA,u=s.DSA,c=it,h=Ct,l=Ht;if(void 0!==c&&t instanceof c)return t;if(void 0!==a&&t instanceof a)return t;if(void 0!==u&&t instanceof u)return t;if(void 0!==t.curve&&void 0!==t.xy&&void 0===t.d)return new a({pub:t.xy,curve:t.curve});if(void 0!==t.curve&&void 0!==t.d)return new a({prv:t.d,curve:t.curve});if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0===t.d)return(C=new c).setPublic(t.n,t.e),C;if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0!==t.p&&void 0!==t.q&&void 0!==t.dp&&void 0!==t.dq&&void 0!==t.co&&void 0===t.qi)return(C=new c).setPrivateEx(t.n,t.e,t.d,t.p,t.q,t.dp,t.dq,t.co),C;if(void 0===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0===t.p)return(C=new c).setPrivate(t.n,t.e,t.d),C;if(void 0!==t.p&&void 0!==t.q&&void 0!==t.g&&void 0!==t.y&&void 0===t.x)return(C=new u).setPublic(t.p,t.q,t.g,t.y),C;if(void 0!==t.p&&void 0!==t.q&&void 0!==t.g&&void 0!==t.y&&void 0!==t.x)return(C=new u).setPrivate(t.p,t.q,t.g,t.y,t.x),C;if("RSA"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0===t.d)return(C=new c).setPublic(St(t.n),St(t.e)),C;if("RSA"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d&&void 0!==t.p&&void 0!==t.q&&void 0!==t.dp&&void 0!==t.dq&&void 0!==t.qi)return(C=new c).setPrivateEx(St(t.n),St(t.e),St(t.d),St(t.p),St(t.q),St(t.dp),St(t.dq),St(t.qi)),C;if("RSA"===t.kty&&void 0!==t.n&&void 0!==t.e&&void 0!==t.d)return(C=new c).setPrivate(St(t.n),St(t.e),St(t.d)),C;if("EC"===t.kty&&void 0!==t.crv&&void 0!==t.x&&void 0!==t.y&&void 0===t.d){var f=(P=new a({curve:t.crv})).ecparams.keylen/4,g="04"+("0000000000"+St(t.x)).slice(-f)+("0000000000"+St(t.y)).slice(-f);return P.setPublicKeyHex(g),P}if("EC"===t.kty&&void 0!==t.crv&&void 0!==t.x&&void 0!==t.y&&void 0!==t.d){f=(P=new a({curve:t.crv})).ecparams.keylen/4,g="04"+("0000000000"+St(t.x)).slice(-f)+("0000000000"+St(t.y)).slice(-f);var d=("0000000000"+St(t.d)).slice(-f);return P.setPublicKeyHex(g),P.setPrivateKeyHex(d),P}if("pkcs5prv"===r){var p,v=t,y=ft;if(9===(p=i(v,0)).length)(C=new c).readPKCS5PrvKeyHex(v);else if(6===p.length)(C=new u).readPKCS5PrvKeyHex(v);else{if(!(p.length>2&&"04"===v.substr(p[1],2)))throw"unsupported PKCS#1/5 hexadecimal key";(C=new a).readPKCS5PrvKeyHex(v)}return C}if("pkcs8prv"===r)return l.getKeyFromPlainPrivatePKCS8Hex(t);if("pkcs8pub"===r)return l._getKeyFromPublicPKCS8Hex(t);if("x509pub"===r)return Wt.getPublicKeyFromCertHex(t);if(-1!=t.indexOf("-END CERTIFICATE-",0)||-1!=t.indexOf("-END X509 CERTIFICATE-",0)||-1!=t.indexOf("-END TRUSTED CERTIFICATE-",0))return Wt.getPublicKeyFromCertPEM(t);if(-1!=t.indexOf("-END PUBLIC KEY-")){var m=Ct(t,"PUBLIC KEY");return l._getKeyFromPublicPKCS8Hex(m)}if(-1!=t.indexOf("-END RSA PRIVATE KEY-")&&-1==t.indexOf("4,ENCRYPTED")){var _=h(t,"RSA PRIVATE KEY");return l.getKey(_,null,"pkcs5prv")}if(-1!=t.indexOf("-END DSA PRIVATE KEY-")&&-1==t.indexOf("4,ENCRYPTED")){var S=o(n=h(t,"DSA PRIVATE KEY"),0,[1],"02"),w=o(n,0,[2],"02"),b=o(n,0,[3],"02"),E=o(n,0,[4],"02"),x=o(n,0,[5],"02");return(C=new u).setPrivate(new F(S,16),new F(w,16),new F(b,16),new F(E,16),new F(x,16)),C}if(-1!=t.indexOf("-END EC PRIVATE KEY-")&&-1==t.indexOf("4,ENCRYPTED"))return _=h(t,"EC PRIVATE KEY"),l.getKey(_,null,"pkcs5prv");if(-1!=t.indexOf("-END PRIVATE KEY-"))return l.getKeyFromPlainPrivatePKCS8PEM(t);if(-1!=t.indexOf("-END RSA PRIVATE KEY-")&&-1!=t.indexOf("4,ENCRYPTED")){var A=l.getDecryptedKeyHex(t,e),k=new it;return k.readPKCS5PrvKeyHex(A),k}if(-1!=t.indexOf("-END EC PRIVATE KEY-")&&-1!=t.indexOf("4,ENCRYPTED")){var P,C=o(n=l.getDecryptedKeyHex(t,e),0,[1],"04"),T=o(n,0,[2,0],"06"),R=o(n,0,[3,0],"03").substr(2);if(void 0===ct.crypto.OID.oidhex2name[T])throw"undefined OID(hex) in KJUR.crypto.OID: "+T;return(P=new a({curve:ct.crypto.OID.oidhex2name[T]})).setPublicKeyHex(R),P.setPrivateKeyHex(C),P.isPublic=!1,P}if(-1!=t.indexOf("-END DSA PRIVATE KEY-")&&-1!=t.indexOf("4,ENCRYPTED"))return S=o(n=l.getDecryptedKeyHex(t,e),0,[1],"02"),w=o(n,0,[2],"02"),b=o(n,0,[3],"02"),E=o(n,0,[4],"02"),x=o(n,0,[5],"02"),(C=new u).setPrivate(new F(S,16),new F(w,16),new F(b,16),new F(E,16),new F(x,16)),C;if(-1!=t.indexOf("-END ENCRYPTED PRIVATE KEY-"))return l.getKeyFromEncryptedPKCS8PEM(t,e);throw new Error("not supported argument")},Ht.generateKeypair=function(t,e){if("RSA"==t){var r=e;(s=new it).generate(r,"10001"),s.isPrivate=!0,s.isPublic=!0;var n=new it,i=s.n.toString(16),o=s.e.toString(16);return n.setPublic(i,o),n.isPrivate=!1,n.isPublic=!0,(a={}).prvKeyObj=s,a.pubKeyObj=n,a}if("EC"==t){var s,a,u=e,c=new ct.crypto.ECDSA({curve:u}).generateKeyPairHex();return(s=new ct.crypto.ECDSA({curve:u})).setPublicKeyHex(c.ecpubhex),s.setPrivateKeyHex(c.ecprvhex),s.isPrivate=!0,s.isPublic=!1,(n=new ct.crypto.ECDSA({curve:u})).setPublicKeyHex(c.ecpubhex),n.isPrivate=!1,n.isPublic=!0,(a={}).prvKeyObj=s,a.pubKeyObj=n,a}throw"unknown algorithm: "+t},Ht.getPEM=function(t,e,r,n,i,o){var s=ct,a=s.asn1,u=a.DERObjectIdentifier,c=a.DERInteger,h=a.ASN1Util.newObject,l=a.x509.SubjectPublicKeyInfo,f=s.crypto,g=f.DSA,d=f.ECDSA,p=it;function v(t){return h({seq:[{int:0},{int:{bigint:t.n}},{int:t.e},{int:{bigint:t.d}},{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.dmp1}},{int:{bigint:t.dmq1}},{int:{bigint:t.coeff}}]})}function m(t){return h({seq:[{int:1},{octstr:{hex:t.prvKeyHex}},{tag:["a0",!0,{oid:{name:t.curveName}}]},{tag:["a1",!0,{bitstr:{hex:"00"+t.pubKeyHex}}]}]})}function _(t){return h({seq:[{int:0},{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.g}},{int:{bigint:t.y}},{int:{bigint:t.x}}]})}if((void 0!==p&&t instanceof p||void 0!==g&&t instanceof g||void 0!==d&&t instanceof d)&&1==t.isPublic&&(void 0===e||"PKCS8PUB"==e))return Pt(F=new l(t).getEncodedHex(),"PUBLIC KEY");if("PKCS1PRV"==e&&void 0!==p&&t instanceof p&&(void 0===r||null==r)&&1==t.isPrivate)return Pt(F=v(t).getEncodedHex(),"RSA PRIVATE KEY");if("PKCS1PRV"==e&&void 0!==d&&t instanceof d&&(void 0===r||null==r)&&1==t.isPrivate){var S=new u({name:t.curveName}).getEncodedHex(),w=m(t).getEncodedHex(),b="";return(b+=Pt(S,"EC PARAMETERS"))+Pt(w,"EC PRIVATE KEY")}if("PKCS1PRV"==e&&void 0!==g&&t instanceof g&&(void 0===r||null==r)&&1==t.isPrivate)return Pt(F=_(t).getEncodedHex(),"DSA PRIVATE KEY");if("PKCS5PRV"==e&&void 0!==p&&t instanceof p&&void 0!==r&&null!=r&&1==t.isPrivate){var F=v(t).getEncodedHex();return void 0===n&&(n="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("RSA",F,r,n,o)}if("PKCS5PRV"==e&&void 0!==d&&t instanceof d&&void 0!==r&&null!=r&&1==t.isPrivate)return F=m(t).getEncodedHex(),void 0===n&&(n="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("EC",F,r,n,o);if("PKCS5PRV"==e&&void 0!==g&&t instanceof g&&void 0!==r&&null!=r&&1==t.isPrivate)return F=_(t).getEncodedHex(),void 0===n&&(n="DES-EDE3-CBC"),this.getEncryptedPKCS5PEMFromPrvKeyHex("DSA",F,r,n,o);var E=function(t,e){var r=x(t,e);return new h({seq:[{seq:[{oid:{name:"pkcs5PBES2"}},{seq:[{seq:[{oid:{name:"pkcs5PBKDF2"}},{seq:[{octstr:{hex:r.pbkdf2Salt}},{int:r.pbkdf2Iter}]}]},{seq:[{oid:{name:"des-EDE3-CBC"}},{octstr:{hex:r.encryptionSchemeIV}}]}]}]},{octstr:{hex:r.ciphertext}}]}).getEncodedHex()},x=function(t,e){var r=y.lib.WordArray.random(8),n=y.lib.WordArray.random(8),i=y.PBKDF2(e,r,{keySize:6,iterations:100}),o=y.enc.Hex.parse(t),s=y.TripleDES.encrypt(o,i,{iv:n})+"",a={};return a.ciphertext=s,a.pbkdf2Salt=y.enc.Hex.stringify(r),a.pbkdf2Iter=100,a.encryptionSchemeAlg="DES-EDE3-CBC",a.encryptionSchemeIV=y.enc.Hex.stringify(n),a};if("PKCS8PRV"==e&&null!=p&&t instanceof p&&1==t.isPrivate){var A=v(t).getEncodedHex();return F=h({seq:[{int:0},{seq:[{oid:{name:"rsaEncryption"}},{null:!0}]},{octstr:{hex:A}}]}).getEncodedHex(),void 0===r||null==r?Pt(F,"PRIVATE KEY"):Pt(w=E(F,r),"ENCRYPTED PRIVATE KEY")}if("PKCS8PRV"==e&&void 0!==d&&t instanceof d&&1==t.isPrivate)return A=new h({seq:[{int:1},{octstr:{hex:t.prvKeyHex}},{tag:["a1",!0,{bitstr:{hex:"00"+t.pubKeyHex}}]}]}).getEncodedHex(),F=h({seq:[{int:0},{seq:[{oid:{name:"ecPublicKey"}},{oid:{name:t.curveName}}]},{octstr:{hex:A}}]}).getEncodedHex(),void 0===r||null==r?Pt(F,"PRIVATE KEY"):Pt(w=E(F,r),"ENCRYPTED PRIVATE KEY");if("PKCS8PRV"==e&&void 0!==g&&t instanceof g&&1==t.isPrivate)return A=new c({bigint:t.x}).getEncodedHex(),F=h({seq:[{int:0},{seq:[{oid:{name:"dsa"}},{seq:[{int:{bigint:t.p}},{int:{bigint:t.q}},{int:{bigint:t.g}}]}]},{octstr:{hex:A}}]}).getEncodedHex(),void 0===r||null==r?Pt(F,"PRIVATE KEY"):Pt(w=E(F,r),"ENCRYPTED PRIVATE KEY");throw new Error("unsupported object nor format")},Ht.getKeyFromCSRPEM=function(t){var e=Ct(t,"CERTIFICATE REQUEST");return Ht.getKeyFromCSRHex(e)},Ht.getKeyFromCSRHex=function(t){var e=Ht.parseCSRHex(t);return Ht.getKey(e.p8pubkeyhex,null,"pkcs8pub")},Ht.parseCSRHex=function(t){var e=ft,r=e.getChildIdx,n=e.getTLV,i={},o=t;if("30"!=o.substr(0,2))throw"malformed CSR(code:001)";var s=r(o,0);if(s.length<1)throw"malformed CSR(code:002)";if("30"!=o.substr(s[0],2))throw"malformed CSR(code:003)";var a=r(o,s[0]);if(a.length<3)throw"malformed CSR(code:004)";return i.p8pubkeyhex=n(o,a[2]),i},Ht.getKeyID=function(t){var e=Ht,r=ft;"string"==typeof t&&-1!=t.indexOf("BEGIN ")&&(t=e.getKey(t));var n=Ct(e.getPEM(t)),i=r.getIdxbyList(n,0,[1]),o=r.getV(n,i).substring(2);return ct.crypto.Util.hashHex(o,"sha1")},Ht.getJWKFromKey=function(t){var e={};if(t instanceof it&&t.isPrivate)return e.kty="RSA",e.n=_t(t.n.toString(16)),e.e=_t(t.e.toString(16)),e.d=_t(t.d.toString(16)),e.p=_t(t.p.toString(16)),e.q=_t(t.q.toString(16)),e.dp=_t(t.dmp1.toString(16)),e.dq=_t(t.dmq1.toString(16)),e.qi=_t(t.coeff.toString(16)),e;if(t instanceof it&&t.isPublic)return e.kty="RSA",e.n=_t(t.n.toString(16)),e.e=_t(t.e.toString(16)),e;if(t instanceof ct.crypto.ECDSA&&t.isPrivate){if("P-256"!==(n=t.getShortNISTPCurveName())&&"P-384"!==n)throw"unsupported curve name for JWT: "+n;var r=t.getPublicKeyXYHex();return e.kty="EC",e.crv=n,e.x=_t(r.x),e.y=_t(r.y),e.d=_t(t.prvKeyHex),e}if(t instanceof ct.crypto.ECDSA&&t.isPublic){var n;if("P-256"!==(n=t.getShortNISTPCurveName())&&"P-384"!==n)throw"unsupported curve name for JWT: "+n;return r=t.getPublicKeyXYHex(),e.kty="EC",e.crv=n,e.x=_t(r.x),e.y=_t(r.y),e}throw"not supported key object"},it.getPosArrayOfChildrenFromHex=function(t){return ft.getChildIdx(t,0)},it.getHexValueArrayOfChildrenFromHex=function(t){var e,r=ft.getV,n=r(t,(e=it.getPosArrayOfChildrenFromHex(t))[0]),i=r(t,e[1]),o=r(t,e[2]),s=r(t,e[3]),a=r(t,e[4]),u=r(t,e[5]),c=r(t,e[6]),h=r(t,e[7]),l=r(t,e[8]);return(e=new Array).push(n,i,o,s,a,u,c,h,l),e},it.prototype.readPrivateKeyFromPEMString=function(t){var e=Ct(t),r=it.getHexValueArrayOfChildrenFromHex(e);this.setPrivateEx(r[1],r[2],r[3],r[4],r[5],r[6],r[7],r[8])},it.prototype.readPKCS5PrvKeyHex=function(t){var e=it.getHexValueArrayOfChildrenFromHex(t);this.setPrivateEx(e[1],e[2],e[3],e[4],e[5],e[6],e[7],e[8])},it.prototype.readPKCS8PrvKeyHex=function(t){var e,r,n,i,o,s,a,u,c=ft,h=c.getVbyListEx;if(!1===c.isASN1HEX(t))throw new Error("not ASN.1 hex string");try{e=h(t,0,[2,0,1],"02"),r=h(t,0,[2,0,2],"02"),n=h(t,0,[2,0,3],"02"),i=h(t,0,[2,0,4],"02"),o=h(t,0,[2,0,5],"02"),s=h(t,0,[2,0,6],"02"),a=h(t,0,[2,0,7],"02"),u=h(t,0,[2,0,8],"02")}catch(t){throw new Error("malformed PKCS#8 plain RSA private key")}this.setPrivateEx(e,r,n,i,o,s,a,u)},it.prototype.readPKCS5PubKeyHex=function(t){var e=ft,r=e.getV;if(!1===e.isASN1HEX(t))throw new Error("keyHex is not ASN.1 hex string");var n=e.getChildIdx(t,0);if(2!==n.length||"02"!==t.substr(n[0],2)||"02"!==t.substr(n[1],2))throw new Error("wrong hex for PKCS#5 public key");var i=r(t,n[0]),o=r(t,n[1]);this.setPublic(i,o)},it.prototype.readPKCS8PubKeyHex=function(t){var e=ft;if(!1===e.isASN1HEX(t))throw new Error("not ASN.1 hex string");if("06092a864886f70d010101"!==e.getTLVbyListEx(t,0,[0,0]))throw new Error("not PKCS8 RSA public key");var r=e.getTLVbyListEx(t,0,[1,0]);this.readPKCS5PubKeyHex(r)},it.prototype.readCertPubKeyHex=function(t,e){var r,n;(r=new Wt).readCertHex(t),n=r.getPublicKeyHex(),this.readPKCS8PubKeyHex(n)};var Kt=new RegExp("[^0-9a-f]","gi");function Vt(t,e){for(var r="",n=e/4-t.length,i=0;i>24,(16711680&i)>>16,(65280&i)>>8,255&i])))),i+=1;return n}function Jt(t){for(var e in ct.crypto.Util.DIGESTINFOHEAD){var r=ct.crypto.Util.DIGESTINFOHEAD[e],n=r.length;if(t.substring(0,n)==r)return[e,t.substring(n)]}return[]}function Wt(t){var e,r=ft,n=r.getChildIdx,i=r.getV,o=r.getTLV,s=r.getVbyList,a=r.getVbyListEx,u=r.getTLVbyList,c=r.getTLVbyListEx,h=r.getIdxbyList,l=r.getIdxbyListEx,f=r.getVidx,g=r.oidname,d=r.hextooidstr,p=Wt,v=Ct;try{e=ct.asn1.x509.AlgorithmIdentifier.PSSNAME2ASN1TLV}catch(t){}this.HEX2STAG={"0c":"utf8",13:"prn",16:"ia5","1a":"vis","1e":"bmp"},this.hex=null,this.version=0,this.foffset=0,this.aExtInfo=null,this.getVersion=function(){return null===this.hex||0!==this.version?this.version:"a003020102"!==u(this.hex,0,[0,0])?(this.version=1,this.foffset=-1,1):(this.version=3,3)},this.getSerialNumberHex=function(){return a(this.hex,0,[0,0],"02")},this.getSignatureAlgorithmField=function(){var t=c(this.hex,0,[0,1]);return this.getAlgorithmIdentifierName(t)},this.getAlgorithmIdentifierName=function(t){for(var r in e)if(t===e[r])return r;return g(a(t,0,[0],"06"))},this.getIssuer=function(){return this.getX500Name(this.getIssuerHex())},this.getIssuerHex=function(){return u(this.hex,0,[0,3+this.foffset],"30")},this.getIssuerString=function(){return p.hex2dn(this.getIssuerHex())},this.getSubject=function(){return this.getX500Name(this.getSubjectHex())},this.getSubjectHex=function(){return u(this.hex,0,[0,5+this.foffset],"30")},this.getSubjectString=function(){return p.hex2dn(this.getSubjectHex())},this.getNotBefore=function(){var t=s(this.hex,0,[0,4+this.foffset,0]);return t=t.replace(/(..)/g,"%$1"),decodeURIComponent(t)},this.getNotAfter=function(){var t=s(this.hex,0,[0,4+this.foffset,1]);return t=t.replace(/(..)/g,"%$1"),decodeURIComponent(t)},this.getPublicKeyHex=function(){return r.getTLVbyList(this.hex,0,[0,6+this.foffset],"30")},this.getPublicKeyIdx=function(){return h(this.hex,0,[0,6+this.foffset],"30")},this.getPublicKeyContentIdx=function(){var t=this.getPublicKeyIdx();return h(this.hex,t,[1,0],"30")},this.getPublicKey=function(){return Ht.getKey(this.getPublicKeyHex(),null,"pkcs8pub")},this.getSignatureAlgorithmName=function(){var t=u(this.hex,0,[1],"30");return this.getAlgorithmIdentifierName(t)},this.getSignatureValueHex=function(){return s(this.hex,0,[2],"03",!0)},this.verifySignature=function(t){var e=this.getSignatureAlgorithmField(),r=this.getSignatureValueHex(),n=u(this.hex,0,[0],"30"),i=new ct.crypto.Signature({alg:e});return i.init(t),i.updateHex(n),i.verify(r)},this.parseExt=function(t){var e,o,a;if(void 0===t){if(a=this.hex,3!==this.version)return-1;e=h(a,0,[0,7,0],"30"),o=n(a,e)}else{a=Ct(t);var u=h(a,0,[0,3,0,0],"06");if("2a864886f70d01090e"!=i(a,u))return void(this.aExtInfo=new Array);e=h(a,0,[0,3,0,1,0],"30"),o=n(a,e),this.hex=a}this.aExtInfo=new Array;for(var c=0;c1){var a=o(t,s[1]),u=this.getGeneralName(a);null!=u.uri&&(i.uri=u.uri)}if(s.length>2){var c=o(t,s[2]);"0101ff"==c&&(i.reqauth=!0),"010100"==c&&(i.reqauth=!1)}return i},this.getX500NameRule=function(t){for(var e=null,r=[],n=0;n0&&(t.ext=this.getExtParamArray()),t.sighex=this.getSignatureValueHex(),t},this.getExtParamArray=function(t){null==t&&-1!=l(this.hex,0,[0,"[3]"])&&(t=c(this.hex,0,[0,"[3]",0],"30"));for(var e=[],r=n(t,0),i=0;i0&&(c=new Array(r),(new et).nextBytes(c),c=String.fromCharCode.apply(String,c));var h=Ft(u(Et("\0\0\0\0\0\0\0\0"+i+c))),l=[];for(n=0;n>8*a-s&255;for(d[0]&=~p,n=0;nthis.n.bitLength())return 0;var n=Jt(this.doPublic(r).toString(16).replace(/^1f+00/,""));if(0==n.length)return!1;var i=n[0];return n[1]==function(t){return ct.crypto.Util.hashString(t,i)}(t)},it.prototype.verifyWithMessageHash=function(t,e){if(e.length!=Math.ceil(this.n.bitLength()/4))return!1;var r=rt(e,16);if(r.bitLength()>this.n.bitLength())return 0;var n=Jt(this.doPublic(r).toString(16).replace(/^1f+00/,""));return 0!=n.length&&(n[0],n[1]==t)},it.prototype.verifyPSS=function(t,e,r,n){var i=function(t){return ct.crypto.Util.hashHex(t,r)}(Et(t));return void 0===n&&(n=-1),this.verifyWithMessageHashPSS(i,e,r,n)},it.prototype.verifyWithMessageHashPSS=function(t,e,r,n){if(e.length!=Math.ceil(this.n.bitLength()/4))return!1;var i,o=new F(e,16),s=function(t){return ct.crypto.Util.hashHex(t,r)},a=Ft(t),u=a.length,c=this.n.bitLength()-1,h=Math.ceil(c/8);if(-1===n||void 0===n)n=u;else if(-2===n)n=h-u-2;else if(n<-2)throw new Error("invalid salt length");if(h>8*h-c&255;if(0!=(f.charCodeAt(0)&d))throw new Error("bits beyond keysize not zero");var p=qt(g,f.length,s),v=[];for(i=0;i0&&-1==(":"+n.join(":")+":").indexOf(":"+y+":"))throw"algorithm '"+y+"' not accepted in the list";if("none"!=y&&null===e)throw"key shall be specified to verify.";if("string"==typeof e&&-1!=e.indexOf("-----BEGIN ")&&(e=Ht.getKey(e)),!("RS"!=g&&"PS"!=g||e instanceof i))throw"key shall be a RSAKey obj for RS* and PS* algs";if("ES"==g&&!(e instanceof c))throw"key shall be a ECDSA obj for ES* algs";var m=null;if(void 0===s.jwsalg2sigalg[v.alg])throw"unsupported alg name: "+y;if("none"==(m=s.jwsalg2sigalg[y]))throw"not supported";if("Hmac"==m.substr(0,4)){if(void 0===e)throw"hexadecimal key shall be specified for HMAC";var _=new h({alg:m,pass:e});return _.updateString(d),p==_.doFinal()}if(-1!=m.indexOf("withECDSA")){var S,w=null;try{w=c.concatSigToASN1Sig(p)}catch(t){return!1}return(S=new l({alg:m})).init(e),S.updateString(d),S.verify(w)}return(S=new l({alg:m})).init(e),S.updateString(d),S.verify(p)},ct.jws.JWS.parse=function(t){var e,r,n,i=t.split("."),o={};if(2!=i.length&&3!=i.length)throw"malformed sJWS: wrong number of '.' splitted elements";return e=i[0],r=i[1],3==i.length&&(n=i[2]),o.headerObj=ct.jws.JWS.readSafeJSONString(lt(e)),o.payloadObj=ct.jws.JWS.readSafeJSONString(lt(r)),o.headerPP=JSON.stringify(o.headerObj,null," "),null==o.payloadObj?o.payloadPP=lt(r):o.payloadPP=JSON.stringify(o.payloadObj,null," "),void 0!==n&&(o.sigHex=St(n)),o},ct.jws.JWS.verifyJWT=function(t,e,n){var i=ct.jws,o=i.JWS,s=o.readSafeJSONString,a=o.inArray,u=o.includedArray,c=t.split("."),h=c[0],l=c[1],f=(St(c[2]),s(lt(h))),g=s(lt(l));if(void 0===f.alg)return!1;if(void 0===n.alg)throw"acceptField.alg shall be specified";if(!a(f.alg,n.alg))return!1;if(void 0!==g.iss&&"object"===r(n.iss)&&!a(g.iss,n.iss))return!1;if(void 0!==g.sub&&"object"===r(n.sub)&&!a(g.sub,n.sub))return!1;if(void 0!==g.aud&&"object"===r(n.aud))if("string"==typeof g.aud){if(!a(g.aud,n.aud))return!1}else if("object"==r(g.aud)&&!u(g.aud,n.aud))return!1;var d=i.IntDate.getNow();return void 0!==n.verifyAt&&"number"==typeof n.verifyAt&&(d=n.verifyAt),void 0!==n.gracePeriod&&"number"==typeof n.gracePeriod||(n.gracePeriod=0),!(void 0!==g.exp&&"number"==typeof g.exp&&g.exp+n.gracePeriode.length&&(r=e.length);for(var n=0;n=s())throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s().toString(16)+" bytes");return 0|t}function d(t,e){if(u.isBuffer(t))return t.length;if("undefined"!=typeof ArrayBuffer&&"function"==typeof ArrayBuffer.isView&&(ArrayBuffer.isView(t)||t instanceof ArrayBuffer))return t.byteLength;"string"!=typeof t&&(t=""+t);var r=t.length;if(0===r)return 0;for(var n=!1;;)switch(e){case"ascii":case"latin1":case"binary":return r;case"utf8":case"utf-8":case void 0:return H(t).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*r;case"hex":return r>>>1;case"base64":return K(t).length;default:if(n)return H(t).length;e=(""+e).toLowerCase(),n=!0}}function p(t,e,r){var n=!1;if((void 0===e||e<0)&&(e=0),e>this.length)return"";if((void 0===r||r>this.length)&&(r=this.length),r<=0)return"";if((r>>>=0)<=(e>>>=0))return"";for(t||(t="utf8");;)switch(t){case"hex":return T(this,e,r);case"utf8":case"utf-8":return A(this,e,r);case"ascii":return P(this,e,r);case"latin1":case"binary":return C(this,e,r);case"base64":return x(this,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return R(this,e,r);default:if(n)throw new TypeError("Unknown encoding: "+t);t=(t+"").toLowerCase(),n=!0}}function v(t,e,r){var n=t[e];t[e]=t[r],t[r]=n}function y(t,e,r,n,i){if(0===t.length)return-1;if("string"==typeof r?(n=r,r=0):r>2147483647?r=2147483647:r<-2147483648&&(r=-2147483648),r=+r,isNaN(r)&&(r=i?0:t.length-1),r<0&&(r=t.length+r),r>=t.length){if(i)return-1;r=t.length-1}else if(r<0){if(!i)return-1;r=0}if("string"==typeof e&&(e=u.from(e,n)),u.isBuffer(e))return 0===e.length?-1:m(t,e,r,n,i);if("number"==typeof e)return e&=255,u.TYPED_ARRAY_SUPPORT&&"function"==typeof Uint8Array.prototype.indexOf?i?Uint8Array.prototype.indexOf.call(t,e,r):Uint8Array.prototype.lastIndexOf.call(t,e,r):m(t,[e],r,n,i);throw new TypeError("val must be string, number or Buffer")}function m(t,e,r,n,i){var o,s=1,a=t.length,u=e.length;if(void 0!==n&&("ucs2"===(n=String(n).toLowerCase())||"ucs-2"===n||"utf16le"===n||"utf-16le"===n)){if(t.length<2||e.length<2)return-1;s=2,a/=2,u/=2,r/=2}function c(t,e){return 1===s?t[e]:t.readUInt16BE(e*s)}if(i){var h=-1;for(o=r;oa&&(r=a-u),o=r;o>=0;o--){for(var l=!0,f=0;fi&&(n=i):n=i;var o=e.length;if(o%2!=0)throw new TypeError("Invalid hex string");n>o/2&&(n=o/2);for(var s=0;s>8,i=r%256,o.push(i),o.push(n);return o}(e,t.length-r),t,r,n)}function x(t,e,r){return 0===e&&r===t.length?n.fromByteArray(t):n.fromByteArray(t.slice(e,r))}function A(t,e,r){r=Math.min(t.length,r);for(var n=[],i=e;i239?4:c>223?3:c>191?2:1;if(i+l<=r)switch(l){case 1:c<128&&(h=c);break;case 2:128==(192&(o=t[i+1]))&&(u=(31&c)<<6|63&o)>127&&(h=u);break;case 3:o=t[i+1],s=t[i+2],128==(192&o)&&128==(192&s)&&(u=(15&c)<<12|(63&o)<<6|63&s)>2047&&(u<55296||u>57343)&&(h=u);break;case 4:o=t[i+1],s=t[i+2],a=t[i+3],128==(192&o)&&128==(192&s)&&128==(192&a)&&(u=(15&c)<<18|(63&o)<<12|(63&s)<<6|63&a)>65535&&u<1114112&&(h=u)}null===h?(h=65533,l=1):h>65535&&(h-=65536,n.push(h>>>10&1023|55296),h=56320|1023&h),n.push(h),i+=l}return function(t){var e=t.length;if(e<=k)return String.fromCharCode.apply(String,t);for(var r="",n=0;n0&&(t=this.toString("hex",0,r).match(/.{2}/g).join(" "),this.length>r&&(t+=" ... ")),""},u.prototype.compare=function(t,e,r,n,i){if(!u.isBuffer(t))throw new TypeError("Argument must be a Buffer");if(void 0===e&&(e=0),void 0===r&&(r=t?t.length:0),void 0===n&&(n=0),void 0===i&&(i=this.length),e<0||r>t.length||n<0||i>this.length)throw new RangeError("out of range index");if(n>=i&&e>=r)return 0;if(n>=i)return-1;if(e>=r)return 1;if(this===t)return 0;for(var o=(i>>>=0)-(n>>>=0),s=(r>>>=0)-(e>>>=0),a=Math.min(o,s),c=this.slice(n,i),h=t.slice(e,r),l=0;li)&&(r=i),t.length>0&&(r<0||e<0)||e>this.length)throw new RangeError("Attempt to write outside buffer bounds");n||(n="utf8");for(var o=!1;;)switch(n){case"hex":return _(this,t,e,r);case"utf8":case"utf-8":return S(this,t,e,r);case"ascii":return w(this,t,e,r);case"latin1":case"binary":return b(this,t,e,r);case"base64":return F(this,t,e,r);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return E(this,t,e,r);default:if(o)throw new TypeError("Unknown encoding: "+n);n=(""+n).toLowerCase(),o=!0}},u.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};var k=4096;function P(t,e,r){var n="";r=Math.min(t.length,r);for(var i=e;in)&&(r=n);for(var i="",o=e;or)throw new RangeError("Trying to access beyond buffer length")}function D(t,e,r,n,i,o){if(!u.isBuffer(t))throw new TypeError('"buffer" argument must be a Buffer instance');if(e>i||et.length)throw new RangeError("Index out of range")}function L(t,e,r,n){e<0&&(e=65535+e+1);for(var i=0,o=Math.min(t.length-r,2);i>>8*(n?i:1-i)}function N(t,e,r,n){e<0&&(e=4294967295+e+1);for(var i=0,o=Math.min(t.length-r,4);i>>8*(n?i:3-i)&255}function U(t,e,r,n,i,o){if(r+n>t.length)throw new RangeError("Index out of range");if(r<0)throw new RangeError("Index out of range")}function O(t,e,r,n,o){return o||U(t,0,r,4),i.write(t,e,r,n,23,4),r+4}function B(t,e,r,n,o){return o||U(t,0,r,8),i.write(t,e,r,n,52,8),r+8}u.prototype.slice=function(t,e){var r,n=this.length;if((t=~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),(e=void 0===e?n:~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),e0&&(i*=256);)n+=this[t+--e]*i;return n},u.prototype.readUInt8=function(t,e){return e||I(t,1,this.length),this[t]},u.prototype.readUInt16LE=function(t,e){return e||I(t,2,this.length),this[t]|this[t+1]<<8},u.prototype.readUInt16BE=function(t,e){return e||I(t,2,this.length),this[t]<<8|this[t+1]},u.prototype.readUInt32LE=function(t,e){return e||I(t,4,this.length),(this[t]|this[t+1]<<8|this[t+2]<<16)+16777216*this[t+3]},u.prototype.readUInt32BE=function(t,e){return e||I(t,4,this.length),16777216*this[t]+(this[t+1]<<16|this[t+2]<<8|this[t+3])},u.prototype.readIntLE=function(t,e,r){t|=0,e|=0,r||I(t,e,this.length);for(var n=this[t],i=1,o=0;++o=(i*=128)&&(n-=Math.pow(2,8*e)),n},u.prototype.readIntBE=function(t,e,r){t|=0,e|=0,r||I(t,e,this.length);for(var n=e,i=1,o=this[t+--n];n>0&&(i*=256);)o+=this[t+--n]*i;return o>=(i*=128)&&(o-=Math.pow(2,8*e)),o},u.prototype.readInt8=function(t,e){return e||I(t,1,this.length),128&this[t]?-1*(255-this[t]+1):this[t]},u.prototype.readInt16LE=function(t,e){e||I(t,2,this.length);var r=this[t]|this[t+1]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt16BE=function(t,e){e||I(t,2,this.length);var r=this[t+1]|this[t]<<8;return 32768&r?4294901760|r:r},u.prototype.readInt32LE=function(t,e){return e||I(t,4,this.length),this[t]|this[t+1]<<8|this[t+2]<<16|this[t+3]<<24},u.prototype.readInt32BE=function(t,e){return e||I(t,4,this.length),this[t]<<24|this[t+1]<<16|this[t+2]<<8|this[t+3]},u.prototype.readFloatLE=function(t,e){return e||I(t,4,this.length),i.read(this,t,!0,23,4)},u.prototype.readFloatBE=function(t,e){return e||I(t,4,this.length),i.read(this,t,!1,23,4)},u.prototype.readDoubleLE=function(t,e){return e||I(t,8,this.length),i.read(this,t,!0,52,8)},u.prototype.readDoubleBE=function(t,e){return e||I(t,8,this.length),i.read(this,t,!1,52,8)},u.prototype.writeUIntLE=function(t,e,r,n){t=+t,e|=0,r|=0,n||D(this,t,e,r,Math.pow(2,8*r)-1,0);var i=1,o=0;for(this[e]=255&t;++o=0&&(o*=256);)this[e+i]=t/o&255;return e+r},u.prototype.writeUInt8=function(t,e,r){return t=+t,e|=0,r||D(this,t,e,1,255,0),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),this[e]=255&t,e+1},u.prototype.writeUInt16LE=function(t,e,r){return t=+t,e|=0,r||D(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):L(this,t,e,!0),e+2},u.prototype.writeUInt16BE=function(t,e,r){return t=+t,e|=0,r||D(this,t,e,2,65535,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):L(this,t,e,!1),e+2},u.prototype.writeUInt32LE=function(t,e,r){return t=+t,e|=0,r||D(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e+3]=t>>>24,this[e+2]=t>>>16,this[e+1]=t>>>8,this[e]=255&t):N(this,t,e,!0),e+4},u.prototype.writeUInt32BE=function(t,e,r){return t=+t,e|=0,r||D(this,t,e,4,4294967295,0),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):N(this,t,e,!1),e+4},u.prototype.writeIntLE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);D(this,t,e,r,i-1,-i)}var o=0,s=1,a=0;for(this[e]=255&t;++o>0)-a&255;return e+r},u.prototype.writeIntBE=function(t,e,r,n){if(t=+t,e|=0,!n){var i=Math.pow(2,8*r-1);D(this,t,e,r,i-1,-i)}var o=r-1,s=1,a=0;for(this[e+o]=255&t;--o>=0&&(s*=256);)t<0&&0===a&&0!==this[e+o+1]&&(a=1),this[e+o]=(t/s>>0)-a&255;return e+r},u.prototype.writeInt8=function(t,e,r){return t=+t,e|=0,r||D(this,t,e,1,127,-128),u.TYPED_ARRAY_SUPPORT||(t=Math.floor(t)),t<0&&(t=255+t+1),this[e]=255&t,e+1},u.prototype.writeInt16LE=function(t,e,r){return t=+t,e|=0,r||D(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8):L(this,t,e,!0),e+2},u.prototype.writeInt16BE=function(t,e,r){return t=+t,e|=0,r||D(this,t,e,2,32767,-32768),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>8,this[e+1]=255&t):L(this,t,e,!1),e+2},u.prototype.writeInt32LE=function(t,e,r){return t=+t,e|=0,r||D(this,t,e,4,2147483647,-2147483648),u.TYPED_ARRAY_SUPPORT?(this[e]=255&t,this[e+1]=t>>>8,this[e+2]=t>>>16,this[e+3]=t>>>24):N(this,t,e,!0),e+4},u.prototype.writeInt32BE=function(t,e,r){return t=+t,e|=0,r||D(this,t,e,4,2147483647,-2147483648),t<0&&(t=4294967295+t+1),u.TYPED_ARRAY_SUPPORT?(this[e]=t>>>24,this[e+1]=t>>>16,this[e+2]=t>>>8,this[e+3]=255&t):N(this,t,e,!1),e+4},u.prototype.writeFloatLE=function(t,e,r){return O(this,t,e,!0,r)},u.prototype.writeFloatBE=function(t,e,r){return O(this,t,e,!1,r)},u.prototype.writeDoubleLE=function(t,e,r){return B(this,t,e,!0,r)},u.prototype.writeDoubleBE=function(t,e,r){return B(this,t,e,!1,r)},u.prototype.copy=function(t,e,r,n){if(r||(r=0),n||0===n||(n=this.length),e>=t.length&&(e=t.length),e||(e=0),n>0&&n=this.length)throw new RangeError("sourceStart out of bounds");if(n<0)throw new RangeError("sourceEnd out of bounds");n>this.length&&(n=this.length),t.length-e=0;--i)t[i+e]=this[i+r];else if(o<1e3||!u.TYPED_ARRAY_SUPPORT)for(i=0;i>>=0,r=void 0===r?this.length:r>>>0,t||(t=0),"number"==typeof t)for(o=e;o55295&&r<57344){if(!i){if(r>56319){(e-=3)>-1&&o.push(239,191,189);continue}if(s+1===n){(e-=3)>-1&&o.push(239,191,189);continue}i=r;continue}if(r<56320){(e-=3)>-1&&o.push(239,191,189),i=r;continue}r=65536+(i-55296<<10|r-56320)}else i&&(e-=3)>-1&&o.push(239,191,189);if(i=null,r<128){if((e-=1)<0)break;o.push(r)}else if(r<2048){if((e-=2)<0)break;o.push(r>>6|192,63&r|128)}else if(r<65536){if((e-=3)<0)break;o.push(r>>12|224,r>>6&63|128,63&r|128)}else{if(!(r<1114112))throw new Error("Invalid code point");if((e-=4)<0)break;o.push(r>>18|240,r>>12&63|128,r>>6&63|128,63&r|128)}}return o}function K(t){return n.toByteArray(function(t){if((t=function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}(t).replace(M,"")).length<2)return"";for(;t.length%4!=0;)t+="=";return t}(t))}function V(t,e,r,n){for(var i=0;i=e.length||i>=t.length);++i)e[i+r]=t[i];return i}}).call(this,r(29))},function(t,e){var r;r=function(){return this}();try{r=r||new Function("return this")()}catch(t){"object"==typeof window&&(r=window)}t.exports=r},function(t,e,r){"use strict";e.byteLength=function(t){var e=c(t),r=e[0],n=e[1];return 3*(r+n)/4-n},e.toByteArray=function(t){var e,r,n=c(t),s=n[0],a=n[1],u=new o(function(t,e,r){return 3*(e+r)/4-r}(0,s,a)),h=0,l=a>0?s-4:s;for(r=0;r>16&255,u[h++]=e>>8&255,u[h++]=255&e;return 2===a&&(e=i[t.charCodeAt(r)]<<2|i[t.charCodeAt(r+1)]>>4,u[h++]=255&e),1===a&&(e=i[t.charCodeAt(r)]<<10|i[t.charCodeAt(r+1)]<<4|i[t.charCodeAt(r+2)]>>2,u[h++]=e>>8&255,u[h++]=255&e),u},e.fromByteArray=function(t){for(var e,r=t.length,i=r%3,o=[],s=16383,a=0,u=r-i;au?u:a+s));return 1===i?(e=t[r-1],o.push(n[e>>2]+n[e<<4&63]+"==")):2===i&&(e=(t[r-2]<<8)+t[r-1],o.push(n[e>>10]+n[e>>4&63]+n[e<<2&63]+"=")),o.join("")};for(var n=[],i=[],o="undefined"!=typeof Uint8Array?Uint8Array:Array,s="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",a=0,u=s.length;a0)throw new Error("Invalid string. Length must be a multiple of 4");var r=t.indexOf("=");return-1===r&&(r=e),[r,r===e?0:4-r%4]}function h(t,e,r){for(var i,o,s=[],a=e;a>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return s.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},function(t,e){e.read=function(t,e,r,n,i){var o,s,a=8*i-n-1,u=(1<>1,h=-7,l=r?i-1:0,f=r?-1:1,g=t[e+l];for(l+=f,o=g&(1<<-h)-1,g>>=-h,h+=a;h>0;o=256*o+t[e+l],l+=f,h-=8);for(s=o&(1<<-h)-1,o>>=-h,h+=n;h>0;s=256*s+t[e+l],l+=f,h-=8);if(0===o)o=1-c;else{if(o===u)return s?NaN:1/0*(g?-1:1);s+=Math.pow(2,n),o-=c}return(g?-1:1)*s*Math.pow(2,o-n)},e.write=function(t,e,r,n,i,o){var s,a,u,c=8*o-i-1,h=(1<>1,f=23===i?Math.pow(2,-24)-Math.pow(2,-77):0,g=n?0:o-1,d=n?1:-1,p=e<0||0===e&&1/e<0?1:0;for(e=Math.abs(e),isNaN(e)||e===1/0?(a=isNaN(e)?1:0,s=h):(s=Math.floor(Math.log(e)/Math.LN2),e*(u=Math.pow(2,-s))<1&&(s--,u*=2),(e+=s+l>=1?f/u:f*Math.pow(2,1-l))*u>=2&&(s++,u/=2),s+l>=h?(a=0,s=h):s+l>=1?(a=(e*u-1)*Math.pow(2,i),s+=l):(a=e*Math.pow(2,l-1)*Math.pow(2,i),s=0));i>=8;t[r+g]=255&a,g+=d,a/=256,i-=8);for(s=s<0;t[r+g]=255&s,g+=d,s/=256,c-=8);t[r+g-d]|=128*p}},function(t,e){var r={}.toString;t.exports=Array.isArray||function(t){return"[object Array]"==r.call(t)}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default=function(t){var e=t.jws,r=t.KeyUtil,i=t.X509,o=t.crypto,s=t.hextob64u,a=t.b64tohex,u=t.AllowedSigningAlgs;return function(){function t(){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t)}return t.parseJwt=function t(r){n.Log.debug("JoseUtil.parseJwt");try{var i=e.JWS.parse(r);return{header:i.headerObj,payload:i.payloadObj}}catch(t){n.Log.error(t)}},t.validateJwt=function(e,o,s,u,c,h,l){n.Log.debug("JoseUtil.validateJwt");try{if("RSA"===o.kty)if(o.e&&o.n)o=r.getKey(o);else{if(!o.x5c||!o.x5c.length)return n.Log.error("JoseUtil.validateJwt: RSA key missing key material",o),Promise.reject(new Error("RSA key missing key material"));var f=a(o.x5c[0]);o=i.getPublicKeyFromCertHex(f)}else{if("EC"!==o.kty)return n.Log.error("JoseUtil.validateJwt: Unsupported key type",o&&o.kty),Promise.reject(new Error(o.kty));if(!(o.crv&&o.x&&o.y))return n.Log.error("JoseUtil.validateJwt: EC key missing key material",o),Promise.reject(new Error("EC key missing key material"));o=r.getKey(o)}return t._validateJwt(e,o,s,u,c,h,l)}catch(t){return n.Log.error(t&&t.message||t),Promise.reject("JWT validation failed")}},t.validateJwtAttributes=function(e,r,i,o,s,a){o||(o=0),s||(s=parseInt(Date.now()/1e3));var u=t.parseJwt(e).payload;if(!u.iss)return n.Log.error("JoseUtil._validateJwt: issuer was not provided"),Promise.reject(new Error("issuer was not provided"));if(u.iss!==r)return n.Log.error("JoseUtil._validateJwt: Invalid issuer in token",u.iss),Promise.reject(new Error("Invalid issuer in token: "+u.iss));if(!u.aud)return n.Log.error("JoseUtil._validateJwt: aud was not provided"),Promise.reject(new Error("aud was not provided"));if(!(u.aud===i||Array.isArray(u.aud)&&u.aud.indexOf(i)>=0))return n.Log.error("JoseUtil._validateJwt: Invalid audience in token",u.aud),Promise.reject(new Error("Invalid audience in token: "+u.aud));if(u.azp&&u.azp!==i)return n.Log.error("JoseUtil._validateJwt: Invalid azp in token",u.azp),Promise.reject(new Error("Invalid azp in token: "+u.azp));if(!a){var c=s+o,h=s-o;if(!u.iat)return n.Log.error("JoseUtil._validateJwt: iat was not provided"),Promise.reject(new Error("iat was not provided"));if(c1&&void 0!==arguments[1]?arguments[1]:"#";o(this,t);var n=i.UrlUtility.parseUrlFragment(e,r);this.error=n.error,this.error_description=n.error_description,this.error_uri=n.error_uri,this.code=n.code,this.state=n.state,this.id_token=n.id_token,this.session_state=n.session_state,this.access_token=n.access_token,this.token_type=n.token_type,this.scope=n.scope,this.profile=void 0,this.expires_in=n.expires_in}return n(t,[{key:"expires_in",get:function(){if(this.expires_at){var t=parseInt(Date.now()/1e3);return this.expires_at-t}},set:function(t){var e=parseInt(t);if("number"==typeof e&&e>0){var r=parseInt(Date.now()/1e3);this.expires_at=r+e}}},{key:"expired",get:function(){var t=this.expires_in;if(void 0!==t)return t<=0}},{key:"scopes",get:function(){return(this.scope||"").split(" ")}},{key:"isOpenIdConnect",get:function(){return this.scopes.indexOf("openid")>=0||!!this.id_token}}]),t}()},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SignoutRequest=void 0;var n=r(0),i=r(3),o=r(9);e.SignoutRequest=function t(e){var r=e.url,s=e.id_token_hint,a=e.post_logout_redirect_uri,u=e.data,c=e.extraQueryParams,h=e.request_type;if(function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),!r)throw n.Log.error("SignoutRequest.ctor: No url passed"),new Error("url");for(var l in s&&(r=i.UrlUtility.addQueryParam(r,"id_token_hint",s)),a&&(r=i.UrlUtility.addQueryParam(r,"post_logout_redirect_uri",a),u&&(this.state=new o.State({data:u,request_type:h}),r=i.UrlUtility.addQueryParam(r,"state",this.state.id))),c)r=i.UrlUtility.addQueryParam(r,l,c[l]);this.url=r}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.SignoutResponse=void 0;var n=r(3);e.SignoutResponse=function t(e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t);var r=n.UrlUtility.parseUrlFragment(e,"?");this.error=r.error,this.error_description=r.error_description,this.error_uri=r.error_uri,this.state=r.state}},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.InMemoryWebStorage=void 0;var n=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:c.SilentRenewService,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:h.SessionMonitor,a=arguments.length>3&&void 0!==arguments[3]?arguments[3]:f.TokenRevocationClient,l=arguments.length>4&&void 0!==arguments[4]?arguments[4]:g.TokenClient,y=arguments.length>5&&void 0!==arguments[5]?arguments[5]:d.JoseUtil;p(this,e),r instanceof s.UserManagerSettings||(r=new s.UserManagerSettings(r));var m=v(this,t.call(this,r));return m._events=new u.UserManagerEvents(r),m._silentRenewService=new n(m),m.settings.automaticSilentRenew&&(i.Log.debug("UserManager.ctor: automaticSilentRenew is configured, setting up silent renew"),m.startSilentRenew()),m.settings.monitorSession&&(i.Log.debug("UserManager.ctor: monitorSession is configured, setting up session monitor"),m._sessionMonitor=new o(m)),m._tokenRevocationClient=new a(m._settings),m._tokenClient=new l(m._settings),m._joseUtil=y,m}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.getUser=function(){var t=this;return this._loadUser().then((function(e){return e?(i.Log.info("UserManager.getUser: user loaded"),t._events.load(e,!1),e):(i.Log.info("UserManager.getUser: user not found in storage"),null)}))},e.prototype.removeUser=function(){var t=this;return this.storeUser(null).then((function(){i.Log.info("UserManager.removeUser: user removed from storage"),t._events.unload()}))},e.prototype.signinRedirect=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(t=Object.assign({},t)).request_type="si:r";var e={useReplaceToNavigate:t.useReplaceToNavigate};return this._signinStart(t,this._redirectNavigator,e).then((function(){i.Log.info("UserManager.signinRedirect: successful")}))},e.prototype.signinRedirectCallback=function(t){return this._signinEnd(t||this._redirectNavigator.url).then((function(t){return t.profile&&t.profile.sub?i.Log.info("UserManager.signinRedirectCallback: successful, signed in sub: ",t.profile.sub):i.Log.info("UserManager.signinRedirectCallback: no sub"),t}))},e.prototype.signinPopup=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(t=Object.assign({},t)).request_type="si:p";var e=t.redirect_uri||this.settings.popup_redirect_uri||this.settings.redirect_uri;return e?(t.redirect_uri=e,t.display="popup",this._signin(t,this._popupNavigator,{startUrl:e,popupWindowFeatures:t.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:t.popupWindowTarget||this.settings.popupWindowTarget}).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info("UserManager.signinPopup: signinPopup successful, signed in sub: ",t.profile.sub):i.Log.info("UserManager.signinPopup: no sub")),t}))):(i.Log.error("UserManager.signinPopup: No popup_redirect_uri or redirect_uri configured"),Promise.reject(new Error("No popup_redirect_uri or redirect_uri configured")))},e.prototype.signinPopupCallback=function(t){return this._signinCallback(t,this._popupNavigator).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info("UserManager.signinPopupCallback: successful, signed in sub: ",t.profile.sub):i.Log.info("UserManager.signinPopupCallback: no sub")),t})).catch((function(t){i.Log.error(t.message)}))},e.prototype.signinSilent=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return e=Object.assign({},e),this._loadUser().then((function(r){return r&&r.refresh_token?(e.refresh_token=r.refresh_token,t._useRefreshToken(e)):(e.request_type="si:s",e.id_token_hint=e.id_token_hint||t.settings.includeIdTokenInSilentRenew&&r&&r.id_token,r&&t._settings.validateSubOnSilentRenew&&(i.Log.debug("UserManager.signinSilent, subject prior to silent renew: ",r.profile.sub),e.current_sub=r.profile.sub),t._signinSilentIframe(e))}))},e.prototype._useRefreshToken=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};return this._tokenClient.exchangeRefreshToken(e).then((function(e){return e?e.access_token?t._loadUser().then((function(r){if(r){var n=Promise.resolve();return e.id_token&&(n=t._validateIdTokenFromTokenRefreshToken(r.profile,e.id_token)),n.then((function(){return i.Log.debug("UserManager._useRefreshToken: refresh token response success"),r.id_token=e.id_token||r.id_token,r.access_token=e.access_token,r.refresh_token=e.refresh_token||r.refresh_token,r.expires_in=e.expires_in,t.storeUser(r).then((function(){return t._events.load(r),r}))}))}return null})):(i.Log.error("UserManager._useRefreshToken: No access token returned from token endpoint"),Promise.reject("No access token returned from token endpoint")):(i.Log.error("UserManager._useRefreshToken: No response returned from token endpoint"),Promise.reject("No response returned from token endpoint"))}))},e.prototype._validateIdTokenFromTokenRefreshToken=function(t,e){var r=this;return this._metadataService.getIssuer().then((function(n){return r.settings.getEpochTime().then((function(o){return r._joseUtil.validateJwtAttributes(e,n,r._settings.client_id,r._settings.clockSkew,o).then((function(e){return e?e.sub!==t.sub?(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: sub in id_token does not match current sub"),Promise.reject(new Error("sub in id_token does not match current sub"))):e.auth_time&&e.auth_time!==t.auth_time?(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: auth_time in id_token does not match original auth_time"),Promise.reject(new Error("auth_time in id_token does not match original auth_time"))):e.azp&&e.azp!==t.azp?(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: azp in id_token does not match original azp"),Promise.reject(new Error("azp in id_token does not match original azp"))):!e.azp&&t.azp?(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: azp not in id_token, but present in original id_token"),Promise.reject(new Error("azp not in id_token, but present in original id_token"))):void 0:(i.Log.error("UserManager._validateIdTokenFromTokenRefreshToken: Failed to validate id_token"),Promise.reject(new Error("Failed to validate id_token")))}))}))}))},e.prototype._signinSilentIframe=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=t.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return e?(t.redirect_uri=e,t.prompt=t.prompt||"none",this._signin(t,this._iframeNavigator,{startUrl:e,silentRequestTimeout:t.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info("UserManager.signinSilent: successful, signed in sub: ",t.profile.sub):i.Log.info("UserManager.signinSilent: no sub")),t}))):(i.Log.error("UserManager.signinSilent: No silent_redirect_uri configured"),Promise.reject(new Error("No silent_redirect_uri configured")))},e.prototype.signinSilentCallback=function(t){return this._signinCallback(t,this._iframeNavigator).then((function(t){return t&&(t.profile&&t.profile.sub?i.Log.info("UserManager.signinSilentCallback: successful, signed in sub: ",t.profile.sub):i.Log.info("UserManager.signinSilentCallback: no sub")),t}))},e.prototype.signinCallback=function(t){var e=this;return this.readSigninResponseState(t).then((function(r){var n=r.state;return r.response,"si:r"===n.request_type?e.signinRedirectCallback(t):"si:p"===n.request_type?e.signinPopupCallback(t):"si:s"===n.request_type?e.signinSilentCallback(t):Promise.reject(new Error("invalid response_type in state"))}))},e.prototype.signoutCallback=function(t,e){var r=this;return this.readSignoutResponseState(t).then((function(n){var i=n.state,o=n.response;return i?"so:r"===i.request_type?r.signoutRedirectCallback(t):"so:p"===i.request_type?r.signoutPopupCallback(t,e):Promise.reject(new Error("invalid response_type in state")):o}))},e.prototype.querySessionStatus=function(){var t=this,e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(e=Object.assign({},e)).request_type="si:s";var r=e.redirect_uri||this.settings.silent_redirect_uri||this.settings.redirect_uri;return r?(e.redirect_uri=r,e.prompt="none",e.response_type=e.response_type||this.settings.query_status_response_type,e.scope=e.scope||"openid",e.skipUserInfo=!0,this._signinStart(e,this._iframeNavigator,{startUrl:r,silentRequestTimeout:e.silentRequestTimeout||this.settings.silentRequestTimeout}).then((function(e){return t.processSigninResponse(e.url).then((function(t){if(i.Log.debug("UserManager.querySessionStatus: got signin response"),t.session_state&&t.profile.sub)return i.Log.info("UserManager.querySessionStatus: querySessionStatus success for sub: ",t.profile.sub),{session_state:t.session_state,sub:t.profile.sub,sid:t.profile.sid};i.Log.info("querySessionStatus successful, user not authenticated")})).catch((function(e){if(e.session_state&&t.settings.monitorAnonymousSession&&("login_required"==e.message||"consent_required"==e.message||"interaction_required"==e.message||"account_selection_required"==e.message))return i.Log.info("UserManager.querySessionStatus: querySessionStatus success for anonymous user"),{session_state:e.session_state};throw e}))}))):(i.Log.error("UserManager.querySessionStatus: No silent_redirect_uri configured"),Promise.reject(new Error("No silent_redirect_uri configured")))},e.prototype._signin=function(t,e){var r=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signinStart(t,e,n).then((function(e){return r._signinEnd(e.url,t)}))},e.prototype._signinStart=function(t,e){var r=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return e.prepare(n).then((function(e){return i.Log.debug("UserManager._signinStart: got navigator window handle"),r.createSigninRequest(t).then((function(t){return i.Log.debug("UserManager._signinStart: got signin request"),n.url=t.url,n.id=t.state.id,e.navigate(n)})).catch((function(t){throw e.close&&(i.Log.debug("UserManager._signinStart: Error after preparing navigator, closing navigator window"),e.close()),t}))}))},e.prototype._signinEnd=function(t){var e=this,r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return this.processSigninResponse(t).then((function(t){i.Log.debug("UserManager._signinEnd: got signin response");var n=new a.User(t);if(r.current_sub){if(r.current_sub!==n.profile.sub)return i.Log.debug("UserManager._signinEnd: current user does not match user returned from signin. sub from signin: ",n.profile.sub),Promise.reject(new Error("login_required"));i.Log.debug("UserManager._signinEnd: current user matches user returned from signin")}return e.storeUser(n).then((function(){return i.Log.debug("UserManager._signinEnd: user stored"),e._events.load(n),n}))}))},e.prototype._signinCallback=function(t,e){i.Log.debug("UserManager._signinCallback");var r="query"===this._settings.response_mode||!this._settings.response_mode&&l.SigninRequest.isCode(this._settings.response_type)?"?":"#";return e.callback(t,void 0,r)},e.prototype.signoutRedirect=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(t=Object.assign({},t)).request_type="so:r";var e=t.post_logout_redirect_uri||this.settings.post_logout_redirect_uri;e&&(t.post_logout_redirect_uri=e);var r={useReplaceToNavigate:t.useReplaceToNavigate};return this._signoutStart(t,this._redirectNavigator,r).then((function(){i.Log.info("UserManager.signoutRedirect: successful")}))},e.prototype.signoutRedirectCallback=function(t){return this._signoutEnd(t||this._redirectNavigator.url).then((function(t){return i.Log.info("UserManager.signoutRedirectCallback: successful"),t}))},e.prototype.signoutPopup=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};(t=Object.assign({},t)).request_type="so:p";var e=t.post_logout_redirect_uri||this.settings.popup_post_logout_redirect_uri||this.settings.post_logout_redirect_uri;return t.post_logout_redirect_uri=e,t.display="popup",t.post_logout_redirect_uri&&(t.state=t.state||{}),this._signout(t,this._popupNavigator,{startUrl:e,popupWindowFeatures:t.popupWindowFeatures||this.settings.popupWindowFeatures,popupWindowTarget:t.popupWindowTarget||this.settings.popupWindowTarget}).then((function(){i.Log.info("UserManager.signoutPopup: successful")}))},e.prototype.signoutPopupCallback=function(t,e){return void 0===e&&"boolean"==typeof t&&(e=t,t=null),this._popupNavigator.callback(t,e,"?").then((function(){i.Log.info("UserManager.signoutPopupCallback: successful")}))},e.prototype._signout=function(t,e){var r=this,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return this._signoutStart(t,e,n).then((function(t){return r._signoutEnd(t.url)}))},e.prototype._signoutStart=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this,r=arguments[1],n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};return r.prepare(n).then((function(r){return i.Log.debug("UserManager._signoutStart: got navigator window handle"),e._loadUser().then((function(o){return i.Log.debug("UserManager._signoutStart: loaded current user from storage"),(e._settings.revokeAccessTokenOnSignout?e._revokeInternal(o):Promise.resolve()).then((function(){var s=t.id_token_hint||o&&o.id_token;return s&&(i.Log.debug("UserManager._signoutStart: Setting id_token into signout request"),t.id_token_hint=s),e.removeUser().then((function(){return i.Log.debug("UserManager._signoutStart: user removed, creating signout request"),e.createSignoutRequest(t).then((function(t){return i.Log.debug("UserManager._signoutStart: got signout request"),n.url=t.url,t.state&&(n.id=t.state.id),r.navigate(n)}))}))}))})).catch((function(t){throw r.close&&(i.Log.debug("UserManager._signoutStart: Error after preparing navigator, closing navigator window"),r.close()),t}))}))},e.prototype._signoutEnd=function(t){return this.processSignoutResponse(t).then((function(t){return i.Log.debug("UserManager._signoutEnd: got signout response"),t}))},e.prototype.revokeAccessToken=function(){var t=this;return this._loadUser().then((function(e){return t._revokeInternal(e,!0).then((function(r){if(r)return i.Log.debug("UserManager.revokeAccessToken: removing token properties from user and re-storing"),e.access_token=null,e.refresh_token=null,e.expires_at=null,e.token_type=null,t.storeUser(e).then((function(){i.Log.debug("UserManager.revokeAccessToken: user stored"),t._events.load(e)}))}))})).then((function(){i.Log.info("UserManager.revokeAccessToken: access token revoked successfully")}))},e.prototype._revokeInternal=function(t,e){var r=this;if(t){var n=t.access_token,o=t.refresh_token;return this._revokeAccessTokenInternal(n,e).then((function(t){return r._revokeRefreshTokenInternal(o,e).then((function(e){return t||e||i.Log.debug("UserManager.revokeAccessToken: no need to revoke due to no token(s), or JWT format"),t||e}))}))}return Promise.resolve(!1)},e.prototype._revokeAccessTokenInternal=function(t,e){return!t||t.indexOf(".")>=0?Promise.resolve(!1):this._tokenRevocationClient.revoke(t,e).then((function(){return!0}))},e.prototype._revokeRefreshTokenInternal=function(t,e){return t?this._tokenRevocationClient.revoke(t,e,"refresh_token").then((function(){return!0})):Promise.resolve(!1)},e.prototype.startSilentRenew=function(){this._silentRenewService.start()},e.prototype.stopSilentRenew=function(){this._silentRenewService.stop()},e.prototype._loadUser=function(){return this._userStore.get(this._userStoreKey).then((function(t){return t?(i.Log.debug("UserManager._loadUser: user storageString loaded"),a.User.fromStorageString(t)):(i.Log.debug("UserManager._loadUser: no user storageString"),null)}))},e.prototype.storeUser=function(t){if(t){i.Log.debug("UserManager.storeUser: storing user");var e=t.toStorageString();return this._userStore.set(this._userStoreKey,e)}return i.Log.debug("storeUser.storeUser: removing user"),this._userStore.remove(this._userStoreKey)},n(e,[{key:"_redirectNavigator",get:function(){return this.settings.redirectNavigator}},{key:"_popupNavigator",get:function(){return this.settings.popupNavigator}},{key:"_iframeNavigator",get:function(){return this.settings.iframeNavigator}},{key:"_userStore",get:function(){return this.settings.userStore}},{key:"events",get:function(){return this._events}},{key:"_userStoreKey",get:function(){return"user:"+this.settings.authority+":"+this.settings.client_id}}]),e}(o.OidcClient)},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.UserManagerSettings=void 0;var n=function(){function t(t,e){for(var r=0;r0&&void 0!==arguments[0]?arguments[0]:{},n=r.popup_redirect_uri,i=r.popup_post_logout_redirect_uri,g=r.popupWindowFeatures,d=r.popupWindowTarget,p=r.silent_redirect_uri,v=r.silentRequestTimeout,y=r.automaticSilentRenew,m=void 0!==y&&y,_=r.validateSubOnSilentRenew,S=void 0!==_&&_,w=r.includeIdTokenInSilentRenew,b=void 0===w||w,F=r.monitorSession,E=void 0===F||F,x=r.monitorAnonymousSession,A=void 0!==x&&x,k=r.checkSessionInterval,P=void 0===k?2e3:k,C=r.stopCheckSessionOnError,T=void 0===C||C,R=r.query_status_response_type,I=r.revokeAccessTokenOnSignout,D=void 0!==I&&I,L=r.accessTokenExpiringNotificationTime,N=void 0===L?60:L,U=r.redirectNavigator,O=void 0===U?new o.RedirectNavigator:U,B=r.popupNavigator,M=void 0===B?new s.PopupNavigator:B,j=r.iframeNavigator,H=void 0===j?new a.IFrameNavigator:j,K=r.userStore,V=void 0===K?new u.WebStorageStateStore({store:c.Global.sessionStorage}):K;l(this,e);var q=f(this,t.call(this,arguments[0]));return q._popup_redirect_uri=n,q._popup_post_logout_redirect_uri=i,q._popupWindowFeatures=g,q._popupWindowTarget=d,q._silent_redirect_uri=p,q._silentRequestTimeout=v,q._automaticSilentRenew=m,q._validateSubOnSilentRenew=S,q._includeIdTokenInSilentRenew=b,q._accessTokenExpiringNotificationTime=N,q._monitorSession=E,q._monitorAnonymousSession=A,q._checkSessionInterval=P,q._stopCheckSessionOnError=T,R?q._query_status_response_type=R:arguments[0]&&arguments[0].response_type?q._query_status_response_type=h.SigninRequest.isOidc(arguments[0].response_type)?"id_token":"code":q._query_status_response_type="id_token",q._revokeAccessTokenOnSignout=D,q._redirectNavigator=O,q._popupNavigator=M,q._iframeNavigator=H,q._userStore=V,q}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),n(e,[{key:"popup_redirect_uri",get:function(){return this._popup_redirect_uri}},{key:"popup_post_logout_redirect_uri",get:function(){return this._popup_post_logout_redirect_uri}},{key:"popupWindowFeatures",get:function(){return this._popupWindowFeatures}},{key:"popupWindowTarget",get:function(){return this._popupWindowTarget}},{key:"silent_redirect_uri",get:function(){return this._silent_redirect_uri}},{key:"silentRequestTimeout",get:function(){return this._silentRequestTimeout}},{key:"automaticSilentRenew",get:function(){return this._automaticSilentRenew}},{key:"validateSubOnSilentRenew",get:function(){return this._validateSubOnSilentRenew}},{key:"includeIdTokenInSilentRenew",get:function(){return this._includeIdTokenInSilentRenew}},{key:"accessTokenExpiringNotificationTime",get:function(){return this._accessTokenExpiringNotificationTime}},{key:"monitorSession",get:function(){return this._monitorSession}},{key:"monitorAnonymousSession",get:function(){return this._monitorAnonymousSession}},{key:"checkSessionInterval",get:function(){return this._checkSessionInterval}},{key:"stopCheckSessionOnError",get:function(){return this._stopCheckSessionOnError}},{key:"query_status_response_type",get:function(){return this._query_status_response_type}},{key:"revokeAccessTokenOnSignout",get:function(){return this._revokeAccessTokenOnSignout}},{key:"redirectNavigator",get:function(){return this._redirectNavigator}},{key:"popupNavigator",get:function(){return this._popupNavigator}},{key:"iframeNavigator",get:function(){return this._iframeNavigator}},{key:"userStore",get:function(){return this._userStore}}]),e}(i.OidcClientSettings)},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.RedirectNavigator=void 0;var n=function(){function t(t,e){for(var r=0;r1&&void 0!==arguments[1])||arguments[1];n.Log.debug("UserManagerEvents.load"),t.prototype.load.call(this,e),r&&this._userLoaded.raise(e)},e.prototype.unload=function(){n.Log.debug("UserManagerEvents.unload"),t.prototype.unload.call(this),this._userUnloaded.raise()},e.prototype.addUserLoaded=function(t){this._userLoaded.addHandler(t)},e.prototype.removeUserLoaded=function(t){this._userLoaded.removeHandler(t)},e.prototype.addUserUnloaded=function(t){this._userUnloaded.addHandler(t)},e.prototype.removeUserUnloaded=function(t){this._userUnloaded.removeHandler(t)},e.prototype.addSilentRenewError=function(t){this._silentRenewError.addHandler(t)},e.prototype.removeSilentRenewError=function(t){this._silentRenewError.removeHandler(t)},e.prototype._raiseSilentRenewError=function(t){n.Log.debug("UserManagerEvents._raiseSilentRenewError",t.message),this._silentRenewError.raise(t)},e.prototype.addUserSignedIn=function(t){this._userSignedIn.addHandler(t)},e.prototype.removeUserSignedIn=function(t){this._userSignedIn.removeHandler(t)},e.prototype._raiseUserSignedIn=function(){n.Log.debug("UserManagerEvents._raiseUserSignedIn"),this._userSignedIn.raise()},e.prototype.addUserSignedOut=function(t){this._userSignedOut.addHandler(t)},e.prototype.removeUserSignedOut=function(t){this._userSignedOut.removeHandler(t)},e.prototype._raiseUserSignedOut=function(){n.Log.debug("UserManagerEvents._raiseUserSignedOut"),this._userSignedOut.raise()},e.prototype.addUserSessionChanged=function(t){this._userSessionChanged.addHandler(t)},e.prototype.removeUserSessionChanged=function(t){this._userSessionChanged.removeHandler(t)},e.prototype._raiseUserSessionChanged=function(){n.Log.debug("UserManagerEvents._raiseUserSessionChanged"),this._userSessionChanged.raise()},e}(i.AccessTokenEvents)},function(t,e,r){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.Timer=void 0;var n=function(){function t(t,e){for(var r=0;r1&&void 0!==arguments[1]?arguments[1]:o.Global.timer,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0;a(this,e);var s=u(this,t.call(this,r));return s._timer=n,s._nowFunc=i||function(){return Date.now()/1e3},s}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)}(e,t),e.prototype.init=function(t){t<=0&&(t=1),t=parseInt(t);var e=this.now+t;if(this.expiration===e&&this._timerHandle)i.Log.debug("Timer.init timer "+this._name+" skipping initialization since already initialized for expiration:",this.expiration);else{this.cancel(),i.Log.debug("Timer.init timer "+this._name+" for duration:",t),this._expiration=e;var r=5;t{"use strict";e.kO=e.Pd=void 0;const n=r(671);var i,o;!function(t){t.Success="success",t.RequiresRedirect="requiresRedirect"}(i=e.Pd||(e.Pd={})),function(t){t.Redirect="redirect",t.Success="success",t.Failure="failure",t.OperationCompleted="operationCompleted"}(o=e.kO||(e.kO={}));class s{constructor(t){this._userManager=t}async trySilentSignIn(){return this._intialSilentSignIn||(this._intialSilentSignIn=(async()=>{try{await this._userManager.signinSilent()}catch(t){}})()),this._intialSilentSignIn}async getUser(){window.parent!==window||window.opener||window.frameElement||!this._userManager.settings.redirect_uri||location.href.startsWith(this._userManager.settings.redirect_uri)||await a.instance.trySilentSignIn();const t=await this._userManager.getUser();return t&&t.profile}async getAccessToken(t){const e=await this._userManager.getUser();if(function(t){return!(!t||!t.access_token||t.expired||!t.scopes)}(e)&&function(t,e){const r=new Set(e);if(t&&t.scopes)for(const e of t.scopes)if(!r.has(e))return!1;return!0}(t,e.scopes))return{status:i.Success,token:{grantedScopes:e.scopes,expires:r(e.expires_in),value:e.access_token}};try{const e=t&&t.scopes?{scope:t.scopes.join(" ")}:void 0,n=await this._userManager.signinSilent(e);return{status:i.Success,token:{grantedScopes:n.scopes,expires:r(n.expires_in),value:n.access_token}}}catch(t){return{status:i.RequiresRedirect}}function r(t){const e=new Date;return e.setTime(e.getTime()+1e3*t),e}}async signIn(t){try{return await this._userManager.clearStaleState(),await this._userManager.signinSilent(this.createArguments()),this.success(t)}catch(e){try{return await this._userManager.clearStaleState(),await this._userManager.signinRedirect(this.createArguments(t)),this.redirect()}catch(t){return this.error(this.getExceptionMessage(t))}}}async completeSignIn(t){const e=await this.loginRequired(t),r=await this.stateExists(t);try{const e=await this._userManager.signinCallback(t);return window.self!==window.top?this.operationCompleted():this.success(e&&e.state)}catch(t){return e||window.self!==window.top||!r?this.operationCompleted():this.error("There was an error signing in.")}}async signOut(t){try{return await this._userManager.metadataService.getEndSessionEndpoint()?(await this._userManager.signoutRedirect(this.createArguments(t)),this.redirect()):(await this._userManager.removeUser(),this.success(t))}catch(t){return this.error(this.getExceptionMessage(t))}}async completeSignOut(t){try{if(await this.stateExists(t)){const e=await this._userManager.signoutCallback(t);return this.success(e&&e.state)}return this.operationCompleted()}catch(t){return this.error(this.getExceptionMessage(t))}}getExceptionMessage(t){return function(t){return t&&t.error_description}(t)?t.error_description:function(t){return t&&t.message}(t)?t.message:t.toString()}async stateExists(t){const e=new URLSearchParams(new URL(t).search).get("state");return e&&this._userManager.settings.stateStore?await this._userManager.settings.stateStore.get(e):void 0}async loginRequired(t){const e=new URLSearchParams(new URL(t).search).get("error");return!(!e||!this._userManager.settings.stateStore)&&"login_required"===await this._userManager.settings.stateStore.get(e)}createArguments(t){return{useReplaceToNavigate:!0,data:t}}error(t){return{status:o.Failure,errorMessage:t}}success(t){return{status:o.Success,state:t}}redirect(){return{status:o.Redirect}}operationCompleted(){return{status:o.OperationCompleted}}}class a{static init(t){return a._initialized||(a._initialized=a.initializeCore(t)),a._initialized}static handleCallback(){return a.initializeCore()}static async initializeCore(t){const e=t||a.resolveCachedSettings();if(!t&&e){const t=a.createUserManagerCore(e);window.parent!==window&&!window.opener&&window.frameElement&&t.settings.redirect_uri&&location.href.startsWith(t.settings.redirect_uri)&&(a.instance=new s(t),a._initialized=(async()=>{await a.instance.completeSignIn(location.href)})())}else if(t){const e=await a.createUserManager(t);a.instance=new s(e)}}static resolveCachedSettings(){const t=window.sessionStorage.getItem(`${a._infrastructureKey}.CachedAuthSettings`);return t?JSON.parse(t):void 0}static getUser(){return a.instance.getUser()}static getAccessToken(t){return a.instance.getAccessToken(t)}static signIn(t){return a.instance.signIn(t)}static async completeSignIn(t){let e=this._pendingOperations[t];return e||(e=a.instance.completeSignIn(t),await e,delete this._pendingOperations[t]),e}static signOut(t){return a.instance.signOut(t)}static async completeSignOut(t){let e=this._pendingOperations[t];return e||(e=a.instance.completeSignOut(t),await e,delete this._pendingOperations[t]),e}static async createUserManager(t){let e;if(function(t){return t.hasOwnProperty("configurationEndpoint")}(t)){const r=await fetch(t.configurationEndpoint);if(!r.ok)throw new Error(`Could not load settings from '${t.configurationEndpoint}'`);e=await r.json()}else t.scope||(t.scope=t.defaultScopes.join(" ")),null===t.response_type&&delete t.response_type,e=t;return window.sessionStorage.setItem(`${a._infrastructureKey}.CachedAuthSettings`,JSON.stringify(e)),a.createUserManagerCore(e)}static createUserManagerCore(t){const e=new n.UserManager(t);return e.events.addUserSignedOut((async()=>{e.removeUser()})),e}}a._infrastructureKey="Microsoft.AspNetCore.Components.WebAssembly.Authentication",a._pendingOperations={},a.handleCallback(),window.AuthenticationService=a}},e={},function r(n){var i=e[n];if(void 0!==i)return i.exports;var o=e[n]={exports:{}};return t[n].call(o.exports,o,o.exports,r),o.exports}(981); \ No newline at end of file diff --git a/_content/Microsoft.Authentication.WebAssembly.Msal/AuthenticationService.js b/_content/Microsoft.Authentication.WebAssembly.Msal/AuthenticationService.js deleted file mode 100755 index 4ca44c8..0000000 --- a/_content/Microsoft.Authentication.WebAssembly.Msal/AuthenticationService.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see AuthenticationService.js.LICENSE.txt */ -(()=>{"use strict";var e={87:(e,t,r)=>{r.r(t),r.d(t,{AccountEntity:()=>Me,ApiId:()=>Q,AuthError:()=>ce,AuthErrorMessage:()=>se,AuthenticationScheme:()=>H,BrowserAuthError:()=>ge,BrowserAuthErrorMessage:()=>pe,BrowserCacheLocation:()=>z,BrowserConfigurationAuthError:()=>Tt,BrowserConfigurationAuthErrorMessage:()=>Ct,BrowserUtils:()=>Ot,EventMessageUtils:()=>xt,EventType:()=>ut,InteractionRequiredAuthError:()=>Ne,InteractionStatus:()=>J,InteractionType:()=>V,LogLevel:()=>te,Logger:()=>Se,NavigationClient:()=>Nt,ProtocolMode:()=>Ue,PublicClientApplication:()=>Ft,StringUtils:()=>de,UrlString:()=>Ae,WrapperSKU:()=>Z,stubbedPublicClientApplication:()=>Kt});var n=function(e,t){return(n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])})(e,t)};function o(e,t){function r(){this.constructor=e}n(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var i=function(){return(i=Object.assign||function(e){for(var t,r=1,n=arguments.length;r0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]0)&&!(n=i.next()).done;)a.push(n.value)}catch(e){o={error:e}}finally{try{n&&!n.done&&(r=i.return)&&r.call(i)}finally{if(o)throw o.error}}return a}function u(){for(var e=[],t=0;t0&&o[o.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!o||i[1]>o[0]&&i[1]>>6),i[a++]=128+(63&t)):t<65536?(i[a++]=224+(t>>>12),i[a++]=128+(t>>>6&63),i[a++]=128+(63&t)):t<2097152?(i[a++]=240+(t>>>18),i[a++]=128+(t>>>12&63),i[a++]=128+(t>>>6&63),i[a++]=128+(63&t)):t<67108864?(i[a++]=248+(t>>>24),i[a++]=128+(t>>>18&63),i[a++]=128+(t>>>12&63),i[a++]=128+(t>>>6&63),i[a++]=128+(63&t)):(i[a++]=252+(t>>>30),i[a++]=128+(t>>>24&63),i[a++]=128+(t>>>18&63),i[a++]=128+(t>>>12&63),i[a++]=128+(t>>>6&63),i[a++]=128+(63&t));return i},e.stringToArrayBuffer=function(e){for(var t=new ArrayBuffer(e.length),r=new Uint8Array(t),n=0;n251&&r<254&&o+5247&&r<252&&o+4239&&r<248&&o+3223&&r<240&&o+2191&&r<224&&o+1>>n&24),2!==n&&e.length-a!=1||(r+=String.fromCharCode(this.uint6ToB64(i>>>18&63),this.uint6ToB64(i>>>12&63),this.uint6ToB64(i>>>6&63),this.uint6ToB64(63&i)),i=0);return 0===t?r:r.substring(0,r.length-t)+(1===t?"=":"==")},e.prototype.uint6ToB64=function(e){return e<26?e+65:e<52?e+71:e<62?e-4:62===e?43:63===e?47:65},e}(),ae=function(){function e(){}return e.prototype.decode=function(e){var t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw new Error("Invalid base64 string")}var r=this.base64DecToArr(t);return oe.utf8ArrToString(r)},e.prototype.base64DecToArr=function(e,t){for(var r=e.replace(/[^A-Za-z0-9\+\/]/g,""),n=r.length,o=t?Math.ceil((3*n+1>>>2)/t)*t:3*n+1>>>2,i=new Uint8Array(o),a=void 0,s=void 0,c=0,u=0,l=0;l>>(16>>>a&24)&255;c=0}return i},e.prototype.b64ToUint6=function(e){return e>64&&e<91?e-65:e>96&&e<123?e-71:e>47&&e<58?e+4:43===e?62:47===e?63:0},e}(),se={unexpectedError:{code:"unexpected_error",desc:"Unexpected error in authentication."}},ce=function(e){function t(r,n,o){var i=this,a=n?r+": "+n:r;return i=e.call(this,a)||this,Object.setPrototypeOf(i,t.prototype),i.errorCode=r||T.EMPTY_STRING,i.errorMessage=n||"",i.subError=o||"",i.name="AuthError",i}return h(t,e),t.createUnexpectedError=function(e){return new t(se.unexpectedError.code,se.unexpectedError.desc+": "+e)},t}(Error),ue="no_tokens_found",le="token_refresh_required",he=function(e){function t(r,n){var o=e.call(this,r,n)||this;return o.name="ClientAuthError",Object.setPrototypeOf(o,t.prototype),o}return h(t,e),t.createClientInfoDecodingError=function(e){return new t("client_info_decoding_error","The client info could not be parsed/decoded correctly. Please review the trace to determine the root cause. Failed with error: "+e)},t.createClientInfoEmptyError=function(){return new t("client_info_empty_error","The client info was empty. Please review the trace to determine the root cause.")},t.createTokenParsingError=function(e){return new t("token_parsing_error","Token cannot be parsed. Please review stack trace to determine root cause. Failed with error: "+e)},t.createTokenNullOrEmptyError=function(e){return new t("null_or_empty_token","The token is null or empty. Please review the trace to determine the root cause. Raw Token Value: "+e)},t.createEndpointDiscoveryIncompleteError=function(e){return new t("endpoints_resolution_error","Error: could not resolve endpoints. Please check network and try again. Detail: "+e)},t.createNetworkError=function(e,r){return new t("network_error","Network request failed. Please check network trace to determine root cause. | Fetch client threw: "+r+" | Attempted to reach: "+e.split("?")[0])},t.createUnableToGetOpenidConfigError=function(e){return new t("openid_config_error","Could not retrieve endpoints. Check your authority and verify the .well-known/openid-configuration endpoint returns the required endpoints. Attempted to retrieve endpoints from: "+e)},t.createHashNotDeserializedError=function(e){return new t("hash_not_deserialized","The hash parameters could not be deserialized. Please review the trace to determine the root cause. Given Object: "+e)},t.createInvalidStateError=function(e,r){return new t("invalid_state","State was not the expected format. Please check the logs to determine whether the request was sent using ProtocolUtils.setRequestState(). Invalid State: "+e+", Root Err: "+r)},t.createStateMismatchError=function(){return new t("state_mismatch","State mismatch error. Please check your network. Continued requests may cause cache overflow.")},t.createStateNotFoundError=function(e){return new t("state_not_found","State not found: "+e)},t.createNonceMismatchError=function(){return new t("nonce_mismatch","Nonce mismatch error. This may be caused by a race condition in concurrent requests.")},t.createNonceNotFoundError=function(e){return new t("nonce_not_found","nonce not found: "+e)},t.createNoTokensFoundError=function(){return new t(ue,"No tokens were found for the given scopes, and no authorization code was passed to acquireToken. You must retrieve an authorization code before making a call to acquireToken().")},t.createMultipleMatchingTokensInCacheError=function(){return new t("multiple_matching_tokens","The cache contains multiple tokens satisfying the requirements. Call AcquireToken again providing more requirements such as authority or account..")},t.createMultipleMatchingAccountsInCacheError=function(){return new t("multiple_matching_accounts","The cache contains multiple accounts satisfying the given parameters. Please pass more info to obtain the correct account")},t.createMultipleMatchingAppMetadataInCacheError=function(){return new t("multiple_matching_appMetadata","The cache contains multiple appMetadata satisfying the given parameters. Please pass more info to obtain the correct appMetadata")},t.createTokenRequestCannotBeMadeError=function(){return new t("request_cannot_be_made","Token request cannot be made without authorization code or refresh token.")},t.createAppendEmptyScopeToSetError=function(e){return new t("cannot_append_empty_scope","Cannot append null or empty scope to ScopeSet. Please check the stack trace for more info. Given Scope: "+e)},t.createRemoveEmptyScopeFromSetError=function(e){return new t("cannot_remove_empty_scope","Cannot remove null or empty scope from ScopeSet. Please check the stack trace for more info. Given Scope: "+e)},t.createAppendScopeSetError=function(e){return new t("cannot_append_scopeset","Cannot append ScopeSet due to error. Detail Error: "+e)},t.createEmptyInputScopeSetError=function(){return new t("empty_input_scopeset","Empty input ScopeSet cannot be processed.")},t.createDeviceCodeCancelledError=function(){return new t("device_code_polling_cancelled","Caller has cancelled token endpoint polling during device code flow by setting DeviceCodeRequest.cancel = true.")},t.createDeviceCodeExpiredError=function(){return new t("device_code_expired","Device code is expired.")},t.createDeviceCodeUnknownError=function(){return new t("device_code_unknown_error","Device code stopped polling for unknown reasons.")},t.createNoAccountInSilentRequestError=function(){return new t("no_account_in_silent_request","Please pass an account object, silent flow is not supported without account information")},t.createNullOrUndefinedCacheRecord=function(){return new t("invalid_cache_record","Cache record object was null or undefined.")},t.createInvalidCacheEnvironmentError=function(){return new t("invalid_cache_environment","Invalid environment when attempting to create cache entry")},t.createNoAccountFoundError=function(){return new t("no_account_found","No account found in cache for given key.")},t.createCachePluginError=function(){return new t("no cache plugin set on CacheManager","ICachePlugin needs to be set before using readFromStorage or writeFromStorage")},t.createNoCryptoObjectError=function(e){return new t("no_crypto_object","No crypto object detected. This is required for the following operation: "+e)},t.createInvalidCacheTypeError=function(){return new t("invalid_cache_type","Invalid cache type")},t.createUnexpectedAccountTypeError=function(){return new t("unexpected_account_type","Unexpected account type.")},t.createUnexpectedCredentialTypeError=function(){return new t("unexpected_credential_type","Unexpected credential type.")},t.createInvalidAssertionError=function(){return new t("invalid_assertion","Client assertion must meet requirements described in https://tools.ietf.org/html/rfc7515")},t.createInvalidCredentialError=function(){return new t("invalid_client_credential","Client credential (secret, certificate, or assertion) must not be empty when creating a confidential client. An application should at most have one credential")},t.createRefreshRequiredError=function(){return new t(le,"Cannot return token from cache because it must be refreshed. This may be due to one of the following reasons: forceRefresh parameter is set to true, claims have been requested, there is no cached access token or it is expired.")},t.createUserTimeoutReachedError=function(){return new t("user_timeout_reached","User defined timeout for device code polling reached")},t.createTokenClaimsRequiredError=function(){return new t("token_claims_cnf_required_for_signedjwt","Cannot generate a POP jwt if the token_claims are not populated")},t.createNoAuthCodeInServerResponseError=function(){return new t("authorization_code_missing_from_server_response","Server response does not contain an authorization code to proceed")},t}(ce),de=function(){function e(){}return e.decodeAuthToken=function(t){if(e.isEmpty(t))throw he.createTokenNullOrEmptyError(t);var r=/^([^\.\s]*)\.([^\.\s]+)\.([^\.\s]*)$/.exec(t);if(!r||r.length<4)throw he.createTokenParsingError("Given token is malformed: "+JSON.stringify(t));return{header:r[1],JWSPayload:r[2],JWSSig:r[3]}},e.isEmpty=function(e){return void 0===e||!e||0===e.length},e.isEmptyObj=function(t){if(t&&!e.isEmpty(t))try{var r=JSON.parse(t);return 0===Object.keys(r).length}catch(e){}return!0},e.startsWith=function(e,t){return 0===e.indexOf(t)},e.endsWith=function(e,t){return e.length>=t.length&&e.lastIndexOf(t)===e.length-t.length},e.queryStringToObject=function(e){var t,r=/\+/g,n=/([^&=]+)=([^&]*)/g,o=function(e){return decodeURIComponent(e.replace(r," "))},i={};for(t=n.exec(e);t;)i[o(t[1])]=o(t[2]),t=n.exec(e);return i},e.trimArrayEntries=function(e){return e.map((function(e){return e.trim()}))},e.removeEmptyStringsFromArray=function(t){return t.filter((function(t){return!e.isEmpty(t)}))},e.jsonParseHelper=function(e){try{return JSON.parse(e)}catch(e){return null}},e.matchPattern=function(e,t){return new RegExp(e.replace(/\*/g,"[^ ]*").replace(/\?/g,"\\?")).test(t)},e}(),pe={pkceNotGenerated:{code:"pkce_not_created",desc:"The PKCE code challenge and verifier could not be generated."},cryptoDoesNotExist:{code:"crypto_nonexistent",desc:"The crypto object or function is not available."},httpMethodNotImplementedError:{code:"http_method_not_implemented",desc:"The HTTP method given has not been implemented in this library."},emptyNavigateUriError:{code:"empty_navigate_uri",desc:"Navigation URI is empty. Please check stack trace for more info."},hashEmptyError:{code:"hash_empty_error",desc:"Hash value cannot be processed because it is empty. Please verify that your redirectUri is not clearing the hash."},hashDoesNotContainStateError:{code:"no_state_in_hash",desc:"Hash does not contain state. Please verify that the request originated from msal."},hashDoesNotContainKnownPropertiesError:{code:"hash_does_not_contain_known_properties",desc:"Hash does not contain known properites. Please verify that your redirectUri is not changing the hash."},unableToParseStateError:{code:"unable_to_parse_state",desc:"Unable to parse state. Please verify that the request originated from msal."},stateInteractionTypeMismatchError:{code:"state_interaction_type_mismatch",desc:"Hash contains state but the interaction type does not match the caller."},interactionInProgress:{code:"interaction_in_progress",desc:"Interaction is currently in progress. Please ensure that this interaction has been completed before calling an interactive API. For more visit: aka.ms/msaljs/browser-errors."},popUpWindowError:{code:"popup_window_error",desc:"Error opening popup window. This can happen if you are using IE or if popups are blocked in the browser."},emptyWindowError:{code:"empty_window_error",desc:"window.open returned null or undefined window object."},userCancelledError:{code:"user_cancelled",desc:"User cancelled the flow."},monitorPopupTimeoutError:{code:"monitor_window_timeout",desc:"Token acquisition in popup failed due to timeout. For more visit: aka.ms/msaljs/browser-errors."},monitorIframeTimeoutError:{code:"monitor_window_timeout",desc:"Token acquisition in iframe failed due to timeout. For more visit: aka.ms/msaljs/browser-errors."},redirectInIframeError:{code:"redirect_in_iframe",desc:"Code flow is not supported inside an iframe. Please ensure you are using MSAL.js in a top frame of the window if using the redirect APIs, or use the popup APIs."},blockTokenRequestsInHiddenIframeError:{code:"block_iframe_reload",desc:"Request was blocked inside an iframe because MSAL detected an authentication response. For more visit: aka.ms/msaljs/browser-errors"},blockAcquireTokenInPopupsError:{code:"block_nested_popups",desc:"Request was blocked inside a popup because MSAL detected it was running in a popup."},iframeClosedPrematurelyError:{code:"iframe_closed_prematurely",desc:"The iframe being monitored was closed prematurely."},silentSSOInsufficientInfoError:{code:"silent_sso_error",desc:"Silent SSO could not be completed - insufficient information was provided. Please provide either a loginHint or sid."},noAccountError:{code:"no_account_error",desc:"No account object provided to acquireTokenSilent and no active account has been set. Please call setActiveAccount or provide an account on the request."},silentPromptValueError:{code:"silent_prompt_value_error",desc:"The value given for the prompt value is not valid for silent requests - must be set to 'none'."},noTokenRequestCacheError:{code:"no_token_request_cache_error",desc:"No token request in found in cache."},unableToParseTokenRequestCacheError:{code:"unable_to_parse_token_request_cache_error",desc:"The cached token request could not be parsed."},noCachedAuthorityError:{code:"no_cached_authority_error",desc:"No cached authority found."},authRequestNotSet:{code:"auth_request_not_set_error",desc:"Auth Request not set. Please ensure initiateAuthRequest was called from the InteractionHandler"},invalidCacheType:{code:"invalid_cache_type",desc:"Invalid cache type"},notInBrowserEnvironment:{code:"non_browser_environment",desc:"Login and token requests are not supported in non-browser environments."},databaseNotOpen:{code:"database_not_open",desc:"Database is not open!"},noNetworkConnectivity:{code:"no_network_connectivity",desc:"No network connectivity. Check your internet connection."},postRequestFailed:{code:"post_request_failed",desc:"Network request failed: If the browser threw a CORS error, check that the redirectUri is registered in the Azure App Portal as type 'SPA'"},getRequestFailed:{code:"get_request_failed",desc:"Network request failed. Please check the network trace to determine root cause."},failedToParseNetworkResponse:{code:"failed_to_parse_response",desc:"Failed to parse network response. Check network trace."}},ge=function(e){function t(r,n){var o=e.call(this,r,n)||this;return Object.setPrototypeOf(o,t.prototype),o.name="BrowserAuthError",o}return o(t,e),t.createPkceNotGeneratedError=function(e){return new t(pe.pkceNotGenerated.code,pe.pkceNotGenerated.desc+" Detail:"+e)},t.createCryptoNotAvailableError=function(e){return new t(pe.cryptoDoesNotExist.code,pe.cryptoDoesNotExist.desc+" Detail:"+e)},t.createHttpMethodNotImplementedError=function(e){return new t(pe.httpMethodNotImplementedError.code,pe.httpMethodNotImplementedError.desc+" Given Method: "+e)},t.createEmptyNavigationUriError=function(){return new t(pe.emptyNavigateUriError.code,pe.emptyNavigateUriError.desc)},t.createEmptyHashError=function(e){return new t(pe.hashEmptyError.code,pe.hashEmptyError.desc+" Given Url: "+e)},t.createHashDoesNotContainStateError=function(){return new t(pe.hashDoesNotContainStateError.code,pe.hashDoesNotContainStateError.desc)},t.createHashDoesNotContainKnownPropertiesError=function(){return new t(pe.hashDoesNotContainKnownPropertiesError.code,pe.hashDoesNotContainKnownPropertiesError.desc)},t.createUnableToParseStateError=function(){return new t(pe.unableToParseStateError.code,pe.unableToParseStateError.desc)},t.createStateInteractionTypeMismatchError=function(){return new t(pe.stateInteractionTypeMismatchError.code,pe.stateInteractionTypeMismatchError.desc)},t.createInteractionInProgressError=function(){return new t(pe.interactionInProgress.code,pe.interactionInProgress.desc)},t.createPopupWindowError=function(e){var r=pe.popUpWindowError.desc;return r=de.isEmpty(e)?r:r+" Details: "+e,new t(pe.popUpWindowError.code,r)},t.createEmptyWindowCreatedError=function(){return new t(pe.emptyWindowError.code,pe.emptyWindowError.desc)},t.createUserCancelledError=function(){return new t(pe.userCancelledError.code,pe.userCancelledError.desc)},t.createMonitorPopupTimeoutError=function(){return new t(pe.monitorPopupTimeoutError.code,pe.monitorPopupTimeoutError.desc)},t.createMonitorIframeTimeoutError=function(){return new t(pe.monitorIframeTimeoutError.code,pe.monitorIframeTimeoutError.desc)},t.createRedirectInIframeError=function(e){return new t(pe.redirectInIframeError.code,pe.redirectInIframeError.desc+" (window.parent !== window) => "+e)},t.createBlockReloadInHiddenIframeError=function(){return new t(pe.blockTokenRequestsInHiddenIframeError.code,pe.blockTokenRequestsInHiddenIframeError.desc)},t.createBlockAcquireTokenInPopupsError=function(){return new t(pe.blockAcquireTokenInPopupsError.code,pe.blockAcquireTokenInPopupsError.desc)},t.createIframeClosedPrematurelyError=function(){return new t(pe.iframeClosedPrematurelyError.code,pe.iframeClosedPrematurelyError.desc)},t.createSilentSSOInsufficientInfoError=function(){return new t(pe.silentSSOInsufficientInfoError.code,pe.silentSSOInsufficientInfoError.desc)},t.createNoAccountError=function(){return new t(pe.noAccountError.code,pe.noAccountError.desc)},t.createSilentPromptValueError=function(e){return new t(pe.silentPromptValueError.code,pe.silentPromptValueError.desc+" Given value: "+e)},t.createUnableToParseTokenRequestCacheError=function(){return new t(pe.unableToParseTokenRequestCacheError.code,pe.unableToParseTokenRequestCacheError.desc)},t.createNoTokenRequestCacheError=function(){return new t(pe.noTokenRequestCacheError.code,pe.noTokenRequestCacheError.desc)},t.createAuthRequestNotSetError=function(){return new t(pe.authRequestNotSet.code,pe.authRequestNotSet.desc)},t.createNoCachedAuthorityError=function(){return new t(pe.noCachedAuthorityError.code,pe.noCachedAuthorityError.desc)},t.createInvalidCacheTypeError=function(){return new t(pe.invalidCacheType.code,""+pe.invalidCacheType.desc)},t.createNonBrowserEnvironmentError=function(){return new t(pe.notInBrowserEnvironment.code,pe.notInBrowserEnvironment.desc)},t.createDatabaseNotOpenError=function(){return new t(pe.databaseNotOpen.code,pe.databaseNotOpen.desc)},t.createNoNetworkConnectivityError=function(){return new t(pe.noNetworkConnectivity.code,pe.noNetworkConnectivity.desc)},t.createPostRequestFailedError=function(e,r){return new t(pe.postRequestFailed.code,pe.postRequestFailed.desc+" | Network client threw: "+e+" | Attempted to reach: "+r.split("?")[0])},t.createGetRequestFailedError=function(e,r){return new t(pe.getRequestFailed.code,pe.getRequestFailed.desc+" | Network client threw: "+e+" | Attempted to reach: "+r.split("?")[0])},t.createFailedToParseNetworkResponseError=function(e){return new t(pe.failedToParseNetworkResponse.code,pe.failedToParseNetworkResponse.desc+" | Attempted to reach: "+e.split("?")[0])},t}(ce),fe=function(){function e(e){this.base64Encode=new ie,this.cryptoObj=e}return e.prototype.generateCodes=function(){return a(this,void 0,void 0,(function(){var e,t;return s(this,(function(r){switch(r.label){case 0:return e=this.generateCodeVerifier(),[4,this.generateCodeChallengeFromVerifier(e)];case 1:return t=r.sent(),[2,{verifier:e,challenge:t}]}}))}))},e.prototype.generateCodeVerifier=function(){try{var e=new Uint8Array(32);return this.cryptoObj.getRandomValues(e),this.base64Encode.urlEncodeArr(e)}catch(e){throw ge.createPkceNotGeneratedError(e)}},e.prototype.generateCodeChallengeFromVerifier=function(e){return a(this,void 0,void 0,(function(){var t,r;return s(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,this.cryptoObj.sha256Digest(e)];case 1:return t=n.sent(),[2,this.base64Encode.urlEncodeArr(new Uint8Array(t))];case 2:throw r=n.sent(),ge.createPkceNotGeneratedError(r);case 3:return[2]}}))}))},e}(),ye="SHA-256",me=new Uint8Array([1,0,1]),Ee=function(){function e(){if(!this.hasCryptoAPI())throw ge.createCryptoNotAvailableError("Browser crypto or msCrypto object not available.");this._keygenAlgorithmOptions={name:"RSASSA-PKCS1-v1_5",hash:ye,modulusLength:2048,publicExponent:me}}return e.prototype.sha256Digest=function(e){return a(this,void 0,void 0,(function(){var t;return s(this,(function(r){return t=oe.stringToUtf8Arr(e),[2,this.hasIECrypto()?this.getMSCryptoDigest(ye,t):this.getSubtleCryptoDigest(ye,t)]}))}))},e.prototype.getRandomValues=function(e){var t=window.msCrypto||window.crypto;if(!t.getRandomValues)throw ge.createCryptoNotAvailableError("getRandomValues does not exist.");t.getRandomValues(e)},e.prototype.generateKeyPair=function(e,t){return a(this,void 0,void 0,(function(){return s(this,(function(r){return[2,this.hasIECrypto()?this.msCryptoGenerateKey(e,t):window.crypto.subtle.generateKey(this._keygenAlgorithmOptions,e,t)]}))}))},e.prototype.exportJwk=function(e){return a(this,void 0,void 0,(function(){return s(this,(function(t){return[2,this.hasIECrypto()?this.msCryptoExportJwk(e):window.crypto.subtle.exportKey(ee,e)]}))}))},e.prototype.importJwk=function(t,r,n){return a(this,void 0,void 0,(function(){var o,i;return s(this,(function(a){return o=e.getJwkString(t),i=oe.stringToArrayBuffer(o),[2,this.hasIECrypto()?this.msCryptoImportKey(i,r,n):window.crypto.subtle.importKey(ee,t,this._keygenAlgorithmOptions,r,n)]}))}))},e.prototype.sign=function(e,t){return a(this,void 0,void 0,(function(){return s(this,(function(r){return[2,this.hasIECrypto()?this.msCryptoSign(e,t):window.crypto.subtle.sign(this._keygenAlgorithmOptions,e,t)]}))}))},e.prototype.hasCryptoAPI=function(){return this.hasIECrypto()||this.hasBrowserCrypto()},e.prototype.hasIECrypto=function(){return"msCrypto"in window},e.prototype.hasBrowserCrypto=function(){return"crypto"in window},e.prototype.getSubtleCryptoDigest=function(e,t){return a(this,void 0,void 0,(function(){return s(this,(function(r){return[2,window.crypto.subtle.digest(e,t)]}))}))},e.prototype.getMSCryptoDigest=function(e,t){return a(this,void 0,void 0,(function(){return s(this,(function(r){return[2,new Promise((function(r,n){var o=window.msCrypto.subtle.digest(e,t.buffer);o.addEventListener("complete",(function(e){r(e.target.result)})),o.addEventListener("error",(function(e){n(e)}))}))]}))}))},e.prototype.msCryptoGenerateKey=function(e,t){return a(this,void 0,void 0,(function(){var r=this;return s(this,(function(n){return[2,new Promise((function(n,o){var i=window.msCrypto.subtle.generateKey(r._keygenAlgorithmOptions,e,t);i.addEventListener("complete",(function(e){n(e.target.result)})),i.addEventListener("error",(function(e){o(e)}))}))]}))}))},e.prototype.msCryptoExportJwk=function(e){return a(this,void 0,void 0,(function(){return s(this,(function(t){return[2,new Promise((function(t,r){var n=window.msCrypto.subtle.exportKey(ee,e);n.addEventListener("complete",(function(e){var n=e.target.result,o=oe.utf8ArrToString(new Uint8Array(n)).replace(/\r/g,"").replace(/\n/g,"").replace(/\t/g,"").split(" ").join("").replace("\0","");try{t(JSON.parse(o))}catch(e){r(e)}})),n.addEventListener("error",(function(e){r(e)}))}))]}))}))},e.prototype.msCryptoImportKey=function(e,t,r){return a(this,void 0,void 0,(function(){var n=this;return s(this,(function(o){return[2,new Promise((function(o,i){var a=window.msCrypto.subtle.importKey(ee,e,n._keygenAlgorithmOptions,t,r);a.addEventListener("complete",(function(e){o(e.target.result)})),a.addEventListener("error",(function(e){i(e)}))}))]}))}))},e.prototype.msCryptoSign=function(e,t){return a(this,void 0,void 0,(function(){var r=this;return s(this,(function(n){return[2,new Promise((function(n,o){var i=window.msCrypto.subtle.sign(r._keygenAlgorithmOptions,e,t);i.addEventListener("complete",(function(e){n(e.target.result)})),i.addEventListener("error",(function(e){o(e)}))}))]}))}))},e.getJwkString=function(e){return JSON.stringify(e,Object.keys(e).sort())},e}(),ve=function(){function e(e,t,r){this.dbName=e,this.tableName=t,this.version=r,this.dbOpen=!1}return e.prototype.open=function(){return a(this,void 0,void 0,(function(){var e=this;return s(this,(function(t){return[2,new Promise((function(t,r){var n=window.indexedDB.open(e.dbName,e.version);n.addEventListener("upgradeneeded",(function(t){t.target.result.createObjectStore(e.tableName)})),n.addEventListener("success",(function(r){var n=r;e.db=n.target.result,e.dbOpen=!0,t()})),n.addEventListener("error",(function(e){return r(e)}))}))]}))}))},e.prototype.get=function(e){return a(this,void 0,void 0,(function(){var t=this;return s(this,(function(r){switch(r.label){case 0:return this.dbOpen?[3,2]:[4,this.open()];case 1:r.sent(),r.label=2;case 2:return[2,new Promise((function(r,n){if(!t.db)return n(ge.createDatabaseNotOpenError());var o=t.db.transaction([t.tableName],"readonly").objectStore(t.tableName).get(e);o.addEventListener("success",(function(e){r(e.target.result)})),o.addEventListener("error",(function(e){return n(e)}))}))]}}))}))},e.prototype.put=function(e,t){return a(this,void 0,void 0,(function(){var r=this;return s(this,(function(n){switch(n.label){case 0:return this.dbOpen?[3,2]:[4,this.open()];case 1:n.sent(),n.label=2;case 2:return[2,new Promise((function(n,o){if(!r.db)return o(ge.createDatabaseNotOpenError());var i=r.db.transaction([r.tableName],"readwrite").objectStore(r.tableName).put(t,e);i.addEventListener("success",(function(e){n(e.target.result)})),i.addEventListener("error",(function(e){return o(e)}))}))]}}))}))},e}(),Ce=function(){function e(){this.browserCrypto=new Ee,this.b64Encode=new ie,this.b64Decode=new ae,this.guidGenerator=new ne(this.browserCrypto),this.pkceGenerator=new fe(this.browserCrypto),this.cache=new ve(e.DB_NAME,e.TABLE_NAME,e.DB_VERSION)}return e.prototype.createNewGuid=function(){return this.guidGenerator.generateGuid()},e.prototype.base64Encode=function(e){return this.b64Encode.encode(e)},e.prototype.base64Decode=function(e){return this.b64Decode.decode(e)},e.prototype.generatePkceCodes=function(){return a(this,void 0,void 0,(function(){return s(this,(function(e){return[2,this.pkceGenerator.generateCodes()]}))}))},e.prototype.getPublicKeyThumbprint=function(t){return a(this,void 0,void 0,(function(){var r,n,o,i,a,c,u,l;return s(this,(function(s){switch(s.label){case 0:return[4,this.browserCrypto.generateKeyPair(e.EXTRACTABLE,e.POP_KEY_USAGES)];case 1:return r=s.sent(),[4,this.browserCrypto.exportJwk(r.publicKey)];case 2:return n=s.sent(),o={e:n.e,kty:n.kty,n:n.n},i=Ee.getJwkString(o),[4,this.browserCrypto.sha256Digest(i)];case 3:return a=s.sent(),c=this.b64Encode.urlEncodeArr(new Uint8Array(a)),[4,this.browserCrypto.exportJwk(r.privateKey)];case 4:return u=s.sent(),[4,this.browserCrypto.importJwk(u,!1,["sign"])];case 5:return l=s.sent(),this.cache.put(c,{privateKey:l,publicKey:r.publicKey,requestMethod:t.resourceRequestMethod,requestUri:t.resourceRequestUri}),[2,c]}}))}))},e.prototype.signJwt=function(e,t){return a(this,void 0,void 0,(function(){var r,n,o,i,a,c,u,l,h,d;return s(this,(function(s){switch(s.label){case 0:return[4,this.cache.get(t)];case 1:return r=s.sent(),[4,this.browserCrypto.exportJwk(r.publicKey)];case 2:return n=s.sent(),o=Ee.getJwkString(n),i={alg:n.alg,type:ee},a=this.b64Encode.urlEncode(JSON.stringify(i)),e.cnf={jwk:JSON.parse(o)},c=this.b64Encode.urlEncode(JSON.stringify(e)),u=a+"."+c,l=oe.stringToArrayBuffer(u),[4,this.browserCrypto.sign(r.privateKey,l)];case 3:return h=s.sent(),d=this.b64Encode.urlEncodeArr(new Uint8Array(h)),[2,u+"."+d]}}))}))},e.POP_KEY_USAGES=["sign","verify"],e.EXTRACTABLE=!0,e.DB_VERSION=1,e.DB_NAME="msal.db",e.TABLE_NAME=e.DB_NAME+".keys",e}();!function(e){e[e.Error=0]="Error",e[e.Warning=1]="Warning",e[e.Info=2]="Info",e[e.Verbose=3]="Verbose",e[e.Trace=4]="Trace"}(te||(te={}));var Te,Se=function(){function e(e,t,r){this.level=te.Info,this.localCallback=e.loggerCallback||function(){},this.piiLoggingEnabled=e.piiLoggingEnabled||!1,this.level=e.logLevel||te.Info,this.correlationId=e.correlationId||"",this.packageName=t||T.EMPTY_STRING,this.packageVersion=r||T.EMPTY_STRING}return e.prototype.clone=function(t,r,n){return new e({loggerCallback:this.localCallback,piiLoggingEnabled:this.piiLoggingEnabled,logLevel:this.level,correlationId:n||this.correlationId},t,r)},e.prototype.logMessage=function(e,t){if(!(t.logLevel>this.level||!this.piiLoggingEnabled&&t.containsPii)){var r=(new Date).toUTCString(),n=(de.isEmpty(t.correlationId)?de.isEmpty(this.correlationId)?"["+r+"]":"["+r+"] : ["+this.correlationId+"]":"["+r+"] : ["+t.correlationId+"]")+" : "+this.packageName+"@"+this.packageVersion+" : "+te[t.logLevel]+" - "+e;this.executeCallback(t.logLevel,n,t.containsPii||!1)}},e.prototype.executeCallback=function(e,t,r){this.localCallback&&this.localCallback(e,t,r)},e.prototype.error=function(e,t){this.logMessage(e,{logLevel:te.Error,containsPii:!1,correlationId:t||""})},e.prototype.errorPii=function(e,t){this.logMessage(e,{logLevel:te.Error,containsPii:!0,correlationId:t||""})},e.prototype.warning=function(e,t){this.logMessage(e,{logLevel:te.Warning,containsPii:!1,correlationId:t||""})},e.prototype.warningPii=function(e,t){this.logMessage(e,{logLevel:te.Warning,containsPii:!0,correlationId:t||""})},e.prototype.info=function(e,t){this.logMessage(e,{logLevel:te.Info,containsPii:!1,correlationId:t||""})},e.prototype.infoPii=function(e,t){this.logMessage(e,{logLevel:te.Info,containsPii:!0,correlationId:t||""})},e.prototype.verbose=function(e,t){this.logMessage(e,{logLevel:te.Verbose,containsPii:!1,correlationId:t||""})},e.prototype.verbosePii=function(e,t){this.logMessage(e,{logLevel:te.Verbose,containsPii:!0,correlationId:t||""})},e.prototype.trace=function(e,t){this.logMessage(e,{logLevel:te.Trace,containsPii:!1,correlationId:t||""})},e.prototype.tracePii=function(e,t){this.logMessage(e,{logLevel:te.Trace,containsPii:!0,correlationId:t||""})},e.prototype.isPiiLoggingEnabled=function(){return this.piiLoggingEnabled||!1},e}(),we={createNewGuid:function(){throw ce.createUnexpectedError("Crypto interface - createNewGuid() has not been implemented")},base64Decode:function(){throw ce.createUnexpectedError("Crypto interface - base64Decode() has not been implemented")},base64Encode:function(){throw ce.createUnexpectedError("Crypto interface - base64Encode() has not been implemented")},generatePkceCodes:function(){return p(this,void 0,void 0,(function(){return g(this,(function(e){throw ce.createUnexpectedError("Crypto interface - generatePkceCodes() has not been implemented")}))}))},getPublicKeyThumbprint:function(){return p(this,void 0,void 0,(function(){return g(this,(function(e){throw ce.createUnexpectedError("Crypto interface - getPublicKeyThumbprint() has not been implemented")}))}))},signJwt:function(){return p(this,void 0,void 0,(function(){return g(this,(function(e){throw ce.createUnexpectedError("Crypto interface - signJwt() has not been implemented")}))}))}},Ie=function(e){function t(r,n){var o=e.call(this,r,n)||this;return o.name="ClientConfigurationError",Object.setPrototypeOf(o,t.prototype),o}return h(t,e),t.createRedirectUriEmptyError=function(){return new t("redirect_uri_empty","A redirect URI is required for all calls, and none has been set.")},t.createPostLogoutRedirectUriEmptyError=function(){return new t("post_logout_uri_empty","A post logout redirect has not been set.")},t.createClaimsRequestParsingError=function(e){return new t("claims_request_parsing_error","Could not parse the given claims request object. Given value: "+e)},t.createInsecureAuthorityUriError=function(e){return new t("authority_uri_insecure","Authority URIs must use https. Please see here for valid authority configuration options: https://docs.microsoft.com/en-us/azure/active-directory/develop/msal-js-initializing-client-applications#configuration-options Given URI: "+e)},t.createUrlParseError=function(e){return new t("url_parse_error","URL could not be parsed into appropriate segments. Given Error: "+e)},t.createUrlEmptyError=function(){return new t("empty_url_error","URL was empty or null.")},t.createEmptyScopesArrayError=function(){return new t("empty_input_scopes_error","Scopes cannot be passed as null, undefined or empty array because they are required to obtain an access token.")},t.createClientIdSingleScopeError=function(e){return new t("clientid_input_scopes_error","Client ID can only be provided as a single scope. Given Scopes: "+e)},t.createInvalidPromptError=function(e){return new t("invalid_prompt_value","Supported prompt values are 'login', 'select_account', 'consent', 'create' and 'none'. Please see here for valid configuration options: https://azuread.github.io/microsoft-authentication-library-for-js/ref/modules/_azure_msal_common.html#commonauthorizationurlrequest Given value: "+e)},t.createInvalidClaimsRequestError=function(){return new t("invalid_claims","Given claims parameter must be a stringified JSON object.")},t.createEmptyLogoutRequestError=function(){return new t("logout_request_empty","The logout request was null or undefined.")},t.createEmptyTokenRequestError=function(){return new t("token_request_empty","Token request was empty and not found in cache.")},t.createInvalidCodeChallengeMethodError=function(){return new t("invalid_code_challenge_method",'code_challenge_method passed is invalid. Valid values are "plain" and "S256".')},t.createInvalidCodeChallengeParamsError=function(){return new t("pkce_params_missing","Both params: code_challenge and code_challenge_method are to be passed if to be sent in the request")},t.createInvalidCloudDiscoveryMetadataError=function(){return new t("invalid_cloud_discovery_metadata","Invalid cloudDiscoveryMetadata provided. Must be a JSON object containing tenant_discovery_endpoint and metadata fields")},t.createInvalidAuthorityMetadataError=function(){return new t("invalid_authority_metadata","Invalid authorityMetadata provided. Must by a JSON object containing authorization_endpoint, token_endpoint, end_session_endpoint, issuer fields.")},t.createUntrustedAuthorityError=function(){return new t("untrusted_authority","The provided authority is not a trusted authority. Please include this authority in the knownAuthorities config parameter.")},t}(he),Ae=function(){function e(t){if(this._urlString=t,de.isEmpty(this._urlString))throw Ie.createUrlEmptyError();de.isEmpty(this.getHash())&&(this._urlString=e.canonicalizeUri(t))}return Object.defineProperty(e.prototype,"urlString",{get:function(){return this._urlString},enumerable:!1,configurable:!0}),e.canonicalizeUri=function(e){if(e){var t=e.toLowerCase();return de.endsWith(t,"?")?t=t.slice(0,-1):de.endsWith(t,"?/")&&(t=t.slice(0,-2)),de.endsWith(t,"/")||(t+="/"),t}return e},e.prototype.validateAsUri=function(){var e;try{e=this.getUrlComponents()}catch(e){throw Ie.createUrlParseError(e)}if(!e.HostNameAndPort||!e.PathSegments)throw Ie.createUrlParseError("Given url string: "+this.urlString);if(!e.Protocol||"https:"!==e.Protocol.toLowerCase())throw Ie.createInsecureAuthorityUriError(this.urlString)},e.prototype.urlRemoveQueryStringParameter=function(e){var t=new RegExp("(\\&"+e+"=)[^&]+");return this._urlString=this.urlString.replace(t,""),t=new RegExp("("+e+"=)[^&]+&"),this._urlString=this.urlString.replace(t,""),t=new RegExp("("+e+"=)[^&]+"),this._urlString=this.urlString.replace(t,""),this.urlString},e.appendQueryString=function(e,t){return de.isEmpty(t)?e:e.indexOf("?")<0?e+"?"+t:e+"&"+t},e.removeHashFromUrl=function(t){return e.canonicalizeUri(t.split("#")[0])},e.prototype.replaceTenantPath=function(t){var r=this.getUrlComponents(),n=r.PathSegments;return!t||0===n.length||n[0]!==E.COMMON&&n[0]!==E.ORGANIZATIONS||(n[0]=t),e.constructAuthorityUriFromObject(r)},e.prototype.getHash=function(){return e.parseHash(this.urlString)},e.prototype.getUrlComponents=function(){var e=RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?"),t=this.urlString.match(e);if(!t)throw Ie.createUrlParseError("Given url string: "+this.urlString);var r={Protocol:t[1],HostNameAndPort:t[4],AbsolutePath:t[5],QueryString:t[7]},n=r.AbsolutePath.split("/");return n=n.filter((function(e){return e&&e.length>0})),r.PathSegments=n,!de.isEmpty(r.QueryString)&&r.QueryString.endsWith("/")&&(r.QueryString=r.QueryString.substring(0,r.QueryString.length-1)),r},e.getDomainFromUrl=function(e){var t=RegExp("^([^:/?#]+://)?([^/?#]*)"),r=e.match(t);if(!r)throw Ie.createUrlParseError("Given url string: "+e);return r[2]},e.getAbsoluteUrl=function(t,r){if(t[0]===T.FORWARD_SLASH){var n=new e(r).getUrlComponents();return n.Protocol+"//"+n.HostNameAndPort+t}return t},e.parseHash=function(e){var t=e.indexOf("#"),r=e.indexOf("#/");return r>-1?e.substring(r+2):t>-1?e.substring(t+1):""},e.constructAuthorityUriFromObject=function(t){return new e(t.Protocol+"//"+t.HostNameAndPort+"/"+t.PathSegments.join("/"))},e.getDeserializedHash=function(t){if(de.isEmpty(t))return{};var r=e.parseHash(t),n=de.queryStringToObject(de.isEmpty(r)?t:r);if(!n)throw he.createHashNotDeserializedError(JSON.stringify(n));return n},e.hashContainsKnownProperties=function(t){if(de.isEmpty(t))return!1;var r=e.getDeserializedHash(t);return!!(r.code||r.error_description||r.error||r.state)},e}(),_e=function(e){function t(r,n,o){var i=e.call(this,r,n,o)||this;return i.name="ServerError",Object.setPrototypeOf(i,t.prototype),i}return h(t,e),t}(ce),Re=function(){function e(){}return e.generateThrottlingStorageKey=function(e){return"throttling."+JSON.stringify(e)},e.preProcess=function(t,r){var n,o=e.generateThrottlingStorageKey(r),i=t.getThrottlingCache(o);if(i){if(i.throttleTime=500&&e.status<600},e.checkResponseForRetryAfter=function(e){return!!e.headers&&e.headers.hasOwnProperty(y.RETRY_AFTER)&&(e.status<200||e.status>=300)},e.calculateThrottleTime=function(e){var t=e<=0?0:e,r=Date.now()/1e3;return Math.floor(1e3*Math.min(r+(t||60),r+3600))},e.removeThrottle=function(e,t,r,n,o){var i={clientId:t,authority:r,scopes:n,homeAccountIdentifier:o},a=this.generateThrottlingStorageKey(i);return e.removeItem(a,P.THROTTLING)},e}(),be=["interaction_required","consent_required","login_required"],Oe=["message_only","additional_action","basic_action","user_password_expired","consent_required"],Ne=function(e){function t(r,n,o){var i=e.call(this,r,n,o)||this;return i.name="InteractionRequiredAuthError",Object.setPrototypeOf(i,t.prototype),i}return h(t,e),t.isInteractionRequiredError=function(e,t,r){var n=!!e&&be.indexOf(e)>-1,o=!!r&&Oe.indexOf(r)>-1,i=!!t&&be.some((function(e){return t.indexOf(e)>-1}));return n||i||o},t}(_e);function Pe(e,t){if(de.isEmpty(e))throw he.createClientInfoEmptyError();try{var r=t.base64Decode(e);return JSON.parse(r)}catch(e){throw he.createClientInfoDecodingError(e)}}function ke(e){if(de.isEmpty(e))throw he.createClientInfoDecodingError("Home account ID was empty.");var t=e.split(O.CLIENT_INFO_SEPARATOR,2);return{uid:t[0],utid:t.length<2?T.EMPTY_STRING:t[1]}}!function(e){e[e.Default=0]="Default",e[e.Adfs=1]="Adfs"}(Te||(Te={}));var Ue,Me=function(){function e(){}return e.prototype.generateAccountId=function(){return[this.homeAccountId,this.environment].join(O.CACHE_KEY_SEPARATOR).toLowerCase()},e.prototype.generateAccountKey=function(){return e.generateAccountCacheKey({homeAccountId:this.homeAccountId,environment:this.environment,tenantId:this.realm,username:this.username,localAccountId:this.localAccountId})},e.prototype.generateType=function(){switch(this.authorityType){case b.ADFS_ACCOUNT_TYPE:return k.ADFS;case b.MSAV1_ACCOUNT_TYPE:return k.MSA;case b.MSSTS_ACCOUNT_TYPE:return k.MSSTS;case b.GENERIC_ACCOUNT_TYPE:return k.GENERIC;default:throw he.createUnexpectedAccountTypeError()}},e.prototype.getAccountInfo=function(){return{homeAccountId:this.homeAccountId,environment:this.environment,tenantId:this.realm,username:this.username,localAccountId:this.localAccountId,name:this.name,idTokenClaims:this.idTokenClaims}},e.generateAccountCacheKey=function(e){return[e.homeAccountId,e.environment||"",e.tenantId||""].join(O.CACHE_KEY_SEPARATOR).toLowerCase()},e.createAccount=function(t,r,n,o,i,a,s){var c,u,l,h,d,p,g=new e;g.authorityType=b.MSSTS_ACCOUNT_TYPE,g.clientInfo=t,g.homeAccountId=r;var f=n.getPreferredCache();if(de.isEmpty(f))throw he.createInvalidCacheEnvironmentError();return g.environment=f,g.realm=(null===(c=null==o?void 0:o.claims)||void 0===c?void 0:c.tid)||"",g.oboAssertion=i,o&&(g.idTokenClaims=o.claims,g.localAccountId=(null===(u=null==o?void 0:o.claims)||void 0===u?void 0:u.oid)||(null===(l=null==o?void 0:o.claims)||void 0===l?void 0:l.sub)||"",g.username=(null===(h=null==o?void 0:o.claims)||void 0===h?void 0:h.preferred_username)||((null===(d=null==o?void 0:o.claims)||void 0===d?void 0:d.emails)?o.claims.emails[0]:""),g.name=null===(p=null==o?void 0:o.claims)||void 0===p?void 0:p.name),g.cloudGraphHostName=a,g.msGraphHost=s,g},e.createGenericAccount=function(t,r,n,o,i,a){var s,c,u,l,h=new e;h.authorityType=t.authorityType===Te.Adfs?b.ADFS_ACCOUNT_TYPE:b.GENERIC_ACCOUNT_TYPE,h.homeAccountId=r,h.realm="",h.oboAssertion=o;var d=t.getPreferredCache();if(de.isEmpty(d))throw he.createInvalidCacheEnvironmentError();return n&&(h.localAccountId=(null===(s=null==n?void 0:n.claims)||void 0===s?void 0:s.oid)||(null===(c=null==n?void 0:n.claims)||void 0===c?void 0:c.sub)||"",h.username=(null===(u=null==n?void 0:n.claims)||void 0===u?void 0:u.upn)||"",h.name=(null===(l=null==n?void 0:n.claims)||void 0===l?void 0:l.name)||"",h.idTokenClaims=null==n?void 0:n.claims),h.environment=d,h.cloudGraphHostName=i,h.msGraphHost=a,h},e.generateHomeAccountId=function(e,t,r,n,o){var i,a=(null===(i=null==o?void 0:o.claims)||void 0===i?void 0:i.sub)?o.claims.sub:T.EMPTY_STRING;if(t===Te.Adfs)return a;if(e)try{var s=Pe(e,n);if(!de.isEmpty(s.uid)&&!de.isEmpty(s.utid))return""+s.uid+O.CLIENT_INFO_SEPARATOR+s.utid}catch(e){}return r.verbose("No client info in response"),a},e.isAccountEntity=function(e){return!!e&&e.hasOwnProperty("homeAccountId")&&e.hasOwnProperty("environment")&&e.hasOwnProperty("realm")&&e.hasOwnProperty("localAccountId")&&e.hasOwnProperty("username")&&e.hasOwnProperty("authorityType")},e.accountInfoIsEqual=function(e,t,r){if(!e||!t)return!1;var n=!0;if(r){var o=e.idTokenClaims||{},i=t.idTokenClaims||{};n=o.iat===i.iat&&o.nonce===i.nonce}return e.homeAccountId===t.homeAccountId&&e.localAccountId===t.localAccountId&&e.username===t.username&&e.tenantId===t.tenantId&&e.environment===t.environment&&n},e}();function Le(e){return e.hasOwnProperty("authorization_endpoint")&&e.hasOwnProperty("token_endpoint")&&e.hasOwnProperty("end_session_endpoint")&&e.hasOwnProperty("issuer")}!function(e){e.AAD="AAD",e.OIDC="OIDC"}(Ue||(Ue={}));var qe,De=function(){function e(){}return e.nowSeconds=function(){return Math.round((new Date).getTime()/1e3)},e.isTokenExpired=function(t,r){var n=Number(t)||0;return e.nowSeconds()+r>n},e.wasClockTurnedBack=function(t){return Number(t)>e.nowSeconds()},e.delay=function(e,t){return new Promise((function(r){return setTimeout((function(){return r(t)}),e)}))},e}(),He=function(){function e(){this.expiresAt=De.nowSeconds()+86400}return e.prototype.updateCloudDiscoveryMetadata=function(e,t){this.aliases=e.aliases,this.preferred_cache=e.preferred_cache,this.preferred_network=e.preferred_network,this.aliasesFromNetwork=t},e.prototype.updateEndpointMetadata=function(e,t){this.authorization_endpoint=e.authorization_endpoint,this.token_endpoint=e.token_endpoint,this.end_session_endpoint=e.end_session_endpoint,this.issuer=e.issuer,this.endpointsFromNetwork=t},e.prototype.updateCanonicalAuthority=function(e){this.canonical_authority=e},e.prototype.resetExpiresAt=function(){this.expiresAt=De.nowSeconds()+86400},e.prototype.isExpired=function(){return this.expiresAt<=De.nowSeconds()},e.isAuthorityMetadataEntity=function(e,t){return!!t&&0===e.indexOf(D)&&t.hasOwnProperty("aliases")&&t.hasOwnProperty("preferred_cache")&&t.hasOwnProperty("preferred_network")&&t.hasOwnProperty("canonical_authority")&&t.hasOwnProperty("authorization_endpoint")&&t.hasOwnProperty("token_endpoint")&&t.hasOwnProperty("end_session_endpoint")&&t.hasOwnProperty("issuer")&&t.hasOwnProperty("aliasesFromNetwork")&&t.hasOwnProperty("endpointsFromNetwork")&&t.hasOwnProperty("expiresAt")},e}(),Fe=function(){function e(e){this.networkInterface=e}return e.prototype.detectRegion=function(e,t){return p(this,void 0,void 0,(function(){var r,n,o,i;return g(this,(function(a){switch(a.label){case 0:if(r=e)return[3,8];a.label=1;case 1:return a.trys.push([1,6,,7]),[4,this.getRegionFromIMDS(T.IMDS_VERSION)];case 2:return(n=a.sent()).status===x.httpSuccess&&(r=n.body,t.region_source=G.IMDS),n.status!==x.httpBadRequest?[3,5]:[4,this.getCurrentVersion()];case 3:return(o=a.sent())?[4,this.getRegionFromIMDS(o)]:(t.region_source=G.FAILED_AUTO_DETECTION,[2,null]);case 4:(i=a.sent()).status===x.httpSuccess&&(r=i.body,t.region_source=G.IMDS),a.label=5;case 5:return[3,7];case 6:return a.sent(),t.region_source=G.FAILED_AUTO_DETECTION,[2,null];case 7:return[3,9];case 8:t.region_source=G.ENVIRONMENT_VARIABLE,a.label=9;case 9:return r||(t.region_source=G.FAILED_AUTO_DETECTION),[2,r||null]}}))}))},e.prototype.getRegionFromIMDS=function(t){return p(this,void 0,void 0,(function(){return g(this,(function(r){return[2,this.networkInterface.sendGetRequestAsync(T.IMDS_ENDPOINT+"?api-version="+t+"&format=text",e.IMDS_OPTIONS,T.IMDS_TIMEOUT)]}))}))},e.prototype.getCurrentVersion=function(){return p(this,void 0,void 0,(function(){var t;return g(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,this.networkInterface.sendGetRequestAsync(T.IMDS_ENDPOINT+"?format=json",e.IMDS_OPTIONS)];case 1:return(t=r.sent()).status===x.httpBadRequest&&t.body&&t.body["newest-versions"]&&t.body["newest-versions"].length>0?[2,t.body["newest-versions"][0]]:[2,null];case 2:return r.sent(),[2,null];case 3:return[2]}}))}))},e.IMDS_OPTIONS={headers:{Metadata:"true"}},e}(),Ke=function(){function e(e,t,r,n){this.canonicalAuthority=e,this._canonicalAuthority.validateAsUri(),this.networkInterface=t,this.cacheManager=r,this.authorityOptions=n,this.regionDiscovery=new Fe(t),this.regionDiscoveryMetadata={region_used:void 0,region_source:void 0,region_outcome:void 0}}return Object.defineProperty(e.prototype,"authorityType",{get:function(){var e=this.canonicalAuthorityUrlComponents.PathSegments;return e.length&&e[0].toLowerCase()===T.ADFS?Te.Adfs:Te.Default},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"protocolMode",{get:function(){return this.authorityOptions.protocolMode},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"options",{get:function(){return this.authorityOptions},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"canonicalAuthority",{get:function(){return this._canonicalAuthority.urlString},set:function(e){this._canonicalAuthority=new Ae(e),this._canonicalAuthority.validateAsUri(),this._canonicalAuthorityUrlComponents=null},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"canonicalAuthorityUrlComponents",{get:function(){return this._canonicalAuthorityUrlComponents||(this._canonicalAuthorityUrlComponents=this._canonicalAuthority.getUrlComponents()),this._canonicalAuthorityUrlComponents},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"hostnameAndPort",{get:function(){return this.canonicalAuthorityUrlComponents.HostNameAndPort.toLowerCase()},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"tenant",{get:function(){return this.canonicalAuthorityUrlComponents.PathSegments[0]},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"authorizationEndpoint",{get:function(){if(this.discoveryComplete()){var e=this.replacePath(this.metadata.authorization_endpoint);return this.replaceTenant(e)}throw he.createEndpointDiscoveryIncompleteError("Discovery incomplete.")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"tokenEndpoint",{get:function(){if(this.discoveryComplete()){var e=this.replacePath(this.metadata.token_endpoint);return this.replaceTenant(e)}throw he.createEndpointDiscoveryIncompleteError("Discovery incomplete.")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"deviceCodeEndpoint",{get:function(){if(this.discoveryComplete()){var e=this.replacePath(this.metadata.token_endpoint.replace("/token","/devicecode"));return this.replaceTenant(e)}throw he.createEndpointDiscoveryIncompleteError("Discovery incomplete.")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"endSessionEndpoint",{get:function(){if(this.discoveryComplete()){var e=this.replacePath(this.metadata.end_session_endpoint);return this.replaceTenant(e)}throw he.createEndpointDiscoveryIncompleteError("Discovery incomplete.")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selfSignedJwtAudience",{get:function(){if(this.discoveryComplete()){var e=this.replacePath(this.metadata.issuer);return this.replaceTenant(e)}throw he.createEndpointDiscoveryIncompleteError("Discovery incomplete.")},enumerable:!1,configurable:!0}),e.prototype.replaceTenant=function(e){return e.replace(/{tenant}|{tenantid}/g,this.tenant)},e.prototype.replacePath=function(e){var t=e,r=new Ae(this.metadata.canonical_authority).getUrlComponents().PathSegments;return this.canonicalAuthorityUrlComponents.PathSegments.forEach((function(e,n){var o=r[n];e!==o&&(t=t.replace("/"+o+"/","/"+e+"/"))})),t},Object.defineProperty(e.prototype,"defaultOpenIdConfigurationEndpoint",{get:function(){return this.authorityType===Te.Adfs||this.protocolMode===Ue.OIDC?this.canonicalAuthority+".well-known/openid-configuration":this.canonicalAuthority+"v2.0/.well-known/openid-configuration"},enumerable:!1,configurable:!0}),e.prototype.discoveryComplete=function(){return!!this.metadata},e.prototype.resolveEndpointsAsync=function(){return p(this,void 0,void 0,(function(){var e,t,r,n;return g(this,(function(o){switch(o.label){case 0:return(e=this.cacheManager.getAuthorityMetadataByAlias(this.hostnameAndPort))||(e=new He).updateCanonicalAuthority(this.canonicalAuthority),[4,this.updateCloudDiscoveryMetadata(e)];case 1:return t=o.sent(),this.canonicalAuthority=this.canonicalAuthority.replace(this.hostnameAndPort,e.preferred_network),[4,this.updateEndpointMetadata(e)];case 2:return r=o.sent(),t!==M.CACHE&&r!==M.CACHE&&(e.resetExpiresAt(),e.updateCanonicalAuthority(this.canonicalAuthority)),n=this.cacheManager.generateAuthorityMetadataCacheKey(e.preferred_cache),this.cacheManager.setAuthorityMetadata(n,e),this.metadata=e,[2]}}))}))},e.prototype.updateEndpointMetadata=function(t){var r;return p(this,void 0,void 0,(function(){var n,o,i;return g(this,(function(a){switch(a.label){case 0:return(n=this.getEndpointMetadataFromConfig())?(t.updateEndpointMetadata(n,!1),[2,M.CONFIG]):this.isAuthoritySameType(t)&&t.endpointsFromNetwork&&!t.isExpired()?[2,M.CACHE]:[4,this.getEndpointMetadataFromNetwork()];case 1:return(n=a.sent())?(null===(r=this.authorityOptions.azureRegionConfiguration)||void 0===r?void 0:r.azureRegion)?[4,this.regionDiscovery.detectRegion(this.authorityOptions.azureRegionConfiguration.environmentRegion,this.regionDiscoveryMetadata)]:[3,3]:[3,4];case 2:o=a.sent(),i=this.authorityOptions.azureRegionConfiguration.azureRegion===T.AZURE_REGION_AUTO_DISCOVER_FLAG?o:this.authorityOptions.azureRegionConfiguration.azureRegion,this.authorityOptions.azureRegionConfiguration.azureRegion===T.AZURE_REGION_AUTO_DISCOVER_FLAG?this.regionDiscoveryMetadata.region_outcome=o?B.AUTO_DETECTION_REQUESTED_SUCCESSFUL:B.AUTO_DETECTION_REQUESTED_FAILED:this.regionDiscoveryMetadata.region_outcome=o?this.authorityOptions.azureRegionConfiguration.azureRegion===o?B.CONFIGURED_MATCHES_DETECTED:B.CONFIGURED_NOT_DETECTED:B.CONFIGURED_NO_AUTO_DETECTION,i&&(this.regionDiscoveryMetadata.region_used=i,n=e.replaceWithRegionalInformation(n,i)),a.label=3;case 3:return t.updateEndpointMetadata(n,!0),[2,M.NETWORK];case 4:throw he.createUnableToGetOpenidConfigError(this.defaultOpenIdConfigurationEndpoint)}}))}))},e.prototype.isAuthoritySameType=function(e){return new Ae(e.canonical_authority).getUrlComponents().PathSegments.length===this.canonicalAuthorityUrlComponents.PathSegments.length},e.prototype.getEndpointMetadataFromConfig=function(){if(this.authorityOptions.authorityMetadata)try{return JSON.parse(this.authorityOptions.authorityMetadata)}catch(e){throw Ie.createInvalidAuthorityMetadataError()}return null},e.prototype.getEndpointMetadataFromNetwork=function(){return p(this,void 0,void 0,(function(){var e;return g(this,(function(t){switch(t.label){case 0:return t.trys.push([0,2,,3]),[4,this.networkInterface.sendGetRequestAsync(this.defaultOpenIdConfigurationEndpoint)];case 1:return[2,Le((e=t.sent()).body)?e.body:null];case 2:return t.sent(),[2,null];case 3:return[2]}}))}))},e.prototype.updateCloudDiscoveryMetadata=function(e){return p(this,void 0,void 0,(function(){var t;return g(this,(function(r){switch(r.label){case 0:return(t=this.getCloudDiscoveryMetadataFromConfig())?(e.updateCloudDiscoveryMetadata(t,!1),[2,M.CONFIG]):this.isAuthoritySameType(e)&&e.aliasesFromNetwork&&!e.isExpired()?[2,M.CACHE]:[4,this.getCloudDiscoveryMetadataFromNetwork()];case 1:if(t=r.sent())return e.updateCloudDiscoveryMetadata(t,!0),[2,M.NETWORK];throw Ie.createUntrustedAuthorityError()}}))}))},e.prototype.getCloudDiscoveryMetadataFromConfig=function(){if(this.authorityOptions.cloudDiscoveryMetadata)try{var t=JSON.parse(this.authorityOptions.cloudDiscoveryMetadata),r=e.getCloudDiscoveryMetadataFromNetworkResponse(t.metadata,this.hostnameAndPort);if(r)return r}catch(e){throw Ie.createInvalidCloudDiscoveryMetadataError()}return this.isInKnownAuthorities()?e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort):null},e.prototype.getCloudDiscoveryMetadataFromNetwork=function(){return p(this,void 0,void 0,(function(){var t,r,n,o;return g(this,(function(i){switch(i.label){case 0:t=""+T.AAD_INSTANCE_DISCOVERY_ENDPT+this.canonicalAuthority+"oauth2/v2.0/authorize",r=null,i.label=1;case 1:return i.trys.push([1,3,,4]),[4,this.networkInterface.sendGetRequestAsync(t)];case 2:return n=i.sent(),0===(o=function(e){return e.hasOwnProperty("tenant_discovery_endpoint")&&e.hasOwnProperty("metadata")}(n.body)?n.body.metadata:[]).length?[2,null]:(r=e.getCloudDiscoveryMetadataFromNetworkResponse(o,this.hostnameAndPort),[3,4]);case 3:return i.sent(),[2,null];case 4:return r||(r=e.createCloudDiscoveryMetadataFromHost(this.hostnameAndPort)),[2,r]}}))}))},e.prototype.isInKnownAuthorities=function(){var e=this;return this.authorityOptions.knownAuthorities.filter((function(t){return Ae.getDomainFromUrl(t).toLowerCase()===e.hostnameAndPort})).length>0},e.createCloudDiscoveryMetadataFromHost=function(e){return{preferred_network:e,preferred_cache:e,aliases:[e]}},e.getCloudDiscoveryMetadataFromNetworkResponse=function(e,t){for(var r=0;r-1)return n}return null},e.prototype.getPreferredCache=function(){if(this.discoveryComplete())return this.metadata.preferred_cache;throw he.createEndpointDiscoveryIncompleteError("Discovery incomplete.")},e.prototype.isAlias=function(e){return this.metadata.aliases.indexOf(e)>-1},e.isPublicCloudAuthority=function(e){return T.KNOWN_PUBLIC_CLOUDS.indexOf(e)>=0},e.buildRegionalAuthorityString=function(e,t,r){var n=new Ae(e);n.validateAsUri();var o=n.getUrlComponents(),i=t+"."+o.HostNameAndPort;this.isPublicCloudAuthority(o.HostNameAndPort)&&(i=t+"."+T.REGIONAL_AUTH_PUBLIC_CLOUD_SUFFIX);var a=Ae.constructAuthorityUriFromObject(d(d({},n.getUrlComponents()),{HostNameAndPort:i})).urlString;return r?a+"?"+r:a},e.replaceWithRegionalInformation=function(t,r){return t.authorization_endpoint=e.buildRegionalAuthorityString(t.authorization_endpoint,r),t.token_endpoint=e.buildRegionalAuthorityString(t.token_endpoint,r,"allowestsrnonmsi=true"),t.end_session_endpoint=e.buildRegionalAuthorityString(t.end_session_endpoint,r),t},e}(),xe=function(){function e(){}return e.createDiscoveredInstance=function(t,r,n,o){return p(this,void 0,void 0,(function(){var i,a;return g(this,(function(s){switch(s.label){case 0:i=e.createInstance(t,r,n,o),s.label=1;case 1:return s.trys.push([1,3,,4]),[4,i.resolveEndpointsAsync()];case 2:return s.sent(),[2,i];case 3:throw a=s.sent(),he.createEndpointDiscoveryIncompleteError(a);case 4:return[2]}}))}))},e.createInstance=function(e,t,r,n){if(de.isEmpty(e))throw Ie.createUrlEmptyError();return new Ke(e,t,r,n)},e}(),Ge="4.5.1",Be=function(){function e(){}return e.prototype.generateAccountId=function(){return e.generateAccountIdForCacheKey(this.homeAccountId,this.environment)},e.prototype.generateCredentialId=function(){return e.generateCredentialIdForCacheKey(this.credentialType,this.clientId,this.realm,this.familyId)},e.prototype.generateTarget=function(){return e.generateTargetForCacheKey(this.target)},e.prototype.generateCredentialKey=function(){return e.generateCredentialCacheKey(this.homeAccountId,this.environment,this.credentialType,this.clientId,this.realm,this.target,this.familyId)},e.prototype.generateType=function(){switch(this.credentialType){case N.ID_TOKEN:return k.ID_TOKEN;case N.ACCESS_TOKEN:return k.ACCESS_TOKEN;case N.REFRESH_TOKEN:return k.REFRESH_TOKEN;default:throw he.createUnexpectedCredentialTypeError()}},e.getCredentialType=function(e){return-1!==e.indexOf(N.ACCESS_TOKEN.toLowerCase())?-1!==e.indexOf(N.ACCESS_TOKEN_WITH_AUTH_SCHEME.toLowerCase())?N.ACCESS_TOKEN_WITH_AUTH_SCHEME:N.ACCESS_TOKEN:-1!==e.indexOf(N.ID_TOKEN.toLowerCase())?N.ID_TOKEN:-1!==e.indexOf(N.REFRESH_TOKEN.toLowerCase())?N.REFRESH_TOKEN:T.NOT_DEFINED},e.generateCredentialCacheKey=function(e,t,r,n,o,i,a){return[this.generateAccountIdForCacheKey(e,t),this.generateCredentialIdForCacheKey(r,n,o,a),this.generateTargetForCacheKey(i)].join(O.CACHE_KEY_SEPARATOR).toLowerCase()},e.generateAccountIdForCacheKey=function(e,t){return[e,t].join(O.CACHE_KEY_SEPARATOR).toLowerCase()},e.generateCredentialIdForCacheKey=function(e,t,r,n){return[e,e===N.REFRESH_TOKEN&&n||t,r||""].join(O.CACHE_KEY_SEPARATOR).toLowerCase()},e.generateTargetForCacheKey=function(e){return(e||"").toLowerCase()},e}(),je=function(){function e(e){var t=this,r=e?de.trimArrayEntries(f(e)):[],n=r?de.removeEmptyStringsFromArray(r):[];this.validateInputScopes(n),this.scopes=new Set,n.forEach((function(e){return t.scopes.add(e)}))}return e.fromString=function(t){return new e((t||"").split(" "))},e.prototype.validateInputScopes=function(e){if(!e||e.length<1)throw Ie.createEmptyScopesArrayError()},e.prototype.containsScope=function(t){var r=new e(this.printScopesLowerCase().split(" "));return!de.isEmpty(t)&&r.scopes.has(t.toLowerCase())},e.prototype.containsScopeSet=function(e){var t=this;return!(!e||e.scopes.size<=0)&&this.scopes.size>=e.scopes.size&&e.asArray().every((function(e){return t.containsScope(e)}))},e.prototype.containsOnlyOIDCScopes=function(){var e=this,t=0;return w.forEach((function(r){e.containsScope(r)&&(t+=1)})),this.scopes.size===t},e.prototype.appendScope=function(e){de.isEmpty(e)||this.scopes.add(e.trim())},e.prototype.appendScopes=function(e){var t=this;try{e.forEach((function(e){return t.appendScope(e)}))}catch(e){throw he.createAppendScopeSetError(e)}},e.prototype.removeScope=function(e){if(de.isEmpty(e))throw he.createRemoveEmptyScopeFromSetError(e);this.scopes.delete(e.trim())},e.prototype.removeOIDCScopes=function(){var e=this;w.forEach((function(t){e.scopes.delete(t)}))},e.prototype.unionScopeSets=function(e){if(!e)throw he.createEmptyInputScopeSetError();var t=new Set;return e.scopes.forEach((function(e){return t.add(e.toLowerCase())})),this.scopes.forEach((function(e){return t.add(e.toLowerCase())})),t},e.prototype.intersectingScopeSets=function(e){if(!e)throw he.createEmptyInputScopeSetError();e.containsOnlyOIDCScopes()||e.removeOIDCScopes();var t=this.unionScopeSets(e),r=e.getScopeCount(),n=this.getScopeCount();return t.size1)throw he.createMultipleMatchingTokensInCacheError();return o[0]},e.prototype.readAccessTokenFromCache=function(e,t,r,n){var o=n===H.POP?N.ACCESS_TOKEN_WITH_AUTH_SCHEME:N.ACCESS_TOKEN,i={homeAccountId:t.homeAccountId,environment:t.environment,credentialType:o,clientId:e,realm:t.tenantId,target:r.printScopesLowerCase()},a=this.getCredentialsFilteredBy(i),s=Object.keys(a.accessTokens).map((function(e){return a.accessTokens[e]})),c=s.length;if(c<1)return null;if(c>1)throw he.createMultipleMatchingTokensInCacheError();return s[0]},e.prototype.readRefreshTokenFromCache=function(e,t,r){var n=r?q:void 0,o={homeAccountId:t.homeAccountId,environment:t.environment,credentialType:N.REFRESH_TOKEN,clientId:e,familyId:n},i=this.getCredentialsFilteredBy(o),a=Object.keys(i.refreshTokens).map((function(e){return i.refreshTokens[e]}));return a.length<1?null:a[0]},e.prototype.readAppMetadataFromCache=function(e,t){var r={environment:e,clientId:t},n=this.getAppMetadataFilteredBy(r),o=Object.keys(n).map((function(e){return n[e]})),i=o.length;if(i<1)return null;if(i>1)throw he.createMultipleMatchingAppMetadataInCacheError();return o[0]},e.prototype.isAppMetadataFOCI=function(e,t){var r=this.readAppMetadataFromCache(e,t);return!(!r||r.familyId!==q)},e.prototype.matchHomeAccountId=function(e,t){return!(!e.homeAccountId||t!==e.homeAccountId)},e.prototype.matchOboAssertion=function(e,t){return!(!e.oboAssertion||t!==e.oboAssertion)},e.prototype.matchEnvironment=function(e,t){var r=this.getAuthorityMetadataByAlias(t);return!!(r&&r.aliases.indexOf(e.environment)>-1)},e.prototype.matchCredentialType=function(e,t){return e.credentialType&&t.toLowerCase()===e.credentialType.toLowerCase()},e.prototype.matchClientId=function(e,t){return!(!e.clientId||t!==e.clientId)},e.prototype.matchFamilyId=function(e,t){return!(!e.familyId||t!==e.familyId)},e.prototype.matchRealm=function(e,t){return!(!e.realm||t!==e.realm)},e.prototype.matchTarget=function(e,t){if(e.credentialType!==N.ACCESS_TOKEN&&e.credentialType!==N.ACCESS_TOKEN_WITH_AUTH_SCHEME||!e.target)return!1;var r=je.fromString(e.target),n=je.fromString(t);return n.containsOnlyOIDCScopes()?n.removeScope(T.OFFLINE_ACCESS_SCOPE):n.removeOIDCScopes(),r.containsScopeSet(n)},e.prototype.isAppMetadata=function(e){return-1!==e.indexOf(L)},e.prototype.isAuthorityMetadata=function(e){return-1!==e.indexOf(D)},e.prototype.generateAuthorityMetadataCacheKey=function(e){return"authority-metadata-"+this.clientId+"-"+e},e.prototype.getSpecificCredential=function(e,t){switch(t){case N.ID_TOKEN:return this.getIdTokenCredential(e);case N.ACCESS_TOKEN:case N.ACCESS_TOKEN_WITH_AUTH_SCHEME:return this.getAccessTokenCredential(e);case N.REFRESH_TOKEN:return this.getRefreshTokenCredential(e);default:return null}},e.toObject=function(e,t){for(var r in t)e[r]=t[r];return e},e}(),We=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return h(t,e),t.prototype.setAccount=function(){throw ce.createUnexpectedError("Storage interface - setAccount() has not been implemented for the cacheStorage interface.")},t.prototype.getAccount=function(){throw ce.createUnexpectedError("Storage interface - getAccount() has not been implemented for the cacheStorage interface.")},t.prototype.setIdTokenCredential=function(){throw ce.createUnexpectedError("Storage interface - setIdTokenCredential() has not been implemented for the cacheStorage interface.")},t.prototype.getIdTokenCredential=function(){throw ce.createUnexpectedError("Storage interface - getIdTokenCredential() has not been implemented for the cacheStorage interface.")},t.prototype.setAccessTokenCredential=function(){throw ce.createUnexpectedError("Storage interface - setAccessTokenCredential() has not been implemented for the cacheStorage interface.")},t.prototype.getAccessTokenCredential=function(){throw ce.createUnexpectedError("Storage interface - getAccessTokenCredential() has not been implemented for the cacheStorage interface.")},t.prototype.setRefreshTokenCredential=function(){throw ce.createUnexpectedError("Storage interface - setRefreshTokenCredential() has not been implemented for the cacheStorage interface.")},t.prototype.getRefreshTokenCredential=function(){throw ce.createUnexpectedError("Storage interface - getRefreshTokenCredential() has not been implemented for the cacheStorage interface.")},t.prototype.setAppMetadata=function(){throw ce.createUnexpectedError("Storage interface - setAppMetadata() has not been implemented for the cacheStorage interface.")},t.prototype.getAppMetadata=function(){throw ce.createUnexpectedError("Storage interface - getAppMetadata() has not been implemented for the cacheStorage interface.")},t.prototype.setServerTelemetry=function(){throw ce.createUnexpectedError("Storage interface - setServerTelemetry() has not been implemented for the cacheStorage interface.")},t.prototype.getServerTelemetry=function(){throw ce.createUnexpectedError("Storage interface - getServerTelemetry() has not been implemented for the cacheStorage interface.")},t.prototype.setAuthorityMetadata=function(){throw ce.createUnexpectedError("Storage interface - setAuthorityMetadata() has not been implemented for the cacheStorage interface.")},t.prototype.getAuthorityMetadata=function(){throw ce.createUnexpectedError("Storage interface - getAuthorityMetadata() has not been implemented for the cacheStorage interface.")},t.prototype.getAuthorityMetadataKeys=function(){throw ce.createUnexpectedError("Storage interface - getAuthorityMetadataKeys() has not been implemented for the cacheStorage interface.")},t.prototype.setThrottlingCache=function(){throw ce.createUnexpectedError("Storage interface - setThrottlingCache() has not been implemented for the cacheStorage interface.")},t.prototype.getThrottlingCache=function(){throw ce.createUnexpectedError("Storage interface - getThrottlingCache() has not been implemented for the cacheStorage interface.")},t.prototype.removeItem=function(){throw ce.createUnexpectedError("Storage interface - removeItem() has not been implemented for the cacheStorage interface.")},t.prototype.containsKey=function(){throw ce.createUnexpectedError("Storage interface - containsKey() has not been implemented for the cacheStorage interface.")},t.prototype.getKeys=function(){throw ce.createUnexpectedError("Storage interface - getKeys() has not been implemented for the cacheStorage interface.")},t.prototype.clear=function(){throw ce.createUnexpectedError("Storage interface - clear() has not been implemented for the cacheStorage interface.")},t}(Ye),Qe={tokenRenewalOffsetSeconds:300,preventCorsPreflight:!1},Ve={loggerCallback:function(){},piiLoggingEnabled:!1,logLevel:te.Info,correlationId:""},Je={sendGetRequestAsync:function(){return p(this,void 0,void 0,(function(){return g(this,(function(e){throw ce.createUnexpectedError("Network interface - sendGetRequestAsync() has not been implemented")}))}))},sendPostRequestAsync:function(){return p(this,void 0,void 0,(function(){return g(this,(function(e){throw ce.createUnexpectedError("Network interface - sendPostRequestAsync() has not been implemented")}))}))}},Xe={sku:T.SKU,version:Ge,cpu:"",os:""},Ze={clientSecret:"",clientAssertion:void 0},$e=function(){function e(e,t){this.networkClient=e,this.cacheManager=t}return e.prototype.sendPostRequest=function(e,t,r){return p(this,void 0,void 0,(function(){var n,o;return g(this,(function(i){switch(i.label){case 0:Re.preProcess(this.cacheManager,e),i.label=1;case 1:return i.trys.push([1,3,,4]),[4,this.networkClient.sendPostRequestAsync(t,r)];case 2:return n=i.sent(),[3,4];case 3:throw(o=i.sent())instanceof ce?o:he.createNetworkError(t,o);case 4:return Re.postProcess(this.cacheManager,e,n),[2,n]}}))}))},e}();!function(e){e.HOME_ACCOUNT_ID="home_account_id",e.UPN="UPN"}(qe||(qe={}));var et,tt=function(){function e(e){var t,r,n,o,i,a,s,c,u,l,h,p,g;this.config=(n=(t=e).authOptions,o=t.systemOptions,i=t.loggerOptions,a=t.storageInterface,s=t.networkInterface,c=t.cryptoInterface,u=t.clientCredentials,l=t.libraryInfo,h=t.serverTelemetryManager,p=t.persistencePlugin,g=t.serializableCache,{authOptions:(r=n,d({clientCapabilities:[]},r)),systemOptions:d(d({},Qe),o),loggerOptions:d(d({},Ve),i),storageInterface:a||new We(n.clientId,we),networkInterface:s||Je,cryptoInterface:c||we,clientCredentials:u||Ze,libraryInfo:d(d({},Xe),l),serverTelemetryManager:h||null,persistencePlugin:p||null,serializableCache:g||null}),this.logger=new Se(this.config.loggerOptions,"@azure/msal-common",Ge),this.cryptoUtils=this.config.cryptoInterface,this.cacheManager=this.config.storageInterface,this.networkClient=this.config.networkInterface,this.networkManager=new $e(this.networkClient,this.cacheManager),this.serverTelemetryManager=this.config.serverTelemetryManager,this.authority=this.config.authOptions.authority}return e.prototype.createTokenRequestHeaders=function(e){var t={};if(t[y.CONTENT_TYPE]=T.URL_FORM_CONTENT_TYPE,!this.config.systemOptions.preventCorsPreflight&&e)switch(e.type){case qe.HOME_ACCOUNT_ID:try{var r=ke(e.credential);t[y.CCS_HEADER]="Oid:"+r.uid+"@"+r.utid}catch(e){this.logger.verbose("Could not parse home account ID for CCS Header: "+e)}break;case qe.UPN:t[y.CCS_HEADER]="UPN: "+e.credential}return t},e.prototype.executePostToTokenEndpoint=function(e,t,r,n){return p(this,void 0,void 0,(function(){var o;return g(this,(function(i){switch(i.label){case 0:return[4,this.networkManager.sendPostRequest(n,e,{body:t,headers:r})];case 1:return o=i.sent(),this.config.serverTelemetryManager&&o.status<500&&429!==o.status&&this.config.serverTelemetryManager.clearTelemetryCache(),[2,o]}}))}))},e.prototype.updateAuthority=function(e){if(!e.discoveryComplete())throw he.createEndpointDiscoveryIncompleteError("Updated authority has not completed endpoint discovery.");this.authority=e},e}(),rt=function(){function e(){}return e.validateRedirectUri=function(e){if(de.isEmpty(e))throw Ie.createRedirectUriEmptyError()},e.validatePrompt=function(e){var t=[];for(var r in A)t.push(A[r]);if(t.indexOf(e)<0)throw Ie.createInvalidPromptError(e)},e.validateClaims=function(e){try{JSON.parse(e)}catch(e){throw Ie.createInvalidClaimsRequestError()}},e.validateCodeChallengeParams=function(e,t){if(de.isEmpty(e)||de.isEmpty(t))throw Ie.createInvalidCodeChallengeParamsError();this.validateCodeChallengeMethod(t)},e.validateCodeChallengeMethod=function(e){if([U.PLAIN,U.S256].indexOf(e)<0)throw Ie.createInvalidCodeChallengeMethodError()},e.sanitizeEQParams=function(e,t){return e?(t.forEach((function(t,r){e[r]&&delete e[r]})),e):{}},e}(),nt=function(){function e(){this.parameters=new Map}return e.prototype.addResponseTypeCode=function(){this.parameters.set(v.RESPONSE_TYPE,encodeURIComponent(T.CODE_RESPONSE_TYPE))},e.prototype.addResponseMode=function(e){this.parameters.set(v.RESPONSE_MODE,encodeURIComponent(e||_.QUERY))},e.prototype.addScopes=function(e,t){void 0===t&&(t=!0);var r=t?f(e||[],S):e||[],n=new je(r);this.parameters.set(v.SCOPE,encodeURIComponent(n.printScopes()))},e.prototype.addClientId=function(e){this.parameters.set(v.CLIENT_ID,encodeURIComponent(e))},e.prototype.addRedirectUri=function(e){rt.validateRedirectUri(e),this.parameters.set(v.REDIRECT_URI,encodeURIComponent(e))},e.prototype.addPostLogoutRedirectUri=function(e){rt.validateRedirectUri(e),this.parameters.set(v.POST_LOGOUT_URI,encodeURIComponent(e))},e.prototype.addIdTokenHint=function(e){this.parameters.set(v.ID_TOKEN_HINT,encodeURIComponent(e))},e.prototype.addDomainHint=function(e){this.parameters.set(I.DOMAIN_HINT,encodeURIComponent(e))},e.prototype.addLoginHint=function(e){this.parameters.set(I.LOGIN_HINT,encodeURIComponent(e))},e.prototype.addCcsUpn=function(e){this.parameters.set(y.CCS_HEADER,encodeURIComponent("UPN:"+e))},e.prototype.addCcsOid=function(e){this.parameters.set(y.CCS_HEADER,encodeURIComponent("Oid:"+e.uid+"@"+e.utid))},e.prototype.addSid=function(e){this.parameters.set(I.SID,encodeURIComponent(e))},e.prototype.addClaims=function(e,t){var r=this.addClientCapabilitiesToClaims(e,t);rt.validateClaims(r),this.parameters.set(v.CLAIMS,encodeURIComponent(r))},e.prototype.addCorrelationId=function(e){this.parameters.set(v.CLIENT_REQUEST_ID,encodeURIComponent(e))},e.prototype.addLibraryInfo=function(e){this.parameters.set(v.X_CLIENT_SKU,e.sku),this.parameters.set(v.X_CLIENT_VER,e.version),this.parameters.set(v.X_CLIENT_OS,e.os),this.parameters.set(v.X_CLIENT_CPU,e.cpu)},e.prototype.addPrompt=function(e){rt.validatePrompt(e),this.parameters.set(""+v.PROMPT,encodeURIComponent(e))},e.prototype.addState=function(e){de.isEmpty(e)||this.parameters.set(v.STATE,encodeURIComponent(e))},e.prototype.addNonce=function(e){this.parameters.set(v.NONCE,encodeURIComponent(e))},e.prototype.addCodeChallengeParams=function(e,t){if(rt.validateCodeChallengeParams(e,t),!e||!t)throw Ie.createInvalidCodeChallengeParamsError();this.parameters.set(v.CODE_CHALLENGE,encodeURIComponent(e)),this.parameters.set(v.CODE_CHALLENGE_METHOD,encodeURIComponent(t))},e.prototype.addAuthorizationCode=function(e){this.parameters.set(v.CODE,encodeURIComponent(e))},e.prototype.addDeviceCode=function(e){this.parameters.set(v.DEVICE_CODE,encodeURIComponent(e))},e.prototype.addRefreshToken=function(e){this.parameters.set(v.REFRESH_TOKEN,encodeURIComponent(e))},e.prototype.addCodeVerifier=function(e){this.parameters.set(v.CODE_VERIFIER,encodeURIComponent(e))},e.prototype.addClientSecret=function(e){this.parameters.set(v.CLIENT_SECRET,encodeURIComponent(e))},e.prototype.addClientAssertion=function(e){this.parameters.set(v.CLIENT_ASSERTION,encodeURIComponent(e))},e.prototype.addClientAssertionType=function(e){this.parameters.set(v.CLIENT_ASSERTION_TYPE,encodeURIComponent(e))},e.prototype.addOboAssertion=function(e){this.parameters.set(v.OBO_ASSERTION,encodeURIComponent(e))},e.prototype.addRequestTokenUse=function(e){this.parameters.set(v.REQUESTED_TOKEN_USE,encodeURIComponent(e))},e.prototype.addGrantType=function(e){this.parameters.set(v.GRANT_TYPE,encodeURIComponent(e))},e.prototype.addClientInfo=function(){this.parameters.set("client_info","1")},e.prototype.addExtraQueryParameters=function(e){var t=this;rt.sanitizeEQParams(e,this.parameters),Object.keys(e).forEach((function(r){t.parameters.set(r,e[r])}))},e.prototype.addClientCapabilitiesToClaims=function(e,t){var r;if(e)try{r=JSON.parse(e)}catch(e){throw Ie.createInvalidClaimsRequestError()}else r={};return t&&t.length>0&&(r.hasOwnProperty(C.ACCESS_TOKEN)||(r[C.ACCESS_TOKEN]={}),r[C.ACCESS_TOKEN][C.XMS_CC]={values:t}),JSON.stringify(r)},e.prototype.addUsername=function(e){this.parameters.set(K.username,e)},e.prototype.addPassword=function(e){this.parameters.set(K.password,e)},e.prototype.addPopToken=function(e){de.isEmpty(e)||(this.parameters.set(v.TOKEN_TYPE,H.POP),this.parameters.set(v.REQ_CNF,encodeURIComponent(e)))},e.prototype.addServerTelemetry=function(e){this.parameters.set(v.X_CLIENT_CURR_TELEM,e.generateCurrentRequestHeaderValue()),this.parameters.set(v.X_CLIENT_LAST_TELEM,e.generateLastRequestHeaderValue())},e.prototype.addThrottling=function(){this.parameters.set(v.X_MS_LIB_CAPABILITY,"retry-after, h429")},e.prototype.createQueryString=function(){var e=new Array;return this.parameters.forEach((function(t,r){e.push(r+"="+t)})),e.join("&")},e}(),ot=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return h(t,e),t.createIdTokenEntity=function(e,r,n,o,i,a){var s=new t;return s.credentialType=N.ID_TOKEN,s.homeAccountId=e,s.environment=r,s.clientId=o,s.secret=n,s.realm=i,s.oboAssertion=a,s},t.isIdTokenEntity=function(e){return!!e&&e.hasOwnProperty("homeAccountId")&&e.hasOwnProperty("environment")&&e.hasOwnProperty("credentialType")&&e.hasOwnProperty("realm")&&e.hasOwnProperty("clientId")&&e.hasOwnProperty("secret")&&e.credentialType===N.ID_TOKEN},t}(Be),it=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return h(t,e),t.createAccessTokenEntity=function(e,r,n,o,i,a,s,c,u,l,h,d){var p,g=new t;g.homeAccountId=e,g.credentialType=N.ACCESS_TOKEN,g.secret=n;var f=De.nowSeconds();if(g.cachedAt=f.toString(),g.expiresOn=s.toString(),g.extendedExpiresOn=c.toString(),l&&(g.refreshOn=l.toString()),g.environment=r,g.clientId=o,g.realm=i,g.target=a,g.oboAssertion=d,g.tokenType=de.isEmpty(h)?H.BEARER:h,g.tokenType===H.POP){g.credentialType=N.ACCESS_TOKEN_WITH_AUTH_SCHEME;var y=ze.extractTokenClaims(n,u);if(!(null===(p=null==y?void 0:y.cnf)||void 0===p?void 0:p.kid))throw he.createTokenClaimsRequiredError();g.keyId=y.cnf.kid}return g},t.isAccessTokenEntity=function(e){return!!e&&e.hasOwnProperty("homeAccountId")&&e.hasOwnProperty("environment")&&e.hasOwnProperty("credentialType")&&e.hasOwnProperty("realm")&&e.hasOwnProperty("clientId")&&e.hasOwnProperty("secret")&&e.hasOwnProperty("target")&&(e.credentialType===N.ACCESS_TOKEN||e.credentialType===N.ACCESS_TOKEN_WITH_AUTH_SCHEME)},t}(Be),at=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return h(t,e),t.createRefreshTokenEntity=function(e,r,n,o,i,a){var s=new t;return s.clientId=o,s.credentialType=N.REFRESH_TOKEN,s.environment=r,s.homeAccountId=e,s.secret=n,s.oboAssertion=a,i&&(s.familyId=i),s},t.isRefreshTokenEntity=function(e){return!!e&&e.hasOwnProperty("homeAccountId")&&e.hasOwnProperty("environment")&&e.hasOwnProperty("credentialType")&&e.hasOwnProperty("clientId")&&e.hasOwnProperty("secret")&&e.credentialType===N.REFRESH_TOKEN},t}(Be),st=function(e,t,r,n,o){this.account=e||null,this.idToken=t||null,this.accessToken=r||null,this.refreshToken=n||null,this.appMetadata=o||null},ct=function(){function e(){}return e.setRequestState=function(t,r,n){var o=e.generateLibraryState(t,n);return de.isEmpty(r)?o:""+o+T.RESOURCE_DELIM+r},e.generateLibraryState=function(e,t){if(!e)throw he.createNoCryptoObjectError("generateLibraryState");var r={id:e.createNewGuid()};t&&(r.meta=t);var n=JSON.stringify(r);return e.base64Encode(n)},e.parseRequestState=function(e,t){if(!e)throw he.createNoCryptoObjectError("parseRequestState");if(de.isEmpty(t))throw he.createInvalidStateError(t,"Null, undefined or empty state");try{var r=t.split(T.RESOURCE_DELIM),n=r[0],o=r.length>1?r.slice(1).join(T.RESOURCE_DELIM):"",i=e.base64Decode(n),a=JSON.parse(i);return{userRequestState:de.isEmpty(o)?"":o,libraryState:a}}catch(e){throw he.createInvalidStateError(t,e)}},e}();!function(e){e.SW="sw",e.UHW="uhw"}(et||(et={}));var ut,lt=function(){function e(e){this.cryptoUtils=e}return e.prototype.generateCnf=function(e){return p(this,void 0,void 0,(function(){var t,r;return g(this,(function(n){switch(n.label){case 0:return[4,this.cryptoUtils.getPublicKeyThumbprint(e)];case 1:return t=n.sent(),r={kid:t,xms_ksl:et.SW},[2,this.cryptoUtils.base64Encode(JSON.stringify(r))]}}))}))},e.prototype.signPopToken=function(e,t){var r;return p(this,void 0,void 0,(function(){var n,o,i,a,s,c;return g(this,(function(u){switch(u.label){case 0:if(n=ze.extractTokenClaims(e,this.cryptoUtils),o=t.resourceRequestMethod,i=t.resourceRequestUri,a=t.shrClaims,s=i?new Ae(i):void 0,c=null==s?void 0:s.getUrlComponents(),!(null===(r=null==n?void 0:n.cnf)||void 0===r?void 0:r.kid))throw he.createTokenClaimsRequiredError();return[4,this.cryptoUtils.signJwt({at:e,ts:De.nowSeconds(),m:null==o?void 0:o.toUpperCase(),u:null==c?void 0:c.HostNameAndPort,nonce:this.cryptoUtils.createNewGuid(),p:null==c?void 0:c.AbsolutePath,q:(null==c?void 0:c.QueryString)?[[],c.QueryString]:void 0,client_claims:a||void 0},n.cnf.kid)];case 1:return[2,u.sent()]}}))}))},e}(),ht=function(){function e(){}return e.prototype.generateAppMetadataKey=function(){return e.generateAppMetadataCacheKey(this.environment,this.clientId)},e.generateAppMetadataCacheKey=function(e,t){return[L,e,t].join(O.CACHE_KEY_SEPARATOR).toLowerCase()},e.createAppMetadataEntity=function(t,r,n){var o=new e;return o.clientId=t,o.environment=r,n&&(o.familyId=n),o},e.isAppMetadataEntity=function(e,t){return!!t&&0===e.indexOf(L)&&t.hasOwnProperty("clientId")&&t.hasOwnProperty("environment")},e}(),dt=function(){function e(e,t){this.cache=e,this.hasChanged=t}return Object.defineProperty(e.prototype,"cacheHasChanged",{get:function(){return this.hasChanged},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"tokenCache",{get:function(){return this.cache},enumerable:!1,configurable:!0}),e}(),pt=function(){function e(e,t,r,n,o,i){this.clientId=e,this.cacheStorage=t,this.cryptoObj=r,this.logger=n,this.serializableCache=o,this.persistencePlugin=i}return e.prototype.validateServerAuthorizationCodeResponse=function(e,t,r){if(!e.state||!t)throw e.state?he.createStateNotFoundError("Cached State"):he.createStateNotFoundError("Server State");if(decodeURIComponent(e.state)!==decodeURIComponent(t))throw he.createStateMismatchError();if(e.error||e.error_description||e.suberror){if(Ne.isInteractionRequiredError(e.error,e.error_description,e.suberror))throw new Ne(e.error||T.EMPTY_STRING,e.error_description,e.suberror);throw new _e(e.error||T.EMPTY_STRING,e.error_description,e.suberror)}e.client_info&&Pe(e.client_info,r)},e.prototype.validateTokenResponse=function(e){if(e.error||e.error_description||e.suberror){if(Ne.isInteractionRequiredError(e.error,e.error_description,e.suberror))throw new Ne(e.error,e.error_description,e.suberror);var t=e.error_codes+" - ["+e.timestamp+"]: "+e.error_description+" - Correlation ID: "+e.correlation_id+" - Trace ID: "+e.trace_id;throw new _e(e.error,t,e.suberror)}},e.prototype.handleServerTokenResponse=function(t,r,n,o,i,a,s){return p(this,void 0,void 0,(function(){var c,u,l,h,d;return g(this,(function(p){switch(p.label){case 0:if(t.id_token&&(c=new ze(t.id_token||T.EMPTY_STRING,this.cryptoObj),i&&!de.isEmpty(i.nonce)&&c.claims.nonce!==i.nonce))throw he.createNonceMismatchError();this.homeAccountIdentifier=Me.generateHomeAccountId(t.client_info||T.EMPTY_STRING,r.authorityType,this.logger,this.cryptoObj,c),i&&i.state&&(u=ct.parseRequestState(this.cryptoObj,i.state)),l=this.generateCacheRecord(t,r,n,c,o.scopes,a,i),p.label=1;case 1:return p.trys.push([1,,4,7]),this.persistencePlugin&&this.serializableCache?(this.logger.verbose("Persistence enabled, calling beforeCacheAccess"),h=new dt(this.serializableCache,!0),[4,this.persistencePlugin.beforeCacheAccess(h)]):[3,3];case 2:p.sent(),p.label=3;case 3:return s&&l.account&&(d=l.account.generateAccountKey(),!this.cacheStorage.getAccount(d))?(this.logger.warning("Account used to refresh tokens not in persistence, refreshed tokens will not be stored in the cache"),[2,e.generateAuthenticationResult(this.cryptoObj,r,l,!1,o,c,u)]):(this.cacheStorage.saveCacheRecord(l),[3,7]);case 4:return this.persistencePlugin&&this.serializableCache&&h?(this.logger.verbose("Persistence enabled, calling afterCacheAccess"),[4,this.persistencePlugin.afterCacheAccess(h)]):[3,6];case 5:p.sent(),p.label=6;case 6:return[7];case 7:return[2,e.generateAuthenticationResult(this.cryptoObj,r,l,!1,o,c,u)]}}))}))},e.prototype.generateCacheRecord=function(e,t,r,n,o,i,a){var s,c,u=t.getPreferredCache();if(de.isEmpty(u))throw he.createInvalidCacheEnvironmentError();!de.isEmpty(e.id_token)&&n&&(s=ot.createIdTokenEntity(this.homeAccountIdentifier,u,e.id_token||T.EMPTY_STRING,this.clientId,n.claims.tid||T.EMPTY_STRING,i),c=this.generateAccountEntity(e,n,t,i,a));var l=null;if(!de.isEmpty(e.access_token)){var h=e.scope?je.fromString(e.scope):new je(o||[]),d=("string"==typeof e.expires_in?parseInt(e.expires_in,10):e.expires_in)||0,p=("string"==typeof e.ext_expires_in?parseInt(e.ext_expires_in,10):e.ext_expires_in)||0,g=("string"==typeof e.refresh_in?parseInt(e.refresh_in,10):e.refresh_in)||void 0,f=r+d,y=f+p,m=g&&g>0?r+g:void 0;l=it.createAccessTokenEntity(this.homeAccountIdentifier,u,e.access_token||T.EMPTY_STRING,this.clientId,n?n.claims.tid||T.EMPTY_STRING:t.tenant,h.printScopes(),f,y,this.cryptoObj,m,e.token_type,i)}var E=null;de.isEmpty(e.refresh_token)||(E=at.createRefreshTokenEntity(this.homeAccountIdentifier,u,e.refresh_token||T.EMPTY_STRING,this.clientId,e.foci,i));var v=null;return de.isEmpty(e.foci)||(v=ht.createAppMetadataEntity(this.clientId,u,e.foci)),new st(c,s,l,E,v)},e.prototype.generateAccountEntity=function(e,t,r,n,o){var i=r.authorityType,a=o?o.cloud_graph_host_name:"",s=o?o.msgraph_host:"";if(i===Te.Adfs)return this.logger.verbose("Authority type is ADFS, creating ADFS account"),Me.createGenericAccount(r,this.homeAccountIdentifier,t,n,a,s);if(de.isEmpty(e.client_info)&&"AAD"===r.protocolMode)throw he.createClientInfoEmptyError();return e.client_info?Me.createAccount(e.client_info,this.homeAccountIdentifier,r,t,n,a,s):Me.createGenericAccount(r,this.homeAccountIdentifier,t,n,a,s)},e.generateAuthenticationResult=function(e,t,r,n,o,i,a){var s,c,u;return p(this,void 0,void 0,(function(){var l,h,d,p,f,y,m;return g(this,(function(g){switch(g.label){case 0:return l="",h=[],d=null,f=T.EMPTY_STRING,r.accessToken?r.accessToken.tokenType!==H.POP?[3,2]:[4,new lt(e).signPopToken(r.accessToken.secret,o)]:[3,4];case 1:return l=g.sent(),[3,3];case 2:l=r.accessToken.secret,g.label=3;case 3:h=je.fromString(r.accessToken.target).asArray(),d=new Date(1e3*Number(r.accessToken.expiresOn)),p=new Date(1e3*Number(r.accessToken.extendedExpiresOn)),g.label=4;case 4:return r.appMetadata&&(f=r.appMetadata.familyId===q?q:T.EMPTY_STRING),y=(null==i?void 0:i.claims.oid)||(null==i?void 0:i.claims.sub)||T.EMPTY_STRING,m=(null==i?void 0:i.claims.tid)||T.EMPTY_STRING,[2,{authority:t.canonicalAuthority,uniqueId:y,tenantId:m,scopes:h,account:r.account?r.account.getAccountInfo():null,idToken:i?i.rawToken:T.EMPTY_STRING,idTokenClaims:i?i.claims:{},accessToken:l,fromCache:n,expiresOn:d,extExpiresOn:p,familyId:f,tokenType:(null===(s=r.accessToken)||void 0===s?void 0:s.tokenType)||T.EMPTY_STRING,state:a?a.userRequestState:T.EMPTY_STRING,cloudGraphHostName:(null===(c=r.account)||void 0===c?void 0:c.cloudGraphHostName)||T.EMPTY_STRING,msGraphHost:(null===(u=r.account)||void 0===u?void 0:u.msGraphHost)||T.EMPTY_STRING}]}}))}))},e}(),gt=function(e){function t(t){return e.call(this,t)||this}return h(t,e),t.prototype.getAuthCodeUrl=function(e){return p(this,void 0,void 0,(function(){var t;return g(this,(function(r){return t=this.createAuthCodeUrlQueryString(e),[2,Ae.appendQueryString(this.authority.authorizationEndpoint,t)]}))}))},t.prototype.acquireToken=function(e,t){return p(this,void 0,void 0,(function(){var r,n,o;return g(this,(function(i){switch(i.label){case 0:if(this.logger.info("in acquireToken call"),!e||de.isEmpty(e.code))throw he.createTokenRequestCannotBeMadeError();return r=De.nowSeconds(),[4,this.executeTokenRequest(this.authority,e)];case 1:return n=i.sent(),(o=new pt(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin)).validateTokenResponse(n.body),[4,o.handleServerTokenResponse(n.body,this.authority,r,e,t)];case 2:return[2,i.sent()]}}))}))},t.prototype.handleFragmentResponse=function(e,t){var r=new pt(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,null,null),n=new Ae(e),o=Ae.getDeserializedHash(n.getHash());if(r.validateServerAuthorizationCodeResponse(o,t,this.cryptoUtils),!o.code)throw he.createNoAuthCodeInServerResponseError();return d(d({},o),{code:o.code})},t.prototype.getLogoutUri=function(e){if(!e)throw Ie.createEmptyLogoutRequestError();e.account?this.cacheManager.removeAccount(Me.generateAccountCacheKey(e.account)):this.cacheManager.clear();var t=this.createLogoutUrlQueryString(e);return Ae.appendQueryString(this.authority.endSessionEndpoint,t)},t.prototype.executeTokenRequest=function(e,t){return p(this,void 0,void 0,(function(){var r,n,o,i,a,s,c;return g(this,(function(u){switch(u.label){case 0:return r={clientId:this.config.authOptions.clientId,authority:e.canonicalAuthority,scopes:t.scopes},[4,this.createTokenRequestBody(t)];case 1:if(n=u.sent(),o=this.createTokenQueryParameters(t),i=void 0,t.clientInfo)try{a=Pe(t.clientInfo,this.cryptoUtils),i={credential:""+a.uid+O.CLIENT_INFO_SEPARATOR+a.utid,type:qe.HOME_ACCOUNT_ID}}catch(e){this.logger.verbose("Could not parse client info for CCS Header: "+e)}return s=this.createTokenRequestHeaders(i||t.ccsCredential),c=de.isEmpty(o)?e.tokenEndpoint:e.tokenEndpoint+"?"+o,[2,this.executePostToTokenEndpoint(c,n,s,r)]}}))}))},t.prototype.createTokenQueryParameters=function(e){var t=new nt;return e.tokenQueryParameters&&t.addExtraQueryParameters(e.tokenQueryParameters),t.createQueryString()},t.prototype.createTokenRequestBody=function(e){return p(this,void 0,void 0,(function(){var t,r,n,o,i,a;return g(this,(function(s){switch(s.label){case 0:return(t=new nt).addClientId(this.config.authOptions.clientId),t.addRedirectUri(e.redirectUri),t.addScopes(e.scopes),t.addAuthorizationCode(e.code),t.addLibraryInfo(this.config.libraryInfo),t.addThrottling(),this.serverTelemetryManager&&t.addServerTelemetry(this.serverTelemetryManager),e.codeVerifier&&t.addCodeVerifier(e.codeVerifier),this.config.clientCredentials.clientSecret&&t.addClientSecret(this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion&&(r=this.config.clientCredentials.clientAssertion,t.addClientAssertion(r.assertion),t.addClientAssertionType(r.assertionType)),t.addGrantType(R.AUTHORIZATION_CODE_GRANT),t.addClientInfo(),e.authenticationScheme!==H.POP?[3,2]:[4,new lt(this.cryptoUtils).generateCnf(e)];case 1:n=s.sent(),t.addPopToken(n),s.label=2;case 2:if(o=e.correlationId||this.config.cryptoInterface.createNewGuid(),t.addCorrelationId(o),(!de.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&t.addClaims(e.claims,this.config.authOptions.clientCapabilities),i=void 0,e.clientInfo)try{a=Pe(e.clientInfo,this.cryptoUtils),i={credential:""+a.uid+O.CLIENT_INFO_SEPARATOR+a.utid,type:qe.HOME_ACCOUNT_ID}}catch(e){this.logger.verbose("Could not parse client info for CCS Header: "+e)}else i=e.ccsCredential;if(this.config.systemOptions.preventCorsPreflight&&i)switch(i.type){case qe.HOME_ACCOUNT_ID:try{a=ke(i.credential),t.addCcsOid(a)}catch(e){this.logger.verbose("Could not parse home account ID for CCS Header: "+e)}break;case qe.UPN:t.addCcsUpn(i.credential)}return[2,t.createQueryString()]}}))}))},t.prototype.createAuthCodeUrlQueryString=function(e){var t=new nt;t.addClientId(this.config.authOptions.clientId);var r=f(e.scopes||[],e.extraScopesToConsent||[]);t.addScopes(r),t.addRedirectUri(e.redirectUri);var n=e.correlationId||this.config.cryptoInterface.createNewGuid();if(t.addCorrelationId(n),t.addResponseMode(e.responseMode),t.addResponseTypeCode(),t.addLibraryInfo(this.config.libraryInfo),t.addClientInfo(),e.codeChallenge&&e.codeChallengeMethod&&t.addCodeChallengeParams(e.codeChallenge,e.codeChallengeMethod),e.prompt&&t.addPrompt(e.prompt),e.domainHint&&t.addDomainHint(e.domainHint),e.prompt!==A.SELECT_ACCOUNT)if(e.sid&&e.prompt===A.NONE)this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from request"),t.addSid(e.sid);else if(e.account){var o=this.extractAccountSid(e.account);if(o&&e.prompt===A.NONE){this.logger.verbose("createAuthCodeUrlQueryString: Prompt is none, adding sid from account"),t.addSid(o);try{var i=ke(e.account.homeAccountId);t.addCcsOid(i)}catch(e){this.logger.verbose("Could not parse home account ID for CCS Header: "+e)}}else if(e.loginHint)this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from request"),t.addLoginHint(e.loginHint),t.addCcsUpn(e.loginHint);else if(e.account.username){this.logger.verbose("createAuthCodeUrlQueryString: Adding login_hint from account"),t.addLoginHint(e.account.username);try{i=ke(e.account.homeAccountId),t.addCcsOid(i)}catch(e){this.logger.verbose("Could not parse home account ID for CCS Header: "+e)}}}else e.loginHint&&(this.logger.verbose("createAuthCodeUrlQueryString: No account, adding login_hint from request"),t.addLoginHint(e.loginHint),t.addCcsUpn(e.loginHint));else this.logger.verbose("createAuthCodeUrlQueryString: Prompt is select_account, ignoring account hints");return e.nonce&&t.addNonce(e.nonce),e.state&&t.addState(e.state),(!de.isEmpty(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&t.addClaims(e.claims,this.config.authOptions.clientCapabilities),e.extraQueryParameters&&t.addExtraQueryParameters(e.extraQueryParameters),t.createQueryString()},t.prototype.createLogoutUrlQueryString=function(e){var t=new nt;return e.postLogoutRedirectUri&&t.addPostLogoutRedirectUri(e.postLogoutRedirectUri),e.correlationId&&t.addCorrelationId(e.correlationId),e.idTokenHint&&t.addIdTokenHint(e.idTokenHint),t.createQueryString()},t.prototype.extractAccountSid=function(e){return e.idTokenClaims&&e.idTokenClaims.sid||null},t}(tt),ft=function(e){function t(t){return e.call(this,t)||this}return h(t,e),t.prototype.acquireToken=function(e){return p(this,void 0,void 0,(function(){var t,r,n;return g(this,(function(o){switch(o.label){case 0:return t=De.nowSeconds(),[4,this.executeTokenRequest(e,this.authority)];case 1:return r=o.sent(),(n=new pt(this.config.authOptions.clientId,this.cacheManager,this.cryptoUtils,this.logger,this.config.serializableCache,this.config.persistencePlugin)).validateTokenResponse(r.body),[2,n.handleServerTokenResponse(r.body,this.authority,t,e,void 0,void 0,!0)]}}))}))},t.prototype.acquireTokenByRefreshToken=function(e){return p(this,void 0,void 0,(function(){var t,r;return g(this,(function(n){if(!e)throw Ie.createEmptyTokenRequestError();if(!e.account)throw he.createNoAccountInSilentRequestError();if(this.cacheManager.isAppMetadataFOCI(e.account.environment,this.config.authOptions.clientId))try{return[2,this.acquireTokenWithCachedRefreshToken(e,!0)]}catch(n){if(t=n instanceof he&&n.errorCode===ue,r=n instanceof _e&&"invalid_grant"===n.errorCode&&"client_mismatch"===n.subError,t||r)return[2,this.acquireTokenWithCachedRefreshToken(e,!1)];throw n}return[2,this.acquireTokenWithCachedRefreshToken(e,!1)]}))}))},t.prototype.acquireTokenWithCachedRefreshToken=function(e,t){return p(this,void 0,void 0,(function(){var r,n;return g(this,(function(o){if(!(r=this.cacheManager.readRefreshTokenFromCache(this.config.authOptions.clientId,e.account,t)))throw he.createNoTokensFoundError();return n=d(d({},e),{refreshToken:r.secret,authenticationScheme:e.authenticationScheme||H.BEARER,ccsCredential:{credential:e.account.homeAccountId,type:qe.HOME_ACCOUNT_ID}}),[2,this.acquireToken(n)]}))}))},t.prototype.executeTokenRequest=function(e,t){return p(this,void 0,void 0,(function(){var r,n,o,i,a;return g(this,(function(s){switch(s.label){case 0:return[4,this.createTokenRequestBody(e)];case 1:return r=s.sent(),n=this.createTokenQueryParameters(e),o=this.createTokenRequestHeaders(e.ccsCredential),i={clientId:this.config.authOptions.clientId,authority:t.canonicalAuthority,scopes:e.scopes},a=Ae.appendQueryString(t.tokenEndpoint,n),[2,this.executePostToTokenEndpoint(a,r,o,i)]}}))}))},t.prototype.createTokenQueryParameters=function(e){var t=new nt;return e.tokenQueryParameters&&t.addExtraQueryParameters(e.tokenQueryParameters),t.createQueryString()},t.prototype.createTokenRequestBody=function(e){return p(this,void 0,void 0,(function(){var t,r,n,o,i,a,s;return g(this,(function(c){switch(c.label){case 0:return(t=new nt).addClientId(this.config.authOptions.clientId),t.addScopes(e.scopes),t.addGrantType(R.REFRESH_TOKEN_GRANT),t.addClientInfo(),t.addLibraryInfo(this.config.libraryInfo),t.addThrottling(),this.serverTelemetryManager&&t.addServerTelemetry(this.serverTelemetryManager),r=e.correlationId||this.config.cryptoInterface.createNewGuid(),t.addCorrelationId(r),t.addRefreshToken(e.refreshToken),this.config.clientCredentials.clientSecret&&t.addClientSecret(this.config.clientCredentials.clientSecret),this.config.clientCredentials.clientAssertion&&(n=this.config.clientCredentials.clientAssertion,t.addClientAssertion(n.assertion),t.addClientAssertionType(n.assertionType)),e.authenticationScheme!==H.POP?[3,2]:(o=new lt(this.cryptoUtils),a=(i=t).addPopToken,[4,o.generateCnf(e)]);case 1:a.apply(i,[c.sent()]),c.label=2;case 2:if((!de.isEmptyObj(e.claims)||this.config.authOptions.clientCapabilities&&this.config.authOptions.clientCapabilities.length>0)&&t.addClaims(e.claims,this.config.authOptions.clientCapabilities),this.config.systemOptions.preventCorsPreflight&&e.ccsCredential)switch(e.ccsCredential.type){case qe.HOME_ACCOUNT_ID:try{s=ke(e.ccsCredential.credential),t.addCcsOid(s)}catch(e){this.logger.verbose("Could not parse home account ID for CCS Header: "+e)}break;case qe.UPN:t.addCcsUpn(e.ccsCredential.credential)}return[2,t.createQueryString()]}}))}))},t}(tt),yt=function(e){function t(t){return e.call(this,t)||this}return h(t,e),t.prototype.acquireToken=function(e){return p(this,void 0,void 0,(function(){var t;return g(this,(function(r){switch(r.label){case 0:return r.trys.push([0,2,,3]),[4,this.acquireCachedToken(e)];case 1:return[2,r.sent()];case 2:if((t=r.sent())instanceof he&&t.errorCode===le)return[2,new ft(this.config).acquireTokenByRefreshToken(e)];throw t;case 3:return[2]}}))}))},t.prototype.acquireCachedToken=function(e){var t,r,n,o;return p(this,void 0,void 0,(function(){var i,a,s,c;return g(this,(function(u){switch(u.label){case 0:if(!e)throw Ie.createEmptyTokenRequestError();if(!e.account)throw he.createNoAccountInSilentRequestError();if(i=new je(e.scopes||[]),a=e.authority||this.authority.getPreferredCache(),s=e.authenticationScheme||H.BEARER,c=this.cacheManager.readCacheRecord(e.account,this.config.authOptions.clientId,i,a,s),e.forceRefresh)throw null===(t=this.serverTelemetryManager)||void 0===t||t.setCacheOutcome(j.FORCE_REFRESH),he.createRefreshRequiredError();if(!c.accessToken)throw null===(r=this.serverTelemetryManager)||void 0===r||r.setCacheOutcome(j.NO_CACHED_ACCESS_TOKEN),he.createRefreshRequiredError();if(De.wasClockTurnedBack(c.accessToken.cachedAt)||De.isTokenExpired(c.accessToken.expiresOn,this.config.systemOptions.tokenRenewalOffsetSeconds))throw null===(n=this.serverTelemetryManager)||void 0===n||n.setCacheOutcome(j.CACHED_ACCESS_TOKEN_EXPIRED),he.createRefreshRequiredError();if(c.accessToken.refreshOn&&De.isTokenExpired(c.accessToken.refreshOn,0))throw null===(o=this.serverTelemetryManager)||void 0===o||o.setCacheOutcome(j.REFRESH_CACHED_ACCESS_TOKEN),he.createRefreshRequiredError();if(!de.isEmptyObj(e.claims))throw he.createRefreshRequiredError();return this.config.serverTelemetryManager&&this.config.serverTelemetryManager.incrementCacheHits(),[4,this.generateResultFromCacheRecord(c,e)];case 1:return[2,u.sent()]}}))}))},t.prototype.generateResultFromCacheRecord=function(e,t){return p(this,void 0,void 0,(function(){var r;return g(this,(function(n){switch(n.label){case 0:return e.idToken&&(r=new ze(e.idToken.secret,this.config.cryptoInterface)),[4,pt.generateAuthenticationResult(this.cryptoUtils,this.authority,e,!0,t,r)];case 1:return[2,n.sent()]}}))}))},t}(tt),mt=function(){function e(){this.failedRequests=[],this.errors=[],this.cacheHits=0}return e.isServerTelemetryEntity=function(e,t){var r=0===e.indexOf(F.CACHE_KEY),n=!0;return t&&(n=t.hasOwnProperty("failedRequests")&&t.hasOwnProperty("errors")&&t.hasOwnProperty("cacheHits")),r&&n},e}(),Et=function(){function e(e,t){this.cacheOutcome=j.NO_CACHE_HIT,this.cacheManager=t,this.apiId=e.apiId,this.correlationId=e.correlationId,this.wrapperSKU=e.wrapperSKU||T.EMPTY_STRING,this.wrapperVer=e.wrapperVer||T.EMPTY_STRING,this.telemetryCacheKey=F.CACHE_KEY+O.CACHE_KEY_SEPARATOR+e.clientId}return e.prototype.generateCurrentRequestHeaderValue=function(){var e=""+this.apiId+F.VALUE_SEPARATOR+this.cacheOutcome,t=[this.wrapperSKU,this.wrapperVer].join(F.VALUE_SEPARATOR),r=[e,this.getRegionDiscoveryFields()].join(F.VALUE_SEPARATOR);return[F.SCHEMA_VERSION,r,t].join(F.CATEGORY_SEPARATOR)},e.prototype.generateLastRequestHeaderValue=function(){var t=this.getLastRequests(),r=e.maxErrorsToSend(t),n=t.failedRequests.slice(0,2*r).join(F.VALUE_SEPARATOR),o=t.errors.slice(0,r).join(F.VALUE_SEPARATOR),i=t.errors.length,a=[i,r=F.MAX_CACHED_ERRORS&&(t.failedRequests.shift(),t.failedRequests.shift(),t.errors.shift()),t.failedRequests.push(this.apiId,this.correlationId),de.isEmpty(e.subError)?de.isEmpty(e.errorCode)?e&&e.toString()?t.errors.push(e.toString()):t.errors.push(F.UNKNOWN_ERROR):t.errors.push(e.errorCode):t.errors.push(e.subError),this.cacheManager.setServerTelemetry(this.telemetryCacheKey,t)},e.prototype.incrementCacheHits=function(){var e=this.getLastRequests();return e.cacheHits+=1,this.cacheManager.setServerTelemetry(this.telemetryCacheKey,e),e.cacheHits},e.prototype.getLastRequests=function(){var e=new mt;return this.cacheManager.getServerTelemetry(this.telemetryCacheKey)||e},e.prototype.clearTelemetryCache=function(){var t=this.getLastRequests(),r=e.maxErrorsToSend(t);if(r===t.errors.length)this.cacheManager.removeItem(this.telemetryCacheKey);else{var n=new mt;n.failedRequests=t.failedRequests.slice(2*r),n.errors=t.errors.slice(r),this.cacheManager.setServerTelemetry(this.telemetryCacheKey,n)}},e.maxErrorsToSend=function(e){var t,r=0,n=0,o=e.errors.length;for(t=0;t=300)&&(t===Y.POST?i(ge.createPostRequestFailedError("Failed with status "+a.status,e)):i(ge.createGetRequestFailedError("Failed with status "+a.status,e)));try{var r=JSON.parse(a.responseText),s={headers:n.getHeaderDict(a),body:r,status:a.status};o(s)}catch(t){i(ge.createFailedToParseNetworkResponseError(e))}},a.onerror=function(){window.navigator.onLine?t===Y.POST?i(ge.createPostRequestFailedError("Failed with status "+a.status,e)):i(ge.createGetRequestFailedError("Failed with status "+a.status,e)):i(ge.createNoNetworkConnectivityError())},t===Y.POST&&r&&r.body)a.send(r.body);else{if(t!==Y.GET)throw ge.createHttpMethodNotImplementedError(t);a.send()}}))},e.prototype.setXhrHeaders=function(e,t){if(t&&t.headers){var r=t.headers;Object.keys(r).forEach((function(t){e.setRequestHeader(t,r[t])}))}},e.prototype.getHeaderDict=function(e){var t=e.getAllResponseHeaders().trim().split(/[\r\n]+/),r={};return t.forEach((function(e){var t=e.split(": "),n=t.shift(),o=t.join(": ");n&&o&&(r[n]=o)})),r},e}(),Ot=function(){function e(){}return e.clearHash=function(e){e.location.hash=T.EMPTY_STRING,"function"==typeof e.history.replaceState&&e.history.replaceState(null,T.EMPTY_STRING,""+e.location.origin+e.location.pathname+e.location.search)},e.replaceHash=function(e){var t=e.split("#");t.shift(),window.location.hash=t.length>0?t.join("#"):""},e.isInIframe=function(){return window.parent!==window},e.isInPopup=function(){return"undefined"!=typeof window&&!!window.opener&&window.opener!==window&&"string"==typeof window.name&&0===window.name.indexOf("msal.")},e.getCurrentUri=function(){return window.location.href.split("?")[0].split("#")[0]},e.getHomepage=function(){var e=new Ae(window.location.href).getUrlComponents();return e.Protocol+"//"+e.HostNameAndPort+"/"},e.getBrowserNetworkClient=function(){return window.fetch&&window.Headers?new Rt:new bt},e.blockReloadInHiddenIframes=function(){if(Ae.hashContainsKnownProperties(window.location.hash)&&e.isInIframe())throw ge.createBlockReloadInHiddenIframeError()},e.blockRedirectInIframe=function(t,r){var n=e.isInIframe();if(t===V.Redirect&&n&&!r)throw ge.createRedirectInIframeError(n)},e.blockAcquireTokenInPopups=function(){if(e.isInPopup())throw ge.createBlockAcquireTokenInPopupsError()},e.blockNonBrowserEnvironment=function(e){if(!e)throw ge.createNonBrowserEnvironmentError()},e.detectIEOrEdge=function(){var e=window.navigator.userAgent,t=e.indexOf("MSIE "),r=e.indexOf("Trident/"),n=e.indexOf("Edge/");return t>0||r>0||n>0},e}(),Nt=function(){function e(){}return e.prototype.navigateInternal=function(t,r){return e.defaultNavigateWindow(t,r)},e.prototype.navigateExternal=function(t,r){return e.defaultNavigateWindow(t,r)},e.defaultNavigateWindow=function(e,t){return t.noHistory?window.location.replace(e):window.location.assign(e),new Promise((function(e){setTimeout((function(){e(!0)}),t.timeout)}))},e}(),Pt=function(){function e(e,t,r,n){this.authModule=e,this.browserStorage=t,this.authCodeRequest=r,this.browserRequestLogger=n}return e.prototype.handleCodeResponse=function(e,t,r,n){return a(this,void 0,void 0,(function(){var o,i,a,c,u,l,h;return s(this,(function(s){switch(s.label){case 0:if(this.browserRequestLogger.verbose("InteractionHandler.handleCodeResponse called"),de.isEmpty(e))throw ge.createEmptyHashError(e);if(o=this.browserStorage.generateStateKey(t),!(i=this.browserStorage.getTemporaryCache(o)))throw he.createStateNotFoundError("Cached State");return a=this.authModule.handleFragmentResponse(e,i),c=this.browserStorage.generateNonceKey(i),u=this.browserStorage.getTemporaryCache(c),this.authCodeRequest.code=a.code,a.cloud_instance_host_name?[4,this.updateTokenEndpointAuthority(a.cloud_instance_host_name,r,n)]:[3,2];case 1:s.sent(),s.label=2;case 2:return a.nonce=u||void 0,a.state=i,a.client_info?this.authCodeRequest.clientInfo=a.client_info:(l=this.checkCcsCredentials())&&(this.authCodeRequest.ccsCredential=l),[4,this.authModule.acquireToken(this.authCodeRequest,a)];case 3:return h=s.sent(),this.browserStorage.cleanRequestByState(t),[2,h]}}))}))},e.prototype.updateTokenEndpointAuthority=function(e,t,r){return a(this,void 0,void 0,(function(){var n,o;return s(this,(function(i){switch(i.label){case 0:return n="https://"+e+"/"+t.tenant+"/",[4,xe.createDiscoveredInstance(n,r,this.browserStorage,t.options)];case 1:return o=i.sent(),this.authModule.updateAuthority(o),[2]}}))}))},e.prototype.checkCcsCredentials=function(){var e=this.browserStorage.getTemporaryCache(W.CCS_CREDENTIAL,!0);if(e)try{return JSON.parse(e)}catch(t){this.authModule.logger.error("Cache credential could not be parsed"),this.authModule.logger.errorPii("Cache credential could not be parsed: "+e)}return null},e}(),kt=function(e){function t(t,r,n,o,i){var a=e.call(this,t,r,n,o)||this;return a.browserCrypto=i,a}return o(t,e),t.prototype.initiateAuthRequest=function(e,t){return a(this,void 0,void 0,(function(){var r;return s(this,(function(n){switch(n.label){case 0:return this.browserRequestLogger.verbose("RedirectHandler.initiateAuthRequest called"),de.isEmpty(e)?[3,7]:(t.redirectStartPage&&(this.browserRequestLogger.verbose("RedirectHandler.initiateAuthRequest: redirectStartPage set, caching start page"),this.browserStorage.setTemporaryCache(W.ORIGIN_URI,t.redirectStartPage,!0)),this.browserStorage.setTemporaryCache(W.INTERACTION_STATUS_KEY,X,!0),this.browserStorage.cacheCodeRequest(this.authCodeRequest,this.browserCrypto),this.browserRequestLogger.infoPii("RedirectHandler.initiateAuthRequest: Navigate to: "+e),r={apiId:Q.acquireTokenRedirect,timeout:t.redirectTimeout,noHistory:!1},"function"!=typeof t.onRedirectNavigate?[3,4]:(this.browserRequestLogger.verbose("RedirectHandler.initiateAuthRequest: Invoking onRedirectNavigate callback"),!1===t.onRedirectNavigate(e)?[3,2]:(this.browserRequestLogger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate did not return false, navigating"),[4,t.navigationClient.navigateExternal(e,r)])));case 1:return n.sent(),[2];case 2:return this.browserRequestLogger.verbose("RedirectHandler.initiateAuthRequest: onRedirectNavigate returned false, stopping navigation"),[2];case 3:return[3,6];case 4:return this.browserRequestLogger.verbose("RedirectHandler.initiateAuthRequest: Navigating window to navigate url"),[4,t.navigationClient.navigateExternal(e,r)];case 5:return n.sent(),[2];case 6:return[3,8];case 7:throw this.browserRequestLogger.info("RedirectHandler.initiateAuthRequest: Navigate url is empty"),ge.createEmptyNavigationUriError();case 8:return[2]}}))}))},t.prototype.handleCodeResponse=function(e,t,r,n,o){return a(this,void 0,void 0,(function(){var i,a,c,u,l,h,d;return s(this,(function(s){switch(s.label){case 0:if(this.browserRequestLogger.verbose("RedirectHandler.handleCodeResponse called"),de.isEmpty(e))throw ge.createEmptyHashError(e);if(this.browserStorage.removeItem(this.browserStorage.generateCacheKey(W.INTERACTION_STATUS_KEY)),i=this.browserStorage.generateStateKey(t),!(a=this.browserStorage.getTemporaryCache(i)))throw he.createStateNotFoundError("Cached State");return c=this.authModule.handleFragmentResponse(e,a),u=this.browserStorage.generateNonceKey(a),l=this.browserStorage.getTemporaryCache(u),this.authCodeRequest.code=c.code,c.cloud_instance_host_name?[4,this.updateTokenEndpointAuthority(c.cloud_instance_host_name,r,n)]:[3,2];case 1:s.sent(),s.label=2;case 2:return c.nonce=l||void 0,c.state=a,c.client_info?this.authCodeRequest.clientInfo=c.client_info:(h=this.checkCcsCredentials())&&(this.authCodeRequest.ccsCredential=h),o&&Re.removeThrottle(this.browserStorage,o,this.authCodeRequest.authority,this.authCodeRequest.scopes),[4,this.authModule.acquireToken(this.authCodeRequest,c)];case 3:return d=s.sent(),this.browserStorage.cleanRequestByState(t),[2,d]}}))}))},t}(Pt),Ut=function(){function e(e,t){this.browserStorage=e,this.logger=t,this.unloadWindow=this.unloadWindow.bind(this)}return e.prototype.openPopup=function(t,r,n){try{var o=void 0;if(n?(o=n,this.logger.verbosePii("Navigating popup window to: "+t),o.location.assign(t)):void 0===n&&(this.logger.verbosePii("Opening popup window to: "+t),o=e.openSizedPopup(t,r)),!o)throw ge.createEmptyWindowCreatedError();return o.focus&&o.focus(),this.currentWindow=o,window.addEventListener("beforeunload",this.unloadWindow),o}catch(e){throw this.logger.error("error opening popup "+e.message),this.browserStorage.removeItem(this.browserStorage.generateCacheKey(W.INTERACTION_STATUS_KEY)),ge.createPopupWindowError(e.toString())}},e.openSizedPopup=function(e,t){var r=window.screenLeft?window.screenLeft:window.screenX,n=window.screenTop?window.screenTop:window.screenY,o=window.innerWidth||document.documentElement.clientWidth||document.body.clientWidth,i=window.innerHeight||document.documentElement.clientHeight||document.body.clientHeight,a=Math.max(0,o/2-241.5+r),s=Math.max(0,i/2-300+n);return window.open(e,t,"width=483, height=600, top="+s+", left="+a+", scrollbars=yes")},e.prototype.unloadWindow=function(e){this.browserStorage.cleanRequestByInteractionType(V.Popup),this.currentWindow&&this.currentWindow.close(),e.preventDefault()},e.prototype.cleanPopup=function(e){e&&e.close(),window.removeEventListener("beforeunload",this.unloadWindow),this.browserStorage.removeItem(this.browserStorage.generateCacheKey(W.INTERACTION_STATUS_KEY))},e.prototype.monitorPopupForSameOrigin=function(e){var t=this;return new Promise((function(r,n){var o=setInterval((function(){if(e.closed)return t.cleanPopup(),clearInterval(o),void n(ge.createUserCancelledError());var i=T.EMPTY_STRING;try{i=e.location.href}catch(e){}de.isEmpty(i)||"about:blank"===i||(clearInterval(o),r())}),50)}))},e.generatePopupName=function(e,t){return"msal."+e+"."+t.scopes.join("-")+"."+t.authority+"."+t.correlationId},e.generateLogoutPopupName=function(e,t){return"msal."+e+"."+(t.account&&t.account.homeAccountId)+"."+t.correlationId},e}(),Mt=function(e){function t(t,r,n,o){var i=e.call(this,t,r,n,o)||this;return i.popupUtils=new Ut(r,o),i}return o(t,e),t.prototype.initiateAuthRequest=function(e,t){if(de.isEmpty(e))throw this.browserRequestLogger.error("Navigate url is empty"),ge.createEmptyNavigationUriError();return this.browserStorage.setTemporaryCache(W.INTERACTION_STATUS_KEY,X,!0),this.browserRequestLogger.infoPii("Navigate to: "+e),this.popupUtils.openPopup(e,t.popupName,t.popup)},t.prototype.monitorPopupForHash=function(e){var t=this;return this.popupUtils.monitorPopupForSameOrigin(e).then((function(){var r=e.location.hash;if(Ot.clearHash(e),t.popupUtils.cleanPopup(e),!r)throw ge.createEmptyHashError(e.location.href);if(Ae.hashContainsKnownProperties(r))return r;throw ge.createHashDoesNotContainKnownPropertiesError()}))},t}(Pt),Lt=function(e){function t(t,r,n,o,i){var a=e.call(this,t,r,n,o)||this;return a.navigateFrameWait=i,a}return o(t,e),t.prototype.initiateAuthRequest=function(e){return a(this,void 0,void 0,(function(){var t;return s(this,(function(r){switch(r.label){case 0:if(de.isEmpty(e))throw this.browserRequestLogger.info("Navigate url is empty"),ge.createEmptyNavigationUriError();return this.navigateFrameWait?[4,this.loadFrame(e)]:[3,2];case 1:return t=r.sent(),[3,3];case 2:t=this.loadFrameSync(e),r.label=3;case 3:return[2,t]}}))}))},t.prototype.monitorIframeForHash=function(e,t){var r=this;return new Promise((function(n,o){t<6e3&&r.browserRequestLogger.warning("system.loadFrameTimeout or system.iframeHashTimeout set to lower ("+t+"ms) than the default (6000ms). This may result in timeouts.");var i=window.performance.now()+t,a=setInterval((function(){if(window.performance.now()>i)return r.removeHiddenIframe(e),clearInterval(a),void o(ge.createMonitorIframeTimeoutError());var t=T.EMPTY_STRING,s=e.contentWindow;try{t=s?s.location.href:T.EMPTY_STRING}catch(e){}if(!de.isEmpty(t)){var c=s?s.location.hash:T.EMPTY_STRING;return Ae.hashContainsKnownProperties(c)?(r.removeHiddenIframe(e),clearInterval(a),void n(c)):void 0}}),50)}))},t.prototype.loadFrame=function(e){var t=this;return new Promise((function(r,n){var o=t.createHiddenIframe();setTimeout((function(){o?(o.src=e,r(o)):n("Unable to load iframe")}),t.navigateFrameWait)}))},t.prototype.loadFrameSync=function(e){var t=this.createHiddenIframe();return t.src=e,t},t.prototype.createHiddenIframe=function(){var e=document.createElement("iframe");return e.style.visibility="hidden",e.style.position="absolute",e.style.width=e.style.height="0",e.style.border="0",e.setAttribute("sandbox","allow-scripts allow-same-origin allow-forms"),document.getElementsByTagName("body")[0].appendChild(e),e},t.prototype.removeHiddenIframe=function(e){document.body===e.parentNode&&document.body.removeChild(e)},t}(Pt),qt="@azure/msal-browser",Dt="2.16.1";!function(e){e.LOGIN_START="msal:loginStart",e.LOGIN_SUCCESS="msal:loginSuccess",e.LOGIN_FAILURE="msal:loginFailure",e.ACQUIRE_TOKEN_START="msal:acquireTokenStart",e.ACQUIRE_TOKEN_SUCCESS="msal:acquireTokenSuccess",e.ACQUIRE_TOKEN_FAILURE="msal:acquireTokenFailure",e.ACQUIRE_TOKEN_NETWORK_START="msal:acquireTokenFromNetworkStart",e.SSO_SILENT_START="msal:ssoSilentStart",e.SSO_SILENT_SUCCESS="msal:ssoSilentSuccess",e.SSO_SILENT_FAILURE="msal:ssoSilentFailure",e.HANDLE_REDIRECT_START="msal:handleRedirectStart",e.HANDLE_REDIRECT_END="msal:handleRedirectEnd",e.POPUP_OPENED="msal:popupOpened",e.LOGOUT_START="msal:logoutStart",e.LOGOUT_SUCCESS="msal:logoutSuccess",e.LOGOUT_FAILURE="msal:logoutFailure",e.LOGOUT_END="msal:logoutEnd"}(ut||(ut={}));var Ht=function(){function e(e,t){this.eventCallbacks=new Map,this.logger=e,this.browserCrypto=t}return e.prototype.addEventCallback=function(e){if("undefined"!=typeof window){var t=this.browserCrypto.createNewGuid();return this.eventCallbacks.set(t,e),this.logger.verbose("Event callback registered with id: "+t),t}return null},e.prototype.removeEventCallback=function(e){this.eventCallbacks.delete(e),this.logger.verbose("Event callback "+e+" removed.")},e.prototype.emitEvent=function(e,t,r,n){var o=this;if("undefined"!=typeof window){var i={eventType:e,interactionType:t||null,payload:r||null,error:n||null,timestamp:Date.now()};this.logger.info("Emitting event: "+e),this.eventCallbacks.forEach((function(t,r){o.logger.verbose("Emitting event to callback "+r+": "+e),t.apply(null,[i])}))}},e}(),Ft=function(e){function t(t){var r=e.call(this,t)||this;return r.activeSilentTokenRequests=new Map,r}return o(t,e),t.prototype.loginRedirect=function(e){return a(this,void 0,void 0,(function(){return s(this,(function(t){return this.logger.verbose("loginRedirect called"),[2,this.acquireTokenRedirect(e||$)]}))}))},t.prototype.loginPopup=function(e){return this.logger.verbose("loginPopup called"),this.acquireTokenPopup(e||$)},t.prototype.acquireTokenSilent=function(e){return a(this,void 0,void 0,(function(){var t,r,n,o,i,a=this;return s(this,(function(s){if(this.preflightBrowserEnvironmentCheck(V.Silent),this.logger.verbose("acquireTokenSilent called",e.correlationId),!(t=e.account||this.getActiveAccount()))throw ge.createNoAccountError();return r={clientId:this.config.auth.clientId,authority:e.authority||"",scopes:e.scopes,homeAccountIdentifier:t.homeAccountId},n=JSON.stringify(r),void 0===(o=this.activeSilentTokenRequests.get(n))?(this.logger.verbose("acquireTokenSilent called for the first time, storing active request",e.correlationId),i=this.acquireTokenSilentAsync(e,t).then((function(e){return a.activeSilentTokenRequests.delete(n),e})).catch((function(e){throw a.activeSilentTokenRequests.delete(n),e})),this.activeSilentTokenRequests.set(n,i),[2,i]):(this.logger.verbose("acquireTokenSilent has been called previously, returning the result from the first call",e.correlationId),[2,o])}))}))},t.prototype.acquireTokenSilentAsync=function(e,t){return a(this,void 0,void 0,(function(){var r,n,o,a,c,u,l;return s(this,(function(s){switch(s.label){case 0:r=i(i(i({},e),this.initializeBaseRequest(e)),{account:t,forceRefresh:e.forceRefresh||!1}),n=this.logger.clone(qt,Dt,r.correlationId),this.eventHandler.emitEvent(ut.ACQUIRE_TOKEN_START,V.Silent,e),s.label=1;case 1:return s.trys.push([1,4,,9]),o=this.initializeServerTelemetryManager(Q.acquireTokenSilent_silentFlow,r.correlationId),[4,this.createSilentFlowClient(o,r.authority,r.correlationId)];case 2:return a=s.sent(),n.verbose("Silent auth client created"),[4,a.acquireCachedToken(r)];case 3:return c=s.sent(),this.eventHandler.emitEvent(ut.ACQUIRE_TOKEN_SUCCESS,V.Silent,c),[2,c];case 4:s.sent(),s.label=5;case 5:return s.trys.push([5,7,,8]),[4,this.acquireTokenByRefreshToken(r)];case 6:return u=s.sent(),this.eventHandler.emitEvent(ut.ACQUIRE_TOKEN_SUCCESS,V.Silent,u),[2,u];case 7:throw l=s.sent(),this.eventHandler.emitEvent(ut.ACQUIRE_TOKEN_FAILURE,V.Silent,null,l),l;case 8:return[3,9];case 9:return[2]}}))}))},t}(function(){function e(e){var t,r,n,o,a,s,c,u,l,h,d,p;this.isBrowserEnvironment="undefined"!=typeof window,this.config=(t=e,r=this.isBrowserEnvironment,n=t.auth,o=t.cache,a=t.system,s={clientId:"",authority:""+T.DEFAULT_AUTHORITY,knownAuthorities:[],cloudDiscoveryMetadata:"",authorityMetadata:"",redirectUri:"",postLogoutRedirectUri:"",navigateToLoginRequestUrl:!0,clientCapabilities:[],protocolMode:Ue.AAD},c={cacheLocation:z.SessionStorage,storeAuthStateInCookie:!1,secureCookies:!1},u={loggerCallback:function(){},logLevel:te.Info,piiLoggingEnabled:!1},l=i(i({},Qe),{loggerOptions:u,networkClient:r?Ot.getBrowserNetworkClient():_t,navigationClient:new Nt,loadFrameTimeout:0,windowHashTimeout:a&&a.loadFrameTimeout||6e4,iframeHashTimeout:a&&a.loadFrameTimeout||6e3,navigateFrameWait:r&&Ot.detectIEOrEdge()?500:0,redirectNavigationTimeout:3e4,asyncPopups:!1,allowRedirectInIframe:!1}),{auth:i(i({},s),n),cache:i(i({},c),o),system:i(i({},l),a)}),this.logger=new Se(this.config.system.loggerOptions,qt,Dt),this.networkClient=this.config.system.networkClient,this.navigationClient=this.config.system.navigationClient,this.redirectResponse=new Map,this.browserCrypto=this.isBrowserEnvironment?new Ce:we,this.eventHandler=new Ht(this.logger,this.browserCrypto),this.browserStorage=this.isBrowserEnvironment?new At(this.config.auth.clientId,this.config.cache,this.browserCrypto,this.logger):(h=this.config.auth.clientId,d=this.logger,p={cacheLocation:z.MemoryStorage,storeAuthStateInCookie:!1,secureCookies:!1},new At(h,p,we,d))}return e.prototype.handleRedirectPromise=function(e){return a(this,void 0,void 0,(function(){var t,r,n,o=this;return s(this,(function(i){return this.eventHandler.emitEvent(ut.HANDLE_REDIRECT_START,V.Redirect),this.logger.verbose("handleRedirectPromise called"),t=this.getAllAccounts(),this.isBrowserEnvironment?(r=e||T.EMPTY_STRING,void 0===(n=this.redirectResponse.get(r))?(this.logger.verbose("handleRedirectPromise has been called for the first time, storing the promise"),n=this.handleRedirectResponse(e).then((function(e){return e&&(t.length0?o.eventHandler.emitEvent(ut.ACQUIRE_TOKEN_FAILURE,V.Redirect,null,e):o.eventHandler.emitEvent(ut.LOGIN_FAILURE,V.Redirect,null,e),o.eventHandler.emitEvent(ut.HANDLE_REDIRECT_END,V.Redirect),e})),this.redirectResponse.set(r,n)):this.logger.verbose("handleRedirectPromise has been called previously, returning the result from the first call"),[2,n]):(this.logger.verbose("handleRedirectPromise returns null, not browser environment"),[2,null])}))}))},e.prototype.handleRedirectResponse=function(e){return a(this,void 0,void 0,(function(){var t,r,n,o,i,a,c,u,l;return s(this,(function(s){switch(s.label){case 0:if(!this.interactionInProgress())return this.logger.info("handleRedirectPromise called but there is no interaction in progress, returning null."),[2,null];if(!(t=this.getRedirectResponseHash(e||window.location.hash)))return this.logger.info("handleRedirectPromise did not detect a response hash as a result of a redirect. Cleaning temporary cache."),this.browserStorage.cleanRequestByInteractionType(V.Redirect),[2,null];try{r=this.validateAndExtractStateFromHash(t,V.Redirect),Ot.clearHash(window),this.logger.verbose("State extracted from hash")}catch(e){return this.logger.info("handleRedirectPromise was unable to extract state due to: "+e),this.browserStorage.cleanRequestByInteractionType(V.Redirect),[2,null]}return n=this.browserStorage.getTemporaryCache(W.ORIGIN_URI,!0)||"",o=Ae.removeHashFromUrl(n),i=Ae.removeHashFromUrl(window.location.href),o===i&&this.config.auth.navigateToLoginRequestUrl?(this.logger.verbose("Current page is loginRequestUrl, handling hash"),[4,this.handleHash(t,r)]):[3,2];case 1:return a=s.sent(),n.indexOf("#")>-1&&Ot.replaceHash(n),[2,a];case 2:return this.config.auth.navigateToLoginRequestUrl?[3,3]:(this.logger.verbose("NavigateToLoginRequestUrl set to false, handling hash"),[2,this.handleHash(t,r)]);case 3:return Ot.isInIframe()?[3,8]:(this.browserStorage.setTemporaryCache(W.URL_HASH,t,!0),c={apiId:Q.handleRedirectPromise,timeout:this.config.system.redirectNavigationTimeout,noHistory:!0},u=!0,n&&"null"!==n?[3,5]:(l=Ot.getHomepage(),this.browserStorage.setTemporaryCache(W.ORIGIN_URI,l,!0),this.logger.warning("Unable to get valid login request url from cache, redirecting to home page"),[4,this.navigationClient.navigateInternal(l,c)]));case 4:return u=s.sent(),[3,7];case 5:return this.logger.verbose("Navigating to loginRequestUrl: "+n),[4,this.navigationClient.navigateInternal(n,c)];case 6:u=s.sent(),s.label=7;case 7:if(!u)return[2,this.handleHash(t,r)];s.label=8;case 8:return[2,null]}}))}))},e.prototype.getRedirectResponseHash=function(e){this.logger.verbose("getRedirectResponseHash called");var t=Ae.hashContainsKnownProperties(e),r=this.browserStorage.getTemporaryCache(W.URL_HASH,!0);return this.browserStorage.removeItem(this.browserStorage.generateCacheKey(W.URL_HASH)),t?(this.logger.verbose("Hash contains known properties, returning response hash"),e):(this.logger.verbose("Hash does not contain known properties, returning cached hash"),r)},e.prototype.validateAndExtractStateFromHash=function(e,t,r){this.logger.verbose("validateAndExtractStateFromHash called",r);var n=Ae.getDeserializedHash(e);if(!n.state)throw ge.createHashDoesNotContainStateError();var o=It.extractBrowserRequestState(this.browserCrypto,n.state);if(!o)throw ge.createUnableToParseStateError();if(o.interactionType!==t)throw ge.createStateInteractionTypeMismatchError();return this.logger.verbose("Returning state from hash",r),n.state},e.prototype.handleHash=function(e,t){return a(this,void 0,void 0,(function(){var r,n,o,i,a,c;return s(this,(function(s){switch(s.label){case 0:r=this.browserStorage.getCachedRequest(t,this.browserCrypto),(n=this.logger.clone(qt,Dt,r.correlationId)).verbose("handleHash called, retrieved cached request"),o=this.initializeServerTelemetryManager(Q.handleRedirectPromise,r.correlationId),s.label=1;case 1:if(s.trys.push([1,4,,5]),!(i=this.browserStorage.getCachedAuthority(t)))throw ge.createNoCachedAuthorityError();return[4,this.createAuthCodeClient(o,i,r.correlationId)];case 2:return a=s.sent(),n.verbose("Auth code client created"),[4,new kt(a,this.browserStorage,r,n,this.browserCrypto).handleCodeResponse(e,t,a.authority,this.networkClient,this.config.auth.clientId)];case 3:return[2,s.sent()];case 4:throw c=s.sent(),o.cacheFailedRequest(c),this.browserStorage.cleanRequestByInteractionType(V.Redirect),c;case 5:return[2]}}))}))},e.prototype.acquireTokenRedirect=function(e){return a(this,void 0,void 0,(function(){var t,r,n,o,i,a,c,u,l,h;return s(this,(function(s){switch(s.label){case 0:this.preflightBrowserEnvironmentCheck(V.Redirect),this.logger.verbose("acquireTokenRedirect called"),(t=this.getAllAccounts().length>0)?this.eventHandler.emitEvent(ut.ACQUIRE_TOKEN_START,V.Redirect,e):this.eventHandler.emitEvent(ut.LOGIN_START,V.Redirect,e),r=this.preflightInteractiveRequest(e,V.Redirect),n=this.logger.clone(qt,Dt,r.correlationId),o=this.initializeServerTelemetryManager(Q.acquireTokenRedirect,r.correlationId),s.label=1;case 1:return s.trys.push([1,5,,6]),[4,this.initializeAuthorizationCodeRequest(r)];case 2:return i=s.sent(),[4,this.createAuthCodeClient(o,r.authority,r.correlationId)];case 3:return a=s.sent(),n.verbose("Auth code client created"),c=new kt(a,this.browserStorage,i,n,this.browserCrypto),[4,a.getAuthCodeUrl(r)];case 4:return u=s.sent(),l=this.getRedirectStartPage(e.redirectStartPage),n.verbosePii("Redirect start page: "+l),[2,c.initiateAuthRequest(u,{navigationClient:this.navigationClient,redirectTimeout:this.config.system.redirectNavigationTimeout,redirectStartPage:l,onRedirectNavigate:e.onRedirectNavigate})];case 5:throw h=s.sent(),t?this.eventHandler.emitEvent(ut.ACQUIRE_TOKEN_FAILURE,V.Redirect,null,h):this.eventHandler.emitEvent(ut.LOGIN_FAILURE,V.Redirect,null,h),o.cacheFailedRequest(h),this.browserStorage.cleanRequestByState(r.state),h;case 6:return[2]}}))}))},e.prototype.acquireTokenPopup=function(e){var t;try{this.preflightBrowserEnvironmentCheck(V.Popup),this.logger.verbose("acquireTokenPopup called",e.correlationId),t=this.preflightInteractiveRequest(e,V.Popup)}catch(e){return Promise.reject(e)}var r=Ut.generatePopupName(this.config.auth.clientId,t);if(this.config.system.asyncPopups)return this.logger.verbose("asyncPopups set to true, acquiring token",t.correlationId),this.acquireTokenPopupAsync(t,r);this.logger.verbose("asyncPopup set to false, opening popup before acquiring token",t.correlationId);var n=Ut.openSizedPopup("about:blank",r);return this.acquireTokenPopupAsync(t,r,n)},e.prototype.acquireTokenPopupAsync=function(e,t,r){return a(this,void 0,void 0,(function(){var n,o,i,a,c,u,l,h,d,p,g,f,y;return s(this,(function(s){switch(s.label){case 0:this.logger.verbose("acquireTokenPopupAsync called",e.correlationId),(n=this.getAllAccounts()).length>0?this.eventHandler.emitEvent(ut.ACQUIRE_TOKEN_START,V.Popup,e):this.eventHandler.emitEvent(ut.LOGIN_START,V.Popup,e),o=this.logger.clone(qt,Dt,e.correlationId),i=this.initializeServerTelemetryManager(Q.acquireTokenPopup,e.correlationId),s.label=1;case 1:return s.trys.push([1,7,,8]),[4,this.initializeAuthorizationCodeRequest(e)];case 2:return a=s.sent(),[4,this.createAuthCodeClient(i,e.authority,e.correlationId)];case 3:return c=s.sent(),o.verbose("Auth code client created"),[4,c.getAuthCodeUrl(e)];case 4:return u=s.sent(),l=new Mt(c,this.browserStorage,a,o),h={popup:r,popupName:t},d=l.initiateAuthRequest(u,h),this.eventHandler.emitEvent(ut.POPUP_OPENED,V.Popup,{popupWindow:d},null),[4,l.monitorPopupForHash(d)];case 5:return p=s.sent(),g=this.validateAndExtractStateFromHash(p,V.Popup,e.correlationId),Re.removeThrottle(this.browserStorage,this.config.auth.clientId,a.authority,a.scopes),[4,l.handleCodeResponse(p,g,c.authority,this.networkClient)];case 6:return f=s.sent(),n.length0?this.eventHandler.emitEvent(ut.ACQUIRE_TOKEN_FAILURE,V.Popup,null,y):this.eventHandler.emitEvent(ut.LOGIN_FAILURE,V.Popup,null,y),r&&r.close(),i.cacheFailedRequest(y),this.browserStorage.cleanRequestByState(e.state),y;case 8:return[2]}}))}))},e.prototype.ssoSilent=function(e){return a(this,void 0,void 0,(function(){var t,r;return s(this,(function(n){switch(n.label){case 0:this.preflightBrowserEnvironmentCheck(V.Silent),this.logger.verbose("ssoSilent called",e.correlationId),this.eventHandler.emitEvent(ut.SSO_SILENT_START,V.Silent,e),n.label=1;case 1:return n.trys.push([1,3,,4]),[4,this.acquireTokenByIframe(e,Q.ssoSilent)];case 2:return t=n.sent(),this.eventHandler.emitEvent(ut.SSO_SILENT_SUCCESS,V.Silent,t),[2,t];case 3:throw r=n.sent(),this.eventHandler.emitEvent(ut.SSO_SILENT_FAILURE,V.Silent,null,r),r;case 4:return[2]}}))}))},e.prototype.acquireTokenByIframe=function(e,t){return a(this,void 0,void 0,(function(){var r,n,o,a,c,u,l;return s(this,(function(s){switch(s.label){case 0:if(this.logger.verbose("acquireTokenByIframe called",e.correlationId),de.isEmpty(e.loginHint)&&de.isEmpty(e.sid)&&(!e.account||de.isEmpty(e.account.username)))throw ge.createSilentSSOInsufficientInfoError();if(e.prompt&&e.prompt!==A.NONE)throw ge.createSilentPromptValueError(e.prompt);r=this.initializeAuthorizationRequest(i(i({},e),{prompt:A.NONE}),V.Silent),n=this.logger.clone(qt,Dt,r.correlationId),o=this.initializeServerTelemetryManager(t,r.correlationId),s.label=1;case 1:return s.trys.push([1,6,,7]),[4,this.initializeAuthorizationCodeRequest(r)];case 2:return a=s.sent(),[4,this.createAuthCodeClient(o,r.authority,r.correlationId)];case 3:return c=s.sent(),n.verbose("Auth code client created"),[4,c.getAuthCodeUrl(r)];case 4:return u=s.sent(),[4,this.silentTokenHelper(u,a,c,n)];case 5:return[2,s.sent()];case 6:throw l=s.sent(),o.cacheFailedRequest(l),this.browserStorage.cleanRequestByState(r.state),l;case 7:return[2]}}))}))},e.prototype.acquireTokenByRefreshToken=function(e){return a(this,void 0,void 0,(function(){var t,r,n,o,a,c,u,l;return s(this,(function(s){switch(s.label){case 0:this.eventHandler.emitEvent(ut.ACQUIRE_TOKEN_NETWORK_START,V.Silent,e),Ot.blockReloadInHiddenIframes(),t=i(i({},e),this.initializeBaseRequest(e)),r=this.logger.clone(qt,Dt,t.correlationId),n=this.initializeServerTelemetryManager(Q.acquireTokenSilent_silentFlow,t.correlationId),s.label=1;case 1:return s.trys.push([1,4,,7]),[4,this.createRefreshTokenClient(n,t.authority,t.correlationId)];case 2:return o=s.sent(),r.verbose("Refresh token client created"),[4,o.acquireTokenByRefreshToken(t)];case 3:return[2,s.sent()];case 4:return a=s.sent(),n.cacheFailedRequest(a),c=a instanceof _e,u=a instanceof Ne,l="invalid_grant"===a.errorCode,c&&l&&!u?(r.verbose("Refresh token expired or invalid, attempting acquire token by iframe"),[4,this.acquireTokenByIframe(e,Q.acquireTokenSilent_authCode)]):[3,6];case 5:return[2,s.sent()];case 6:throw a;case 7:return[2]}}))}))},e.prototype.silentTokenHelper=function(e,t,r,n){return a(this,void 0,void 0,(function(){var o,i,a,c;return s(this,(function(s){switch(s.label){case 0:return[4,(o=new Lt(r,this.browserStorage,t,n,this.config.system.navigateFrameWait)).initiateAuthRequest(e)];case 1:return i=s.sent(),[4,o.monitorIframeForHash(i,this.config.system.iframeHashTimeout)];case 2:return a=s.sent(),c=this.validateAndExtractStateFromHash(a,V.Silent,t.correlationId),[2,o.handleCodeResponse(a,c,r.authority,this.networkClient)]}}))}))},e.prototype.logout=function(e){return a(this,void 0,void 0,(function(){return s(this,(function(t){return this.logger.warning("logout API is deprecated and will be removed in msal-browser v3.0.0. Use logoutRedirect instead."),[2,this.logoutRedirect(e)]}))}))},e.prototype.logoutRedirect=function(e){return a(this,void 0,void 0,(function(){var t,r,n,o,i,a,c;return s(this,(function(s){switch(s.label){case 0:this.preflightBrowserEnvironmentCheck(V.Redirect),this.logger.verbose("logoutRedirect called",null==e?void 0:e.correlationId),t=this.initializeLogoutRequest(e),r=this.logger.clone(qt,Dt,t.correlationId),n=this.initializeServerTelemetryManager(Q.logout,t.correlationId),s.label=1;case 1:return s.trys.push([1,9,,10]),this.eventHandler.emitEvent(ut.LOGOUT_START,V.Redirect,e),[4,this.createAuthCodeClient(n,e&&e.authority,null==t?void 0:t.correlationId)];case 2:return o=s.sent(),r.verbose("Auth code client created"),i=o.getLogoutUri(t),t.account&&!Me.accountInfoIsEqual(t.account,this.getActiveAccount(),!1)||(r.verbose("Setting active account to null"),this.setActiveAccount(null)),a={apiId:Q.logout,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},this.eventHandler.emitEvent(ut.LOGOUT_SUCCESS,V.Redirect,t),e&&"function"==typeof e.onRedirectNavigate?!1===e.onRedirectNavigate(i)?[3,4]:(r.verbose("Logout onRedirectNavigate did not return false, navigating"),[4,this.navigationClient.navigateExternal(i,a)]):[3,6];case 3:return s.sent(),[2];case 4:r.verbose("Logout onRedirectNavigate returned false, stopping navigation"),s.label=5;case 5:return[3,8];case 6:return[4,this.navigationClient.navigateExternal(i,a)];case 7:return s.sent(),[2];case 8:return[3,10];case 9:throw c=s.sent(),n.cacheFailedRequest(c),this.eventHandler.emitEvent(ut.LOGOUT_FAILURE,V.Redirect,null,c),c;case 10:return this.eventHandler.emitEvent(ut.LOGOUT_END,V.Redirect),[2]}}))}))},e.prototype.logoutPopup=function(e){var t;try{this.preflightBrowserEnvironmentCheck(V.Popup),this.logger.verbose("logoutPopup called",null==e?void 0:e.correlationId),t=this.initializeLogoutRequest(e)}catch(e){return Promise.reject(e)}var r,n=Ut.generateLogoutPopupName(this.config.auth.clientId,t);this.config.system.asyncPopups?this.logger.verbose("asyncPopups set to true",t.correlationId):(this.logger.verbose("asyncPopup set to false, opening popup",t.correlationId),r=Ut.openSizedPopup("about:blank",n));var o=e&&e.authority,i=e&&e.mainWindowRedirectUri;return this.logoutPopupAsync(t,n,o,r,i)},e.prototype.logoutPopupAsync=function(e,t,r,n,o){return a(this,void 0,void 0,(function(){var i,a,c,u,l,h,d,p,g,f;return s(this,(function(s){switch(s.label){case 0:this.logger.verbose("logoutPopupAsync called",e.correlationId),this.eventHandler.emitEvent(ut.LOGOUT_START,V.Popup,e),i=this.logger.clone(qt,Dt,e.correlationId),a=this.initializeServerTelemetryManager(Q.logoutPopup,e.correlationId),s.label=1;case 1:return s.trys.push([1,7,,8]),this.browserStorage.setTemporaryCache(W.INTERACTION_STATUS_KEY,X,!0),[4,this.createAuthCodeClient(a,r,e.correlationId)];case 2:c=s.sent(),i.verbose("Auth code client created"),u=c.getLogoutUri(e),e.account&&!Me.accountInfoIsEqual(e.account,this.getActiveAccount(),!1)||(i.verbose("Setting active account to null"),this.setActiveAccount(null)),this.eventHandler.emitEvent(ut.LOGOUT_SUCCESS,V.Popup,e),l=new Ut(this.browserStorage,this.logger),h=l.openPopup(u,t,n),this.eventHandler.emitEvent(ut.POPUP_OPENED,V.Popup,{popupWindow:h},null),s.label=3;case 3:return s.trys.push([3,5,,6]),[4,l.monitorPopupForSameOrigin(h)];case 4:return s.sent(),i.verbose("Popup successfully redirected to postLogoutRedirectUri"),[3,6];case 5:return d=s.sent(),i.verbose("Error occurred while monitoring popup for same origin. Session on server may remain active. Error: "+d),[3,6];case 6:return l.cleanPopup(h),o?(p={apiId:Q.logoutPopup,timeout:this.config.system.redirectNavigationTimeout,noHistory:!1},g=Ae.getAbsoluteUrl(o,Ot.getCurrentUri()),i.verbose("Redirecting main window to url specified in the request"),i.verbosePii("Redirecing main window to: "+g),this.navigationClient.navigateInternal(g,p)):i.verbose("No main window navigation requested"),[3,8];case 7:throw f=s.sent(),n&&n.close(),this.browserStorage.removeItem(this.browserStorage.generateCacheKey(W.INTERACTION_STATUS_KEY)),this.eventHandler.emitEvent(ut.LOGOUT_FAILURE,V.Popup,null,f),a.cacheFailedRequest(f),f;case 8:return this.eventHandler.emitEvent(ut.LOGOUT_END,V.Popup),[2]}}))}))},e.prototype.getAllAccounts=function(){return this.logger.verbose("getAllAccounts called"),this.isBrowserEnvironment?this.browserStorage.getAllAccounts():[]},e.prototype.getAccountByUsername=function(e){var t=this.getAllAccounts();return!de.isEmpty(e)&&t&&t.length?(this.logger.verbose("Account matching username found, returning"),this.logger.verbosePii("Returning signed-in accounts matching username: "+e),t.filter((function(t){return t.username.toLowerCase()===e.toLowerCase()}))[0]||null):(this.logger.verbose("getAccountByUsername: No matching account found, returning null"),null)},e.prototype.getAccountByHomeId=function(e){var t=this.getAllAccounts();return!de.isEmpty(e)&&t&&t.length?(this.logger.verbose("Account matching homeAccountId found, returning"),this.logger.verbosePii("Returning signed-in accounts matching homeAccountId: "+e),t.filter((function(t){return t.homeAccountId===e}))[0]||null):(this.logger.verbose("getAccountByHomeId: No matching account found, returning null"),null)},e.prototype.getAccountByLocalId=function(e){var t=this.getAllAccounts();return!de.isEmpty(e)&&t&&t.length?(this.logger.verbose("Account matching localAccountId found, returning"),this.logger.verbosePii("Returning signed-in accounts matching localAccountId: "+e),t.filter((function(t){return t.localAccountId===e}))[0]||null):(this.logger.verbose("getAccountByLocalId: No matching account found, returning null"),null)},e.prototype.setActiveAccount=function(e){this.browserStorage.setActiveAccount(e)},e.prototype.getActiveAccount=function(){return this.browserStorage.getActiveAccount()},e.prototype.getRedirectUri=function(e){this.logger.verbose("getRedirectUri called");var t=e||this.config.auth.redirectUri||Ot.getCurrentUri();return Ae.getAbsoluteUrl(t,Ot.getCurrentUri())},e.prototype.getRedirectStartPage=function(e){var t=e||window.location.href;return Ae.getAbsoluteUrl(t,Ot.getCurrentUri())},e.prototype.getDiscoveredAuthority=function(e,t){return a(this,void 0,void 0,(function(){var r;return s(this,(function(n){switch(n.label){case 0:return this.logger.verbose("getDiscoveredAuthority called",t),r={protocolMode:this.config.auth.protocolMode,knownAuthorities:this.config.auth.knownAuthorities,cloudDiscoveryMetadata:this.config.auth.cloudDiscoveryMetadata,authorityMetadata:this.config.auth.authorityMetadata},e?(this.logger.verbose("Creating discovered authority with request authority",t),[4,xe.createDiscoveredInstance(e,this.config.system.networkClient,this.browserStorage,r)]):[3,2];case 1:return[2,n.sent()];case 2:return this.logger.verbose("Creating discovered authority with configured authority",t),[4,xe.createDiscoveredInstance(this.config.auth.authority,this.config.system.networkClient,this.browserStorage,r)];case 3:return[2,n.sent()]}}))}))},e.prototype.interactionInProgress=function(){return this.browserStorage.getTemporaryCache(W.INTERACTION_STATUS_KEY,!0)===X},e.prototype.createAuthCodeClient=function(e,t,r){return a(this,void 0,void 0,(function(){var n;return s(this,(function(o){switch(o.label){case 0:return[4,this.getClientConfiguration(e,t,r)];case 1:return n=o.sent(),[2,new gt(n)]}}))}))},e.prototype.createSilentFlowClient=function(e,t,r){return a(this,void 0,void 0,(function(){var n;return s(this,(function(o){switch(o.label){case 0:return[4,this.getClientConfiguration(e,t,r)];case 1:return n=o.sent(),[2,new yt(n)]}}))}))},e.prototype.createRefreshTokenClient=function(e,t,r){return a(this,void 0,void 0,(function(){var n;return s(this,(function(o){switch(o.label){case 0:return[4,this.getClientConfiguration(e,t,r)];case 1:return n=o.sent(),[2,new ft(n)]}}))}))},e.prototype.getClientConfiguration=function(e,t,r){return a(this,void 0,void 0,(function(){var n;return s(this,(function(o){switch(o.label){case 0:return this.logger.verbose("getClientConfiguration called",r),[4,this.getDiscoveredAuthority(t,r)];case 1:return n=o.sent(),[2,{authOptions:{clientId:this.config.auth.clientId,authority:n,clientCapabilities:this.config.auth.clientCapabilities},systemOptions:{tokenRenewalOffsetSeconds:this.config.system.tokenRenewalOffsetSeconds,preventCorsPreflight:!0},loggerOptions:{loggerCallback:this.config.system.loggerOptions.loggerCallback,piiLoggingEnabled:this.config.system.loggerOptions.piiLoggingEnabled,logLevel:this.config.system.loggerOptions.logLevel,correlationId:r},cryptoInterface:this.browserCrypto,networkInterface:this.networkClient,storageInterface:this.browserStorage,serverTelemetryManager:e,libraryInfo:{sku:"msal.js.browser",version:Dt,cpu:"",os:""}}]}}))}))},e.prototype.preflightInteractiveRequest=function(e,t){if(this.logger.verbose("preflightInteractiveRequest called, validating app environment",null==e?void 0:e.correlationId),Ot.blockReloadInHiddenIframes(),this.interactionInProgress())throw ge.createInteractionInProgressError();return this.initializeAuthorizationRequest(e,t)},e.prototype.preflightBrowserEnvironmentCheck=function(e){if(this.logger.verbose("preflightBrowserEnvironmentCheck started"),Ot.blockNonBrowserEnvironment(this.isBrowserEnvironment),Ot.blockRedirectInIframe(e,this.config.system.allowRedirectInIframe),Ot.blockReloadInHiddenIframes(),Ot.blockAcquireTokenInPopups(),e===V.Redirect&&this.config.cache.cacheLocation===z.MemoryStorage&&!this.config.cache.storeAuthStateInCookie)throw Tt.createInMemoryRedirectUnavailableError()},e.prototype.initializeBaseRequest=function(e){this.logger.verbose("Initializing BaseAuthRequest",e.correlationId);var t=e.authority||this.config.auth.authority,r=u(e&&e.scopes||[]),n=e&&e.correlationId||this.browserCrypto.createNewGuid();return e.authenticationScheme?this.logger.verbose('Authentication Scheme set to "'+e.authenticationScheme+'" as configured in Auth request',e.correlationId):(e.authenticationScheme=H.BEARER,this.logger.verbose('Authentication Scheme wasn\'t explicitly set in request, defaulting to "Bearer" request',e.correlationId)),i(i({},e),{correlationId:n,authority:t,scopes:r})},e.prototype.initializeServerTelemetryManager=function(e,t,r){this.logger.verbose("initializeServerTelemetryManager called",t);var n={clientId:this.config.auth.clientId,correlationId:t,apiId:e,forceRefresh:r||!1,wrapperSKU:this.wrapperSKU,wrapperVer:this.wrapperVer};return new Et(n,this.browserStorage)},e.prototype.initializeAuthorizationRequest=function(e,t){this.logger.verbose("initializeAuthorizationRequest called",e.correlationId);var r=this.getRedirectUri(e.redirectUri),n={interactionType:t},o=ct.setRequestState(this.browserCrypto,e&&e.state||"",n),a=i(i({},this.initializeBaseRequest(e)),{redirectUri:r,state:o,nonce:e.nonce||this.browserCrypto.createNewGuid(),responseMode:_.FRAGMENT}),s=e.account||this.getActiveAccount();if(s&&(this.logger.verbose("Setting validated request account"),this.logger.verbosePii("Setting validated request account: "+s),a.account=s),de.isEmpty(a.loginHint)){var c=this.browserStorage.getTemporaryCache(m.ADAL_ID_TOKEN);if(c){var u=new ze(c,this.browserCrypto);this.browserStorage.removeItem(m.ADAL_ID_TOKEN),u.claims&&u.claims.upn&&(this.logger.verbose("No SSO params used and ADAL token retrieved, setting ADAL upn as loginHint"),a.loginHint=u.claims.upn)}}return this.browserStorage.updateCacheEntries(a.state,a.nonce,a.authority,a.loginHint||"",a.account||null),a},e.prototype.initializeAuthorizationCodeRequest=function(e){return a(this,void 0,void 0,(function(){var t,r;return s(this,(function(n){switch(n.label){case 0:return this.logger.verbose("initializeAuthorizationRequest called",e.correlationId),[4,this.browserCrypto.generatePkceCodes()];case 1:return t=n.sent(),r=i(i({},e),{redirectUri:e.redirectUri,code:"",codeVerifier:t.verifier}),e.codeChallenge=t.challenge,e.codeChallengeMethod=T.S256_CODE_CHALLENGE_METHOD,[2,r]}}))}))},e.prototype.initializeLogoutRequest=function(e){if(this.logger.verbose("initializeLogoutRequest called",null==e?void 0:e.correlationId),this.interactionInProgress())throw ge.createInteractionInProgressError();var t=i({correlationId:this.browserCrypto.createNewGuid()},e);return e&&null===e.postLogoutRedirectUri?this.logger.verbose("postLogoutRedirectUri passed as null, not setting post logout redirect uri",t.correlationId):e&&e.postLogoutRedirectUri?(this.logger.verbose("Setting postLogoutRedirectUri to uri set on logout request",t.correlationId),t.postLogoutRedirectUri=Ae.getAbsoluteUrl(e.postLogoutRedirectUri,Ot.getCurrentUri())):null===this.config.auth.postLogoutRedirectUri?this.logger.verbose("postLogoutRedirectUri configured as null and no uri set on request, not passing post logout redirect",t.correlationId):this.config.auth.postLogoutRedirectUri?(this.logger.verbose("Setting postLogoutRedirectUri to configured uri",t.correlationId),t.postLogoutRedirectUri=Ae.getAbsoluteUrl(this.config.auth.postLogoutRedirectUri,Ot.getCurrentUri())):(this.logger.verbose("Setting postLogoutRedirectUri to current page",t.correlationId),t.postLogoutRedirectUri=Ae.getAbsoluteUrl(Ot.getCurrentUri(),Ot.getCurrentUri())),t},e.prototype.addEventCallback=function(e){return this.eventHandler.addEventCallback(e)},e.prototype.removeEventCallback=function(e){this.eventHandler.removeEventCallback(e)},e.prototype.getLogger=function(){return this.logger},e.prototype.setLogger=function(e){this.logger=e},e.prototype.initializeWrapperLibrary=function(e,t){this.wrapperSKU=e,this.wrapperVer=t},e.prototype.setNavigationClient=function(e){this.navigationClient=e},e}()),Kt={acquireTokenPopup:function(){return Promise.reject(Tt.createStubPcaInstanceCalledError())},acquireTokenRedirect:function(){return Promise.reject(Tt.createStubPcaInstanceCalledError())},acquireTokenSilent:function(){return Promise.reject(Tt.createStubPcaInstanceCalledError())},getAllAccounts:function(){return[]},getAccountByHomeId:function(){return null},getAccountByUsername:function(){return null},getAccountByLocalId:function(){return null},handleRedirectPromise:function(){return Promise.reject(Tt.createStubPcaInstanceCalledError())},loginPopup:function(){return Promise.reject(Tt.createStubPcaInstanceCalledError())},loginRedirect:function(){return Promise.reject(Tt.createStubPcaInstanceCalledError())},logout:function(){return Promise.reject(Tt.createStubPcaInstanceCalledError())},logoutRedirect:function(){return Promise.reject(Tt.createStubPcaInstanceCalledError())},logoutPopup:function(){return Promise.reject(Tt.createStubPcaInstanceCalledError())},ssoSilent:function(){return Promise.reject(Tt.createStubPcaInstanceCalledError())},addEventCallback:function(){return null},removeEventCallback:function(){},getLogger:function(){throw Tt.createStubPcaInstanceCalledError()},setLogger:function(){},setActiveAccount:function(){},getActiveAccount:function(){return null},initializeWrapperLibrary:function(){},setNavigationClient:function(){}},xt=function(){function e(){}return e.getInteractionStatusFromEvent=function(e){switch(e.eventType){case ut.LOGIN_START:return J.Login;case ut.SSO_SILENT_START:return J.SsoSilent;case ut.ACQUIRE_TOKEN_START:if(e.interactionType===V.Redirect||e.interactionType===V.Popup)return J.AcquireToken;break;case ut.HANDLE_REDIRECT_START:return J.HandleRedirect;case ut.LOGOUT_START:return J.Logout;case ut.LOGIN_SUCCESS:case ut.SSO_SILENT_SUCCESS:case ut.HANDLE_REDIRECT_END:case ut.LOGIN_FAILURE:case ut.SSO_SILENT_FAILURE:case ut.LOGOUT_END:return J.None;case ut.ACQUIRE_TOKEN_SUCCESS:case ut.ACQUIRE_TOKEN_FAILURE:if(e.interactionType===V.Redirect||e.interactionType===V.Popup)return J.None}return null},e}()},981:function(e,t,r){var n=this&&this.__createBinding||(Object.create?function(e,t,r,n){void 0===n&&(n=r),Object.defineProperty(e,n,{enumerable:!0,get:function(){return t[r]}})}:function(e,t,r,n){void 0===n&&(n=r),e[n]=t[r]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),i=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var r in e)"default"!==r&&Object.prototype.hasOwnProperty.call(e,r)&&n(t,e,r);return o(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.AuthenticationService=void 0;const a=i(r(87));var s,c;!function(e){e.Success="success",e.RequiresRedirect="requiresRedirect"}(s||(s={})),function(e){e.Redirect="redirect",e.Success="success",e.Failure="failure",e.OperationCompleted="operationCompleted"}(c||(c={}));class u{constructor(e){var t,r;this._settings=e,0==(null===(r=null===(t=this._settings.auth)||void 0===t?void 0:t.knownAuthorities)||void 0===r?void 0:r.length)&&(this._settings.auth.knownAuthorities=[new URL(this._settings.auth.authority).hostname]),this._msalApplication=new a.PublicClientApplication(this._settings)}getAccount(){if(this._account)return this._account;const e=this._msalApplication.getAllAccounts();return e&&e.length?e[0]:null}async getUser(){var e;const t=this.getAccount();if(!t)return;const r=[];this._settings.defaultAccessTokenScopes&&this._settings.defaultAccessTokenScopes.length>0&&r.push(...this._settings.defaultAccessTokenScopes),this._settings.additionalScopesToConsent&&this._settings.additionalScopesToConsent.length>0&&r.push(...this._settings.additionalScopesToConsent),this._requestedScopes&&this._requestedScopes.length>0&&r.push(...this._requestedScopes);const n={redirectUri:null===(e=this._settings.auth)||void 0===e?void 0:e.redirectUri,account:t,scopes:r};try{return(await this._msalApplication.acquireTokenSilent(n)).idTokenClaims}catch(e){await this.signInCore(n)}}async getAccessToken(e){try{const t=await this.getTokenCore(null==e?void 0:e.scopes);return{status:s.Success,token:t}}catch(e){return{status:s.RequiresRedirect}}}async getTokenCore(e){var t;const r=this.getAccount();if(!r)throw new Error("Failed to retrieve token, no account found.");this._requestedScopes=e;const n={redirectUri:null===(t=this._settings.auth)||void 0===t?void 0:t.redirectUri,account:r,scopes:e||this._settings.defaultAccessTokenScopes},o=await this._msalApplication.acquireTokenSilent(n);return{value:o.accessToken,grantedScopes:o.scopes,expires:o.expiresOn}}async signIn(e){var t,r;try{this.purgeState();const n={redirectUri:this._settings.auth.redirectUri,state:await this.saveState(e)};this._settings.defaultAccessTokenScopes&&this._settings.defaultAccessTokenScopes.length>0&&(n.scopes=this._settings.defaultAccessTokenScopes),this._settings.additionalScopesToConsent&&this._settings.additionalScopesToConsent.length>0&&(n.extraScopesToConsent=this._settings.additionalScopesToConsent);const o=await this.signInCore(n);if(!o)return this.redirect();if(this.isMsalError(o))return this.error(o.errorMessage);try{if((null===(t=this._settings.defaultAccessTokenScopes)||void 0===t?void 0:t.length)>0){const e=this.getAccount();if(!e)return this.error("No account to get tokens for.");const t={redirectUri:n.redirectUri,account:e,scopes:(null===(r=null==n?void 0:n.scopes)||void 0===r?void 0:r.concat(n.extraScopesToConsent||[]))||[]};await this._msalApplication.acquireTokenSilent(t)}}catch(e){return this.error(e.errorMessage)}return this.success(e)}catch(e){return this.error(e.message)}}async signInCore(e){return"redirect"===this._settings.loginMode.toLowerCase()?this.signInWithRedirect(e):this.signInWithPopup(e)}async signInWithRedirect(e){try{return await this._msalApplication.loginRedirect(e)}catch(e){return e}}async signInWithPopup(e){try{return await this._msalApplication.loginPopup(e)}catch(t){if(!this.isMsalError(t)||t.errorCode===a.BrowserAuthErrorMessage.userCancelledError.code)return t;this.signInWithRedirect(e)}}async completeSignIn(){return await this._redirectCallback||this.operationCompleted()}async signOut(e){this.purgeState();const t=await this.saveState(e);return sessionStorage.setItem(`${l._infrastructureKey}.LogoutState`,t),this._msalApplication.logout(),this.redirect()}async completeSignOut(e){const t=sessionStorage.getItem(`${l._infrastructureKey}.LogoutState`),r=new URL(e);r.search=`?state=${t}`;const n=await this.retrieveState(r.href,null,!0);return sessionStorage.removeItem(`${l._infrastructureKey}.LogoutState`),n?this.success(n):this.operationCompleted()}async saveState(e){const t=await new Promise(((e,t)=>{const r=new FileReader;r.onloadend=t=>{var r;return e((null===(r=null==t?void 0:t.target)||void 0===r?void 0:r.result).split(",")[1].replace(/\+/g,"-").replace(/\//g,"_").replace(/=/g,""))},r.onerror=e=>{var r,n;return t(null===(n=null===(r=e.target)||void 0===r?void 0:r.error)||void 0===n?void 0:n.message)};const n=window.crypto.getRandomValues(new Uint8Array(32));r.readAsDataURL(new Blob([n]))}));return sessionStorage.setItem(`${l._infrastructureKey}.AuthorizeService.${t}`,JSON.stringify(e)),t}retrieveState(e,t=null,r=!1){let n;if(e){const t=new URL(e);n=t.searchParams&&t.searchParams.getAll("state")}const o=t||n;if(!o)return;const i=`${l._infrastructureKey}.AuthorizeService.${o}`,a=sessionStorage.getItem(i);return a?(sessionStorage.removeItem(i),JSON.parse(a)):void 0}purgeState(){for(let e=0;ethis.handleResult(e))).catch((e=>this.isMsalError(e)?this.error(e.errorMessage):this.error(e)))}handleResult(e){return e?(this._account=e.account,this.success(this.retrieveState(null,e.state))):this.operationCompleted()}getAccountState(e){if(e){const t=e.indexOf("|");if(t>-1&&t+1{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r(981)})(); \ No newline at end of file diff --git a/_content/MudBlazor/MudBlazor.min.css b/_content/MudBlazor/MudBlazor.min.css deleted file mode 100755 index e01eddd..0000000 --- a/_content/MudBlazor/MudBlazor.min.css +++ /dev/null @@ -1,7 +0,0 @@ -@charset "UTF-8"; -/*! - * MudBlazor (https://mudblazor.com/) - * Copyright (c) 2021 MudBlazor - * Licensed under MIT (https://github.com/MudBlazor/MudBlazor/blob/master/LICENSE) - */ -.mud-primary{background-color:var(--mud-palette-primary) !important;}.mud-primary-text{color:var(--mud-palette-primary) !important;}.mud-primary-hover{background-color:var(--mud-palette-primary-hover) !important;}.hover\:mud-primary-hover:hover,.hover\:mud-primary-hover:focus-visible{background-color:var(--mud-palette-primary-hover) !important;}.mud-border-primary{border-color:var(--mud-palette-primary) !important;}.mud-theme-primary{color:var(--mud-palette-primary-text) !important;background-color:var(--mud-palette-primary) !important;}.mud-secondary{background-color:var(--mud-palette-secondary) !important;}.mud-secondary-text{color:var(--mud-palette-secondary) !important;}.mud-secondary-hover{background-color:var(--mud-palette-secondary-hover) !important;}.hover\:mud-secondary-hover:hover,.hover\:mud-secondary-hover:focus-visible{background-color:var(--mud-palette-secondary-hover) !important;}.mud-border-secondary{border-color:var(--mud-palette-secondary) !important;}.mud-theme-secondary{color:var(--mud-palette-secondary-text) !important;background-color:var(--mud-palette-secondary) !important;}.mud-tertiary{background-color:var(--mud-palette-tertiary) !important;}.mud-tertiary-text{color:var(--mud-palette-tertiary) !important;}.mud-tertiary-hover{background-color:var(--mud-palette-tertiary-hover) !important;}.hover\:mud-tertiary-hover:hover,.hover\:mud-tertiary-hover:focus-visible{background-color:var(--mud-palette-tertiary-hover) !important;}.mud-border-tertiary{border-color:var(--mud-palette-tertiary) !important;}.mud-theme-tertiary{color:var(--mud-palette-tertiary-text) !important;background-color:var(--mud-palette-tertiary) !important;}.mud-info{background-color:var(--mud-palette-info) !important;}.mud-info-text{color:var(--mud-palette-info) !important;}.mud-info-hover{background-color:var(--mud-palette-info-hover) !important;}.hover\:mud-info-hover:hover,.hover\:mud-info-hover:focus-visible{background-color:var(--mud-palette-info-hover) !important;}.mud-border-info{border-color:var(--mud-palette-info) !important;}.mud-theme-info{color:var(--mud-palette-info-text) !important;background-color:var(--mud-palette-info) !important;}.mud-success{background-color:var(--mud-palette-success) !important;}.mud-success-text{color:var(--mud-palette-success) !important;}.mud-success-hover{background-color:var(--mud-palette-success-hover) !important;}.hover\:mud-success-hover:hover,.hover\:mud-success-hover:focus-visible{background-color:var(--mud-palette-success-hover) !important;}.mud-border-success{border-color:var(--mud-palette-success) !important;}.mud-theme-success{color:var(--mud-palette-success-text) !important;background-color:var(--mud-palette-success) !important;}.mud-warning{background-color:var(--mud-palette-warning) !important;}.mud-warning-text{color:var(--mud-palette-warning) !important;}.mud-warning-hover{background-color:var(--mud-palette-warning-hover) !important;}.hover\:mud-warning-hover:hover,.hover\:mud-warning-hover:focus-visible{background-color:var(--mud-palette-warning-hover) !important;}.mud-border-warning{border-color:var(--mud-palette-warning) !important;}.mud-theme-warning{color:var(--mud-palette-warning-text) !important;background-color:var(--mud-palette-warning) !important;}.mud-error{background-color:var(--mud-palette-error) !important;}.mud-error-text{color:var(--mud-palette-error) !important;}.mud-error-hover{background-color:var(--mud-palette-error-hover) !important;}.hover\:mud-error-hover:hover,.hover\:mud-error-hover:focus-visible{background-color:var(--mud-palette-error-hover) !important;}.mud-border-error{border-color:var(--mud-palette-error) !important;}.mud-theme-error{color:var(--mud-palette-error-text) !important;background-color:var(--mud-palette-error) !important;}.mud-dark{background-color:var(--mud-palette-dark) !important;}.mud-dark-text{color:var(--mud-palette-dark) !important;}.mud-dark-hover{background-color:var(--mud-palette-dark-hover) !important;}.hover\:mud-dark-hover:hover,.hover\:mud-dark-hover:focus-visible{background-color:var(--mud-palette-dark-hover) !important;}.mud-border-dark{border-color:var(--mud-palette-dark) !important;}.mud-theme-dark{color:var(--mud-palette-dark-text) !important;background-color:var(--mud-palette-dark) !important;}.mud-inherit-text{color:inherit !important;}.mud-border-lines-default{border-color:var(--mud-palette-lines-default);}.mud-background{background-color:var(--mud-palette-background) !important;}.mud-background-gray{background-color:var(--mud-palette-background-grey) !important;}.mud-theme-transparent{color:inherit !important;background-color:transparent !important;}.mud-transparent{background-color:transparent !important;}.mud-transparent-text{color:transparent !important;}.mud-text-primary{color:var(--mud-palette-text-primary);}.mud-text-secondary{color:var(--mud-palette-text-secondary);}.mud-text-disabled{color:var(--mud-palette-text-disabled);}.white{background-color:#fff !important;}.white-text{color:#fff !important;}.black{background-color:#000 !important;}.black-text{color:#000 !important;}*{box-sizing:border-box;margin:0;padding:0;border-width:0;border-style:solid;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}strong,b{font-weight:700;}body{color:var(--mud-palette-text-primary);font-family:var(--mud-typography-default-family);font-size:var(--mud-typography-default-size);font-weight:var(--mud-typography-default-weight);line-height:var(--mud-typography-default-lineheight);letter-spacing:var(--mud-typography-default-letterspacing);text-transform:var(--mud-typography-default-text-transform);background-color:var(--mud-palette-background);}a{color:var(--mud-palette-text-primary);}.mud-layout{height:100%;width:100%;position:relative;}#blazor-error-ui{background:#ffffe0;bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.25rem .7rem 1.25rem;position:fixed;width:100%;z-index:9999;}#blazor-error-ui .dismiss{cursor:pointer;position:absolute;right:.75rem;top:.5rem;}#components-reconnect-modal{z-index:9999 !important;}#components-reconnect-modal h5{font-size:18px;}#components-reconnect-modal button{color:var(--mud-palette-text-primary);padding:8px 16px;font-size:.875rem;min-width:64px;box-sizing:border-box;transition:background-color 250ms cubic-bezier(.4,0,.2,1) 0ms,box-shadow 250ms cubic-bezier(.4,0,.2,1) 0ms,border 250ms cubic-bezier(.4,0,.2,1) 0ms;font-weight:500;line-height:1;border-radius:var(--mud-default-borderradius);letter-spacing:.02857em;text-transform:uppercase;margin:40px auto !important;}#components-reconnect-modal button:hover{background-color:var(--mud-palette-action-default-hover);}@keyframes mud-animation-fadein{0%{opacity:0;}100%{opacity:1;}}@-moz-keyframes mud-animation-fadein{0%{opacity:0;}100%{opacity:1;}}@-webkit-keyframes mud-animation-fadein{0%{opacity:0;}100%{opacity:1;}}@-o-keyframes mud-animation-fadein{0%{opacity:0;}100%{opacity:1;}}@-ms-keyframes mud-animation-fadein{0%{opacity:0;}100%{opacity:1;}}@-webkit-keyframes mud-scale-up-center{0%{-webkit-transform:scale(.5);transform:scale(.5);}100%{-webkit-transform:scale(1);transform:scale(1);}}@keyframes mud-scale-up-center{0%{-webkit-transform:scale(.5);transform:scale(.5);}100%{-webkit-transform:scale(1);transform:scale(1);}}@-webkit-keyframes mud-skeleton-keyframes-pulse{0%{opacity:1;}50%{opacity:.4;}100%{opacity:1;}}@-webkit-keyframes mud-skeleton-keyframes-wave{0%{transform:translateX(-100%);}60%{transform:translateX(100%);}100%{transform:translateX(100%);}}@-webkit-keyframes mud-progress-circular-keyframes-circular-rotate{0%{transform-origin:50% 50%;}100%{transform:rotate(360deg);}}@-webkit-keyframes mud-progress-circular-keyframes-circular-dash{0%{stroke-dasharray:1px,200px;stroke-dashoffset:0;}50%{stroke-dasharray:100px,200px;stroke-dashoffset:-15px;}100%{stroke-dasharray:100px,200px;stroke-dashoffset:-125px;}}@-webkit-keyframes mud-progress-linear-horizontal-keyframes-indeterminate1{0%{left:-35%;right:100%;}60%{left:100%;right:-90%;}100%{left:100%;right:-90%;}}@-webkit-keyframes mud-progress-linear-horizontal-keyframes-indeterminate2{0%{left:-200%;right:100%;}60%{left:107%;right:-8%;}100%{left:107%;right:-8%;}}@-webkit-keyframes mud-progress-linear-horizontal-keyframes-buffer{0%{opacity:1;background-position:0 -23px;}50%{opacity:0;background-position:0 -23px;}100%{opacity:1;background-position:-200px -23px;}}@-webkit-keyframes mud-progress-linear-vertical-keyframes-indeterminate1{0%{bottom:-35%;top:100%;}60%{bottom:100%;top:-90%;}100%{bottom:100%;top:-90%;}}@-webkit-keyframes mud-progress-linear-vertical-keyframes-indeterminate2{0%{bottom:-200%;top:100%;}60%{bottom:107%;top:-8%;}100%{bottom:107%;top:-8%;}}@-webkit-keyframes mud-progress-linear-vertical-keyframes-buffer{0%{opacity:1;background-position:-23px 0;}50%{opacity:0;background-position:-23px 0;}100%{opacity:1;background-position:-23px -200px;}}@keyframes mud-progress-linear-striped-loading{0%{background-position:0 0;}100%{background-position:300px 0;}}a{text-decoration:none;}a:focus-visible{outline:none;}label{display:inline-block;}button{color:inherit;border:0;cursor:pointer;margin:0;display:inline-flex;outline:0;padding:0;position:relative;align-items:center;user-select:none;border-radius:0;vertical-align:middle;-moz-appearance:none;justify-content:center;text-decoration:none;background-color:transparent;-webkit-appearance:none;-webkit-tap-highlight-color:transparent;}button:focus{outline:none;}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit;}button,input{overflow:visible;}button,select{text-transform:none;}select{word-wrap:normal;}button,[type="button"],[type="reset"],[type="submit"]{-webkit-appearance:button;}iframe{border:none;height:100%;width:100%;}ul{margin:0;padding:0;list-style:none;}.mud-elevation-0{box-shadow:var(--mud-elevation-0);}.mud-elevation-1{box-shadow:var(--mud-elevation-1);}.mud-elevation-2{box-shadow:var(--mud-elevation-2);}.mud-elevation-3{box-shadow:var(--mud-elevation-3);}.mud-elevation-4{box-shadow:var(--mud-elevation-4);}.mud-elevation-5{box-shadow:var(--mud-elevation-5);}.mud-elevation-6{box-shadow:var(--mud-elevation-6);}.mud-elevation-7{box-shadow:var(--mud-elevation-7);}.mud-elevation-8{box-shadow:var(--mud-elevation-8);}.mud-elevation-9{box-shadow:var(--mud-elevation-9);}.mud-elevation-10{box-shadow:var(--mud-elevation-10);}.mud-elevation-11{box-shadow:var(--mud-elevation-11);}.mud-elevation-12{box-shadow:var(--mud-elevation-12);}.mud-elevation-13{box-shadow:var(--mud-elevation-13);}.mud-elevation-14{box-shadow:var(--mud-elevation-14);}.mud-elevation-15{box-shadow:var(--mud-elevation-15);}.mud-elevation-16{box-shadow:var(--mud-elevation-16);}.mud-elevation-17{box-shadow:var(--mud-elevation-17);}.mud-elevation-18{box-shadow:var(--mud-elevation-18);}.mud-elevation-19{box-shadow:var(--mud-elevation-19);}.mud-elevation-20{box-shadow:var(--mud-elevation-20);}.mud-elevation-21{box-shadow:var(--mud-elevation-21);}.mud-elevation-22{box-shadow:var(--mud-elevation-22);}.mud-elevation-23{box-shadow:var(--mud-elevation-23);}.mud-elevation-24{box-shadow:var(--mud-elevation-24);}.mud-elevation-25{box-shadow:var(--mud-elevation-25);}.mud-alert{display:flex;padding:6px 16px;border-radius:var(--mud-default-borderradius);background-color:transparent;transition:box-shadow 300ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-alert.mud-square{border-radius:0;}.mud-alert.mud-dense{padding:0 12px;}.mud-alert-text-normal{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-dark-hover);}.mud-alert-text-primary{color:var(--mud-palette-primary-darken);background-color:var(--mud-palette-primary-hover);}.mud-alert-text-primary .mud-alert-icon{color:var(--mud-palette-primary);}.mud-alert-text-secondary{color:var(--mud-palette-secondary-darken);background-color:var(--mud-palette-secondary-hover);}.mud-alert-text-secondary .mud-alert-icon{color:var(--mud-palette-secondary);}.mud-alert-text-tertiary{color:var(--mud-palette-tertiary-darken);background-color:var(--mud-palette-tertiary-hover);}.mud-alert-text-tertiary .mud-alert-icon{color:var(--mud-palette-tertiary);}.mud-alert-text-info{color:var(--mud-palette-info-darken);background-color:var(--mud-palette-info-hover);}.mud-alert-text-info .mud-alert-icon{color:var(--mud-palette-info);}.mud-alert-text-success{color:var(--mud-palette-success-darken);background-color:var(--mud-palette-success-hover);}.mud-alert-text-success .mud-alert-icon{color:var(--mud-palette-success);}.mud-alert-text-warning{color:var(--mud-palette-warning-darken);background-color:var(--mud-palette-warning-hover);}.mud-alert-text-warning .mud-alert-icon{color:var(--mud-palette-warning);}.mud-alert-text-error{color:var(--mud-palette-error-darken);background-color:var(--mud-palette-error-hover);}.mud-alert-text-error .mud-alert-icon{color:var(--mud-palette-error);}.mud-alert-text-dark{color:var(--mud-palette-dark-darken);background-color:var(--mud-palette-dark-hover);}.mud-alert-text-dark .mud-alert-icon{color:var(--mud-palette-dark);}.mud-alert-outlined-normal{color:var(--mud-palette-text-primary);border:1px solid var(--mud-palette-text-primary);}.mud-alert-outlined-primary{color:var(--mud-palette-primary-darken);border:1px solid var(--mud-palette-primary);}.mud-alert-outlined-primary .mud-alert-icon{color:var(--mud-palette-primary);}.mud-alert-outlined-secondary{color:var(--mud-palette-secondary-darken);border:1px solid var(--mud-palette-secondary);}.mud-alert-outlined-secondary .mud-alert-icon{color:var(--mud-palette-secondary);}.mud-alert-outlined-tertiary{color:var(--mud-palette-tertiary-darken);border:1px solid var(--mud-palette-tertiary);}.mud-alert-outlined-tertiary .mud-alert-icon{color:var(--mud-palette-tertiary);}.mud-alert-outlined-info{color:var(--mud-palette-info-darken);border:1px solid var(--mud-palette-info);}.mud-alert-outlined-info .mud-alert-icon{color:var(--mud-palette-info);}.mud-alert-outlined-success{color:var(--mud-palette-success-darken);border:1px solid var(--mud-palette-success);}.mud-alert-outlined-success .mud-alert-icon{color:var(--mud-palette-success);}.mud-alert-outlined-warning{color:var(--mud-palette-warning-darken);border:1px solid var(--mud-palette-warning);}.mud-alert-outlined-warning .mud-alert-icon{color:var(--mud-palette-warning);}.mud-alert-outlined-error{color:var(--mud-palette-error-darken);border:1px solid var(--mud-palette-error);}.mud-alert-outlined-error .mud-alert-icon{color:var(--mud-palette-error);}.mud-alert-outlined-dark{color:var(--mud-palette-dark-darken);border:1px solid var(--mud-palette-dark);}.mud-alert-outlined-dark .mud-alert-icon{color:var(--mud-palette-dark);}.mud-alert-filled-normal{color:var(--mud-palette-dark-text);font-weight:500;background-color:var(--mud-palette-dark);}.mud-alert-filled-primary{color:var(--mud-palette-primary-text);font-weight:500;background-color:var(--mud-palette-primary);}.mud-alert-filled-secondary{color:var(--mud-palette-secondary-text);font-weight:500;background-color:var(--mud-palette-secondary);}.mud-alert-filled-tertiary{color:var(--mud-palette-tertiary-text);font-weight:500;background-color:var(--mud-palette-tertiary);}.mud-alert-filled-info{color:var(--mud-palette-info-text);font-weight:500;background-color:var(--mud-palette-info);}.mud-alert-filled-success{color:var(--mud-palette-success-text);font-weight:500;background-color:var(--mud-palette-success);}.mud-alert-filled-warning{color:var(--mud-palette-warning-text);font-weight:500;background-color:var(--mud-palette-warning);}.mud-alert-filled-error{color:var(--mud-palette-error-text);font-weight:500;background-color:var(--mud-palette-error);}.mud-alert-filled-dark{color:var(--mud-palette-dark-text);font-weight:500;background-color:var(--mud-palette-dark);}.mud-alert-icon{display:flex;opacity:.9;padding:7px 0;font-size:22px;margin-right:12px;margin-inline-end:12px;margin-inline-start:unset;}.mud-alert-icon.mud-alert-icon-left{margin-right:12px;margin-inline-end:12px;margin-inline-start:unset;}.mud-alert-icon.mud-alert-icon-right{margin-left:12px;margin-inline-start:12px;margin-inline-end:unset;}.mud-alert-message{padding:9px 0;}.mud-alert-position{flex:1;display:flex;}.mud-alert-close{display:flex;flex:0;align-items:center;margin-left:8px;}.mud-badge-root{position:relative;display:inline-block;}.mud-badge-root .mud-badge-wrapper{top:0;left:0;flex:0 1;width:100%;height:100%;display:flex;pointer-events:none;position:absolute;}.mud-badge-root .mud-badge-wrapper.mud-badge-top{align-items:flex-start;}.mud-badge-root .mud-badge-wrapper.mud-badge-top.left{justify-content:flex-start;}.mud-badge-root .mud-badge-wrapper.mud-badge-top.center{justify-content:center;}.mud-badge-root .mud-badge-wrapper.mud-badge-top.right{justify-content:flex-end;}.mud-badge-root .mud-badge-wrapper.mud-badge-center{align-items:center;}.mud-badge-root .mud-badge-wrapper.mud-badge-center.left{justify-content:flex-start;}.mud-badge-root .mud-badge-wrapper.mud-badge-center.center{justify-content:center;}.mud-badge-root .mud-badge-wrapper.mud-badge-center.right{justify-content:flex-end;}.mud-badge-root .mud-badge-wrapper.mud-badge-bottom{align-items:flex-end;}.mud-badge-root .mud-badge-wrapper.mud-badge-bottom.left{justify-content:flex-start;}.mud-badge-root .mud-badge-wrapper.mud-badge-bottom.center{justify-content:center;}.mud-badge-root .mud-badge-wrapper.mud-badge-bottom.right{justify-content:flex-end;}.mud-badge{border-radius:10px;font-size:12px;height:20px;letter-spacing:0;min-width:20px;padding:4px 6px;pointer-events:auto;line-height:1;position:absolute;text-align:center;text-indent:0;top:auto;transition:.3s cubic-bezier(.25,.8,.5,1);white-space:nowrap;}.mud-badge.mud-badge-default{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-grey-light);}.mud-badge.mud-badge-bordered{border-color:var(--mud-palette-surface);border-style:solid;border-width:2px;padding:3px 4px;}.mud-badge.mud-badge-bordered.mud-badge-icon{padding:4px 6px;}.mud-badge.mud-badge-bordered.mud-badge-icon .mud-icon-badge{margin-left:-4px;margin-inline-start:-4px;margin-inline-end:unset;margin-top:-4px;}.mud-badge.mud-badge-icon{width:20px;height:20px;}.mud-badge.mud-badge-icon .mud-icon-badge{color:inherit;font-size:12px;margin-left:-2px;margin-inline-start:-2px;margin-inline-end:unset;}.mud-badge.mud-badge-dot{border-radius:50%;height:9px;min-width:0;padding:0;width:9px;}.mud-badge.mud-badge-top.left{inset:auto calc(100% - 4px) calc(100% - 4px) auto;}.mud-badge.mud-badge-top.left.mud-badge-overlap{inset:auto calc(100% - 12px) calc(100% - 12px) auto;}.mud-badge.mud-badge-top.center{bottom:calc(100% - 4px);}.mud-badge.mud-badge-top.center.mud-badge-overlap{bottom:calc(100% - 12px);}.mud-badge.mud-badge-top.right{inset:auto auto calc(100% - 4px) calc(100% - 4px);}.mud-badge.mud-badge-top.right.mud-badge-overlap{inset:auto auto calc(100% - 12px) calc(100% - 12px);}.mud-badge.mud-badge-center.left{right:calc(100% - 4px);}.mud-badge.mud-badge-center.left.mud-badge-overlap{right:calc(100% - 12px);}.mud-badge.mud-badge-center.right{left:calc(100% - 4px);}.mud-badge.mud-badge-center.right.mud-badge-overlap{left:calc(100% - 12px);}.mud-badge.mud-badge-bottom.left{inset:calc(100% - 4px) calc(100% - 4px) auto auto;}.mud-badge.mud-badge-bottom.left.mud-badge-overlap{inset:calc(100% - 12px) calc(100% - 12px) auto auto;}.mud-badge.mud-badge-bottom.center{top:calc(100% - 4px);}.mud-badge.mud-badge-bottom.center.mud-badge-overlap{top:calc(100% - 12px);}.mud-badge.mud-badge-bottom.right{inset:calc(100% - 4px) auto auto calc(100% - 4px);}.mud-badge.mud-badge-bottom.right.mud-badge-overlap{inset:calc(100% - 12px) auto auto calc(100% - 12px);}.mud-toolbar{display:flex;position:relative;align-items:center;height:56px;}.mud-toolbar-gutters{padding-left:16px;padding-right:16px;}@media(min-width:0) and (orientation:landscape){.mud-toolbar{height:48px;}}@media(min-width:600px){.mud-toolbar{height:64px;}.mud-toolbar-gutters{padding-left:24px;padding-right:24px;}}.mud-toolbar-dense{height:48px;}.mud-tooltip-root{width:fit-content;}.mud-tooltip-root.mud-tooltip-inline{display:inline-block;}.mud-tooltip{padding:4px 8px;text-align:center;align-items:center;justify-content:center;font-weight:500;font-size:12px;line-height:1.4em;border-radius:var(--mud-default-borderradius);z-index:var(--mud-zindex-tooltip);}.mud-tooltip.mud-tooltip-default{color:var(--mud-palette-dark-text);background-color:var(--mud-palette-grey-darker);}.mud-tooltip.mud-tooltip-default.mud-tooltip-arrow::after{border-color:var(--mud-palette-grey-darker) transparent transparent transparent;}.mud-tooltip.mud-tooltip-center-left:not([data-mudpopover-flip]),.mud-tooltip.mud-tooltip-center-right[data-mudpopover-flip]{transform:translateX(-10px);}.mud-tooltip.mud-tooltip-center-left:not([data-mudpopover-flip]).mud-tooltip-arrow::after,.mud-tooltip.mud-tooltip-center-right[data-mudpopover-flip].mud-tooltip-arrow::after{left:100%;transform:rotate(270deg);}.mud-tooltip.mud-tooltip-center-right:not([data-mudpopover-flip]),.mud-tooltip.mud-tooltip-center-left[data-mudpopover-flip]{transform:translateX(10px);}.mud-tooltip.mud-tooltip-center-right:not([data-mudpopover-flip]).mud-tooltip-arrow::after,.mud-tooltip.mud-tooltip-center-left[data-mudpopover-flip].mud-tooltip-arrow::after{right:100%;transform:rotate(90deg);}.mud-tooltip.mud-tooltip-top-center:not([data-mudpopover-flip]),.mud-tooltip.mud-tooltip-bottom-center[data-mudpopover-flip]{transform:translateY(-10px);}.mud-tooltip.mud-tooltip-top-center:not([data-mudpopover-flip]).mud-tooltip-arrow::after,.mud-tooltip.mud-tooltip-bottom-center[data-mudpopover-flip].mud-tooltip-arrow::after{top:100%;transform:rotate(0deg);}.mud-tooltip.mud-tooltip-bottom-center:not([data-mudpopover-flip]),.mud-tooltip.mud-tooltip-top-center[data-mudpopover-flip]{transform:translateY(10px);}.mud-tooltip.mud-tooltip-bottom-center:not([data-mudpopover-flip]).mud-tooltip-arrow::after,.mud-tooltip.mud-tooltip-top-center[data-mudpopover-flip].mud-tooltip-arrow::after{bottom:100%;transform:rotate(180deg);}.mud-tooltip.mud-tooltip-arrow::after{content:"";position:absolute;border-width:6px;border-style:solid;border-color:transparent;border-top-color:inherit;}.mud-avatar{display:flex;overflow:hidden;position:relative;display:inline-flex;align-items:center;flex-shrink:0;line-height:1;user-select:none;border-radius:50%;justify-content:center;color:var(--mud-palette-white);background-color:var(--mud-palette-grey-light);}.mud-avatar.mud-avatar-small{width:24px;height:24px;font-size:.875rem;}.mud-avatar.mud-avatar-medium{width:40px;height:40px;font-size:1.25rem;}.mud-avatar.mud-avatar-large{width:56px;height:56px;font-size:1.75rem;}.mud-avatar-rounded{border-radius:var(--mud-default-borderradius);}.mud-avatar-square{border-radius:0;}.mud-avatar-img{color:transparent;width:100%;height:100%;object-fit:cover;text-align:center;text-indent:10000px;}.mud-avatar-fallback{width:75%;height:75%;}.mud-avatar-outlined{color:var(--mud-palette-text-primary);background-color:unset;border:1px solid var(--mud-palette-text-primary);}.mud-avatar-outlined.mud-avatar-outlined-primary{color:var(--mud-palette-primary);border:1px solid var(--mud-palette-primary);}.mud-avatar-outlined.mud-avatar-outlined-secondary{color:var(--mud-palette-secondary);border:1px solid var(--mud-palette-secondary);}.mud-avatar-outlined.mud-avatar-outlined-tertiary{color:var(--mud-palette-tertiary);border:1px solid var(--mud-palette-tertiary);}.mud-avatar-outlined.mud-avatar-outlined-info{color:var(--mud-palette-info);border:1px solid var(--mud-palette-info);}.mud-avatar-outlined.mud-avatar-outlined-success{color:var(--mud-palette-success);border:1px solid var(--mud-palette-success);}.mud-avatar-outlined.mud-avatar-outlined-warning{color:var(--mud-palette-warning);border:1px solid var(--mud-palette-warning);}.mud-avatar-outlined.mud-avatar-outlined-error{color:var(--mud-palette-error);border:1px solid var(--mud-palette-error);}.mud-avatar-outlined.mud-avatar-outlined-dark{color:var(--mud-palette-dark);border:1px solid var(--mud-palette-dark);}.mud-avatar-filled{color:var(--mud-palette-white);background-color:var(--mud-palette-grey-light);}.mud-avatar-filled.mud-avatar-filled-primary{background-color:var(--mud-palette-primary);}.mud-avatar-filled.mud-avatar-filled-secondary{background-color:var(--mud-palette-secondary);}.mud-avatar-filled.mud-avatar-filled-tertiary{background-color:var(--mud-palette-tertiary);}.mud-avatar-filled.mud-avatar-filled-info{background-color:var(--mud-palette-info);}.mud-avatar-filled.mud-avatar-filled-success{background-color:var(--mud-palette-success);}.mud-avatar-filled.mud-avatar-filled-warning{background-color:var(--mud-palette-warning);}.mud-avatar-filled.mud-avatar-filled-error{background-color:var(--mud-palette-error);}.mud-avatar-filled.mud-avatar-filled-dark{background-color:var(--mud-palette-dark);}.mud-avatar-group{display:flex;}.mud-avatar-group .mud-avatar:first-child{margin-inline-start:0 !important;}.mud-avatar-group.mud-avatar-group-outlined.mud-avatar-group-outlined-transparent .mud-avatar:not(.mud-avatar-outlined){border-color:transparent;}.mud-avatar-group.mud-avatar-group-outlined.mud-avatar-group-outlined-surface .mud-avatar:not(.mud-avatar-outlined){border-color:var(--mud-palette-surface);}.mud-avatar-group.mud-avatar-group-outlined.mud-avatar-group-outlined-primary .mud-avatar:not(.mud-avatar-outlined){border-color:var(--mud-palette-primary);}.mud-avatar-group.mud-avatar-group-outlined.mud-avatar-group-outlined-secondary .mud-avatar:not(.mud-avatar-outlined){border-color:var(--mud-palette-secondary);}.mud-avatar-group.mud-avatar-group-outlined.mud-avatar-group-outlined-tertiary .mud-avatar:not(.mud-avatar-outlined){border-color:var(--mud-palette-tertiary);}.mud-avatar-group.mud-avatar-group-outlined.mud-avatar-group-outlined-info .mud-avatar:not(.mud-avatar-outlined){border-color:var(--mud-palette-info);}.mud-avatar-group.mud-avatar-group-outlined.mud-avatar-group-outlined-success .mud-avatar:not(.mud-avatar-outlined){border-color:var(--mud-palette-success);}.mud-avatar-group.mud-avatar-group-outlined.mud-avatar-group-outlined-warning .mud-avatar:not(.mud-avatar-outlined){border-color:var(--mud-palette-warning);}.mud-avatar-group.mud-avatar-group-outlined.mud-avatar-group-outlined-error .mud-avatar:not(.mud-avatar-outlined){border-color:var(--mud-palette-error);}.mud-avatar-group.mud-avatar-group-outlined.mud-avatar-group-outlined-dark .mud-avatar:not(.mud-avatar-outlined){border-color:var(--mud-palette-dark);}.mud-avatar-group.mud-avatar-group-outlined .mud-avatar{border:2px solid;}.mud-avatar-group.mud-avatar-group-outlined .mud-avatar.mud-avatar-small{width:28px;height:28px;}.mud-avatar-group.mud-avatar-group-outlined .mud-avatar.mud-avatar-medium{width:44px;height:44px;}.mud-avatar-group.mud-avatar-group-outlined .mud-avatar.mud-avatar-large{width:60px;height:60px;}.mud-breadcrumbs{display:flex;flex-wrap:wrap;flex:0 1 auto;align-items:center;list-style-type:none;margin:0;padding:16px 12px;}.mud-breadcrumb-separator{padding:0 12px;}.mud-breadcrumb-separator>span{color:var(--mud-palette-text-primary);opacity:.38;}.mud-breadcrumb-item>a{display:flex;align-items:center;}.mud-breadcrumb-item>a>svg.mud-icon-root{margin-right:4px;margin-inline-end:4px;margin-inline-start:unset;}.mud-breadcrumb-item.mud-disabled>a{pointer-events:none;color:var(--mud-palette-action-disabled);}.mud-breadcrumbs-expander{cursor:pointer;display:flex;background-color:#eee;}.mud-breadcrumbs-expander:hover{background-color:#e0e0e0;}.mud-breadcrumbs-expander>svg{width:26px;}.mud-button-root{color:inherit;border:0;cursor:pointer;margin:0;display:inline-flex;outline:0;padding:0;position:relative;align-items:center;user-select:none;border-radius:0;vertical-align:middle;-moz-appearance:none;justify-content:center;text-decoration:none;background-color:transparent;-webkit-appearance:none;-webkit-tap-highlight-color:transparent;}.mud-button-root::-moz-focus-inner{border-style:none;}.mud-button-root:disabled{color:var(--mud-palette-action-disabled) !important;cursor:default;pointer-events:none;}.mud-button{padding:6px 16px;font-family:var(--mud-typography-button-family);font-size:var(--mud-typography-button-size);font-weight:var(--mud-typography-button-weight);line-height:var(--mud-typography-button-lineheight);letter-spacing:var(--mud-typography-button-letterspacing);text-transform:var(--mud-typography-button-text-transform);min-width:64px;box-sizing:border-box;transition:background-color 250ms cubic-bezier(.4,0,.2,1) 0ms,box-shadow 250ms cubic-bezier(.4,0,.2,1) 0ms,border 250ms cubic-bezier(.4,0,.2,1) 0ms;border-radius:var(--mud-default-borderradius);color:var(--mud-palette-text-primary);}.mud-button:hover,.mud-button:focus-visible{background-color:var(--mud-palette-action-default-hover);}.mud-button-label{width:100%;display:inherit;align-items:inherit;justify-content:inherit;}.mud-button-text{padding:6px 8px;}.mud-button-text.mud-button-text-inherit{color:inherit;}.mud-button-text.mud-button-text-primary{color:var(--mud-palette-primary);}.mud-button-text.mud-button-text-primary:hover,.mud-button-text.mud-button-text-primary:focus-visible{background-color:var(--mud-palette-primary-hover);}.mud-button-text.mud-button-text-secondary{color:var(--mud-palette-secondary);}.mud-button-text.mud-button-text-secondary:hover,.mud-button-text.mud-button-text-secondary:focus-visible{background-color:var(--mud-palette-secondary-hover);}.mud-button-text.mud-button-text-tertiary{color:var(--mud-palette-tertiary);}.mud-button-text.mud-button-text-tertiary:hover,.mud-button-text.mud-button-text-tertiary:focus-visible{background-color:var(--mud-palette-tertiary-hover);}.mud-button-text.mud-button-text-info{color:var(--mud-palette-info);}.mud-button-text.mud-button-text-info:hover,.mud-button-text.mud-button-text-info:focus-visible{background-color:var(--mud-palette-info-hover);}.mud-button-text.mud-button-text-success{color:var(--mud-palette-success);}.mud-button-text.mud-button-text-success:hover,.mud-button-text.mud-button-text-success:focus-visible{background-color:var(--mud-palette-success-hover);}.mud-button-text.mud-button-text-warning{color:var(--mud-palette-warning);}.mud-button-text.mud-button-text-warning:hover,.mud-button-text.mud-button-text-warning:focus-visible{background-color:var(--mud-palette-warning-hover);}.mud-button-text.mud-button-text-error{color:var(--mud-palette-error);}.mud-button-text.mud-button-text-error:hover,.mud-button-text.mud-button-text-error:focus-visible{background-color:var(--mud-palette-error-hover);}.mud-button-text.mud-button-text-dark{color:var(--mud-palette-dark);}.mud-button-text.mud-button-text-dark:hover,.mud-button-text.mud-button-text-dark:focus-visible{background-color:var(--mud-palette-dark-hover);}.mud-button-outlined{color:var(--mud-palette-text-primary);border:1px solid var(--mud-palette-text-primary);padding:5px 15px;}.mud-button-outlined.mud-button-outlined-inherit{color:inherit;border-color:currentColor;}.mud-button-outlined.mud-icon-button{padding:5px;}.mud-button-outlined:hover,.mud-button-outlined:focus-visible{background-color:var(--mud-palette-action-default-hover);}.mud-button-outlined.mud-button-outlined-primary{color:var(--mud-palette-primary);border:1px solid var(--mud-palette-primary);}.mud-button-outlined.mud-button-outlined-primary:hover,.mud-button-outlined.mud-button-outlined-primary:focus-visible{border:1px solid var(--mud-palette-primary);background-color:var(--mud-palette-primary-hover);}.mud-button-outlined.mud-button-outlined-secondary{color:var(--mud-palette-secondary);border:1px solid var(--mud-palette-secondary);}.mud-button-outlined.mud-button-outlined-secondary:hover,.mud-button-outlined.mud-button-outlined-secondary:focus-visible{border:1px solid var(--mud-palette-secondary);background-color:var(--mud-palette-secondary-hover);}.mud-button-outlined.mud-button-outlined-tertiary{color:var(--mud-palette-tertiary);border:1px solid var(--mud-palette-tertiary);}.mud-button-outlined.mud-button-outlined-tertiary:hover,.mud-button-outlined.mud-button-outlined-tertiary:focus-visible{border:1px solid var(--mud-palette-tertiary);background-color:var(--mud-palette-tertiary-hover);}.mud-button-outlined.mud-button-outlined-info{color:var(--mud-palette-info);border:1px solid var(--mud-palette-info);}.mud-button-outlined.mud-button-outlined-info:hover,.mud-button-outlined.mud-button-outlined-info:focus-visible{border:1px solid var(--mud-palette-info);background-color:var(--mud-palette-info-hover);}.mud-button-outlined.mud-button-outlined-success{color:var(--mud-palette-success);border:1px solid var(--mud-palette-success);}.mud-button-outlined.mud-button-outlined-success:hover,.mud-button-outlined.mud-button-outlined-success:focus-visible{border:1px solid var(--mud-palette-success);background-color:var(--mud-palette-success-hover);}.mud-button-outlined.mud-button-outlined-warning{color:var(--mud-palette-warning);border:1px solid var(--mud-palette-warning);}.mud-button-outlined.mud-button-outlined-warning:hover,.mud-button-outlined.mud-button-outlined-warning:focus-visible{border:1px solid var(--mud-palette-warning);background-color:var(--mud-palette-warning-hover);}.mud-button-outlined.mud-button-outlined-error{color:var(--mud-palette-error);border:1px solid var(--mud-palette-error);}.mud-button-outlined.mud-button-outlined-error:hover,.mud-button-outlined.mud-button-outlined-error:focus-visible{border:1px solid var(--mud-palette-error);background-color:var(--mud-palette-error-hover);}.mud-button-outlined.mud-button-outlined-dark{color:var(--mud-palette-dark);border:1px solid var(--mud-palette-dark);}.mud-button-outlined.mud-button-outlined-dark:hover,.mud-button-outlined.mud-button-outlined-dark:focus-visible{border:1px solid var(--mud-palette-dark);background-color:var(--mud-palette-dark-hover);}.mud-button-outlined:disabled{border:1px solid var(--mud-palette-action-disabled-background);}.mud-button-filled{color:var(--mud-palette-text-primary);box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);background-color:var(--mud-palette-action-default-hover);}.mud-button-filled.mud-icon-button{padding:6px;}.mud-button-filled:hover,.mud-button-filled:focus-visible{box-shadow:0 2px 4px -1px rgba(0,0,0,.2),0 4px 5px 0 rgba(0,0,0,.14),0 1px 10px 0 rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background);}.mud-button-filled:active{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);}.mud-button-filled:disabled{color:var(--mud-palette-action-disabled);box-shadow:none;background-color:var(--mud-palette-action-disabled-background) !important;}.mud-button-filled.mud-button-filled-primary{color:var(--mud-palette-primary-text);background-color:var(--mud-palette-primary);}.mud-button-filled.mud-button-filled-primary:hover,.mud-button-filled.mud-button-filled-primary:focus-visible{background-color:var(--mud-palette-primary-darken);}.mud-button-filled.mud-button-filled-secondary{color:var(--mud-palette-secondary-text);background-color:var(--mud-palette-secondary);}.mud-button-filled.mud-button-filled-secondary:hover,.mud-button-filled.mud-button-filled-secondary:focus-visible{background-color:var(--mud-palette-secondary-darken);}.mud-button-filled.mud-button-filled-tertiary{color:var(--mud-palette-tertiary-text);background-color:var(--mud-palette-tertiary);}.mud-button-filled.mud-button-filled-tertiary:hover,.mud-button-filled.mud-button-filled-tertiary:focus-visible{background-color:var(--mud-palette-tertiary-darken);}.mud-button-filled.mud-button-filled-info{color:var(--mud-palette-info-text);background-color:var(--mud-palette-info);}.mud-button-filled.mud-button-filled-info:hover,.mud-button-filled.mud-button-filled-info:focus-visible{background-color:var(--mud-palette-info-darken);}.mud-button-filled.mud-button-filled-success{color:var(--mud-palette-success-text);background-color:var(--mud-palette-success);}.mud-button-filled.mud-button-filled-success:hover,.mud-button-filled.mud-button-filled-success:focus-visible{background-color:var(--mud-palette-success-darken);}.mud-button-filled.mud-button-filled-warning{color:var(--mud-palette-warning-text);background-color:var(--mud-palette-warning);}.mud-button-filled.mud-button-filled-warning:hover,.mud-button-filled.mud-button-filled-warning:focus-visible{background-color:var(--mud-palette-warning-darken);}.mud-button-filled.mud-button-filled-error{color:var(--mud-palette-error-text);background-color:var(--mud-palette-error);}.mud-button-filled.mud-button-filled-error:hover,.mud-button-filled.mud-button-filled-error:focus-visible{background-color:var(--mud-palette-error-darken);}.mud-button-filled.mud-button-filled-dark{color:var(--mud-palette-dark-text);background-color:var(--mud-palette-dark);}.mud-button-filled.mud-button-filled-dark:hover,.mud-button-filled.mud-button-filled-dark:focus-visible{background-color:var(--mud-palette-dark-darken);}.mud-button-disable-elevation{box-shadow:none;}.mud-button-disable-elevation:hover{box-shadow:none;}.mud-button-disable-elevation:active{box-shadow:none;}.mud-button-disable-elevation.mud-focus-visible{box-shadow:none;}.mud-button-disable-elevation:disabled{box-shadow:none;}.mud-button-color-inherit{color:inherit;border-color:currentColor;}.mud-button-text-size-small{padding:4px 5px;font-size:.8125rem;}.mud-button-text-size-large{padding:8px 11px;font-size:.9375rem;}.mud-button-outlined-size-small{padding:3px 9px;font-size:.8125rem;}.mud-button-outlined-size-small.mud-icon-button{padding:4px;}.mud-button-outlined-size-large{padding:7px 21px;font-size:.9375rem;}.mud-button-outlined-size-large.mud-icon-button{padding:4px;}.mud-button-filled-size-small{padding:4px 10px;font-size:.8125rem;}.mud-button-filled-size-small.mud-icon-button{padding:5px;}.mud-button-filled-size-large{padding:8px 22px;font-size:.9375rem;}.mud-button-filled-size-large.mud-icon-button{padding:5px;}.mud-button-full-width{width:100%;}.mud-button-label .mud-button-icon-start{display:inherit;margin-left:-4px;margin-right:8px;margin-inline-start:-4px;margin-inline-end:8px;}.mud-button-label .mud-button-icon-start.mud-button-icon-size-small{margin-left:-2px;margin-inline-start:-2px;margin-inline-end:8px;}.mud-button-label .mud-button-icon-end{display:inherit;margin-left:8px;margin-right:-4px;margin-inline-start:8px;margin-inline-end:-4px;}.mud-button-label .mud-button-icon-end.mud-button-icon-size-small{margin-right:-2px;margin-inline-end:-2px;margin-inline-start:8px;}.mud-button-icon-size-small>*:first-child{font-size:18px;}.mud-button-icon-size-medium>*:first-child{font-size:20px;}.mud-button-icon-size-large>*:first-child{font-size:22px;}.mud-button-group-root{border-radius:var(--mud-default-borderradius);display:inline-flex;}.mud-button-group-root .mud-button-root{border-radius:var(--mud-default-borderradius);}.mud-button-group-root.mud-button-group-override-styles .mud-button{color:var(--mud-palette-text-primary);}.mud-button-group-root.mud-button-group-override-styles .mud-button-root{background-color:inherit;box-shadow:none;border:none;}.mud-button-group-root.mud-button-group-override-styles .mud-button-root:hover,.mud-button-group-root.mud-button-group-override-styles .mud-button-root:focus-visible{background-color:var(--mud-palette-action-default-hover);}.mud-button-group-horizontal:not(.mud-button-group-rtl)>.mud-button-root:not(:last-child),.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:last-child) .mud-button-root{border-top-right-radius:0;border-bottom-right-radius:0;}.mud-button-group-horizontal:not(.mud-button-group-rtl)>.mud-button-root:not(:first-child),.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px;}.mud-button-group-horizontal.mud-button-group-rtl>.mud-button-root:not(:last-child),.mud-button-group-horizontal.mud-button-group-rtl>:not(:last-child) .mud-button-root{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px;}.mud-button-group-horizontal.mud-button-group-rtl>.mud-button-root:not(:first-child),.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-top-right-radius:0;border-bottom-right-radius:0;}.mud-button-group-vertical{flex-direction:column;}.mud-button-group-vertical .mud-icon-button{width:100%;}.mud-button-group-vertical>.mud-button-root:not(:last-child),.mud-button-group-vertical>:not(:last-child) .mud-button-root{border-bottom-right-radius:0;border-bottom-left-radius:0;}.mud-button-group-vertical>.mud-button-root:not(:first-child),.mud-button-group-vertical>:not(:first-child) .mud-button-root{border-top-right-radius:0;border-top-left-radius:0;margin-top:-1px;}.mud-button-group-text.mud-button-group-override-styles .mud-button-root{padding:6px 8px;}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-text-primary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-text-primary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-vertical .mud-button-root:not(:last-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-vertical>:not(:last-child) .mud-button-root{border-bottom:1px solid var(--mud-palette-text-primary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root{color:var(--mud-palette-primary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root:hover,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root:focus-visible{background-color:var(--mud-palette-primary-hover);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-primary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-primary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary.mud-button-group-vertical .mud-button-root:not(:last-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary.mud-button-group-vertical>:not(:last-child) .mud-button-root{border-bottom:1px solid var(--mud-palette-primary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root{color:var(--mud-palette-secondary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root:hover,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root:focus-visible{background-color:var(--mud-palette-secondary-hover);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-secondary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-secondary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary.mud-button-group-vertical .mud-button-root:not(:last-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary.mud-button-group-vertical>:not(:last-child) .mud-button-root{border-bottom:1px solid var(--mud-palette-secondary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root{color:var(--mud-palette-tertiary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root:hover,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root:focus-visible{background-color:var(--mud-palette-tertiary-hover);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-tertiary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-tertiary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary.mud-button-group-vertical .mud-button-root:not(:last-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary.mud-button-group-vertical>:not(:last-child) .mud-button-root{border-bottom:1px solid var(--mud-palette-tertiary);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root{color:var(--mud-palette-info);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root:hover,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root:focus-visible{background-color:var(--mud-palette-info-hover);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-info);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-info);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info.mud-button-group-vertical .mud-button-root:not(:last-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info.mud-button-group-vertical>:not(:last-child) .mud-button-root{border-bottom:1px solid var(--mud-palette-info);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root{color:var(--mud-palette-success);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root:hover,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root:focus-visible{background-color:var(--mud-palette-success-hover);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-success);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-success);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success.mud-button-group-vertical .mud-button-root:not(:last-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success.mud-button-group-vertical>:not(:last-child) .mud-button-root{border-bottom:1px solid var(--mud-palette-success);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root{color:var(--mud-palette-warning);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root:hover,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root:focus-visible{background-color:var(--mud-palette-warning-hover);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-warning);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-warning);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning.mud-button-group-vertical .mud-button-root:not(:last-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning.mud-button-group-vertical>:not(:last-child) .mud-button-root{border-bottom:1px solid var(--mud-palette-warning);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root{color:var(--mud-palette-error);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root:hover,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root:focus-visible{background-color:var(--mud-palette-error-hover);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-error);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-error);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error.mud-button-group-vertical .mud-button-root:not(:last-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error.mud-button-group-vertical>:not(:last-child) .mud-button-root{border-bottom:1px solid var(--mud-palette-error);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root{color:var(--mud-palette-dark);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root:hover,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root:focus-visible{background-color:var(--mud-palette-dark-hover);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-dark);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-dark);}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark.mud-button-group-vertical .mud-button-root:not(:last-child),.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark.mud-button-group-vertical>:not(:last-child) .mud-button-root{border-bottom:1px solid var(--mud-palette-dark);}.mud-button-group-outlined.mud-button-group-override-styles .mud-button-root{padding:5px 15px;border:1px solid var(--mud-palette-text-primary);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root{color:var(--mud-palette-primary);border:1px solid var(--mud-palette-primary);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root:hover,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root:focus-visible{background-color:var(--mud-palette-primary-hover);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root{color:var(--mud-palette-secondary);border:1px solid var(--mud-palette-secondary);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root:hover,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root:focus-visible{background-color:var(--mud-palette-secondary-hover);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root{color:var(--mud-palette-tertiary);border:1px solid var(--mud-palette-tertiary);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root:hover,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root:focus-visible{background-color:var(--mud-palette-tertiary-hover);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root{color:var(--mud-palette-info);border:1px solid var(--mud-palette-info);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root:hover,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root:focus-visible{background-color:var(--mud-palette-info-hover);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root{color:var(--mud-palette-success);border:1px solid var(--mud-palette-success);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root:hover,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root:focus-visible{background-color:var(--mud-palette-success-hover);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root{color:var(--mud-palette-warning);border:1px solid var(--mud-palette-warning);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root:hover,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root:focus-visible{background-color:var(--mud-palette-warning-hover);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root{color:var(--mud-palette-error);border:1px solid var(--mud-palette-error);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root:hover,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root:focus-visible{background-color:var(--mud-palette-error-hover);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root{color:var(--mud-palette-dark);border:1px solid var(--mud-palette-dark);}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root:hover,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root:focus-visible{background-color:var(--mud-palette-dark-hover);}.mud-button-group-filled{box-shadow:var(--mud-elevation-2);}.mud-button-group-filled .mud-button-root{box-shadow:none;}.mud-button-group-filled .mud-button-root:hover,.mud-button-group-filled .mud-button-root:focus-visible{box-shadow:var(--mud-elevation-4);}.mud-button-group-filled.mud-button-group-override-styles .mud-button-root{background-color:var(--mud-palette-action-default-hover);padding:6px 16px;}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-divider);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-divider);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-vertical .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-vertical>:not(:first-child) .mud-button-root{border-top:1px solid var(--mud-palette-divider);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root{background-color:var(--mud-palette-primary);color:var(--mud-palette-primary-text);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:hover,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:focus-visible{background-color:var(--mud-palette-primary-darken);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-primary-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-primary-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary.mud-button-group-vertical .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary.mud-button-group-vertical>:not(:first-child) .mud-button-root{border-top:1px solid var(--mud-palette-primary-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root{background-color:var(--mud-palette-secondary);color:var(--mud-palette-secondary-text);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:hover,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:focus-visible{background-color:var(--mud-palette-secondary-darken);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-secondary-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-secondary-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary.mud-button-group-vertical .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary.mud-button-group-vertical>:not(:first-child) .mud-button-root{border-top:1px solid var(--mud-palette-secondary-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root{background-color:var(--mud-palette-tertiary);color:var(--mud-palette-tertiary-text);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:hover,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:focus-visible{background-color:var(--mud-palette-tertiary-darken);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-tertiary-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-tertiary-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary.mud-button-group-vertical .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary.mud-button-group-vertical>:not(:first-child) .mud-button-root{border-top:1px solid var(--mud-palette-tertiary-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root{background-color:var(--mud-palette-info);color:var(--mud-palette-info-text);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:hover,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:focus-visible{background-color:var(--mud-palette-info-darken);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-info-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-info-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info.mud-button-group-vertical .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info.mud-button-group-vertical>:not(:first-child) .mud-button-root{border-top:1px solid var(--mud-palette-info-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root{background-color:var(--mud-palette-success);color:var(--mud-palette-success-text);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:hover,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:focus-visible{background-color:var(--mud-palette-success-darken);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-success-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-success-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success.mud-button-group-vertical .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success.mud-button-group-vertical>:not(:first-child) .mud-button-root{border-top:1px solid var(--mud-palette-success-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root{background-color:var(--mud-palette-warning);color:var(--mud-palette-warning-text);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:hover,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:focus-visible{background-color:var(--mud-palette-warning-darken);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-warning-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-warning-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning.mud-button-group-vertical .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning.mud-button-group-vertical>:not(:first-child) .mud-button-root{border-top:1px solid var(--mud-palette-warning-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root{background-color:var(--mud-palette-error);color:var(--mud-palette-error-text);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:hover,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:focus-visible{background-color:var(--mud-palette-error-darken);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-error-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-error-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error.mud-button-group-vertical .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error.mud-button-group-vertical>:not(:first-child) .mud-button-root{border-top:1px solid var(--mud-palette-error-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root{background-color:var(--mud-palette-dark);color:var(--mud-palette-dark-text);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:hover,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:focus-visible{background-color:var(--mud-palette-dark-darken);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark.mud-button-group-horizontal:not(.mud-button-group-rtl) .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark.mud-button-group-horizontal:not(.mud-button-group-rtl)>:not(:first-child) .mud-button-root{border-left:1px solid var(--mud-palette-dark-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark.mud-button-group-horizontal.mud-button-group-rtl .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark.mud-button-group-horizontal.mud-button-group-rtl>:not(:first-child) .mud-button-root{border-right:1px solid var(--mud-palette-dark-lighten);}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark.mud-button-group-vertical .mud-button-root:not(:first-child),.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark.mud-button-group-vertical>:not(:first-child) .mud-button-root{border-top:1px solid var(--mud-palette-dark-lighten);}.mud-button-group-disable-elevation{box-shadow:none;}.mud-button-group-root.mud-button-group-text-size-small .mud-button-root{padding:4px 5px;font-size:.8125rem;}.mud-button-group-root.mud-button-group-text-size-small .mud-button-root.mud-icon-button .mud-icon-root{font-size:1.422rem;}.mud-button-group-root.mud-button-group-text-size-large .mud-button-root{padding:8px 11px;font-size:.9375rem;}.mud-button-group-root.mud-button-group-text-size-large .mud-button-root.mud-icon-button .mud-icon-root{font-size:1.641rem;}.mud-button-group-root.mud-button-group-outlined-size-small .mud-button-root{padding:3px 9px;font-size:.8125rem;}.mud-button-group-root.mud-button-group-outlined-size-small .mud-button-root.mud-icon-button{padding:3px 9px;}.mud-button-group-root.mud-button-group-outlined-size-small .mud-button-root.mud-icon-button .mud-icon-root{font-size:1.422rem;}.mud-button-group-root.mud-button-group-outlined-size-large .mud-button-root{padding:7px 21px;font-size:.9375rem;}.mud-button-group-root.mud-button-group-outlined-size-large .mud-button-root.mud-icon-button{padding:7px 15px;}.mud-button-group-root.mud-button-group-outlined-size-large .mud-button-root.mud-icon-button .mud-icon-root{font-size:1.641rem;}.mud-button-group-root.mud-button-group-filled-size-small .mud-button-root{padding:4px 10px;font-size:.8125rem;}.mud-button-group-root.mud-button-group-filled-size-small .mud-button-root.mud-icon-button{padding:4px 10px;}.mud-button-group-root.mud-button-group-filled-size-small .mud-button-root.mud-icon-button .mud-icon-root{font-size:1.422rem;}.mud-button-group-root.mud-button-group-filled-size-large .mud-button-root{padding:8px 22px;font-size:.9375rem;}.mud-button-group-root.mud-button-group-filled-size-large .mud-button-root.mud-icon-button{padding:8px 16px;}.mud-button-group-root.mud-button-group-filled-size-large .mud-button-root.mud-icon-button .mud-icon-root{font-size:1.641rem;}.mud-button-group-root .mud-button-root.mud-icon-button{padding-right:12px;padding-left:12px;}.mud-button-group-root .mud-button-root.mud-icon-button .mud-icon-root{font-size:1.516rem;}.mud-button-group-root .mud-button-root.mud-icon-button.mud-ripple-icon:after{transform:scale(10,10);}.mud-button-group-root .mud-button-root.mud-icon-button.mud-ripple-icon:active:after{transform:scale(0,0);opacity:.1;transition:0s;}.mud-icon-button{flex:0 0 auto;padding:12px;overflow:visible;font-size:1.5rem;text-align:center;transition:background-color 150ms cubic-bezier(.4,0,.2,1) 0ms;border-radius:50%;color:var(--mud-palette-action-default);}.mud-icon-button.mud-button{min-width:unset;border-radius:var(--mud-default-borderradius);}.mud-icon-button:hover,.mud-icon-button:focus-visible{background-color:var(--mud-palette-action-default-hover);}.mud-icon-button:disabled{color:var(--mud-palette-action-disabled);background-color:transparent;}.mud-icon-button.mud-readonly,.mud-icon-button .mud-readonly:hover{cursor:default;}.mud-icon-button-color-inherit{color:inherit;}.mud-icon-button-color-inherit:hover,.mud-icon-button-color-inherit:focus-visible{background-color:var(--mud-palette-action-default-hover);}.mud-icon-button-label{width:100%;display:flex;align-items:inherit;justify-content:inherit;}.mud-icon-button-edge-start{margin-left:-12px;margin-inline-start:-12px;margin-inline-end:unset;}.mud-icon-button-edge-end{margin-right:-12px;margin-inline-end:-12px;margin-inline-start:unset;}.mud-icon-button-edge-margin-end{margin-right:8px;margin-inline-end:8px;margin-inline-start:unset;}.mud-icon-button-size-small{padding:3px;font-size:1.125rem;}.mud-icon-button-size-small.mud-icon-button-edge-start{margin-left:-3px;margin-inline-start:-3px;margin-inline-end:unset;}.mud-icon-button-size-small.mud-icon-button-edge-end{margin-right:-3px;margin-inline-end:-3px;margin-inline-start:unset;}.mud-icon-button-size-large.mud-button>.mud-icon-button-label>.mud-icon-size-large{font-size:2rem;}.mud-card-header{display:flex;padding:16px;align-items:center;border-top-left-radius:inherit;border-top-right-radius:inherit;}.mud-card-header .mud-card-header-avatar{flex:0 0 auto;margin-right:16px;margin-inline-end:16px;margin-inline-start:unset;}.mud-card-header .mud-card-header-content{flex:1 1 auto;}.mud-card-header .mud-card-header-content .mud-typography{margin-bottom:0;}.mud-card-header .mud-card-header-actions{flex:0 0 auto;align-self:flex-start;margin-top:-8px;margin-right:-8px;margin-inline-end:-8px;margin-inline-start:unset;}.mud-card-media{display:block;background-size:cover;background-repeat:no-repeat;background-position:center;border-top-left-radius:inherit;border-top-right-radius:inherit;}.mud-card-header+.mud-card-media{border-top-left-radius:0;border-top-right-radius:0;}.mud-card-content{padding:16px;}.mud-card-actions{display:flex;padding:8px;align-items:center;}.mud-carousel{display:flex !important;position:relative;margin:0 !important;clip-path:inset(0 0 0 0);overflow:hidden;}.mud-carousel.mud-carousel-primary{color:var(--mud-palette-primary-text);}.mud-carousel.mud-carousel-secondary{color:var(--mud-palette-secondary-text);}.mud-carousel.mud-carousel-tertiary{color:var(--mud-palette-tertiary-text);}.mud-carousel.mud-carousel-info{color:var(--mud-palette-info-text);}.mud-carousel.mud-carousel-success{color:var(--mud-palette-success-text);}.mud-carousel.mud-carousel-warning{color:var(--mud-palette-warning-text);}.mud-carousel.mud-carousel-error{color:var(--mud-palette-error-text);}.mud-carousel.mud-carousel-dark{color:var(--mud-palette-dark-text);}.mud-carousel-elements-rtl{transform:rotate(180deg) !important;}.mud-carousel-item{position:absolute;left:0;right:0;top:0;bottom:0;margin:inherit;padding:inherit;z-index:2;}.mud-carousel-item.mud-carousel-item-primary{color:var(--mud-palette-primary-text);background-color:var(--mud-palette-primary);}.mud-carousel-item.mud-carousel-item-secondary{color:var(--mud-palette-secondary-text);background-color:var(--mud-palette-secondary);}.mud-carousel-item.mud-carousel-item-tertiary{color:var(--mud-palette-tertiary-text);background-color:var(--mud-palette-tertiary);}.mud-carousel-item.mud-carousel-item-info{color:var(--mud-palette-info-text);background-color:var(--mud-palette-info);}.mud-carousel-item.mud-carousel-item-success{color:var(--mud-palette-success-text);background-color:var(--mud-palette-success);}.mud-carousel-item.mud-carousel-item-warning{color:var(--mud-palette-warning-text);background-color:var(--mud-palette-warning);}.mud-carousel-item.mud-carousel-item-error{color:var(--mud-palette-error-text);background-color:var(--mud-palette-error);}.mud-carousel-item.mud-carousel-item-dark{color:var(--mud-palette-dark-text);background-color:var(--mud-palette-dark);}.mud-carousel-item-exit{z-index:1;}@keyframes mud-carousel-transition-fade-in-keyframe{from{opacity:0;}to{opacity:1;}}@keyframes mud-carousel-transition-fade-out-keyframe{from{opacity:1;}to{opacity:0;}}.mud-carousel-transition-fade-in{animation:.5s mud-carousel-transition-fade-in-keyframe;}.mud-carousel-transition-fade-out{animation:.5s mud-carousel-transition-fade-out-keyframe;animation-fill-mode:forwards;}.mud-carousel-transition-none{display:none;}@keyframes mud-carousel-transition-slide-next-enter-keyframe{from{transform:translate3d(100%,0,0);visibility:visible;}to{transform:translate3d(0,0,0);}}@keyframes mud-carousel-transition-slide-next-rtl-enter-keyframe{from{transform:translate3d(-100%,0,0);visibility:visible;}to{transform:translate3d(0,0,0);}}@keyframes mud-carousel-transition-slide-next-exit-keyframe{from{transform:translate3d(0,0,0);visibility:visible;}to{transform:translate3d(-100%,0,0);}}@keyframes mud-carousel-transition-slide-next-rtl-exit-keyframe{from{transform:translate3d(0,0,0);visibility:visible;}to{transform:translate3d(100%,0,0);}}.mud-carousel-transition-slide-next-enter{animation:.5s mud-carousel-transition-slide-next-enter-keyframe;}.mud-carousel-transition-slide-next-rtl-enter{animation:.5s mud-carousel-transition-slide-next-rtl-enter-keyframe;}.mud-carousel-transition-slide-next-exit{animation:.5s mud-carousel-transition-slide-next-exit-keyframe;animation-fill-mode:forwards;}.mud-carousel-transition-slide-next-rtl-exit{animation:.5s mud-carousel-transition-slide-next-rtl-exit-keyframe;animation-fill-mode:forwards;}@keyframes mud-carousel-transition-slide-prev-enter-keyframe{from{transform:translate3d(-100%,0,0);visibility:visible;}to{transform:translate3d(0,0,0);}}@keyframes mud-carousel-transition-slide-prev-rtl-enter-keyframe{from{transform:translate3d(100%,0,0);visibility:visible;}to{transform:translate3d(0,0,0);}}@keyframes mud-carousel-transition-slide-prev-exit-keyframe{from{transform:translate3d(0,0,0);visibility:visible;}to{transform:translate3d(100%,0,0);}}@keyframes mud-carousel-transition-slide-prev-rtl-exit-keyframe{from{transform:translate3d(0,0,0);visibility:visible;}to{transform:translate3d(-100%,0,0);}}.mud-carousel-transition-slide-prev-enter{animation:.5s mud-carousel-transition-slide-prev-enter-keyframe;}.mud-carousel-transition-slide-prev-rtl-enter{animation:.5s mud-carousel-transition-slide-prev-rtl-enter-keyframe;}.mud-carousel-transition-slide-prev-exit{animation:.5s mud-carousel-transition-slide-prev-exit-keyframe;animation-fill-mode:forwards;}.mud-carousel-transition-slide-prev-rtl-exit{animation:.5s mud-carousel-transition-slide-prev-rtl-exit-keyframe;animation-fill-mode:forwards;}.mud-chart{display:flex;}.mud-chart.mud-chart-legend-bottom{flex-direction:column;}.mud-chart.mud-chart-legend-bottom .mud-chart-legend{margin-top:10px;justify-content:center;width:100%;}.mud-chart.mud-chart-legend-top{flex-direction:column-reverse;}.mud-chart.mud-chart-legend-top .mud-chart-legend{justify-content:center;width:100%;}.mud-chart.mud-chart-legend-right{flex-direction:row;}.mud-chart.mud-chart-legend-right .mud-chart-legend{flex-direction:column;}.mud-chart.mud-chart-legend-left{flex-direction:row-reverse;}.mud-chart.mud-chart-legend-left .mud-chart-legend{flex-direction:column;}.mud-chart .mud-chart-donut,.mud-chart .mud-chart-pie,.mud-chart mud-chart-line{display:flex;margin:auto;}.mud-chart .mud-chart-legend{display:flex;padding:10px 0;margin:auto;flex-wrap:wrap;}.mud-chart .mud-chart-legend .mud-chart-legend-item{display:block;margin:2px 5px;}.mud-chart .mud-chart-legend .mud-chart-legend-item .mud-chart-legend-marker{height:12px;width:12px;border-radius:50%;position:relative;display:inline-flex;}.mud-chart .mud-chart-legend .mud-chart-legend-item .mud-chart-legend-text{display:inline-flex;}.mud-charts-yaxis{fill:var(--mud-palette-text-primary);}.mud-charts-xaxis{fill:var(--mud-palette-text-primary);}.mud-chart-donut .mud-donut-hole{fill:transparent;user-select:none;pointer-events:unset;}.mud-chart-donut .mud-donut-ring{fill:transparent;stroke-width:5;stroke:white;pointer-events:unset;}.mud-chart-donut .mud-donut-segment{stroke-width:5;fill:transparent;pointer-events:stroke;-webkit-transition:stroke .2s ease;-moz-transition:stroke .2s ease;-o-transition:stroke .2s ease;transition:stroke .2s ease;}.mud-chart-legend-marker{height:12px;width:12px;border-radius:50%;position:relative;display:inline-block;}.mud-chart-marker-color-0{background-color:#008ffb;}.mud-chart-marker-color-1{background-color:#00e396;}.mud-chart-marker-color-2{background-color:#feb019;}.mud-chart-marker-color-3{background-color:#ff4560;}.mud-chart-marker-color-4{background-color:#594ae2;}.mud-checkbox{cursor:pointer;display:inline-flex;align-items:center;vertical-align:middle;-webkit-tap-highlight-color:transparent;}.mud-checkbox.mud-disabled,.mud-checkbox .mud-disabled:hover,.mud-checkbox .mud-disabled:focus-visible{cursor:default;background-color:transparent !important;}.mud-checkbox.mud-disabled *,.mud-checkbox .mud-disabled:hover *,.mud-checkbox .mud-disabled:focus-visible *{cursor:default;color:var(--mud-palette-text-disabled);}.mud-checkbox.mud-readonly,.mud-checkbox .mud-readonly:hover{cursor:default;}.mud-checkbox .mud-checkbox-dense{padding:4px;}.mud-checkbox-input{top:0;left:0;width:100%;cursor:inherit;height:100%;margin:0;opacity:0;padding:0;z-index:1;position:absolute;}.mud-checkbox-span{display:inline-block;width:100%;cursor:pointer;}.mud-chip{border:none;cursor:default;display:inline-flex;max-width:100%;outline:0;padding:0 12px;position:relative;box-sizing:border-box;transition:background-color 300ms cubic-bezier(.4,0,.2,1) 0ms,box-shadow 300ms cubic-bezier(.4,0,.2,1) 0ms;align-items:center;white-space:nowrap;vertical-align:middle;justify-content:center;text-decoration:none;line-height:normal;margin:4px;}.mud-chip.mud-disabled{opacity:.5;pointer-events:none;}.mud-chip.mud-chip-size-small{border-radius:12px;font-size:12px;height:24px;}.mud-chip.mud-chip-size-medium{height:32px;font-size:14px;border-radius:16px;}.mud-chip.mud-chip-size-large{height:40px;font-size:16px;border-radius:20px;}.mud-chip.mud-chip-label{border-radius:var(--mud-default-borderradius);}.mud-chip.mud-clickable{cursor:pointer;}.mud-chip .mud-chip-icon{margin-left:-4px;margin-right:4px;margin-inline-start:-4px;margin-inline-end:4px;color:inherit;}.mud-chip .mud-chip-close-button{padding:1px;margin-right:-4px;margin-left:6px;margin-inline-end:-4px;margin-inline-start:6px;height:18px;width:18px;color:inherit;transition:.3s cubic-bezier(.25,.8,.5,1),visibility 0s;}.mud-chip .mud-chip-close-button .mud-icon-size-small{font-size:1.15rem;}.mud-chip .mud-chip-close-button:hover{opacity:.7;}.mud-chip>.mud-chip-content{align-items:center;display:inline-flex;height:100%;max-width:100%;user-select:none;}.mud-chip-filled{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-action-disabled-background);}.mud-chip-filled:hover:not(.mud-disabled),.mud-chip-filled:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-action-disabled);}.mud-chip-filled.mud-chip-color-primary{color:var(--mud-palette-primary-text);background-color:var(--mud-palette-primary);}.mud-chip-filled.mud-chip-color-primary:hover:not(.mud-disabled),.mud-chip-filled.mud-chip-color-primary:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-primary-darken);}.mud-chip-filled.mud-chip-color-secondary{color:var(--mud-palette-secondary-text);background-color:var(--mud-palette-secondary);}.mud-chip-filled.mud-chip-color-secondary:hover:not(.mud-disabled),.mud-chip-filled.mud-chip-color-secondary:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-secondary-darken);}.mud-chip-filled.mud-chip-color-tertiary{color:var(--mud-palette-tertiary-text);background-color:var(--mud-palette-tertiary);}.mud-chip-filled.mud-chip-color-tertiary:hover:not(.mud-disabled),.mud-chip-filled.mud-chip-color-tertiary:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-tertiary-darken);}.mud-chip-filled.mud-chip-color-info{color:var(--mud-palette-info-text);background-color:var(--mud-palette-info);}.mud-chip-filled.mud-chip-color-info:hover:not(.mud-disabled),.mud-chip-filled.mud-chip-color-info:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-info-darken);}.mud-chip-filled.mud-chip-color-success{color:var(--mud-palette-success-text);background-color:var(--mud-palette-success);}.mud-chip-filled.mud-chip-color-success:hover:not(.mud-disabled),.mud-chip-filled.mud-chip-color-success:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-success-darken);}.mud-chip-filled.mud-chip-color-warning{color:var(--mud-palette-warning-text);background-color:var(--mud-palette-warning);}.mud-chip-filled.mud-chip-color-warning:hover:not(.mud-disabled),.mud-chip-filled.mud-chip-color-warning:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-warning-darken);}.mud-chip-filled.mud-chip-color-error{color:var(--mud-palette-error-text);background-color:var(--mud-palette-error);}.mud-chip-filled.mud-chip-color-error:hover:not(.mud-disabled),.mud-chip-filled.mud-chip-color-error:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-error-darken);}.mud-chip-filled.mud-chip-color-dark{color:var(--mud-palette-dark-text);background-color:var(--mud-palette-dark);}.mud-chip-filled.mud-chip-color-dark:hover:not(.mud-disabled),.mud-chip-filled.mud-chip-color-dark:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-dark-darken);}.mud-chip-outlined{color:var(--mud-palette-text-primary);border:1px solid var(--mud-palette-lines-inputs);}.mud-chip-outlined:hover:not(.mud-disabled),.mud-chip-outlined:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-action-default-hover);}.mud-chip-outlined.mud-chip-color-primary{color:var(--mud-palette-primary);border:1px solid var(--mud-palette-primary);}.mud-chip-outlined.mud-chip-color-primary:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-primary:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-primary-hover);}.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected{background-color:var(--mud-palette-primary-hover);}.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb),.12);}.mud-chip-outlined.mud-chip-color-secondary{color:var(--mud-palette-secondary);border:1px solid var(--mud-palette-secondary);}.mud-chip-outlined.mud-chip-color-secondary:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-secondary:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-secondary-hover);}.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected{background-color:var(--mud-palette-secondary-hover);}.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb),.12);}.mud-chip-outlined.mud-chip-color-tertiary{color:var(--mud-palette-tertiary);border:1px solid var(--mud-palette-tertiary);}.mud-chip-outlined.mud-chip-color-tertiary:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-tertiary:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-tertiary-hover);}.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected{background-color:var(--mud-palette-tertiary-hover);}.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb),.12);}.mud-chip-outlined.mud-chip-color-info{color:var(--mud-palette-info);border:1px solid var(--mud-palette-info);}.mud-chip-outlined.mud-chip-color-info:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-info:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-info-hover);}.mud-chip-outlined.mud-chip-color-info.mud-chip-selected{background-color:var(--mud-palette-info-hover);}.mud-chip-outlined.mud-chip-color-info.mud-chip-selected:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-info.mud-chip-selected:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb),.12);}.mud-chip-outlined.mud-chip-color-success{color:var(--mud-palette-success);border:1px solid var(--mud-palette-success);}.mud-chip-outlined.mud-chip-color-success:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-success:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-success-hover);}.mud-chip-outlined.mud-chip-color-success.mud-chip-selected{background-color:var(--mud-palette-success-hover);}.mud-chip-outlined.mud-chip-color-success.mud-chip-selected:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-success.mud-chip-selected:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb),.12);}.mud-chip-outlined.mud-chip-color-warning{color:var(--mud-palette-warning);border:1px solid var(--mud-palette-warning);}.mud-chip-outlined.mud-chip-color-warning:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-warning:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-warning-hover);}.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected{background-color:var(--mud-palette-warning-hover);}.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb),.12);}.mud-chip-outlined.mud-chip-color-error{color:var(--mud-palette-error);border:1px solid var(--mud-palette-error);}.mud-chip-outlined.mud-chip-color-error:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-error:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-error-hover);}.mud-chip-outlined.mud-chip-color-error.mud-chip-selected{background-color:var(--mud-palette-error-hover);}.mud-chip-outlined.mud-chip-color-error.mud-chip-selected:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-error.mud-chip-selected:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb),.12);}.mud-chip-outlined.mud-chip-color-dark{color:var(--mud-palette-dark);border:1px solid var(--mud-palette-dark);}.mud-chip-outlined.mud-chip-color-dark:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-dark:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-dark-hover);}.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected{background-color:var(--mud-palette-dark-hover);}.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected:hover:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb),.12);}.mud-chip-text{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-action-default-hover);}.mud-chip-text:hover:not(.mud-disabled),.mud-chip-text:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-action-disabled-background);}.mud-chip-text.mud-chip-color-primary{color:var(--mud-palette-primary);background-color:var(--mud-palette-primary-hover);}.mud-chip-text.mud-chip-color-primary:hover:not(.mud-disabled),.mud-chip-text.mud-chip-color-primary:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb),.12);}.mud-chip-text.mud-chip-color-secondary{color:var(--mud-palette-secondary);background-color:var(--mud-palette-secondary-hover);}.mud-chip-text.mud-chip-color-secondary:hover:not(.mud-disabled),.mud-chip-text.mud-chip-color-secondary:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb),.12);}.mud-chip-text.mud-chip-color-tertiary{color:var(--mud-palette-tertiary);background-color:var(--mud-palette-tertiary-hover);}.mud-chip-text.mud-chip-color-tertiary:hover:not(.mud-disabled),.mud-chip-text.mud-chip-color-tertiary:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb),.12);}.mud-chip-text.mud-chip-color-info{color:var(--mud-palette-info);background-color:var(--mud-palette-info-hover);}.mud-chip-text.mud-chip-color-info:hover:not(.mud-disabled),.mud-chip-text.mud-chip-color-info:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb),.12);}.mud-chip-text.mud-chip-color-success{color:var(--mud-palette-success);background-color:var(--mud-palette-success-hover);}.mud-chip-text.mud-chip-color-success:hover:not(.mud-disabled),.mud-chip-text.mud-chip-color-success:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb),.12);}.mud-chip-text.mud-chip-color-warning{color:var(--mud-palette-warning);background-color:var(--mud-palette-warning-hover);}.mud-chip-text.mud-chip-color-warning:hover:not(.mud-disabled),.mud-chip-text.mud-chip-color-warning:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb),.12);}.mud-chip-text.mud-chip-color-error{color:var(--mud-palette-error);background-color:var(--mud-palette-error-hover);}.mud-chip-text.mud-chip-color-error:hover:not(.mud-disabled),.mud-chip-text.mud-chip-color-error:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb),.12);}.mud-chip-text.mud-chip-color-dark{color:var(--mud-palette-dark);background-color:var(--mud-palette-dark-hover);}.mud-chip-text.mud-chip-color-dark:hover:not(.mud-disabled),.mud-chip-text.mud-chip-color-dark:focus-visible:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb),.12);}.mud-collapse-container{height:0;overflow:hidden;}@keyframes mud-expand-anim{from{height:0;}}.mud-collapse-entering{animation:mud-expand-anim 1s ease-in-out 0ms 1 forwards;}.mud-collapse-entering.mud-navgroup-collapse{animation-duration:300ms !important;}.mud-collapse-entered{overflow:initial;}@keyframes mud-collapse-anim{to{height:0;}}.mud-collapse-exiting{animation:mud-collapse-anim .5s cubic-bezier(0,1,0,1) 0ms 1 forwards;}.mud-collapse-exiting.mud-navgroup-collapse{animation-duration:300ms;}.mud-collapse-hidden{visibility:hidden;}.mud-collapse-wrapper{display:flex;}.mud-collapse-wrapper-inner{width:100%;}.mud-dialog-container{display:flex;position:fixed;top:0;width:100%;height:100%;z-index:var(--mud-zindex-dialog);}.mud-dialog-container.mud-dialog-center{align-items:center;justify-content:center;}.mud-dialog-container.mud-dialog-topcenter{align-items:flex-start;justify-content:center;padding-top:32px;}.mud-dialog-container.mud-dialog-bottomcenter{align-items:flex-end;justify-content:center;padding-bottom:32px;}.mud-dialog-container.mud-dialog-centerright{align-items:center;justify-content:flex-end;padding-right:32px;}.mud-dialog-container.mud-dialog-centerleft{align-items:center;justify-content:flex-start;padding-left:32px;}.mud-dialog-container.mud-dialog-topleft .mud-dialog{position:absolute;top:32px;left:32px;}.mud-dialog-container.mud-dialog-topright .mud-dialog{position:absolute;top:32px;right:32px;}.mud-dialog-container.mud-dialog-bottomleft .mud-dialog{position:absolute;bottom:32px;left:32px;}.mud-dialog-container.mud-dialog-bottomright .mud-dialog{position:absolute;bottom:32px;right:32px;}.mud-dialog{display:flex;z-index:calc(var(--mud-zindex-dialog) + 2);flex-direction:column;color:var(--mud-palette-text-primary);background-color:var(--mud-palette-surface);border-radius:var(--mud-default-borderradius);-webkit-animation:mud-open-dialog-center .1s cubic-bezier(.39,.575,.565,1) both;animation:mud-open-dialog-center .1s cubic-bezier(.39,.575,.565,1) both;box-shadow:0 11px 15px -7px rgba(0,0,0,.2),0 24px 38px 3px rgba(0,0,0,.14),0 9px 46px 8px rgba(0,0,0,.12);}.mud-dialog.mud-dialog-rtl .mud-dialog-title .mud-button-root{right:unset;left:8px;}.mud-dialog .mud-dialog-title{z-index:+1;flex:0 0 auto;margin:0;padding:16px 24px;border-top-left-radius:var(--mud-default-borderradius);border-top-right-radius:var(--mud-default-borderradius);}.mud-dialog .mud-dialog-title+*>.mud-dialog-content{border-radius:0;}.mud-dialog .mud-dialog-title .mud-button-root{top:8px;right:8px;position:absolute;}.mud-dialog .mud-dialog-content{position:relative;flex:1 1 auto;padding:8px 24px;-webkit-overflow-scrolling:touch;border-top-left-radius:var(--mud-default-borderradius);border-top-right-radius:var(--mud-default-borderradius);}.mud-dialog .mud-dialog-content.mud-dialog-no-side-padding{padding:12px 0;}.mud-dialog .mud-dialog-actions{flex:0 0 auto;display:flex;padding:8px;align-items:center;justify-content:flex-end;border-bottom-left-radius:var(--mud-default-borderradius);border-bottom-right-radius:var(--mud-default-borderradius);}.mud-dialog .mud-dialog-actions>:not(:first-child){margin-left:8px;margin-inline-start:8px;margin-inline-end:unset;}.mud-dialog-width-false{max-width:calc(100% - 64px);}.mud-dialog-width-xs{max-width:444px;}.mud-dialog-width-sm{max-width:600px;}.mud-dialog-width-md{max-width:960px;}.mud-dialog-width-lg{max-width:1280px;}.mud-dialog-width-xl{max-width:1920px;}.mud-dialog-width-xxl{max-width:2560px;}.mud-dialog-width-full{width:calc(100% - 64px);}.mud-dialog-fullscreen{width:100%;height:100%;margin:0;max-width:100%;max-height:none;border-radius:0;}@-webkit-keyframes mud-open-dialog-center{0%{opacity:0;}1%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1;}100%{-webkit-transform:scale(1);transform:scale(1);}}@keyframes mud-open-dialog-center{0%{opacity:0;}1%{-webkit-transform:scale(.5);transform:scale(.5);opacity:1;}100%{-webkit-transform:scale(1);transform:scale(1);}}.mud-input-control.mud-field .mud-input-slot{height:auto;min-height:19px;}.mud-input-control.mud-field .mud-input-slot.mud-input-root-outlined.mud-input-adorned-start{padding-left:0;padding-inline-start:0;padding-inline-end:14px;}.mud-input-control.mud-field .mud-input-slot.mud-input-root-filled.mud-input-adorned-start{padding-left:0;padding-inline-start:0;padding-inline-end:12px;}.mud-input-control.mud-field .mud-input-slot.mud-input-slot-nopadding{padding-top:0;padding-bottom:0;}.mud-input-control.mud-field .mud-input-slot.mud-input-slot-nopadding.mud-input-root-filled{padding-top:21px;padding-bottom:2px;}.mud-input-control.mud-field .mud-input-slot.mud-input-slot-nopadding.mud-input-root-outlined{padding-top:7px;padding-bottom:2px;}.mud-grid{width:100%;display:flex;flex-wrap:wrap;box-sizing:border-box;}.mud-grid-item{margin:0;box-sizing:border-box;}.mud-grid-spacing-xs-1{width:calc(100% + 8px);margin:-4px;}.mud-grid-spacing-xs-1>.mud-grid-item{padding:4px;}.mud-grid-spacing-xs-2{width:calc(100% + 16px);margin:-8px;}.mud-grid-spacing-xs-2>.mud-grid-item{padding:8px;}.mud-grid-spacing-xs-3{width:calc(100% + 24px);margin:-12px;}.mud-grid-spacing-xs-3>.mud-grid-item{padding:12px;}.mud-grid-spacing-xs-4{width:calc(100% + 32px);margin:-16px;}.mud-grid-spacing-xs-4>.mud-grid-item{padding:16px;}.mud-grid-spacing-xs-5{width:calc(100% + 40px);margin:-20px;}.mud-grid-spacing-xs-5>.mud-grid-item{padding:20px;}.mud-grid-spacing-xs-6{width:calc(100% + 48px);margin:-24px;}.mud-grid-spacing-xs-6>.mud-grid-item{padding:24px;}.mud-grid-spacing-xs-7{width:calc(100% + 56px);margin:-28px;}.mud-grid-spacing-xs-7>.mud-grid-item{padding:28px;}.mud-grid-spacing-xs-8{width:calc(100% + 64px);margin:-32px;}.mud-grid-spacing-xs-8>.mud-grid-item{padding:32px;}.mud-grid-spacing-xs-9{width:calc(100% + 72px);margin:-36px;}.mud-grid-spacing-xs-9>.mud-grid-item{padding:36px;}.mud-grid-spacing-xs-10{width:calc(100% + 80px);margin:-40px;}.mud-grid-spacing-xs-10>.mud-grid-item{padding:40px;}.mud-grid-item-xs-auto{flex-grow:0;max-width:none;flex-basis:auto;}.mud-grid-item-xs-true{flex-grow:1;max-width:100%;flex-basis:0;}.mud-grid-item-xs-1{flex-grow:0;max-width:8.333333%;flex-basis:8.333333%;}.mud-grid-item-xs-2{flex-grow:0;max-width:16.666667%;flex-basis:16.666667%;}.mud-grid-item-xs-3{flex-grow:0;max-width:25%;flex-basis:25%;}.mud-grid-item-xs-4{flex-grow:0;max-width:33.333333%;flex-basis:33.333333%;}.mud-grid-item-xs-5{flex-grow:0;max-width:41.666667%;flex-basis:41.666667%;}.mud-grid-item-xs-6{flex-grow:0;max-width:50%;flex-basis:50%;}.mud-grid-item-xs-7{flex-grow:0;max-width:58.333333%;flex-basis:58.333333%;}.mud-grid-item-xs-8{flex-grow:0;max-width:66.666667%;flex-basis:66.666667%;}.mud-grid-item-xs-9{flex-grow:0;max-width:75%;flex-basis:75%;}.mud-grid-item-xs-10{flex-grow:0;max-width:83.333333%;flex-basis:83.333333%;}.mud-grid-item-xs-11{flex-grow:0;max-width:91.666667%;flex-basis:91.666667%;}.mud-grid-item-xs-12{flex-grow:0;max-width:100%;flex-basis:100%;}@media(min-width:600px){.mud-grid-item-sm-auto{flex-grow:0;max-width:none;flex-basis:auto;}.mud-grid-item-sm-true{flex-grow:1;max-width:100%;flex-basis:0;}.mud-grid-item-sm-1{flex-grow:0;max-width:8.333333%;flex-basis:8.333333%;}.mud-grid-item-sm-2{flex-grow:0;max-width:16.666667%;flex-basis:16.666667%;}.mud-grid-item-sm-3{flex-grow:0;max-width:25%;flex-basis:25%;}.mud-grid-item-sm-4{flex-grow:0;max-width:33.333333%;flex-basis:33.333333%;}.mud-grid-item-sm-5{flex-grow:0;max-width:41.666667%;flex-basis:41.666667%;}.mud-grid-item-sm-6{flex-grow:0;max-width:50%;flex-basis:50%;}.mud-grid-item-sm-7{flex-grow:0;max-width:58.333333%;flex-basis:58.333333%;}.mud-grid-item-sm-8{flex-grow:0;max-width:66.666667%;flex-basis:66.666667%;}.mud-grid-item-sm-9{flex-grow:0;max-width:75%;flex-basis:75%;}.mud-grid-item-sm-10{flex-grow:0;max-width:83.333333%;flex-basis:83.333333%;}.mud-grid-item-sm-11{flex-grow:0;max-width:91.666667%;flex-basis:91.666667%;}.mud-grid-item-sm-12{flex-grow:0;max-width:100%;flex-basis:100%;}}@media(min-width:960px){.mud-grid-item-md-auto{flex-grow:0;max-width:none;flex-basis:auto;}.mud-grid-item-md-true{flex-grow:1;max-width:100%;flex-basis:0;}.mud-grid-item-md-1{flex-grow:0;max-width:8.333333%;flex-basis:8.333333%;}.mud-grid-item-md-2{flex-grow:0;max-width:16.666667%;flex-basis:16.666667%;}.mud-grid-item-md-3{flex-grow:0;max-width:25%;flex-basis:25%;}.mud-grid-item-md-4{flex-grow:0;max-width:33.333333%;flex-basis:33.333333%;}.mud-grid-item-md-5{flex-grow:0;max-width:41.666667%;flex-basis:41.666667%;}.mud-grid-item-md-6{flex-grow:0;max-width:50%;flex-basis:50%;}.mud-grid-item-md-7{flex-grow:0;max-width:58.333333%;flex-basis:58.333333%;}.mud-grid-item-md-8{flex-grow:0;max-width:66.666667%;flex-basis:66.666667%;}.mud-grid-item-md-9{flex-grow:0;max-width:75%;flex-basis:75%;}.mud-grid-item-md-10{flex-grow:0;max-width:83.333333%;flex-basis:83.333333%;}.mud-grid-item-md-11{flex-grow:0;max-width:91.666667%;flex-basis:91.666667%;}.mud-grid-item-md-12{flex-grow:0;max-width:100%;flex-basis:100%;}}@media(min-width:1280px){.mud-grid-item-lg-auto{flex-grow:0;max-width:none;flex-basis:auto;}.mud-grid-item-lg-true{flex-grow:1;max-width:100%;flex-basis:0;}.mud-grid-item-lg-1{flex-grow:0;max-width:8.333333%;flex-basis:8.333333%;}.mud-grid-item-lg-2{flex-grow:0;max-width:16.666667%;flex-basis:16.666667%;}.mud-grid-item-lg-3{flex-grow:0;max-width:25%;flex-basis:25%;}.mud-grid-item-lg-4{flex-grow:0;max-width:33.333333%;flex-basis:33.333333%;}.mud-grid-item-lg-5{flex-grow:0;max-width:41.666667%;flex-basis:41.666667%;}.mud-grid-item-lg-6{flex-grow:0;max-width:50%;flex-basis:50%;}.mud-grid-item-lg-7{flex-grow:0;max-width:58.333333%;flex-basis:58.333333%;}.mud-grid-item-lg-8{flex-grow:0;max-width:66.666667%;flex-basis:66.666667%;}.mud-grid-item-lg-9{flex-grow:0;max-width:75%;flex-basis:75%;}.mud-grid-item-lg-10{flex-grow:0;max-width:83.333333%;flex-basis:83.333333%;}.mud-grid-item-lg-11{flex-grow:0;max-width:91.666667%;flex-basis:91.666667%;}.mud-grid-item-lg-12{flex-grow:0;max-width:100%;flex-basis:100%;}}@media(min-width:1920px){.mud-grid-item-xl-auto{flex-grow:0;max-width:none;flex-basis:auto;}.mud-grid-item-xl-true{flex-grow:1;max-width:100%;flex-basis:0;}.mud-grid-item-xl-1{flex-grow:0;max-width:8.333333%;flex-basis:8.333333%;}.mud-grid-item-xl-2{flex-grow:0;max-width:16.666667%;flex-basis:16.666667%;}.mud-grid-item-xl-3{flex-grow:0;max-width:25%;flex-basis:25%;}.mud-grid-item-xl-4{flex-grow:0;max-width:33.333333%;flex-basis:33.333333%;}.mud-grid-item-xl-5{flex-grow:0;max-width:41.666667%;flex-basis:41.666667%;}.mud-grid-item-xl-6{flex-grow:0;max-width:50%;flex-basis:50%;}.mud-grid-item-xl-7{flex-grow:0;max-width:58.333333%;flex-basis:58.333333%;}.mud-grid-item-xl-8{flex-grow:0;max-width:66.666667%;flex-basis:66.666667%;}.mud-grid-item-xl-9{flex-grow:0;max-width:75%;flex-basis:75%;}.mud-grid-item-xl-10{flex-grow:0;max-width:83.333333%;flex-basis:83.333333%;}.mud-grid-item-xl-11{flex-grow:0;max-width:91.666667%;flex-basis:91.666667%;}.mud-grid-item-xl-12{flex-grow:0;max-width:100%;flex-basis:100%;}}@media(min-width:2560px){.mud-grid-item-xxl-auto{flex-grow:0;max-width:none;flex-basis:auto;}.mud-grid-item-xxl-true{flex-grow:1;max-width:100%;flex-basis:0;}.mud-grid-item-xxl-1{flex-grow:0;max-width:8.333333%;flex-basis:8.333333%;}.mud-grid-item-xxl-2{flex-grow:0;max-width:16.666667%;flex-basis:16.666667%;}.mud-grid-item-xxl-3{flex-grow:0;max-width:25%;flex-basis:25%;}.mud-grid-item-xxl-4{flex-grow:0;max-width:33.333333%;flex-basis:33.333333%;}.mud-grid-item-xxl-5{flex-grow:0;max-width:41.666667%;flex-basis:41.666667%;}.mud-grid-item-xxl-6{flex-grow:0;max-width:50%;flex-basis:50%;}.mud-grid-item-xxl-7{flex-grow:0;max-width:58.333333%;flex-basis:58.333333%;}.mud-grid-item-xxl-8{flex-grow:0;max-width:66.666667%;flex-basis:66.666667%;}.mud-grid-item-xxl-9{flex-grow:0;max-width:75%;flex-basis:75%;}.mud-grid-item-xxl-10{flex-grow:0;max-width:83.333333%;flex-basis:83.333333%;}.mud-grid-item-xxl-11{flex-grow:0;max-width:91.666667%;flex-basis:91.666667%;}.mud-grid-item-xxl-12{flex-grow:0;max-width:100%;flex-basis:100%;}}.mud-paper{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-surface);border-radius:var(--mud-default-borderradius);transition:box-shadow 300ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-paper-square{border-radius:0;}.mud-paper-outlined{border:1px solid var(--mud-palette-lines-default);}.mud-icon-default{color:var(--mud-palette-text-secondary);}.mud-disabled .mud-icon-root,.mud-disabled .mud-svg-icon,.mud-disabled .mud-icon-default{color:var(--mud-palette-text-disabled);}.mud-icon-root{width:1em;height:1em;display:inline-block;transition:fill 200ms cubic-bezier(.4,0,.2,1) 0ms;flex-shrink:0;user-select:none;}.mud-icon-root:focus{outline:none;}.mud-icon-root.mud-svg-icon{fill:currentColor;}.mud-icon-size-small{font-size:1.25rem;}.mud-icon-size-medium{font-size:1.5rem;}.mud-icon-size-large{font-size:2.25rem;}.mud-divider{border:none;height:1px;margin:0;flex-shrink:0;background-color:var(--mud-palette-divider);}.mud-divider-absolute{left:0;width:100%;bottom:0;position:absolute;}.mud-divider-inset{margin-left:72px;margin-inline-start:72px;margin-inline-end:unset;}.mud-divider-light{background-color:var(--mud-palette-divider-light);}.mud-divider-middle{margin-left:16px;margin-right:16px;}.mud-divider-vertical{width:1px;height:100%;}.mud-divider-flexitem{height:auto;align-self:stretch;}.mud-drop-zone{position:relative;transition:all 300ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-drop-zone-drag-block>*{pointer-events:none;}.mud-drop-zone-can-drop{background-color:var(--mud-palette-success-hover);}.mud-drop-zone-no-drop{background-color:var(--mud-palette-error-hover);}.mud-drop-item:not(.mud-drop-item-preview-start){cursor:grab;user-select:none;}.mud-drop-item:not(.mud-drop-item-preview-start):active{cursor:grabbing;}.mud-drop-item-preview-start{height:20px;width:100%;position:absolute;top:0;left:0;z-index:+1;}.mud-expansion-panels{flex:0 1 auto;position:relative;max-width:100%;transition:.3s cubic-bezier(.25,.8,.5,1);border-radius:var(--mud-default-borderradius);}.mud-expansion-panels.mud-expansion-panels-square{border-radius:0;}.mud-expansion-panels.mud-expansion-panels-borders .mud-expand-panel{border-bottom:1px solid var(--mud-palette-lines-default);}.mud-expand-panel{flex:1 0 100%;max-width:100%;position:relative;transition:margin .3s cubic-bezier(.25,.8,.5,1);transition-delay:100ms;color:var(--mud-palette-text-primary);background-color:var(--mud-palette-surface);}.mud-expand-panel.mud-expand-panel-border{border-bottom:1px solid var(--mud-palette-lines-default);}.mud-expand-panel:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit;}.mud-expand-panel:last-child{border-bottom:none;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;}.mud-expand-panel.mud-panel-expanded{margin:16px 0;border-radius:inherit;border-bottom:none;transition-delay:0ms;}.mud-expand-panel.mud-panel-expanded:first-child{margin-top:0;}.mud-expand-panel.mud-panel-expanded:last-child{margin-bottom:0;}.mud-expand-panel.mud-panel-expanded+.mud-expand-panel{border-top-left-radius:inherit;border-top-right-radius:inherit;}.mud-expand-panel.mud-panel-next-expanded{border-bottom:none;border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;}.mud-expand-panel .mud-expand-panel-header{width:100%;align-items:center;display:flex;font-size:.9375rem;line-height:1;min-height:48px;outline:none;padding:16px 24px;position:relative;transition:min-height .3s cubic-bezier(.25,.8,.5,1);user-select:none;}.mud-expand-panel .mud-expand-panel-header:hover{cursor:pointer;}.mud-expand-panel .mud-expand-panel-header .mud-expand-panel-text{flex:1 1 auto;}.mud-expand-panel .mud-expand-panel-header .mud-expand-panel-icon{transition:.3s cubic-bezier(.25,.8,.5,1),visibility 0s;}.mud-expand-panel .mud-expand-panel-header .mud-expand-panel-icon.mud-transform{transform:rotate(-180deg);}.mud-expand-panel .mud-expand-panel-content{padding:0 24px 16px;flex:1 1 auto;max-width:100%;}.mud-expand-panel .mud-expand-panel-content.mud-expand-panel-gutters{padding-left:0;padding-right:0;}.mud-expand-panel .mud-expand-panel-content.mud-expand-panel-dense{padding-top:0;padding-bottom:0;}.mud-disabled>.mud-expand-panel-header{color:var(--mud-palette-text-disabled);}.mud-disabled>.mud-expand-panel-header:hover{cursor:default;}.mud-fab{padding:0;font-family:var(--mud-typography-button-family);font-size:var(--mud-typography-button-size);font-weight:var(--mud-typography-button-weight);line-height:var(--mud-typography-button-lineheight);letter-spacing:var(--mud-typography-button-letterspacing);text-transform:var(--mud-typography-button-text-transform);min-width:0;box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12);box-sizing:border-box;min-height:36px;transition:background-color 250ms cubic-bezier(.4,0,.2,1) 0ms,box-shadow 250ms cubic-bezier(.4,0,.2,1) 0ms,border 250ms cubic-bezier(.4,0,.2,1) 0ms;border-radius:50%;color:var(--mud-palette-text-primary);background-color:var(--mud-palette-action-default-hover);}.mud-fab:hover,.mud-fab:focus-visible{box-shadow:0 5px 5px -3px rgba(0,0,0,.2),0 8px 10px 1px rgba(0,0,0,.14),0 3px 14px 2px rgba(0,0,0,.12);text-decoration:none;background-color:var(--mud-palette-action-disabled-background);}.mud-fab:active{box-shadow:0 7px 8px -4px rgba(0,0,0,.2),0 12px 17px 2px rgba(0,0,0,.14),0 5px 22px 4px rgba(0,0,0,.12);}.mud-fab:disabled{color:var(--mud-palette-action-disabled);box-shadow:none;background-color:var(--mud-palette-action-disabled-background);cursor:default;pointer-events:none;}.mud-fab:disabled:hover{background-color:var(--mud-palette-action-disabled-background);}.mud-fab-disable-elevation{box-shadow:none;}.mud-fab-disable-elevation:hover{box-shadow:none;}.mud-fab-disable-elevation:active{box-shadow:none;}.mud-fab-disable-elevation.mud-focus-visible{box-shadow:none;}.mud-fab-disable-elevation:disabled{box-shadow:none;}.mud-fab-label{width:100%;display:inherit;align-items:inherit;justify-content:inherit;}.mud-fab-primary{color:var(--mud-palette-primary-text);background-color:var(--mud-palette-primary);}.mud-fab-primary:hover,.mud-fab-primary:focus-visible{background-color:var(--mud-palette-primary-darken);}.mud-fab-secondary{color:var(--mud-palette-secondary-text);background-color:var(--mud-palette-secondary);}.mud-fab-secondary:hover,.mud-fab-secondary:focus-visible{background-color:var(--mud-palette-secondary-darken);}.mud-fab-tertiary{color:var(--mud-palette-tertiary-text);background-color:var(--mud-palette-tertiary);}.mud-fab-tertiary:hover,.mud-fab-tertiary:focus-visible{background-color:var(--mud-palette-tertiary-darken);}.mud-fab-info{color:var(--mud-palette-info-text);background-color:var(--mud-palette-info);}.mud-fab-info:hover,.mud-fab-info:focus-visible{background-color:var(--mud-palette-info-darken);}.mud-fab-success{color:var(--mud-palette-success-text);background-color:var(--mud-palette-success);}.mud-fab-success:hover,.mud-fab-success:focus-visible{background-color:var(--mud-palette-success-darken);}.mud-fab-warning{color:var(--mud-palette-warning-text);background-color:var(--mud-palette-warning);}.mud-fab-warning:hover,.mud-fab-warning:focus-visible{background-color:var(--mud-palette-warning-darken);}.mud-fab-error{color:var(--mud-palette-error-text);background-color:var(--mud-palette-error);}.mud-fab-error:hover,.mud-fab-error:focus-visible{background-color:var(--mud-palette-error-darken);}.mud-fab-dark{color:var(--mud-palette-dark-text);background-color:var(--mud-palette-dark);}.mud-fab-dark:hover,.mud-fab-dark:focus-visible{background-color:var(--mud-palette-dark-darken);}.mud-fab-extended.mud-fab-size-large{width:auto;height:48px;padding:0 16px;min-width:48px;min-height:auto;border-radius:24px;}.mud-fab-extended.mud-fab-size-large .mud-fab-label{gap:8px;}.mud-fab-extended.mud-fab-size-small{width:auto;height:34px;padding:0 12px;min-width:34px;border-radius:17px;}.mud-fab-extended.mud-fab-size-small .mud-fab-label{gap:4px;}.mud-fab-extended.mud-fab-size-medium{width:auto;height:40px;padding:0 16px;min-width:40px;border-radius:20px;}.mud-fab-extended.mud-fab-size-medium .mud-fab-label{gap:8px;}.mud-fab-color-inherit{color:inherit;}.mud-fab-size-small{width:40px;height:40px;}.mud-fab-size-medium{width:48px;height:48px;}.mud-fab-size-large{width:56px;height:56px;}.mud-list{margin:0;padding:0;position:relative;list-style:none;}.mud-list.mud-list-padding{padding-top:8px;padding-bottom:8px;}.mud-list-item{width:100%;display:flex;position:relative;box-sizing:border-box;text-align:start;align-items:center;padding-top:8px;padding-bottom:8px;justify-content:flex-start;text-decoration:none;}.mud-list-item.mud-list-item-dense{padding-top:4px;padding-bottom:4px;}.mud-list-item.mud-list-item-disabled{color:var(--mud-palette-action-disabled) !important;cursor:default !important;pointer-events:none !important;}.mud-list-item.mud-list-item-disabled .mud-list-item-icon{color:var(--mud-palette-action-disabled) !important;}.mud-list-item-clickable{color:inherit;border:0;cursor:pointer;margin:0;outline:0;user-select:none;border-radius:0;vertical-align:middle;background-color:transparent;-webkit-appearance:none;-webkit-tap-highlight-color:transparent;transition:background-color 150ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-list-item-clickable:hover{background-color:var(--mud-palette-action-default-hover);}.mud-list-item-clickable:focus:not(.mud-selected-item){background-color:var(--mud-palette-action-default-hover);}.mud-list-item-gutters{padding-left:16px;padding-right:16px;}.mud-list-item-text{flex:1 1 auto;min-width:0;margin-top:4px;margin-bottom:4px;}.mud-list-item-text-inset{padding-left:56px;padding-inline-start:56px;padding-inline-end:unset;}.mud-list-item-icon{color:var(--mud-palette-action-default);display:inline-flex;min-width:56px;flex-shrink:0;}.mud-list-subheader{color:var(--mud-palette-action-default);font-size:.875rem;box-sizing:border-box;list-style:none;font-weight:500;padding-top:8px;padding-bottom:20px;}.mud-list-subheader-gutters{padding-left:16px;padding-right:16px;}.mud-list-subheader-inset{padding-left:72px;padding-inline-start:72px;padding-inline-end:unset;}.mud-list-subheader-sticky{top:0;z-index:1;position:sticky;background-color:inherit;}.mud-list-item-avatar{min-width:56px;flex-shrink:0;}.mud-nested-list>.mud-list-item{padding-left:32px;padding-inline-start:32px;padding-inline-end:unset;}.mud-application-layout-rtl{direction:rtl;}.mud-menu{display:inline-flex;align-self:center;position:relative;}.mud-menu *{cursor:pointer;}.mud-menu>div.mud-disabled{cursor:default;}.mud-menu>div.mud-disabled *{cursor:default;}.mud-menu>div.mud-menu-activator{display:contents;}.mud-link.mud-link-underline-none{text-decoration:none;}.mud-link.mud-link-underline-hover{text-decoration:none;}.mud-link.mud-link-underline-hover:hover,.mud-link.mud-link-underline-hover:focus-visible{text-decoration:underline;}.mud-link.mud-link-underline-always{text-decoration:underline;}.mud-link.mud-link-disabled{cursor:default;color:var(--mud-palette-action-disabled) !important;}.mud-link.mud-link-disabled:not(.mud-link-underline-always){text-decoration:none;}.mud-navmenu{margin:0;position:relative;list-style:none;overscroll-behavior-y:contain;}.mud-nav-group{width:100%;display:block;justify-content:flex-start;}.mud-nav-group>.mud-nav-link>.mud-nav-link-text{font-weight:500;}.mud-nav-group * .mud-nav-group>.mud-nav-link>.mud-nav-link-text{font-weight:400;}.mud-nav-group * .mud-nav-group>.mud-nav-link.mud-expanded>.mud-nav-link-text{font-weight:500;}.mud-nav-group * .mud-navmenu .mud-nav-item .mud-nav-link{padding-left:36px;padding-inline-start:36px;padding-inline-end:unset;}.mud-nav-group-disabled,.mud-nav-group-disabled .mud-nav-link-text,.mud-nav-group-disabled .mud-nav-link-expand-icon,.mud-nav-group-disabled .mud-nav-link-icon{color:var(--mud-palette-text-disabled) !important;cursor:default;pointer-events:none;}.mud-nav-item{width:100%;display:flex;justify-content:flex-start;text-decoration:none;}.mud-nav-link{width:100%;font-weight:400;padding:8px 16px 8px 16px;color:inherit;line-height:1.75;display:inline-flex;align-items:center;justify-content:flex-start;text-transform:inherit;background-color:transparent;transition:background-color 250ms cubic-bezier(.4,0,.2,1) 0ms,box-shadow 250ms cubic-bezier(.4,0,.2,1) 0ms,border 250ms cubic-bezier(.4,0,.2,1) 0ms,padding 250ms cubic-bezier(.4,0,.2,1) 0ms;align-items:flex-start;}.mud-nav-link.mud-nav-link-disabled{color:var(--mud-palette-text-disabled) !important;cursor:default;pointer-events:none;}.mud-nav-link:hover:not(.mud-nav-link-disabled){cursor:pointer;text-decoration:none;background-color:var(--mud-palette-action-default-hover);}.mud-nav-link:focus:not(.mud-nav-link-disabled){background-color:var(--mud-palette-action-default-hover);}.mud-nav-link.active:not(.mud-nav-link-disabled){font-weight:500 !important;}.mud-nav-link:not(.mud-nav-link-disabled) .mud-nav-link-icon.mud-nav-link-icon-default{color:var(--mud-palette-drawer-icon);}.mud-nav-link.mud-nav-link-disabled .mud-nav-link-icon{color:var(--mud-palette-text-disabled);}.mud-nav-link .mud-nav-link-expand-icon{color:var(--mud-palette-drawer-icon);transition:.3s cubic-bezier(.25,.8,.5,1),visibility 0s;}.mud-nav-link .mud-nav-link-expand-icon.mud-transform{transform:rotate(-180deg);}.mud-nav-link .mud-nav-link-expand-icon.mud-transform-disabled{transform:rotate(-180deg);}.mud-nav-link .mud-nav-link-text{width:100%;text-align:start;margin-left:12px;margin-inline-start:12px;margin-inline-end:unset;letter-spacing:0;}.mud-navmenu.mud-navmenu-dense .mud-nav-link{padding:4px 16px 4px 16px;}.mud-navmenu.mud-navmenu-margin-dense .mud-nav-link{margin:2px 0;}.mud-navmenu.mud-navmenu-margin-normal .mud-nav-link{margin:4px 0;}.mud-navmenu.mud-navmenu-rounded .mud-nav-link{border-radius:var(--mud-default-borderradius);}.mud-navmenu.mud-navmenu-bordered .mud-nav-link.active:not(.mud-nav-link-disabled){border-inline-end-style:solid;border-inline-end-width:2px;}.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled){color:var(--mud-palette-primary);background-color:var(--mud-palette-action-default-hover);}.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled){background-color:var(--mud-palette-action-default-hover);}.mud-navmenu.mud-navmenu-default .mud-nav-link-expand-icon.mud-transform{fill:var(--mud-palette-primary);}.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled){color:var(--mud-palette-primary);background-color:var(--mud-palette-primary-hover);}.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-primary-rgb),.12);}.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled) .mud-nav-link-icon{color:var(--mud-palette-primary);}.mud-navmenu.mud-navmenu-primary .mud-nav-link-expand-icon.mud-transform{fill:var(--mud-palette-primary);}.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled){color:var(--mud-palette-secondary);background-color:var(--mud-palette-secondary-hover);}.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-secondary-rgb),.12);}.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled) .mud-nav-link-icon{color:var(--mud-palette-secondary);}.mud-navmenu.mud-navmenu-secondary .mud-nav-link-expand-icon.mud-transform{fill:var(--mud-palette-secondary);}.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled){color:var(--mud-palette-tertiary);background-color:var(--mud-palette-tertiary-hover);}.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb),.12);}.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled) .mud-nav-link-icon{color:var(--mud-palette-tertiary);}.mud-navmenu.mud-navmenu-tertiary .mud-nav-link-expand-icon.mud-transform{fill:var(--mud-palette-tertiary);}.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled){color:var(--mud-palette-info);background-color:var(--mud-palette-info-hover);}.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-info-rgb),.12);}.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled) .mud-nav-link-icon{color:var(--mud-palette-info);}.mud-navmenu.mud-navmenu-info .mud-nav-link-expand-icon.mud-transform{fill:var(--mud-palette-info);}.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled){color:var(--mud-palette-success);background-color:var(--mud-palette-success-hover);}.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-success-rgb),.12);}.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled) .mud-nav-link-icon{color:var(--mud-palette-success);}.mud-navmenu.mud-navmenu-success .mud-nav-link-expand-icon.mud-transform{fill:var(--mud-palette-success);}.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled){color:var(--mud-palette-warning);background-color:var(--mud-palette-warning-hover);}.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-warning-rgb),.12);}.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled) .mud-nav-link-icon{color:var(--mud-palette-warning);}.mud-navmenu.mud-navmenu-warning .mud-nav-link-expand-icon.mud-transform{fill:var(--mud-palette-warning);}.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled){color:var(--mud-palette-error);background-color:var(--mud-palette-error-hover);}.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-error-rgb),.12);}.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled) .mud-nav-link-icon{color:var(--mud-palette-error);}.mud-navmenu.mud-navmenu-error .mud-nav-link-expand-icon.mud-transform{fill:var(--mud-palette-error);}.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled){color:var(--mud-palette-dark);background-color:var(--mud-palette-dark-hover);}.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-dark-rgb),.12);}.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled) .mud-nav-link-icon{color:var(--mud-palette-dark);}.mud-navmenu.mud-navmenu-dark .mud-nav-link-expand-icon.mud-transform{fill:var(--mud-palette-dark);}.mud-nav-group * .mud-navmenu>.mud-nav-group .mud-nav-link{padding-left:36px;padding-inline-start:36px;padding-inline-end:16px;}.mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu .mud-nav-item .mud-nav-link{padding-left:48px;padding-inline-start:48px;}.mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu>.mud-nav-group .mud-nav-link{padding-left:48px;padding-inline-start:48px;padding-inline-end:16px;}.mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu .mud-nav-item .mud-nav-link{padding-left:60px;padding-inline-start:60px;padding-inline-end:0;}.mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu>.mud-nav-group .mud-nav-link{padding-left:60px;padding-inline-start:60px;padding-inline-end:16px;}.mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu .mud-nav-item .mud-nav-link{padding-left:72px;padding-inline-start:72px;padding-inline-end:0;}.mud-drawer--closed.mud-drawer-mini>.mud-drawer-content>.mud-navmenu .mud-nav-link .mud-icon-root:first-child+.mud-nav-link-text{display:none;}.mud-drawer--closed.mud-drawer-mini .mud-nav-group * .mud-navmenu .mud-nav-item .mud-nav-link{padding:8px 16px 8px 16px;}.mud-drawer--closed.mud-drawer-mini .mud-nav-group * .mud-navmenu>.mud-nav-group .mud-nav-link{padding:8px 16px 8px 16px;}.mud-drawer--closed.mud-drawer-mini .mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu .mud-nav-item .mud-nav-link{padding:8px 16px 8px 16px;}.mud-drawer--closed.mud-drawer-mini .mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu>.mud-nav-group .mud-nav-link{padding:8px 16px 8px 16px;}.mud-drawer--closed.mud-drawer-mini .mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu .mud-nav-item .mud-nav-link{padding:8px 16px 8px 16px;}.mud-drawer--closed.mud-drawer-mini .mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu>.mud-nav-group .mud-nav-link{padding:8px 16px 8px 16px;}.mud-drawer--closed.mud-drawer-mini .mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu>.mud-nav-group * .mud-navmenu .mud-nav-item .mud-nav-link{padding:8px 16px 8px 16px;}.page-content-navigation .page-content-navigation-navlink.active .mud-nav-link{color:var(--mud-palette-primary);border-color:var(--mud-palette-primary);background-color:transparent;}.page-content-navigation .page-content-navigation-navlink .mud-nav-link{padding:4px 16px 4px 16px;color:var(--mud-palette-text-secondary);border-left:2px solid var(--mud-palette-action-disabled-background);}.page-content-navigation .page-content-navigation-navlink .mud-nav-link.active{color:var(--mud-palette-primary);border-color:var(--mud-palette-primary);background-color:transparent;}.page-content-navigation .page-content-navigation-navlink .mud-nav-link .mud-nav-link-text{margin-left:0;margin-inline-start:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.mud-pagination{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0;}.mud-pagination .mud-pagination-item>*{height:32px;min-width:32px;margin:0 3px;padding:0 6px;text-align:center;border-radius:16px;}.mud-pagination .mud-pagination-item :not(mud-pagination-item-selected)>*{box-shadow:none;}.mud-pagination .mud-pagination-item .mud-button{line-height:normal;}.mud-pagination .mud-pagination-item .mud-icon-button{padding:0;}.mud-pagination .mud-pagination-item-rectangular .mud-button{border-radius:var(--mud-default-borderradius);}.mud-pagination .mud-pagination-item .mud-typography[disabled]{color:var(--mud-palette-action-disabled) !important;}.mud-pagination-outlined .mud-pagination-item-selected .mud-button-outlined-default{background-color:var(--mud-palette-action-default-hover);}.mud-pagination-outlined .mud-pagination-item-selected .mud-button-outlined-primary{background-color:var(--mud-palette-primary-hover);}.mud-pagination-outlined .mud-pagination-item-selected .mud-button-outlined-secondary{background-color:var(--mud-palette-secondary-hover);}.mud-pagination-outlined .mud-pagination-item-selected .mud-button-outlined-tertiary{background-color:var(--mud-palette-tertiary-hover);}.mud-pagination-outlined .mud-pagination-item-selected .mud-button-outlined-info{background-color:var(--mud-palette-info-hover);}.mud-pagination-outlined .mud-pagination-item-selected .mud-button-outlined-success{background-color:var(--mud-palette-success-hover);}.mud-pagination-outlined .mud-pagination-item-selected .mud-button-outlined-warning{background-color:var(--mud-palette-warning-hover);}.mud-pagination-outlined .mud-pagination-item-selected .mud-button-outlined-error{background-color:var(--mud-palette-error-hover);}.mud-pagination-outlined .mud-pagination-item-selected .mud-button-outlined-dark{background-color:var(--mud-palette-dark-hover);}.mud-pagination-filled .mud-pagination-item:not(.mud-pagination-item-selected) .mud-button{background-color:var(--mud-palette-surface);}.mud-pagination-filled .mud-pagination-item .mud-button{box-shadow:var(--mud-elevation-1);}.mud-pagination-small .mud-pagination-item>*{height:26px;min-width:26px;margin:0 1px;padding:0 4px;border-radius:13px;}.mud-pagination-large .mud-pagination-item>*{height:40px;min-width:40px;padding:0 10px;border-radius:20px;}.mud-pagination-disable-elevation .mud-pagination-item .mud-button{box-shadow:none;}.mud-pagination-rtl .mud-pagination-item .mud-icon-root{transform:scaleX(-1);}.mud-picker.mud-rounded{border-radius:var(--mud-default-borderradius);}.mud-picker .mud-picker-actions{flex:0 0 auto;display:flex;padding:8px;align-items:center;justify-content:flex-end;}.mud-picker .mud-picker-actions>:not(:first-child){margin-left:8px;margin-inline-start:8px;margin-inline-end:unset;}.mud-picker-inline{display:flex;flex:1 1 auto;position:relative;max-width:100%;}.mud-picker-inline.mud-picker-input-button .mud-input,.mud-picker-inline.mud-picker-input-button .mud-input .mud-input-root{cursor:pointer;}.mud-picker-inline.mud-picker-input-button.mud-disabled .mud-input,.mud-picker-inline.mud-picker-input-button.mud-disabled .mud-input .mud-input-root{cursor:default;}.mud-picker-inline.mud-picker-input-text{cursor:text;}.mud-picker-inline.mud-picker-input-text:hover{cursor:text;}.mud-picker-inline.mud-picker-input-text.mud-disabled{cursor:default;}.mud-picker-inline.mud-picker-input-text.mud-disabled:hover{cursor:default;}.mud-picker-static{display:flex;overflow:hidden;min-width:310px;flex-direction:column;}.mud-picker-container{display:flex;flex-direction:column;border-radius:inherit;}.mud-picker-container.mud-picker-container-landscape{flex-direction:row;}.mud-picker-container .mud-toolbar{border-top-left-radius:inherit;border-top-right-radius:inherit;}.mud-picker-popover-paper{outline:0;z-index:calc(var(--mud-zindex-popover) + 1);position:absolute;min-width:16px;min-height:16px;overflow-x:hidden;overflow-y:auto;}.mud-picker-view{display:none;margin-top:20px;}.mud-picker-view.mud-picker-open{display:block;animation:mud-animation-fadein 251ms;}.mud-picker-content{display:flex;max-width:100%;min-width:310px;min-height:305px;overflow:hidden;flex-direction:column;justify-content:center;}.mud-picker-content.mud-picker-content-landscape{padding:0 8px;}.mud-picker-toolbar{height:100px;display:flex;align-items:center;flex-direction:row;justify-content:center;}.mud-picker-toolbar.mud-picker-toolbar-landscape{height:auto;padding:8px;max-width:150px;justify-content:flex-start;}.mud-picker-toolbar.mud-button-root{padding:0;min-width:16px;text-transform:none;}.mud-picker-inline-paper .mud-paper{position:relative !important;}.mud-picker-hidden{visibility:hidden;}.mud-picker-pos-top{top:0;position:fixed;visibility:visible;}.mud-picker-pos-top.mud-picker-pos-left{left:10px;}.mud-picker-pos-top.mud-picker-pos-right{right:10px;}.mud-picker-pos-above{bottom:0;visibility:visible;}.mud-picker-pos-above.mud-picker-pos-left{left:50%;transform:translateX(-50%);}.mud-picker-pos-above.mud-picker-pos-right{right:0;}.mud-picker-pos-bottom{bottom:10px;position:fixed;visibility:visible;}.mud-picker-pos-bottom.mud-picker-pos-left{left:10px;}.mud-picker-pos-bottom.mud-picker-pos-right{right:10px;}.mud-picker-pos-below{visibility:visible;}.mud-picker-pos-below.mud-picker-pos-left{left:50%;transform:translateX(-50%);}.mud-picker-pos-below.mud-picker-pos-right{right:0;}.mud-picker-datepicker-toolbar{align-items:flex-start;flex-direction:column;}.mud-picker-datepicker-toolbar .mud-button-year{font-size:1rem;font-weight:400;line-height:1.75;letter-spacing:.00938em;}.mud-picker-datepicker-toolbar .mud-button-date{font-size:2.125rem;font-weight:400;line-height:1.17;letter-spacing:.00735em;text-transform:none;}.mud-picker-datepicker-toolbar-landscape{padding:16px;}.mud-picker-datepicker-date-landscape{margin-right:16px;margin-inline-end:16px;margin-inline-start:unset;}.mud-picker-calendar-header-switch{display:flex;margin-top:4px;align-items:center;margin-bottom:8px;justify-content:space-between;}.mud-picker-calendar-header-switch>.mud-icon-button{z-index:1;padding:8px;margin:6px;background-color:var(--mud-palette-surface);}.mud-picker-calendar-header-switch>.mud-icon-button:hover{background-color:var(--mud-palette-action-default-hover);}.mud-picker-calendar-header-switch .mud-picker-calendar-header-transition{width:100%;height:23px;overflow:hidden;}.mud-picker-calendar-header-switch .mud-picker-calendar-header-transition:hover .mud-typography{cursor:pointer;font-weight:500;}.mud-picker-calendar-header-day{display:flex;max-height:16px;align-items:center;justify-content:center;}.mud-picker-calendar-header-day .mud-day-label{color:var(--mud-palette-text-secondary);width:36px;margin:0 2px;text-align:center;}.mud-picker-year-container{height:300px;overflow-y:auto;}.mud-picker-year-container .mud-picker-year{cursor:pointer;height:40px;display:flex;outline:none;align-items:center;justify-content:center;user-select:none;animation:mud-animation-fadein 500ms;transition:background-color 150ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-picker-year-container .mud-picker-year:hover{background-color:var(--mud-palette-action-default-hover);}.mud-picker-year-container .mud-picker-year .mud-picker-year-selected{margin:10px 0;font-weight:500;}.mud-picker-month-container{width:310px;display:flex;flex-wrap:wrap;align-content:stretch;}.mud-picker-month-container .mud-picker-month{flex:1 0 33.33%;cursor:pointer;height:60px;display:flex;outline:none;transition:font-size 100ms cubic-bezier(.4,0,.2,1) 0ms;align-items:center;justify-content:center;transition:background-color 150ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-picker-month-container .mud-picker-month:hover{background-color:var(--mud-palette-action-default-hover);}.mud-picker-month-container .mud-picker-month .mud-picker-month-selected{font-weight:500;}.mud-picker-month-container .mud-picker-month.mud-disabled{color:var(--mud-palette-text-disabled);pointer-events:none;}.mud-picker-slide-transition{display:block;position:relative;}.mud-picker-slide-transition>*{top:0;left:0;right:0;position:absolute;}.mud-picker-calendar-transition{margin-top:12px;min-height:216px;}.mud-picker-calendar-progress-container{width:100%;height:100%;display:flex;align-items:center;justify-content:center;}.mud-picker-calendar-content{display:grid;--selected-day:0;grid-column-gap:10px;grid-template-columns:auto;}@media(min-width:600px){.mud-picker-calendar-content:not(.mud-picker-calendar-content-1){grid-template-columns:repeat(2,minmax(auto,1fr));}.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-1 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-3 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-5 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-7 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-9 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-11 .mud-picker-nav-button-next{visibility:hidden;}.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-1 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-3 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-5 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-7 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-9 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-11 .mud-picker-nav-button-prev{visibility:visible;}.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-2 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-4 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-6 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-8 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-10 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-12 .mud-picker-nav-button-next{visibility:visible;}.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-2 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-4 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-6 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-8 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-10 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1) .mud-picker-calendar-header-12 .mud-picker-nav-button-prev{visibility:hidden;}}@media(min-width:960px){.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2){grid-template-columns:repeat(3,minmax(auto,1fr));}.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-1 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-4 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-7 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-10 .mud-picker-nav-button-next{visibility:hidden;}.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-1 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-4 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-7 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-10 .mud-picker-nav-button-prev{visibility:visible;}.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-2 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-2 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-5 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-5 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-8 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-8 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-11 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-11 .mud-picker-nav-button-prev{visibility:hidden;}.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-3 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-6 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-9 .mud-picker-nav-button-next,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-12 .mud-picker-nav-button-next{visibility:visible;}.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-3 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-6 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-9 .mud-picker-nav-button-prev,.mud-picker-calendar-content:not(.mud-picker-calendar-content-1):not(.mud-picker-calendar-content-2) .mud-picker-calendar-header-12 .mud-picker-nav-button-prev{visibility:hidden;}}:not(.mud-picker-hidden) .mud-picker-calendar-header-last .mud-picker-nav-button-next{visibility:inherit !important;}.mud-picker-hidden .mud-picker-nav-button-next,.mud-picker-hidden .mud-picker-nav-button-prev{visibility:hidden !important;}.mud-picker-calendar-container{display:flex;width:310px;flex-direction:column;}.mud-picker-calendar{display:flex;flex-wrap:wrap;justify-content:center;}.mud-picker-calendar .mud-day{color:var(--mud-palette-text-primary);width:36px;height:36px;margin:0 2px;padding:0;font-size:.75rem;font-weight:500;}.mud-picker-calendar .mud-day:hover{background-color:var(--mud-palette-action-default-hover);}.mud-picker-calendar .mud-day.mud-hidden{opacity:0;pointer-events:none;}.mud-picker-calendar .mud-day.mud-current{font-weight:600;}.mud-picker-calendar .mud-day.mud-selected{font-weight:500;}.mud-picker-calendar .mud-day .mud-typography{margin-top:2px;}.mud-picker-calendar .mud-day.mud-disabled{color:var(--mud-palette-text-disabled);pointer-events:none;}.mud-picker-calendar .mud-day.mud-range{margin:0;width:40px;transition:none;}.mud-picker-calendar .mud-day.mud-range.mud-range-start-selected{border-radius:50% 0% 0% 50%;}.mud-picker-calendar .mud-day.mud-range.mud-range-end-selected{border-radius:0% 50% 50% 0%;}.mud-picker-calendar .mud-day.mud-range.mud-range-between{border-radius:0;background-color:var(--mud-palette-action-default-hover);}.mud-picker-calendar .mud-day.mud-range.mud-range-selection:hover.mud-range-start-selected{border-radius:50%;}.mud-picker-calendar .mud-day.mud-range.mud-range-selection:hover:not(.mud-range-start-selected){border-radius:0% 50% 50% 0%;}.mud-picker-calendar .mud-day.mud-range.mud-range-selection:not(:hover):not(.mud-range-start-selected){border-radius:0;background:linear-gradient(var(--mud-palette-action-default-hover) 100%,var(--mud-palette-action-default-hover) 100%,transparent 0%);background-size:100% calc(100%*(var(--selected-day) - var(--day-id)));}.mud-range-selection-primary:hover{color:var(--mud-palette-primary-text) !important;background-color:var(--mud-palette-primary) !important;}.mud-range-selection-secondary:hover{color:var(--mud-palette-secondary-text) !important;background-color:var(--mud-palette-secondary) !important;}.mud-range-selection-tertiary:hover{color:var(--mud-palette-tertiary-text) !important;background-color:var(--mud-palette-tertiary) !important;}.mud-range-selection-info:hover{color:var(--mud-palette-info-text) !important;background-color:var(--mud-palette-info) !important;}.mud-range-selection-success:hover{color:var(--mud-palette-success-text) !important;background-color:var(--mud-palette-success) !important;}.mud-range-selection-warning:hover{color:var(--mud-palette-warning-text) !important;background-color:var(--mud-palette-warning) !important;}.mud-range-selection-error:hover{color:var(--mud-palette-error-text) !important;background-color:var(--mud-palette-error) !important;}.mud-range-selection-dark:hover{color:var(--mud-palette-dark-text) !important;background-color:var(--mud-palette-dark) !important;}.mud-picker-calendar-week{display:flex;margin:0 5px;justify-content:center;align-items:center;}.mud-picker-calendar-week .mud-picker-calendar-week-text{width:15px;margin-top:2px !important;color:var(--mud-palette-text-disabled);}.mud-application-layout-rtl .mud-picker-calendar .mud-day.mud-range.mud-range-start-selected{border-radius:0% 50% 50% 0%;}.mud-application-layout-rtl .mud-picker-calendar .mud-day.mud-range.mud-range-end-selected{border-radius:50% 0% 0% 50%;}.mud-application-layout-rtl .mud-picker-calendar .mud-day.mud-range.mud-range-selection:hover:not(.mud-range-start-selected){border-radius:50% 0% 0% 50%;}.mud-picker-timepicker-toolbar .mud-timepicker-button{padding:0;min-width:16px;text-transform:none;}.mud-picker-timepicker-toolbar .mud-timepicker-button.mud-timepicker-toolbar-text{color:rgba(255,255,255,.54);}.mud-picker-timepicker-toolbar .mud-timepicker-button:hover{background-color:var(--mud-theme-default-hover);}.mud-picker-timepicker-toolbar .mud-timepicker-hourminute{display:flex;align-items:baseline;justify-content:flex-end;}.mud-picker-timepicker-toolbar .mud-timepicker-hourminute .mud-timepicker-button{font-size:3.75rem;font-weight:300;line-height:1;letter-spacing:-.00833em;}.mud-picker-timepicker-toolbar .mud-timepicker-ampm{display:flex;margin-left:20px;margin-right:-20px;margin-inline-start:20px;margin-inline-end:-20px;flex-direction:column;}.mud-picker-timepicker-toolbar .mud-timepicker-ampm .mud-timepicker-button{font-size:18px;font-weight:400;line-height:1.75;letter-spacing:.00938em;}.mud-picker-timepicker-toolbar .mud-timepicker-separator{cursor:default;margin:0 4px 0 2px;margin-inline-start:2px;margin-inline-end:4px;}.mud-picker-timepicker-toolbar.mud-picker-timepicker-toolbar-landscape{flex-wrap:wrap;width:150px;justify-content:center;}.mud-picker-timepicker-toolbar.mud-picker-timepicker-toolbar-landscape .mud-timepicker-hourminute .mud-timepicker-button{font-size:3rem;font-weight:400;line-height:1.04;letter-spacing:0;}.mud-picker-timepicker-toolbar.mud-picker-timepicker-toolbar-landscape .mud-timepicker-ampm{display:flex;margin-left:20px;margin-right:-20px;margin-inline-start:20px;margin-inline-end:-20px;flex-direction:column;}.mud-picker-timepicker-toolbar.mud-picker-timepicker-toolbar-landscape .mud-timepicker-ampm .mud-timepicker-button{font-size:18px;font-weight:400;line-height:1.75;letter-spacing:.00938em;}.mud-picker-timepicker-toolbar.mud-picker-timepicker-toolbar-landscape .mud-timepicker-separator{font-size:3rem;font-weight:400;line-height:1.04;letter-spacing:0;}.mud-picker-time-container{margin:16px 0 8px;display:flex;align-items:flex-end;justify-content:center;}.mud-picker-time-container .mud-picker-time-clock{width:260px;height:260px;position:relative;border-radius:50%;pointer-events:none;background-color:rgba(0,0,0,.07);}.mud-picker-time-container .mud-picker-time-clock .mud-picker-time-clock-mask{width:100%;height:100%;outline:none;position:absolute;user-select:none;touch-actions:none;pointer-events:auto;}.mud-picker-time-container .mud-picker-time-clock .mud-picker-time-clock-pin{top:50%;left:50%;width:6px;height:6px;position:absolute;transform:translate(-50%,-50%);border-radius:50%;}.mud-picker-time-container .mud-picker-time-clock .mud-picker-stick-inner{left:calc(50% - 1px);width:3px;height:35%;bottom:0;position:absolute;transform-origin:center bottom 0;}.mud-picker-time-container .mud-picker-time-clock .mud-picker-stick-inner.mud-hour:after{content:"";position:absolute;left:50%;transform:translate(-50%,-50%);height:48px;width:48px;top:-60%;border-radius:50%;background-color:inherit;}.mud-picker-time-container .mud-picker-time-clock .mud-picker-stick-outer{left:calc(50% - 1px);width:0;height:35%;bottom:35%;position:absolute;transform-origin:center bottom 0;}.mud-picker-time-container .mud-picker-time-clock .mud-picker-stick-outer.mud-hour:after{content:"";position:absolute;left:50%;transform:translate(-50%,-50%);height:48px;width:62px;top:-20px;border-radius:50%;background-color:inherit;}.mud-picker-time-container .mud-picker-time-clock .mud-picker-stick{left:calc(50% - 1px);width:3px;height:50%;bottom:50%;position:absolute;transform-origin:center bottom 0;}.mud-picker-time-container .mud-picker-time-clock .mud-picker-stick.mud-hour:after{content:"";position:absolute;left:50%;transform:translate(-50%,-50%);height:62px;width:62px;top:20px;border-radius:50%;background-color:inherit;}.mud-picker-time-container .mud-picker-time-clock .mud-picker-stick.mud-minute:after{content:"";position:absolute;left:50%;transform:translate(-50%,-50%);height:44px;width:15px;top:20px;border-radius:50%;background-color:inherit;}.mud-picker-time-container .mud-picker-time-clock .mud-picker-time-clock-pointer{left:calc(50% - 1px);width:2px;bottom:50%;position:absolute;transform-origin:center bottom 0;}.mud-picker-time-container .mud-picker-time-clock .mud-picker-time-clock-pointer.mud-picker-time-clock-pointer-animation{transition:transform 150ms cubic-bezier(.4,0,.2,1) 0ms,height 150ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-picker-time-container .mud-picker-time-clock .mud-picker-time-clock-pointer .mud-picker-time-clock-pointer-thumb{position:absolute;border-radius:100%;}.mud-picker-time-container .mud-picker-time-clock .mud-picker-time-clock-pointer .mud-picker-time-clock-pointer-thumb.mud-onclock-text{top:-19px;left:-13px;width:28px;height:28px;border:none;background-color:inherit;}.mud-picker-time-container .mud-picker-time-clock .mud-picker-time-clock-pointer .mud-picker-time-clock-pointer-thumb.mud-onclock-minute{background:transparent;border:2px solid;width:10px;height:10px;top:-9px;left:-4px;}.mud-picker-time-container .mud-picker-time-clock .mud-clock-number{left:calc((100% - 32px)/2);color:var(--mud-palette-text-primary);background-color:transparent !important;width:32px;height:32px;display:inline-flex;position:absolute;align-items:center;user-select:none;border-radius:50%;justify-content:center;transition-duration:120ms;transition-property:color;}.mud-time-picker-dial{width:100%;height:100%;position:absolute;transition:transform 350ms,opacity 350ms;}.mud-time-picker-dial-out{opacity:0;}.mud-time-picker-hour.mud-time-picker-dial-out{transform:scale(1.2,1.2);transform-origin:center;}.mud-time-picker-minute.mud-time-picker-dial-out{transform:scale(.8,.8);transform-origin:center;}.mud-time-picker-dial-hidden{visibility:hidden;}.mud-picker-container+.mud-picker-color-toolbar{border-top-left-radius:inherit;border-top-right-radius:inherit;}.mud-picker-container+.mud-picker-color-content{border-top-left-radius:inherit;border-top-right-radius:inherit;}.mud-picker-color-toolbar{height:32px;padding-right:2px;padding-left:2px;}.mud-picker-color-content{min-height:unset;position:relative;}.mud-picker-color-picker{width:312px;height:250px;position:relative;overflow:hidden;}.mud-picker-color-picker .mud-picker-color-overlay{width:100%;height:100%;}.mud-picker-color-picker .mud-picker-color-overlay.mud-picker-color-overlay-white{background:linear-gradient(to right,#fff 0%,rgba(255,255,255,0) 100%);}.mud-picker-color-picker .mud-picker-color-overlay.mud-picker-color-overlay-black{background:linear-gradient(to bottom,rgba(0,0,0,0) 0%,#000 100%);}.mud-picker-color-picker .mud-picker-color-selector{position:absolute;top:-13px;left:-13px;}.mud-picker-color-controls{width:312px;padding:16px;display:flex;flex-direction:column;}.mud-picker-color-controls .mud-picker-color-controls-row{display:flex;align-items:center;}.mud-picker-color-controls .mud-picker-color-controls-row+.mud-picker-color-controls-row{margin-top:24px;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-sliders{display:flex;flex:1 0 auto;flex-direction:column;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-sliders .mud-picker-color-slider{min-width:224px;border-radius:var(--mud-default-borderradius);}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-sliders .mud-picker-color-slider .mud-slider-input{height:10px;border-radius:var(--mud-default-borderradius);}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-sliders .mud-picker-color-slider .mud-slider-input::-webkit-slider-runnable-track{background:initial;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-sliders .mud-picker-color-slider .mud-slider-input::-moz-range-track{background:initial;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-sliders .mud-picker-color-slider .mud-slider-input::-webkit-slider-thumb{appearance:none;margin-top:-6px;height:14px;width:14px;transform:none;transition:none;background:#f0f0f0;box-shadow:rgba(0,0,0,.37) 0 1px 4px 0;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-sliders .mud-picker-color-slider .mud-slider-input::-moz-range-thumb{appearance:none;margin-top:-6px;height:14px;width:14px;transform:none;transition:none;background:#f0f0f0;box-shadow:rgba(0,0,0,.37) 0 1px 4px 0;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-sliders .mud-picker-color-slider .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0 0 0 2px var(--mud-palette-action-default-hover) !important;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-sliders .mud-picker-color-slider .mud-slider-input:active::-moz-range-thumb{box-shadow:0 0 0 2px var(--mud-palette-action-default-hover) !important;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-sliders .mud-picker-color-slider.hue+.alpha{margin-top:18px;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-sliders .mud-picker-color-slider.hue .mud-slider-input{background:linear-gradient(90deg,#f00,#ff0 16.66%,#0f0 33.33%,#0ff 50%,#00f 66.66%,#f0f 83.33%,#f00);}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-sliders .mud-picker-color-slider.alpha .mud-slider-input{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWNgYGCQwoKxgqGgcJA5h3yFAAs8BRWVSwooAAAAAElFTkSuQmCC) repeat;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-inputs{display:flex;flex:1 1 auto;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-inputs .mud-picker-color-inputfield{width:100%;margin-right:8px;margin-inline-end:8px;margin-inline-start:unset;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-inputs .mud-picker-color-inputfield:last-of-type{margin-right:0;margin-inline-end:0;margin-inline-start:unset;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-inputs .mud-picker-color-inputfield .mud-input input{padding:6px;height:1em;text-align:center;font-size:14px;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-inputs .mud-picker-color-inputfield .mud-input-helper-text{text-align:center;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-inputs .mud-picker-color-inputfield .mud-input-helper-text div div{margin:auto;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-control-switch{margin-left:8px;margin-inline-start:8px;margin-inline-end:unset;padding-bottom:16px;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-collection{display:flex;min-width:230px;justify-content:space-between;}.mud-picker-color-controls .mud-picker-color-controls-row .mud-picker-color-collection .mud-picker-color-dot{max-width:38px;}.mud-picker-color-dot{height:38px;min-width:38px;width:100%;transition:background-color 250ms cubic-bezier(.4,0,.2,1) 0ms,box-shadow 250ms cubic-bezier(.4,0,.2,1) 0ms,border 250ms cubic-bezier(.4,0,.2,1) 0ms,border-radius 150ms cubic-bezier(.4,0,.2,1) 0ms;border-radius:var(--mud-default-borderradius);box-shadow:0 0 6px rgba(127,130,134,.18);}.mud-picker-color-dot:hover{cursor:pointer;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);}.mud-picker-color-dot.mud-picker-color-dot-current{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGElEQVQYlWNgYGCQwoKxgqGgcJA5h3yFAAs8BRWVSwooAAAAAElFTkSuQmCC) repeat;}.mud-picker-color-dot .mud-picker-color-fill{width:100%;height:100%;border-radius:inherit;}.mud-picker-color-dot+.mud-picker-color-sliders{margin-left:16px;margin-inline-start:16px;margin-inline-end:unset;}.mud-picker-color-dot+.mud-picker-color-collection{margin-left:10px;margin-inline-start:10px;margin-inline-end:unset;}.mud-picker-color-view{position:absolute;width:100%;height:100%;overflow:auto;padding:6px;background-color:var(--mud-palette-surface);}.mud-picker-color-view .mud-picker-color-view-collection{display:flex;flex-wrap:wrap;justify-content:space-evenly;}.mud-picker-color-view .mud-picker-color-view-collection .mud-picker-color-dot{max-width:38px;margin:8px;}.mud-picker-color-view .mud-picker-color-view-collection .mud-picker-color-dot.selected{border-radius:50%;box-shadow:0 3px 1px -2px rgba(0,0,0,.2),0 2px 2px 0 rgba(0,0,0,.14),0 1px 5px 0 rgba(0,0,0,.12);}.mud-picker-color-picker .mud-picker-color-grid{display:flex;flex-wrap:wrap;}.mud-picker-color-picker .mud-picker-color-grid .mud-picker-color-dot{height:25px;min-width:26px;max-width:26px;border-radius:0;box-shadow:none;}.mud-popover{outline:0;z-index:calc(var(--mud-zindex-popover) + 1);position:absolute;opacity:0;}.mud-popover.mud-popover-fixed{position:fixed;}.mud-popover.mud-popover-relative-width{width:100%;}.mud-popover.mud-popover-open{opacity:1;transition:opacity;}.mud-popover:not(.mud-popover-open){pointer-events:none;transition-duration:0ms !important;transition-delay:0ms !important;}.mud-appbar .mud-popover-cascading-value{z-index:calc(var(--mud-zindex-appbar) + 2);}.mud-drawer:not(.mud-drawer-temporary) .mud-popover-cascading-value{z-index:calc(var(--mud-zindex-drawer) + 2);}.mud-drawer.mud-drawer-temporary .mud-popover-cascading-value,.mud-drawer.mud-drawer-responsive .mud-popover-cascading-value{z-index:calc(var(--mud-zindex-appbar) + 4);}.mud-dialog .mud-popover-cascading-value{z-index:calc(var(--mud-zindex-dialog) + 3);}.mud-popover .mud-list{max-height:inherit;overflow-y:auto;}.mud-simple-table table{width:100%;display:table;border-spacing:0;border-collapse:collapse;}.mud-simple-table table thead{display:table-header-group;}.mud-simple-table table tbody{display:table-row-group;}.mud-simple-table table * tr{color:inherit;display:table-row;outline:0;vertical-align:middle;}.mud-simple-table table * tr>td,.mud-simple-table table * tr th{display:table-cell;padding:16px;font-size:.875rem;text-align:start;font-weight:400;line-height:1.43;border-bottom:1px solid var(--mud-palette-table-lines);letter-spacing:.01071em;vertical-align:inherit;}.mud-simple-table table * tr>th{font-weight:500;line-height:1.5rem;}.mud-simple-table table tbody tr:last-child td{border-bottom:none;}.mud-simple-table.mud-table-dense * tr td,.mud-simple-table.mud-table-dense * tr th{padding:6px 16px;}.mud-simple-table.mud-table-hover .mud-table-container table tbody tr:hover{background-color:var(--mud-palette-table-hover);}.mud-simple-table.mud-table-bordered .mud-table-container table tbody tr td{border-right:1px solid var(--mud-palette-table-lines);}.mud-simple-table.mud-table-bordered .mud-table-container table tbody tr td:last-child{border-right:none;}.mud-simple-table.mud-table-striped .mud-table-container table tbody tr:nth-of-type(odd){background-color:var(--mud-palette-table-striped);}.mud-table-hover.mud-table-striped .mud-table-container table tbody tr:nth-of-type(odd):nth-of-type(odd):hover{background-color:var(--mud-palette-table-hover);}.mud-simple-table.mud-table-sticky-header .mud-table-container{overflow-x:auto;max-height:100%;}.mud-simple-table.mud-table-sticky-header * table{border-collapse:separate;}.mud-simple-table.mud-table-sticky-header * table thead * th:first-child{border-radius:var(--mud-default-borderradius) 0 0 0;}.mud-simple-table.mud-table-sticky-header * table thead * th:last-child{border-radius:0 var(--mud-default-borderradius) 0 0;}.mud-simple-table.mud-table-sticky-header * table thead * th{background-color:var(--mud-palette-surface);position:sticky;z-index:1;top:0;}.mud-simple-table.mud-table-sticky-footer .mud-table-container{overflow-x:auto;max-height:100%;}.mud-simple-table.mud-table-sticky-footer * table{border-collapse:separate;}.mud-simple-table.mud-table-sticky-footer * table tfoot * td{background-color:var(--mud-palette-surface);position:sticky;z-index:1;bottom:0;}.mud-skeleton{height:1.2em;display:block;background-color:rgba(0,0,0,.11);}.mud-skeleton-text{height:auto;transform:scale(1,.6);margin-top:0;border-radius:var(--mud-default-borderradius);margin-bottom:0;transform-origin:0 60%;}.mud-skeleton-text:empty:before{content:" ";}.mud-skeleton-circle{border-radius:50%;}.mud-skeleton-pulse{animation:mud-skeleton-keyframes-pulse 1.5s ease-in-out .5s infinite;}.mud-skeleton-wave{overflow:hidden;position:relative;}.mud-skeleton-wave::after{top:0;left:0;right:0;bottom:0;content:"";position:absolute;animation:mud-skeleton-keyframes-wave 1.6s linear .5s infinite;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(0,0,0,.04),transparent);}.mud-slider{color:var(--mud-palette-text-primary);display:inline-block;width:100%;user-select:none;}.mud-slider>.mud-typography{margin-top:10px;}.mud-slider.mud-slider-vertical{transform:rotate(270deg);height:100%;width:unset;}.mud-slider .mud-slider-input{-webkit-appearance:none;-moz-appearance:none;position:relative;display:block;width:100%;background-color:transparent;cursor:pointer;}.mud-slider .mud-slider-input:focus{outline:none;}.mud-slider .mud-slider-input:active+.mud-slider-value-label{opacity:1;}.mud-slider .mud-slider-input::-webkit-slider-runnable-track{border-radius:var(--mud-default-borderradius);width:100%;}.mud-slider .mud-slider-input::-moz-range-track{border-radius:var(--mud-default-borderradius);width:100%;}.mud-slider .mud-slider-input::-webkit-slider-thumb{appearance:none;-webkit-appearance:none;border:none;border-radius:50%;cursor:pointer;transition:box-shadow 150ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-slider .mud-slider-input::-moz-range-thumb{appearance:none;-webkit-appearance:none;border:none;border-radius:50%;cursor:pointer;transition:box-shadow 150ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-slider .mud-slider-input:disabled{cursor:default;opacity:.38;}.mud-slider .mud-slider-input:disabled::-webkit-slider-runnable-track{background-color:var(--mud-palette-text-disabled);}.mud-slider .mud-slider-input:disabled::-moz-range-track{background-color:var(--mud-palette-text-disabled);}.mud-slider .mud-slider-input:disabled::-webkit-slider-thumb{background-color:#000;color:#fff;box-shadow:0 0 0 1px white !important;transform:scale(4,4);}.mud-slider .mud-slider-input:disabled::-webkit-slider-thumb:hover{box-shadow:0 0 0 1px white !important;}.mud-slider .mud-slider-input:disabled::-moz-range-thumb{background-color:#000;color:#fff;box-shadow:0 0 0 1px white !important;transform:scale(4,4);}.mud-slider .mud-slider-input:disabled::-moz-range-thumb:hover{box-shadow:0 0 0 1px white !important;}.mud-slider.mud-slider-primary .mud-slider-filled{background-color:var(--mud-palette-primary);}.mud-slider.mud-slider-primary .mud-slider-track-tick{background-color:var(--mud-palette-primary);}.mud-slider.mud-slider-primary .mud-slider-value-label{color:var(--mud-palette-primary-text);background-color:var(--mud-palette-primary);}.mud-slider.mud-slider-primary .mud-slider-input::-webkit-slider-runnable-track{background-color:rgba(var(--mud-palette-primary-rgb),.3);}.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-primary-rgb),.3);}.mud-slider.mud-slider-primary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-primary);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-primary-rgb),.3);}.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-primary);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-primary-rgb),.3);}.mud-slider.mud-slider-primary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-primary-rgb),.3),0 0 0 1px rgba(var(--mud-palette-primary-rgb),.24);}.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-primary-rgb),.3),0 0 0 1px rgba(var(--mud-palette-primary-rgb),.24);}.mud-slider.mud-slider-primary .mud-slider-input:active::-webkit-slider-thumb,.mud-slider.mud-slider-primary .mud-slider-input:focus-visible::-webkit-slider-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-primary-rgb),.3),0 0 0 2px rgba(var(--mud-palette-primary-rgb),.24);}.mud-slider.mud-slider-primary .mud-slider-input:active::-moz-range-thumb,.mud-slider.mud-slider-primary .mud-slider-input:focus-visible::-moz-range-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-primary-rgb),.3),0 0 0 2px rgba(var(--mud-palette-primary-rgb),.24);}.mud-slider.mud-slider-secondary .mud-slider-filled{background-color:var(--mud-palette-secondary);}.mud-slider.mud-slider-secondary .mud-slider-track-tick{background-color:var(--mud-palette-secondary);}.mud-slider.mud-slider-secondary .mud-slider-value-label{color:var(--mud-palette-secondary-text);background-color:var(--mud-palette-secondary);}.mud-slider.mud-slider-secondary .mud-slider-input::-webkit-slider-runnable-track{background-color:rgba(var(--mud-palette-secondary-rgb),.3);}.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-secondary-rgb),.3);}.mud-slider.mud-slider-secondary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-secondary);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-secondary-rgb),.3);}.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-secondary);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-secondary-rgb),.3);}.mud-slider.mud-slider-secondary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-secondary-rgb),.3),0 0 0 1px rgba(var(--mud-palette-secondary-rgb),.24);}.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-secondary-rgb),.3),0 0 0 1px rgba(var(--mud-palette-secondary-rgb),.24);}.mud-slider.mud-slider-secondary .mud-slider-input:active::-webkit-slider-thumb,.mud-slider.mud-slider-secondary .mud-slider-input:focus-visible::-webkit-slider-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-secondary-rgb),.3),0 0 0 2px rgba(var(--mud-palette-secondary-rgb),.24);}.mud-slider.mud-slider-secondary .mud-slider-input:active::-moz-range-thumb,.mud-slider.mud-slider-secondary .mud-slider-input:focus-visible::-moz-range-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-secondary-rgb),.3),0 0 0 2px rgba(var(--mud-palette-secondary-rgb),.24);}.mud-slider.mud-slider-tertiary .mud-slider-filled{background-color:var(--mud-palette-tertiary);}.mud-slider.mud-slider-tertiary .mud-slider-track-tick{background-color:var(--mud-palette-tertiary);}.mud-slider.mud-slider-tertiary .mud-slider-value-label{color:var(--mud-palette-tertiary-text);background-color:var(--mud-palette-tertiary);}.mud-slider.mud-slider-tertiary .mud-slider-input::-webkit-slider-runnable-track{background-color:rgba(var(--mud-palette-tertiary-rgb),.3);}.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-tertiary-rgb),.3);}.mud-slider.mud-slider-tertiary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-tertiary);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb),.3);}.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-tertiary);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb),.3);}.mud-slider.mud-slider-tertiary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb),.3),0 0 0 1px rgba(var(--mud-palette-tertiary-rgb),.24);}.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb),.3),0 0 0 1px rgba(var(--mud-palette-tertiary-rgb),.24);}.mud-slider.mud-slider-tertiary .mud-slider-input:active::-webkit-slider-thumb,.mud-slider.mud-slider-tertiary .mud-slider-input:focus-visible::-webkit-slider-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb),.3),0 0 0 2px rgba(var(--mud-palette-tertiary-rgb),.24);}.mud-slider.mud-slider-tertiary .mud-slider-input:active::-moz-range-thumb,.mud-slider.mud-slider-tertiary .mud-slider-input:focus-visible::-moz-range-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb),.3),0 0 0 2px rgba(var(--mud-palette-tertiary-rgb),.24);}.mud-slider.mud-slider-info .mud-slider-filled{background-color:var(--mud-palette-info);}.mud-slider.mud-slider-info .mud-slider-track-tick{background-color:var(--mud-palette-info);}.mud-slider.mud-slider-info .mud-slider-value-label{color:var(--mud-palette-info-text);background-color:var(--mud-palette-info);}.mud-slider.mud-slider-info .mud-slider-input::-webkit-slider-runnable-track{background-color:rgba(var(--mud-palette-info-rgb),.3);}.mud-slider.mud-slider-info .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-info-rgb),.3);}.mud-slider.mud-slider-info .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-info);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-info-rgb),.3);}.mud-slider.mud-slider-info .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-info);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-info-rgb),.3);}.mud-slider.mud-slider-info .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-info-rgb),.3),0 0 0 1px rgba(var(--mud-palette-info-rgb),.24);}.mud-slider.mud-slider-info .mud-slider-input::-moz-range-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-info-rgb),.3),0 0 0 1px rgba(var(--mud-palette-info-rgb),.24);}.mud-slider.mud-slider-info .mud-slider-input:active::-webkit-slider-thumb,.mud-slider.mud-slider-info .mud-slider-input:focus-visible::-webkit-slider-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-info-rgb),.3),0 0 0 2px rgba(var(--mud-palette-info-rgb),.24);}.mud-slider.mud-slider-info .mud-slider-input:active::-moz-range-thumb,.mud-slider.mud-slider-info .mud-slider-input:focus-visible::-moz-range-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-info-rgb),.3),0 0 0 2px rgba(var(--mud-palette-info-rgb),.24);}.mud-slider.mud-slider-success .mud-slider-filled{background-color:var(--mud-palette-success);}.mud-slider.mud-slider-success .mud-slider-track-tick{background-color:var(--mud-palette-success);}.mud-slider.mud-slider-success .mud-slider-value-label{color:var(--mud-palette-success-text);background-color:var(--mud-palette-success);}.mud-slider.mud-slider-success .mud-slider-input::-webkit-slider-runnable-track{background-color:rgba(var(--mud-palette-success-rgb),.3);}.mud-slider.mud-slider-success .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-success-rgb),.3);}.mud-slider.mud-slider-success .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-success);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-success-rgb),.3);}.mud-slider.mud-slider-success .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-success);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-success-rgb),.3);}.mud-slider.mud-slider-success .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-success-rgb),.3),0 0 0 1px rgba(var(--mud-palette-success-rgb),.24);}.mud-slider.mud-slider-success .mud-slider-input::-moz-range-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-success-rgb),.3),0 0 0 1px rgba(var(--mud-palette-success-rgb),.24);}.mud-slider.mud-slider-success .mud-slider-input:active::-webkit-slider-thumb,.mud-slider.mud-slider-success .mud-slider-input:focus-visible::-webkit-slider-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-success-rgb),.3),0 0 0 2px rgba(var(--mud-palette-success-rgb),.24);}.mud-slider.mud-slider-success .mud-slider-input:active::-moz-range-thumb,.mud-slider.mud-slider-success .mud-slider-input:focus-visible::-moz-range-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-success-rgb),.3),0 0 0 2px rgba(var(--mud-palette-success-rgb),.24);}.mud-slider.mud-slider-warning .mud-slider-filled{background-color:var(--mud-palette-warning);}.mud-slider.mud-slider-warning .mud-slider-track-tick{background-color:var(--mud-palette-warning);}.mud-slider.mud-slider-warning .mud-slider-value-label{color:var(--mud-palette-warning-text);background-color:var(--mud-palette-warning);}.mud-slider.mud-slider-warning .mud-slider-input::-webkit-slider-runnable-track{background-color:rgba(var(--mud-palette-warning-rgb),.3);}.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-warning-rgb),.3);}.mud-slider.mud-slider-warning .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-warning);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-warning-rgb),.3);}.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-warning);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-warning-rgb),.3);}.mud-slider.mud-slider-warning .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-warning-rgb),.3),0 0 0 1px rgba(var(--mud-palette-warning-rgb),.24);}.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-warning-rgb),.3),0 0 0 1px rgba(var(--mud-palette-warning-rgb),.24);}.mud-slider.mud-slider-warning .mud-slider-input:active::-webkit-slider-thumb,.mud-slider.mud-slider-warning .mud-slider-input:focus-visible::-webkit-slider-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-warning-rgb),.3),0 0 0 2px rgba(var(--mud-palette-warning-rgb),.24);}.mud-slider.mud-slider-warning .mud-slider-input:active::-moz-range-thumb,.mud-slider.mud-slider-warning .mud-slider-input:focus-visible::-moz-range-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-warning-rgb),.3),0 0 0 2px rgba(var(--mud-palette-warning-rgb),.24);}.mud-slider.mud-slider-error .mud-slider-filled{background-color:var(--mud-palette-error);}.mud-slider.mud-slider-error .mud-slider-track-tick{background-color:var(--mud-palette-error);}.mud-slider.mud-slider-error .mud-slider-value-label{color:var(--mud-palette-error-text);background-color:var(--mud-palette-error);}.mud-slider.mud-slider-error .mud-slider-input::-webkit-slider-runnable-track{background-color:rgba(var(--mud-palette-error-rgb),.3);}.mud-slider.mud-slider-error .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-error-rgb),.3);}.mud-slider.mud-slider-error .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-error);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-error-rgb),.3);}.mud-slider.mud-slider-error .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-error);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-error-rgb),.3);}.mud-slider.mud-slider-error .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-error-rgb),.3),0 0 0 1px rgba(var(--mud-palette-error-rgb),.24);}.mud-slider.mud-slider-error .mud-slider-input::-moz-range-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-error-rgb),.3),0 0 0 1px rgba(var(--mud-palette-error-rgb),.24);}.mud-slider.mud-slider-error .mud-slider-input:active::-webkit-slider-thumb,.mud-slider.mud-slider-error .mud-slider-input:focus-visible::-webkit-slider-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-error-rgb),.3),0 0 0 2px rgba(var(--mud-palette-error-rgb),.24);}.mud-slider.mud-slider-error .mud-slider-input:active::-moz-range-thumb,.mud-slider.mud-slider-error .mud-slider-input:focus-visible::-moz-range-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-error-rgb),.3),0 0 0 2px rgba(var(--mud-palette-error-rgb),.24);}.mud-slider.mud-slider-dark .mud-slider-filled{background-color:var(--mud-palette-dark);}.mud-slider.mud-slider-dark .mud-slider-track-tick{background-color:var(--mud-palette-dark);}.mud-slider.mud-slider-dark .mud-slider-value-label{color:var(--mud-palette-dark-text);background-color:var(--mud-palette-dark);}.mud-slider.mud-slider-dark .mud-slider-input::-webkit-slider-runnable-track{background-color:rgba(var(--mud-palette-dark-rgb),.3);}.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-dark-rgb),.3);}.mud-slider.mud-slider-dark .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-dark);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-dark-rgb),.3);}.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-dark);box-shadow:0 1px 2px -1px rgba(var(--mud-palette-dark-rgb),.3);}.mud-slider.mud-slider-dark .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-dark-rgb),.3),0 0 0 1px rgba(var(--mud-palette-dark-rgb),.24);}.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-thumb:hover{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-dark-rgb),.3),0 0 0 1px rgba(var(--mud-palette-dark-rgb),.24);}.mud-slider.mud-slider-dark .mud-slider-input:active::-webkit-slider-thumb,.mud-slider.mud-slider-dark .mud-slider-input:focus-visible::-webkit-slider-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-dark-rgb),.3),0 0 0 2px rgba(var(--mud-palette-dark-rgb),.24);}.mud-slider.mud-slider-dark .mud-slider-input:active::-moz-range-thumb,.mud-slider.mud-slider-dark .mud-slider-input:focus-visible::-moz-range-thumb{box-shadow:0 1px 2px -1px rgba(var(--mud-palette-dark-rgb),.3),0 0 0 2px rgba(var(--mud-palette-dark-rgb),.24);}.mud-slider.mud-slider-small .mud-slider-filled{height:2px;}.mud-slider.mud-slider-small .mud-slider-track-tick{width:2px;height:2px;}.mud-slider.mud-slider-small .mud-slider-track-tick-label{transform:translateX(-50%) translateY(50%);}.mud-slider.mud-slider-small .mud-slider-input::-webkit-slider-runnable-track{height:2px;margin:10px 0;}.mud-slider.mud-slider-small .mud-slider-input::-moz-range-track{height:2px;margin:10px 0;}.mud-slider.mud-slider-small .mud-slider-input::-webkit-slider-thumb{height:2px;width:2px;transform:scale(6,6);}.mud-slider.mud-slider-small .mud-slider-input::-moz-range-thumb{height:2px;width:2px;transform:scale(6,6);}.mud-slider.mud-slider-medium .mud-slider-filled{height:4px;}.mud-slider.mud-slider-medium .mud-slider-track-tick{width:4px;height:4px;}.mud-slider.mud-slider-medium .mud-slider-track-tick-label{transform:translateX(-50%) translateY(80%);}.mud-slider.mud-slider-medium .mud-slider-input::-webkit-slider-runnable-track{height:4px;margin:12px 0;}.mud-slider.mud-slider-medium .mud-slider-input::-moz-range-track{height:4px;margin:12px 0;}.mud-slider.mud-slider-medium .mud-slider-input::-webkit-slider-thumb{height:4px;width:4px;transform:scale(5,5);}.mud-slider.mud-slider-medium .mud-slider-input::-moz-range-thumb{height:4px;width:4px;transform:scale(5,5);}.mud-slider.mud-slider-large .mud-slider-filled{height:6px;}.mud-slider.mud-slider-large .mud-slider-track-tick{width:6px;height:6px;}.mud-slider.mud-slider-large .mud-slider-track-tick-label{transform:translateX(-50%) translateY(110%);}.mud-slider.mud-slider-large .mud-slider-input::-webkit-slider-runnable-track{height:6px;margin:14px 0;}.mud-slider.mud-slider-large .mud-slider-input::-moz-range-track{height:6px;margin:14px 0;}.mud-slider.mud-slider-large .mud-slider-input::-webkit-slider-thumb{height:6px;width:6px;transform:scale(4,4);}.mud-slider.mud-slider-large .mud-slider-input::-moz-range-thumb{height:6px;width:6px;transform:scale(4,4);}.mud-slider .mud-slider-container{position:relative;width:100%;display:flex;align-content:center;}.mud-slider .mud-slider-filled{border-radius:var(--mud-default-borderradius);}.mud-slider .mud-slider-inner-container{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;}.mud-slider .mud-slider-value-label{position:absolute;top:0;transform:translateX(-50%) translateY(-125%);padding:4px 8px;text-align:center;align-items:center;justify-content:center;font-size:12px;border-radius:2px;line-height:normal;opacity:0;transition:opacity .2s ease-in-out;pointer-events:none;user-select:none;}.mud-slider .mud-slider-tickmarks{display:flex;justify-content:space-between;flex-grow:1;}.mud-slider .mud-slider-track-tick{border-radius:9999%;background-color:var(--mud-palette-primary);}.mud-slider .mud-slider-track-tick-label{position:absolute;top:0;left:0;}.mud-progress-circular{display:inline-block;color:var(--mud-palette-text-secondary);}.mud-progress-circular.mud-progress-indeterminate{animation:mud-progress-circular-keyframes-circular-rotate 1.4s linear infinite;}.mud-progress-circular.mud-progress-static{transition:transform 300ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-progress-circular.mud-progress-small{height:24px;width:24px;}.mud-progress-circular.mud-progress-medium{height:40px;width:40px;}.mud-progress-circular.mud-progress-large{height:56px;width:56px;}.mud-progress-circular-svg{display:block;transform:rotate(-90deg);}.mud-progress-circular-circle{stroke:currentColor;}.mud-progress-circular-circle.mud-progress-indeterminate{animation:mud-progress-circular-keyframes-circular-dash 1.4s ease-in-out infinite;stroke-dasharray:80px,200px;stroke-dashoffset:0;}.mud-progress-circular-circle.mud-progress-static{transition:stroke-dashoffset 300ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-progress-circular-disable-shrink{animation:none;}.mud-progress-linear{position:relative;}.mud-progress-linear::before{content:'';position:absolute;top:0;left:0;height:100%;width:100%;display:block;opacity:.2;}.mud-progress-linear.horizontal{width:100%;}.mud-progress-linear.horizontal.mud-progress-linear-small{height:4px;}.mud-progress-linear.horizontal.mud-progress-linear-medium{height:8px;}.mud-progress-linear.horizontal.mud-progress-linear-large{height:12px;}.mud-progress-linear.horizontal .mud-progress-linear-dashed{animation:mud-progress-linear-horizontal-keyframes-buffer 3s infinite linear;}.mud-progress-linear.vertical{height:100%;}.mud-progress-linear.vertical.mud-progress-linear-small{width:4px;}.mud-progress-linear.vertical.mud-progress-linear-medium{width:8px;}.mud-progress-linear.vertical.mud-progress-linear-large{width:12px;}.mud-progress-linear .mud-progress-linear-content{position:absolute;height:100%;width:100%;display:flex;justify-content:center;align-items:center;}.mud-progress-linear .mud-progress-linear-bars{position:absolute;height:100%;width:100%;overflow:hidden;}.mud-progress-linear .mud-progress-linear-bar{top:0;left:0;width:100%;bottom:0;position:absolute;transition:transform .2s linear;transform-origin:left;}.mud-progress-linear .mud-progress-linear-bar.mud-progress-linear-1-indeterminate.horizontal{width:auto;animation:mud-progress-linear-horizontal-keyframes-indeterminate1 2.1s cubic-bezier(.65,.815,.735,.395) infinite;}.mud-progress-linear .mud-progress-linear-bar.mud-progress-linear-1-indeterminate.vertical{height:auto;animation:mud-progress-linear-vertical-keyframes-indeterminate1 2.1s cubic-bezier(.65,.815,.735,.395) infinite;}.mud-progress-linear .mud-progress-linear-bar.mud-progress-linear-2-indeterminate.horizontal{width:auto;animation:mud-progress-linear-horizontal-keyframes-indeterminate2 2.1s cubic-bezier(.165,.84,.44,1) 1.15s infinite;}.mud-progress-linear .mud-progress-linear-bar.mud-progress-linear-2-indeterminate.vertical{height:auto;animation:mud-progress-linear-vertical-keyframes-indeterminate2 2.1s cubic-bezier(.165,.84,.44,1) 1.15s infinite;}.mud-progress-linear.mud-progress-linear-color-default:not(.mud-progress-linear-buffer)::before{background-color:var(--mud-palette-action-disabled);}.mud-progress-linear.mud-progress-linear-color-default:not(.mud-progress-linear-buffer) .mud-progress-linear-bar{background-color:var(--mud-palette-action-default);}.mud-progress-linear.mud-progress-linear-color-default.mud-progress-linear-buffer .mud-progress-linear-bar:first-child{background-size:10px 10px;background-image:radial-gradient(var(--mud-palette-action-disabled) 0%,var(--mud-palette-action-disabled) 16%,transparent 42%);background-position:0 -23px;}.mud-progress-linear.mud-progress-linear-color-default.mud-progress-linear-buffer .mud-progress-linear-bar:nth-child(2){background-color:var(--mud-palette-action-default);}.mud-progress-linear.mud-progress-linear-color-default.mud-progress-linear-buffer .mud-progress-linear-bar:last-child{transition:transform .4s linear;}.mud-progress-linear.mud-progress-linear-color-default.mud-progress-linear-buffer .mud-progress-linear-bar:last-child::before{content:'';position:absolute;top:0;left:0;height:100%;width:100%;display:block;opacity:.4;background-color:var(--mud-palette-action-disabled);}.mud-progress-linear.mud-progress-linear-color-primary:not(.mud-progress-linear-buffer)::before{background-color:var(--mud-palette-primary);}.mud-progress-linear.mud-progress-linear-color-primary:not(.mud-progress-linear-buffer) .mud-progress-linear-bar{background-color:var(--mud-palette-primary);}.mud-progress-linear.mud-progress-linear-color-primary.mud-progress-linear-buffer .mud-progress-linear-bar:first-child{background-size:10px 10px;background-image:radial-gradient(var(--mud-palette-primary) 0%,var(--mud-palette-primary) 16%,transparent 42%);background-position:0 -23px;}.mud-progress-linear.mud-progress-linear-color-primary.mud-progress-linear-buffer .mud-progress-linear-bar:nth-child(2){background-color:var(--mud-palette-primary);}.mud-progress-linear.mud-progress-linear-color-primary.mud-progress-linear-buffer .mud-progress-linear-bar:last-child{transition:transform .4s linear;}.mud-progress-linear.mud-progress-linear-color-primary.mud-progress-linear-buffer .mud-progress-linear-bar:last-child::before{content:'';position:absolute;top:0;left:0;height:100%;width:100%;display:block;opacity:.4;background-color:var(--mud-palette-primary);}.mud-progress-linear.mud-progress-linear-color-secondary:not(.mud-progress-linear-buffer)::before{background-color:var(--mud-palette-secondary);}.mud-progress-linear.mud-progress-linear-color-secondary:not(.mud-progress-linear-buffer) .mud-progress-linear-bar{background-color:var(--mud-palette-secondary);}.mud-progress-linear.mud-progress-linear-color-secondary.mud-progress-linear-buffer .mud-progress-linear-bar:first-child{background-size:10px 10px;background-image:radial-gradient(var(--mud-palette-secondary) 0%,var(--mud-palette-secondary) 16%,transparent 42%);background-position:0 -23px;}.mud-progress-linear.mud-progress-linear-color-secondary.mud-progress-linear-buffer .mud-progress-linear-bar:nth-child(2){background-color:var(--mud-palette-secondary);}.mud-progress-linear.mud-progress-linear-color-secondary.mud-progress-linear-buffer .mud-progress-linear-bar:last-child{transition:transform .4s linear;}.mud-progress-linear.mud-progress-linear-color-secondary.mud-progress-linear-buffer .mud-progress-linear-bar:last-child::before{content:'';position:absolute;top:0;left:0;height:100%;width:100%;display:block;opacity:.4;background-color:var(--mud-palette-secondary);}.mud-progress-linear.mud-progress-linear-color-tertiary:not(.mud-progress-linear-buffer)::before{background-color:var(--mud-palette-tertiary);}.mud-progress-linear.mud-progress-linear-color-tertiary:not(.mud-progress-linear-buffer) .mud-progress-linear-bar{background-color:var(--mud-palette-tertiary);}.mud-progress-linear.mud-progress-linear-color-tertiary.mud-progress-linear-buffer .mud-progress-linear-bar:first-child{background-size:10px 10px;background-image:radial-gradient(var(--mud-palette-tertiary) 0%,var(--mud-palette-tertiary) 16%,transparent 42%);background-position:0 -23px;}.mud-progress-linear.mud-progress-linear-color-tertiary.mud-progress-linear-buffer .mud-progress-linear-bar:nth-child(2){background-color:var(--mud-palette-tertiary);}.mud-progress-linear.mud-progress-linear-color-tertiary.mud-progress-linear-buffer .mud-progress-linear-bar:last-child{transition:transform .4s linear;}.mud-progress-linear.mud-progress-linear-color-tertiary.mud-progress-linear-buffer .mud-progress-linear-bar:last-child::before{content:'';position:absolute;top:0;left:0;height:100%;width:100%;display:block;opacity:.4;background-color:var(--mud-palette-tertiary);}.mud-progress-linear.mud-progress-linear-color-info:not(.mud-progress-linear-buffer)::before{background-color:var(--mud-palette-info);}.mud-progress-linear.mud-progress-linear-color-info:not(.mud-progress-linear-buffer) .mud-progress-linear-bar{background-color:var(--mud-palette-info);}.mud-progress-linear.mud-progress-linear-color-info.mud-progress-linear-buffer .mud-progress-linear-bar:first-child{background-size:10px 10px;background-image:radial-gradient(var(--mud-palette-info) 0%,var(--mud-palette-info) 16%,transparent 42%);background-position:0 -23px;}.mud-progress-linear.mud-progress-linear-color-info.mud-progress-linear-buffer .mud-progress-linear-bar:nth-child(2){background-color:var(--mud-palette-info);}.mud-progress-linear.mud-progress-linear-color-info.mud-progress-linear-buffer .mud-progress-linear-bar:last-child{transition:transform .4s linear;}.mud-progress-linear.mud-progress-linear-color-info.mud-progress-linear-buffer .mud-progress-linear-bar:last-child::before{content:'';position:absolute;top:0;left:0;height:100%;width:100%;display:block;opacity:.4;background-color:var(--mud-palette-info);}.mud-progress-linear.mud-progress-linear-color-success:not(.mud-progress-linear-buffer)::before{background-color:var(--mud-palette-success);}.mud-progress-linear.mud-progress-linear-color-success:not(.mud-progress-linear-buffer) .mud-progress-linear-bar{background-color:var(--mud-palette-success);}.mud-progress-linear.mud-progress-linear-color-success.mud-progress-linear-buffer .mud-progress-linear-bar:first-child{background-size:10px 10px;background-image:radial-gradient(var(--mud-palette-success) 0%,var(--mud-palette-success) 16%,transparent 42%);background-position:0 -23px;}.mud-progress-linear.mud-progress-linear-color-success.mud-progress-linear-buffer .mud-progress-linear-bar:nth-child(2){background-color:var(--mud-palette-success);}.mud-progress-linear.mud-progress-linear-color-success.mud-progress-linear-buffer .mud-progress-linear-bar:last-child{transition:transform .4s linear;}.mud-progress-linear.mud-progress-linear-color-success.mud-progress-linear-buffer .mud-progress-linear-bar:last-child::before{content:'';position:absolute;top:0;left:0;height:100%;width:100%;display:block;opacity:.4;background-color:var(--mud-palette-success);}.mud-progress-linear.mud-progress-linear-color-warning:not(.mud-progress-linear-buffer)::before{background-color:var(--mud-palette-warning);}.mud-progress-linear.mud-progress-linear-color-warning:not(.mud-progress-linear-buffer) .mud-progress-linear-bar{background-color:var(--mud-palette-warning);}.mud-progress-linear.mud-progress-linear-color-warning.mud-progress-linear-buffer .mud-progress-linear-bar:first-child{background-size:10px 10px;background-image:radial-gradient(var(--mud-palette-warning) 0%,var(--mud-palette-warning) 16%,transparent 42%);background-position:0 -23px;}.mud-progress-linear.mud-progress-linear-color-warning.mud-progress-linear-buffer .mud-progress-linear-bar:nth-child(2){background-color:var(--mud-palette-warning);}.mud-progress-linear.mud-progress-linear-color-warning.mud-progress-linear-buffer .mud-progress-linear-bar:last-child{transition:transform .4s linear;}.mud-progress-linear.mud-progress-linear-color-warning.mud-progress-linear-buffer .mud-progress-linear-bar:last-child::before{content:'';position:absolute;top:0;left:0;height:100%;width:100%;display:block;opacity:.4;background-color:var(--mud-palette-warning);}.mud-progress-linear.mud-progress-linear-color-error:not(.mud-progress-linear-buffer)::before{background-color:var(--mud-palette-error);}.mud-progress-linear.mud-progress-linear-color-error:not(.mud-progress-linear-buffer) .mud-progress-linear-bar{background-color:var(--mud-palette-error);}.mud-progress-linear.mud-progress-linear-color-error.mud-progress-linear-buffer .mud-progress-linear-bar:first-child{background-size:10px 10px;background-image:radial-gradient(var(--mud-palette-error) 0%,var(--mud-palette-error) 16%,transparent 42%);background-position:0 -23px;}.mud-progress-linear.mud-progress-linear-color-error.mud-progress-linear-buffer .mud-progress-linear-bar:nth-child(2){background-color:var(--mud-palette-error);}.mud-progress-linear.mud-progress-linear-color-error.mud-progress-linear-buffer .mud-progress-linear-bar:last-child{transition:transform .4s linear;}.mud-progress-linear.mud-progress-linear-color-error.mud-progress-linear-buffer .mud-progress-linear-bar:last-child::before{content:'';position:absolute;top:0;left:0;height:100%;width:100%;display:block;opacity:.4;background-color:var(--mud-palette-error);}.mud-progress-linear.mud-progress-linear-color-dark:not(.mud-progress-linear-buffer)::before{background-color:var(--mud-palette-dark);}.mud-progress-linear.mud-progress-linear-color-dark:not(.mud-progress-linear-buffer) .mud-progress-linear-bar{background-color:var(--mud-palette-dark);}.mud-progress-linear.mud-progress-linear-color-dark.mud-progress-linear-buffer .mud-progress-linear-bar:first-child{background-size:10px 10px;background-image:radial-gradient(var(--mud-palette-dark) 0%,var(--mud-palette-dark) 16%,transparent 42%);background-position:0 -23px;}.mud-progress-linear.mud-progress-linear-color-dark.mud-progress-linear-buffer .mud-progress-linear-bar:nth-child(2){background-color:var(--mud-palette-dark);}.mud-progress-linear.mud-progress-linear-color-dark.mud-progress-linear-buffer .mud-progress-linear-bar:last-child{transition:transform .4s linear;}.mud-progress-linear.mud-progress-linear-color-dark.mud-progress-linear-buffer .mud-progress-linear-bar:last-child::before{content:'';position:absolute;top:0;left:0;height:100%;width:100%;display:block;opacity:.4;background-color:var(--mud-palette-dark);}.mud-progress-linear.mud-progress-indeterminate.horizontal .mud-progress-linear-bar:first-child{width:auto;animation:mud-progress-linear-horizontal-keyframes-indeterminate1 2.1s cubic-bezier(.65,.815,.735,.395) infinite;}.mud-progress-linear.mud-progress-indeterminate.horizontal .mud-progress-linear-bar:last-child{width:auto;animation:mud-progress-linear-horizontal-keyframes-indeterminate2 2.1s cubic-bezier(.165,.84,.44,1) 1.15s infinite;}.mud-progress-linear.mud-progress-indeterminate.vertical .mud-progress-linear-bar:first-child{height:auto;animation:mud-progress-linear-vertical-keyframes-indeterminate1 2.1s cubic-bezier(.65,.815,.735,.395) infinite;}.mud-progress-linear.mud-progress-indeterminate.vertical .mud-progress-linear-bar:last-child{height:auto;animation:mud-progress-linear-vertical-keyframes-indeterminate2 2.1s cubic-bezier(.165,.84,.44,1) 1.15s infinite;}.mud-progress-linear.mud-progress-linear-buffer .mud-progress-linear-bar:first-child{width:100%;height:100%;position:absolute;margin-top:0;}.mud-progress-linear.mud-progress-linear-buffer .mud-progress-linear-bar:nth-child(2){z-index:1;transition:transform .4s linear;}.mud-progress-linear.mud-progress-linear-buffer.horizontal .mud-progress-linear-bar:first-child{animation:mud-progress-linear-horizontal-keyframes-buffer 3s infinite linear;}.mud-progress-linear.mud-progress-linear-buffer.vertical .mud-progress-linear-bar:first-child{animation:mud-progress-linear-vertical-keyframes-buffer 3s infinite linear;}.mud-progress-linear.mud-progress-linear-striped .mud-progress-linear-bar{background-image:linear-gradient(135deg,rgba(255,255,255,.25) 25%,transparent 0,transparent 50%,rgba(255,255,255,.25) 0,rgba(255,255,255,.25) 75%,transparent 0,transparent);background-size:40px 40px;background-repeat:repeat;animation:mud-progress-linear-striped-loading 10s linear infinite;}.mud-progress-linear.mud-progress-linear-rounded{border-radius:var(--mud-default-borderradius);}.mud-progress-linear.mud-progress-linear-rounded .mud-progress-linear-bars{border-radius:var(--mud-default-borderradius);}.mud-progress-linear.mud-progress-linear-rounded .mud-progress-linear-bar{border-radius:var(--mud-default-borderradius);}.mud-radio{cursor:pointer;display:inline-flex;align-items:center;vertical-align:middle;-webkit-tap-highlight-color:transparent;color:var(--mud-palette-action-default);}.mud-radio>.mud-radio-content{color:var(--mud-palette-text-primary);}.mud-radio.mud-disabled,.mud-radio .mud-disabled:hover,.mud-radio .mud-disabled:focus-visible{cursor:default;background-color:transparent !important;}.mud-radio.mud-disabled>.mud-radio-content,.mud-radio .mud-disabled:hover>.mud-radio-content,.mud-radio .mud-disabled:focus-visible>.mud-radio-content{color:var(--mud-palette-text-disabled);}.mud-radio.mud-disabled *,.mud-radio .mud-disabled:hover *,.mud-radio .mud-disabled:focus-visible *{cursor:default;color:var(--mud-palette-text-disabled);}.mud-radio .mud-radio-dense{padding:4px;}.mud-radio.mud-checked{color:var(--mud-palette-action-default);}.mud-radio.mud-checked:hover{background-color:var(--mud-palette-action-default-hover);}.mud-radio-button{width:100%;display:flex;align-items:inherit;justify-content:inherit;}.mud-radio-button .mud-radio-input{top:0;left:0;width:100%;cursor:inherit;height:100%;margin:0;opacity:0;padding:0;z-index:1;position:absolute;}.mud-radio-button .mud-radio-icons{display:flex;position:relative;}.mud-radio-icons.mud-checked .mud-radio-icon-checked{transform:scale(1);transition:transform 150ms cubic-bezier(0,0,.2,1) 0ms;}.mud-radio-icon-checked{left:0;position:absolute;transform:scale(0);transition:transform 150ms cubic-bezier(.4,0,1,1) 0ms;}.mud-radio-content-placement-start{margin-left:16px;margin-right:-11px;margin-inline-start:16px;margin-inline-end:-11px;flex-direction:row-reverse;}.mud-radio-content-placement-end{margin-left:-11px;margin-right:16px;margin-inline-start:-11px;margin-inline-end:16px;flex-direction:row;}.mud-radio-content-placement-top{margin-left:16px;margin-inline-start:16px;margin-inline-end:unset;flex-direction:column-reverse;}.mud-radio-content-placement-bottom{margin-left:16px;margin-inline-start:16px;margin-inline-end:unset;flex-direction:column;}.mud-rating-root{display:inline-flex;color:#ffb400;}.mud-rating-root:focus-visible{outline:none;}.mud-rating-root:focus-visible:not(.mud-disabled){background-color:var(--mud-palette-action-default-hover);}.mud-rating-item{cursor:pointer;transition:transform 150ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-rating-item.mud-rating-item-active{transform:scale(1.2);}.mud-rating-item.mud-disabled,.mud-rating-item .mud-disabled:hover{cursor:default;pointer-events:none;}.mud-rating-item.mud-disabled *,.mud-rating-item .mud-disabled:hover *{cursor:default;color:var(--mud-palette-text-disabled);}.mud-rating-item.mud-readonly{cursor:default;}.mud-rating-item .mud-rating-input{clip:rect(0,0,0,0);margin:0;opacity:0;padding:0;z-index:1;position:absolute;cursor:inherit;overflow:hidden;}.mud-rating-item svg{pointer-events:none;}.mud-rating-item svg path{pointer-events:none;}.mud-snackbar{display:flex;flex-grow:initial;padding:6px 16px;align-items:center;position:relative;pointer-events:auto;font-weight:400;line-height:1.43;overflow:hidden;margin-top:16px;min-width:288px;max-width:500px;border-radius:var(--mud-default-borderradius);box-shadow:0 3px 5px -1px rgba(0,0,0,.2),0 6px 10px 0 rgba(0,0,0,.14),0 1px 18px 0 rgba(0,0,0,.12);}.mud-snackbar.force-cursor{cursor:pointer;}.mud-snackbar.mud-snackbar-blurred{backdrop-filter:blur(18px);}.mud-snackbar.mud-snackbar-surface{background:var(--mud-palette-surface);}.mud-snackbar .mud-snackbar-content-message{padding:8px 0;}.mud-snackbar .mud-snackbar-content-action{display:flex;align-items:center;margin-left:auto;margin-right:-8px;padding-left:16px;margin-inline-start:auto;margin-inline-end:-8px;padding-inline-start:16px;padding-inline-end:unset;}.mud-snackbar .mud-snackbar-content-action>button{color:inherit;}.mud-snackbar-location-top-left{top:24px;left:24px;}.mud-snackbar-location-top-center{top:24px;left:50%;transform:translateX(-50%);}.mud-snackbar-location-top-right{top:24px;right:24px;}.mud-snackbar-location-bottom-right{right:24px;bottom:24px;}.mud-snackbar-location-bottom-center{bottom:24px;left:50%;transform:translateX(-50%);}.mud-snackbar-location-bottom-left{bottom:24px;left:24px;}#mud-snackbar-container{position:fixed;z-index:var(--mud-zindex-snackbar);pointer-events:none;}.mud-snackbar-icon{display:flex;opacity:.9;padding:7px 0;font-size:22px;margin-right:12px;margin-inline-end:12px;margin-inline-start:unset;}.mud-switch{cursor:pointer;display:inline-flex;align-items:center;margin-left:-11px;margin-right:16px;margin-inline-start:-11px;margin-inline-end:16px;vertical-align:middle;-webkit-tap-highlight-color:transparent;}.mud-switch.mud-disabled{color:var(--mud-palette-text-disabled) !important;cursor:default;}.mud-switch.mud-readonly,.mud-switch .mud-readonly:hover{cursor:default;background-color:transparent !important;}.mud-switch-span{width:58px;height:38px;display:inline-flex;padding:12px;z-index:0;overflow:hidden;position:relative;box-sizing:border-box;flex-shrink:0;vertical-align:middle;}.mud-switch-span .mud-switch-track{width:100%;height:100%;opacity:.48;z-index:-1;transition:opacity 150ms cubic-bezier(.4,0,.2,1) 0ms,background-color 150ms cubic-bezier(.4,0,.2,1) 0ms;border-radius:7px;background-color:var(--mud-palette-black);}.mud-switch-base{padding:9px;top:0;left:0;color:#fafafa;z-index:1;position:absolute;transition:left 150ms cubic-bezier(.4,0,.2,1) 0ms,transform 150ms cubic-bezier(.4,0,.2,1) 0ms,background-color 250ms cubic-bezier(.4,0,.2,1) 0ms,box-shadow 250ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-switch-base.mud-checked{transform:translateX(20px);}.mud-switch-base.mud-checked+.mud-switch-track{opacity:.5;}.mud-switch-base:hover{background-color:var(--mud-palette-action-default-hover);}.mud-switch-base.mud-switch-disabled{color:var(--mud-palette-grey-default) !important;}.mud-switch-base.mud-switch-disabled+.mud-switch-track{opacity:.12 !important;}.mud-switch-base.mud-switch-disabled:hover,.mud-switch-base.mud-switch-disabled:focus-visible{cursor:default;background-color:transparent !important;}.mud-switch-button{display:flex;align-items:inherit;justify-content:inherit;}.mud-switch-button .mud-switch-input{top:0;left:0;width:100%;cursor:inherit;height:100%;margin:0;opacity:0;padding:0;z-index:1;position:absolute;}.mud-switch-button .mud-switch-thumb{width:20px;height:20px;box-shadow:0 2px 1px -1px rgba(0,0,0,.2),0 1px 1px 0 rgba(0,0,0,.14),0 1px 3px 0 rgba(0,0,0,.12);border-radius:50%;background-color:currentColor;}.mud-timeline{position:relative;display:flex;}.mud-timeline-vertical{padding-top:24px;flex-direction:column;}.mud-timeline-vertical::before{top:0;bottom:0;content:"";height:100%;position:absolute;width:2px;background:var(--mud-palette-divider);}.mud-timeline-vertical .mud-timeline-item{padding-bottom:24px;}.mud-timeline-vertical .mud-timeline-item .mud-timeline-item-content{max-width:calc(50% - 48px);}.mud-timeline-vertical .mud-timeline-item .mud-timeline-item-divider{min-width:96px;}.mud-timeline-vertical .mud-timeline-item .mud-timeline-item-opposite{flex:1 1 auto;max-width:calc(50% - 48px);}.mud-timeline-horizontal{flex-direction:row;}.mud-timeline-horizontal::before{top:0;bottom:0;content:"";height:2px;position:absolute;width:100%;background:var(--mud-palette-divider);}.mud-timeline-horizontal .mud-timeline-item{padding-left:24px;padding-right:24px;width:100%;}.mud-timeline-horizontal .mud-timeline-item .mud-timeline-item-content{max-height:calc(50% - 48px);}.mud-timeline-horizontal .mud-timeline-item .mud-timeline-item-divider{min-height:96px;}.mud-timeline-item{display:flex;}.mud-timeline-item .mud-timeline-item-content{position:relative;height:100%;flex:1 1 auto;}.mud-timeline-item .mud-timeline-item-divider{position:relative;display:flex;align-items:center;justify-content:center;}.mud-timeline-item .mud-timeline-item-opposite{align-self:center;}.mud-timeline-vertical.mud-timeline-align-start .mud-timeline-item-divider{align-items:flex-start;}.mud-timeline-vertical.mud-timeline-align-start .mud-timeline-item-opposite{align-self:flex-start;}.mud-timeline-vertical.mud-timeline-align-end .mud-timeline-item-divider{align-items:flex-end;}.mud-timeline-vertical.mud-timeline-align-end .mud-timeline-item-opposite{align-self:flex-end;}.mud-timeline-vertical.mud-timeline-position-alternate::before{left:auto;right:calc(50% - 1px);}.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-start),.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item.mud-timeline-item-end{flex-direction:row-reverse;}.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-start) .mud-timeline-item-opposite,.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item.mud-timeline-item-end .mud-timeline-item-opposite{text-align:end;}.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-end){flex-direction:row;}.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-end) .mud-timeline-item-opposite{text-align:start;}.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-end),.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item.mud-timeline-item-start{flex-direction:row;}.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-end) .mud-timeline-item-opposite,.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item.mud-timeline-item-start .mud-timeline-item-opposite{text-align:start;}.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-start){flex-direction:row-reverse;}.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-start) .mud-timeline-item-opposite{text-align:end;}.mud-timeline-vertical.mud-timeline-position-start::before{right:auto;left:47px;}.mud-timeline-vertical.mud-timeline-position-start.mud-timeline-rtl::before{right:47px;left:auto;}.mud-timeline-vertical.mud-timeline-position-start .mud-timeline-item{flex-direction:row-reverse;}.mud-timeline-vertical.mud-timeline-position-end::before{right:47px;left:auto;}.mud-timeline-vertical.mud-timeline-position-end.mud-timeline-rtl::before{left:47px;right:auto;}.mud-timeline-vertical.mud-timeline-position-end .mud-timeline-item{flex-direction:row;}.mud-timeline-vertical.mud-timeline-position-start .mud-timeline-item-content,.mud-timeline-vertical.mud-timeline-position-end .mud-timeline-item-content{max-width:calc(100% - 96px);}.mud-timeline-vertical.mud-timeline-position-start .mud-timeline-item-opposite,.mud-timeline-vertical.mud-timeline-position-end .mud-timeline-item-opposite{display:none;}.mud-timeline-horizontal.mud-timeline-align-start .mud-timeline-item-divider{justify-content:flex-start;}.mud-timeline-horizontal.mud-timeline-align-start .mud-timeline-item-opposite{align-self:flex-start;}.mud-timeline-horizontal.mud-timeline-align-end .mud-timeline-item-divider{justify-content:flex-end;}.mud-timeline-horizontal.mud-timeline-align-end .mud-timeline-item-opposite{align-self:flex-end;}.mud-timeline-horizontal.mud-timeline-position-alternate::before{top:auto;bottom:calc(50% - 1px);}.mud-timeline-horizontal.mud-timeline-position-alternate .mud-timeline-item:nth-child(odd),.mud-timeline-horizontal.mud-timeline-position-alternate .mud-timeline-item.mud-timeline-item-end{flex-direction:column-reverse;}.mud-timeline-horizontal.mud-timeline-position-alternate .mud-timeline-item:nth-child(2n),.mud-timeline-horizontal.mud-timeline-position-alternate .mud-timeline-item.mud-timeline-item-start{flex-direction:column;}.mud-timeline-horizontal.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item:nth-child(odd),.mud-timeline-horizontal.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item.mud-timeline-item-end{flex-direction:column;}.mud-timeline-horizontal.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item:nth-child(2n),.mud-timeline-horizontal.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item.mud-timeline-item-start{flex-direction:column-reverse;}.mud-timeline-horizontal.mud-timeline-position-top::before{top:47px;bottom:auto;}.mud-timeline-horizontal.mud-timeline-position-top .mud-timeline-item{flex-direction:column-reverse;}.mud-timeline-horizontal.mud-timeline-position-bottom::before{top:auto;bottom:47px;}.mud-timeline-horizontal.mud-timeline-position-bottom .mud-timeline-item{flex-direction:column;}.mud-timeline-horizontal.mud-timeline-position-top .mud-timeline-item-content,.mud-timeline-horizontal.mud-timeline-position-bottom .mud-timeline-item-content{max-height:calc(100% - 96px);}.mud-timeline-horizontal.mud-timeline-position-top .mud-timeline-item-opposite,.mud-timeline-horizontal.mud-timeline-position-bottom .mud-timeline-item-opposite{display:none;}.mud-timeline-item-dot{display:flex;justify-content:center;align-items:center;background:var(--mud-palette-surface);border-radius:50%;left:calc(50% - 19px);}.mud-timeline-item-dot.mud-timeline-dot-size-small{width:24px;height:24px;}.mud-timeline-item-dot.mud-timeline-dot-size-small .mud-timeline-item-dot-inner{height:18px;width:18px;}.mud-timeline-item-dot.mud-timeline-dot-size-medium{width:38px;height:38px;}.mud-timeline-item-dot.mud-timeline-dot-size-medium .mud-timeline-item-dot-inner{height:30px;width:30px;}.mud-timeline-item-dot.mud-timeline-dot-size-large{width:52px;height:52px;}.mud-timeline-item-dot.mud-timeline-dot-size-large .mud-timeline-item-dot-inner{height:42px;width:42px;}.mud-timeline-item-dot .mud-timeline-item-dot-inner{border-radius:50%;display:flex;justify-content:center;align-items:center;}.mud-timeline-item-dot .mud-timeline-item-dot-inner.mud-timeline-dot-fill{height:inherit;width:inherit;}.mud-timeline-item-dot .mud-timeline-item-dot-inner.mud-timeline-dot-default{background-color:var(--mud-palette-grey-light);}.mud-timeline-item-dot .mud-timeline-item-dot-inner.mud-timeline-dot-primary{color:var(--mud-palette-primary-text);background-color:var(--mud-palette-primary);}.mud-timeline-item-dot .mud-timeline-item-dot-inner.mud-timeline-dot-secondary{color:var(--mud-palette-secondary-text);background-color:var(--mud-palette-secondary);}.mud-timeline-item-dot .mud-timeline-item-dot-inner.mud-timeline-dot-tertiary{color:var(--mud-palette-tertiary-text);background-color:var(--mud-palette-tertiary);}.mud-timeline-item-dot .mud-timeline-item-dot-inner.mud-timeline-dot-info{color:var(--mud-palette-info-text);background-color:var(--mud-palette-info);}.mud-timeline-item-dot .mud-timeline-item-dot-inner.mud-timeline-dot-success{color:var(--mud-palette-success-text);background-color:var(--mud-palette-success);}.mud-timeline-item-dot .mud-timeline-item-dot-inner.mud-timeline-dot-warning{color:var(--mud-palette-warning-text);background-color:var(--mud-palette-warning);}.mud-timeline-item-dot .mud-timeline-item-dot-inner.mud-timeline-dot-error{color:var(--mud-palette-error-text);background-color:var(--mud-palette-error);}.mud-timeline-item-dot .mud-timeline-item-dot-inner.mud-timeline-dot-dark{color:var(--mud-palette-dark-text);background-color:var(--mud-palette-dark);}.mud-timeline-modifiers .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers .mud-timeline-item-content .mud-card::after{content:"";position:absolute;}.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-start:not(.mud-timeline-rtl) .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-start:not(.mud-timeline-rtl) .mud-timeline-item-content .mud-card::after,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-end.mud-timeline-rtl .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-end.mud-timeline-rtl .mud-timeline-item-content .mud-card::after{transform:rotate(0);left:-16px;right:auto;}.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-start:not(.mud-timeline-rtl) .mud-timeline-item-content .mud-card.mud-paper-outlined::after,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-end.mud-timeline-rtl .mud-timeline-item-content .mud-card.mud-paper-outlined::after{left:-15px;}.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-end:not(.mud-timeline-rtl) .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-end:not(.mud-timeline-rtl) .mud-timeline-item-content .mud-card::after,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-start.mud-timeline-rtl .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-start.mud-timeline-rtl .mud-timeline-item-content .mud-card::after{transform:rotate(180deg);right:-16px;left:auto;}.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-end:not(.mud-timeline-rtl) .mud-timeline-item-content .mud-card.mud-paper-outlined::after,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-start.mud-timeline-rtl .mud-timeline-item-content .mud-card.mud-paper-outlined::after{right:-15px;}.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card::after,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item.mud-timeline-item-end .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item.mud-timeline-item-end .mud-timeline-item-content .mud-card::after{transform:rotate(0);left:-16px;right:auto;}.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card.mud-paper-outlined::after,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item.mud-timeline-item-end .mud-timeline-item-content .mud-card.mud-paper-outlined::after{left:-15px;}.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card::after{transform:rotate(180deg);right:-16px;left:auto;}.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card.mud-paper-outlined::after{right:-15px;}.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-reverse:not(.mud-timeline-rtl) .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-reverse:not(.mud-timeline-rtl) .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card::after,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-reverse:not(.mud-timeline-rtl) .mud-timeline-item.mud-timeline-item-start .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-reverse:not(.mud-timeline-rtl) .mud-timeline-item.mud-timeline-item-start .mud-timeline-item-content .mud-card::after,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-rtl:not(.mud-timeline-reverse) .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-rtl:not(.mud-timeline-reverse) .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card::after,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-rtl:not(.mud-timeline-reverse) .mud-timeline-item.mud-timeline-item-start .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-rtl:not(.mud-timeline-reverse) .mud-timeline-item.mud-timeline-item-start .mud-timeline-item-content .mud-card::after{transform:rotate(180deg);right:-16px;left:auto;}.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-reverse:not(.mud-timeline-rtl) .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card.mud-paper-outlined::after,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-reverse:not(.mud-timeline-rtl) .mud-timeline-item.mud-timeline-item-start .mud-timeline-item-content .mud-card.mud-paper-outlined::after,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-rtl:not(.mud-timeline-reverse) .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card.mud-paper-outlined::after,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-rtl:not(.mud-timeline-reverse) .mud-timeline-item.mud-timeline-item-start .mud-timeline-item-content .mud-card.mud-paper-outlined::after{right:-15px;}.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-reverse:not(.mud-timeline-rtl) .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-reverse:not(.mud-timeline-rtl) .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card::after,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-rtl:not(.mud-timeline-reverse) .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-rtl:not(.mud-timeline-reverse) .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card::after{transform:rotate(0);left:-16px;right:auto;}.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-reverse:not(.mud-timeline-rtl) .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card.mud-paper-outlined::after,.mud-timeline-modifiers.mud-timeline-vertical.mud-timeline-position-alternate.mud-timeline-rtl:not(.mud-timeline-reverse) .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card.mud-paper-outlined::after{left:-15px;}.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-top .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-top .mud-timeline-item-content .mud-card::after{transform:rotate(90deg);top:-24px;bottom:auto;left:calc(50% - 8px);}.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-top .mud-timeline-item-content .mud-card.mud-paper-outlined::after{top:-23px;}.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-bottom .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-bottom .mud-timeline-item-content .mud-card::after{transform:rotate(270deg);bottom:-24px;top:auto;left:calc(50% - 8px);}.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-bottom .mud-timeline-item-content .mud-card.mud-paper-outlined::after{bottom:-23px;}.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card::after,.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate .mud-timeline-item.mud-timeline-item-end .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate .mud-timeline-item.mud-timeline-item-end .mud-timeline-item-content .mud-card::after{transform:rotate(90deg);top:-24px;bottom:auto;left:calc(50% - 8px);}.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card.mud-paper-outlined::after,.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate .mud-timeline-item.mud-timeline-item-end .mud-timeline-item-content .mud-card.mud-paper-outlined::after{top:-23px;}.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card::after{transform:rotate(270deg);bottom:-24px;top:auto;left:calc(50% - 8px);}.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card.mud-paper-outlined::after{bottom:-23px;}.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card::after,.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item.mud-timeline-item-end .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item.mud-timeline-item-end .mud-timeline-item-content .mud-card::after{transform:rotate(270deg);bottom:-24px;top:auto;left:calc(50% - 8px);}.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item:nth-child(odd):not(.mud-timeline-item-start) .mud-timeline-item-content .mud-card.mud-paper-outlined::after,.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item.mud-timeline-item-end .mud-timeline-item-content .mud-card.mud-paper-outlined::after{bottom:-23px;}.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card::before,.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card::after{transform:rotate(90deg);top:-24px;bottom:auto;left:calc(50% - 8px);}.mud-timeline-modifiers.mud-timeline-horizontal.mud-timeline-position-alternate.mud-timeline-reverse .mud-timeline-item:nth-child(2n):not(.mud-timeline-item-end) .mud-timeline-item-content .mud-card.mud-paper-outlined::after{top:-23px;}.mud-timeline-modifiers .mud-timeline-item-content .mud-card::before{border-top:16px solid transparent;border-bottom:16px solid transparent;border-right:16px solid rgba(0,0,0,.1);top:calc(50% - 14px);}.mud-timeline-modifiers .mud-timeline-item-content .mud-card::after{border-top:16px solid transparent;border-bottom:16px solid transparent;border-right:16px solid var(--mud-palette-surface);top:calc(50% - 16px);}.mud-timeline-modifiers .mud-timeline-item-content .mud-card.mud-paper-outlined::before{top:calc(50% - 16px);border-right-color:var(--mud-palette-lines-default);}.mud-typography{margin:0;}.mud-typography-body1{font-size:var(--mud-typography-body1-size);font-family:var(--mud-typography-body1-family);font-weight:var(--mud-typography-body1-weight);line-height:var(--mud-typography-body1-lineheight);letter-spacing:var(--mud-typography-body1-letterspacing);text-transform:var(--mud-typography-body1-text-transform);}.mud-typography-body2{font-size:var(--mud-typography-body2-size);font-family:var(--mud-typography-body2-family);font-weight:var(--mud-typography-body2-weight);line-height:var(--mud-typography-body2-lineheight);letter-spacing:var(--mud-typography-body2-letterspacing);text-transform:var(--mud-typography-body2-text-transform);}.mud-typography-caption{font-size:var(--mud-typography-caption-size);font-family:var(--mud-typography-caption-family);font-weight:var(--mud-typography-caption-weight);line-height:var(--mud-typography-caption-lineheight);letter-spacing:var(--mud-typography-caption-letterspacing);text-transform:var(--mud-typography-caption-text-transform);}.mud-typography-button{font-size:var(--mud-typography-button-size);font-family:var(--mud-typography-button-family);font-weight:var(--mud-typography-button-weight);line-height:var(--mud-typography-button-lineheight);letter-spacing:var(--mud-typography-button-letterspacing);text-transform:var(--mud-typography-button-text-transform);}.mud-typography-h1{font-size:var(--mud-typography-h1-size);font-family:var(--mud-typography-h1-family);font-weight:var(--mud-typography-h1-weight);line-height:var(--mud-typography-h1-lineheight);letter-spacing:var(--mud-typography-h1-letterspacing);text-transform:var(--mud-typography-h1-text-transform);}.mud-typography-h2{font-size:var(--mud-typography-h2-size);font-family:var(--mud-typography-h2-family);font-weight:var(--mud-typography-h2-weight);line-height:var(--mud-typography-h2-lineheight);letter-spacing:var(--mud-typography-h2-letterspacing);text-transform:var(--mud-typography-h2-text-transform);}.mud-typography-h3{font-size:var(--mud-typography-h3-size);font-family:var(--mud-typography-h3-family);font-weight:var(--mud-typography-h3-weight);line-height:var(--mud-typography-h3-lineheight);letter-spacing:var(--mud-typography-h3-letterspacing);text-transform:var(--mud-typography-h3-text-transform);}.mud-typography-h4{font-size:var(--mud-typography-h4-size);font-family:var(--mud-typography-h4-family);font-weight:var(--mud-typography-h4-weight);line-height:var(--mud-typography-h4-lineheight);letter-spacing:var(--mud-typography-h4-letterspacing);text-transform:var(--mud-typography-h4-text-transform);}.mud-typography-h5{font-size:var(--mud-typography-h5-size);font-family:var(--mud-typography-h5-family);font-weight:var(--mud-typography-h5-weight);line-height:var(--mud-typography-h5-lineheight);letter-spacing:var(--mud-typography-h5-letterspacing);text-transform:var(--mud-typography-h5-text-transform);}.mud-typography-h6{font-size:var(--mud-typography-h6-size);font-family:var(--mud-typography-h6-family);font-weight:var(--mud-typography-h6-weight);line-height:var(--mud-typography-h6-lineheight);letter-spacing:var(--mud-typography-h6-letterspacing);text-transform:var(--mud-typography-h6-text-transform);}.mud-typography-subtitle1{font-size:var(--mud-typography-subtitle1-size);font-family:var(--mud-typography-subtitle1-family);font-weight:var(--mud-typography-subtitle1-weight);line-height:var(--mud-typography-subtitle1-lineheight);letter-spacing:var(--mud-typography-subtitle1-letterspacing);text-transform:var(--mud-typography-subtitle1-text-transform);}.mud-typography-subtitle2{font-size:var(--mud-typography-subtitle2-size);font-family:var(--mud-typography-subtitle2-family);font-weight:var(--mud-typography-subtitle2-weight);line-height:var(--mud-typography-subtitle2-lineheight);letter-spacing:var(--mud-typography-subtitle2-letterspacing);text-transform:var(--mud-typography-subtitle2-text-transform);}.mud-typography-overline{font-size:var(--mud-typography-overline-size);font-family:var(--mud-typography-overline-family);font-weight:var(--mud-typography-overline-weight);line-height:var(--mud-typography-overline-lineheight);letter-spacing:var(--mud-typography-overline-letterspacing);text-transform:var(--mud-typography-overline-text-transform);}.mud-typography-srOnly{width:1px;height:1px;overflow:hidden;position:absolute;}.mud-typography-align-left{text-align:left;}.mud-typography-align-center{text-align:center;}.mud-typography-align-right{text-align:right;}.mud-typography-align-justify{text-align:justify;}.mud-typography-nowrap{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.mud-typography-gutterbottom{margin-bottom:.35em;}.mud-typography-paragraph{margin-bottom:16px;}.mud-typography-display-inline{display:inline;}.mud-typography-display-block{display:block;}.mud-table{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-surface);border-radius:var(--mud-default-borderradius);transition:box-shadow 300ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-table.mud-table-square{border-radius:0;}.mud-table.mud-table-outlined{border:1px solid var(--mud-palette-lines-default);}.mud-table-container{width:100%;overflow-y:auto;}.mud-table-root{width:100%;border-spacing:0;border-collapse:collapse;}.mud-table-root .mud-table-head{display:table-header-group;}.mud-table-root .mud-table-head .mud-table-cell{color:var(--mud-palette-text-primary);font-weight:500;line-height:1.5rem;}.mud-table-root .mud-table-body{display:table-row-group;}.mud-table-root .mud-table-body .mud-table-cell{color:var(--mud-palette-text-primary);}.mud-table-root .mud-table-body:last-child .mud-table-row:last-child .mud-table-cell{border-bottom:none;}.mud-table-sort-label{cursor:pointer;display:inline-flex;align-items:center;flex-direction:inherit;justify-content:flex-start;}.mud-table-sort-label:hover{color:var(--mud-palette-action-default);}.mud-table-sort-label:hover .mud-table-sort-label-icon{opacity:.8;}.mud-table-sort-label .mud-table-sort-label-icon{font-size:18px;transition:opacity 300ms cubic-bezier(.4,0,.2,1) 0ms,transform 200ms cubic-bezier(.4,0,.2,1) 0ms;margin-left:4px;user-select:none;margin-right:4px;opacity:0;}.mud-table-sort-label .mud-table-sort-label-icon.mud-direction-desc{opacity:1;transform:rotate(180deg);}.mud-table-sort-label .mud-table-sort-label-icon.mud-direction-asc{opacity:1;transform:rotate(0deg);}.mud-table-toolbar{padding-left:16px;padding-right:8px;padding-inline-start:16px;padding-inline-end:8px;}.mud-table-cell{display:table-cell;padding:16px;font-size:.875rem;text-align:start;font-weight:400;line-height:1.43;border-bottom:1px solid var(--mud-palette-table-lines);letter-spacing:.01071em;vertical-align:inherit;}.mud-table-cell .mud-checkbox{margin:-12px;}.mud-table-cell-footer{color:var(--mud-palette-text-secondary);font-size:.75rem;line-height:1.3125rem;}.mud-table-dense * .mud-table-row .mud-table-cell{padding:6px 24px 6px 16px;padding-inline-start:16px;padding-inline-end:24px;}.mud-table-dense * .mud-table-row .mud-table-cell .mud-table-cell-checkbox .mud-button-root{padding:4px;}.mud-table-dense * .mud-table-row .mud-table-cell .mud-table-row-expander{padding:4px;}.mud-table-dense * .mud-table-row .mud-table-cell:last-child{padding-right:16px;padding-inline-end:16px;}.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell:not(:last-child){border-right:1px solid var(--mud-palette-table-lines);}.mud-table-bordered .mud-table-container .mud-table-root .mud-table-head.table-head-bordered .mud-table-row .mud-table-cell:not(:last-child){border-right:1px solid var(--mud-palette-table-lines);}.mud-table-bordered .mud-table-container .mud-table-root .mud-table-foot.table-foot-bordered .mud-table-row .mud-table-cell:not(:last-child){border-right:1px solid var(--mud-palette-table-lines);}.mud-table-sticky-header .mud-table-container{overflow-x:auto;}.mud-table-sticky-header * .mud-table-root{border-collapse:separate;}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell:first-child{border-radius:var(--mud-default-borderradius) 0 0 0;}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell:last-child{border-radius:0 var(--mud-default-borderradius) 0 0;}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell{background-color:var(--mud-palette-surface);position:sticky;z-index:2;top:0;}.mud-table-sticky-footer .mud-table-container{overflow-x:auto;}.mud-table-sticky-footer * .mud-table-root{border-collapse:separate;}.mud-table-sticky-footer * .mud-table-root .mud-table-foot * .mud-table-cell{background-color:var(--mud-palette-surface);position:sticky;z-index:2;bottom:0;}.mud-table-row{color:inherit;display:table-row;outline:0;vertical-align:middle;}.mud-table-hover .mud-table-container .mud-table-root .mud-table-body .mud-table-row:hover{background-color:var(--mud-palette-table-hover);}.mud-table-striped .mud-table-container .mud-table-root .mud-table-body .mud-table-row:nth-of-type(odd){background-color:var(--mud-palette-table-striped);}.mud-table-hover.mud-table-striped .mud-table-container .mud-table-root .mud-table-body .mud-table-row:nth-of-type(odd):hover{background-color:var(--mud-palette-table-hover);}.mud-table-cell>.mud-input-control>div.mud-input.mud-input-text{color:var(--mud-theme-on-surface);font-size:.875rem;margin-top:-14px;margin-bottom:-8px;}.mud-table-cell>.mud-select>.mud-input-control>div.mud-input.mud-input-text{color:var(--mud-theme-on-surface);font-size:.875rem;margin-top:-14px;margin-bottom:-8px;}.mud-table-cell-align-left{text-align:left;}.mud-table-cell-align-center{text-align:center;}.mud-table-cell-align-right{text-align:right;flex-direction:row-reverse;}.mud-table-cell-align-justify{text-align:justify;}.mud-table-pagination-display{display:flex;flex-shrink:0;}.mud-table-pagination-display .mud-tablepager-left{flex-direction:row !important;}.mud-table-pagination-display .mud-tablepager-right{flex-direction:row-reverse !important;}.mud-table-pagination-information{white-space:nowrap;direction:initial;}.mud-table-page-number-information{white-space:nowrap;direction:initial;}.mud-table-pagination{color:var(--mud-theme-on-surface);overflow:auto;font-size:.875rem;display:initial;}.mud-table-pagination:last-child{padding:0;}.mud-table-pagination-toolbar{border-top:1px solid var(--mud-palette-table-lines);height:52px;padding-right:2px;padding-inline-end:2px;padding-inline-start:unset;}.mud-table-pagination-toolbar .mud-tablepager-left{flex-direction:row !important;}.mud-table-pagination-toolbar .mud-tablepager-right{flex-direction:row-reverse !important;}.mud-table-pagination-spacer{flex:1 1 100%;}.mud-table-pagination-caption{display:flex;flex-shrink:0;align-items:center;padding-left:10px;padding-right:10px;}.mud-table-pagination-select{cursor:pointer;margin-left:10px !important;margin-right:10px !important;margin-top:0 !important;min-width:52px;}.mud-table-pagination-select .mud-select-input{margin-top:0 !important;}.mud-table-pagination-select .mud-input .mud-input-root{max-width:80px;cursor:pointer;margin-top:2px;border:none;font-size:.875rem;font-weight:400;line-height:1.43;letter-spacing:.01071em;color:var(--mud-theme-on-surface);}.mud-table-pagination-actions{flex-shrink:0;align-items:center;margin-left:10px;margin-inline-start:10px;margin-inline-end:unset;}.mud-table-smalldevices-sortselect{display:none;}.mud-table-loading{position:relative;}.mud-table-loading .mud-table-loading-progress{position:absolute;width:100%;}.mud-table-empty-row{vertical-align:middle;text-align:center;}tr.mud-table-row-group-indented-1 td:first-child{padding-left:48px !important;}tr.mud-table-row-group-indented-2 td:first-child{padding-left:96px !important;}tr.mud-table-row-group-indented-3 td:first-child{padding-left:144px !important;}tr.mud-table-row-group-indented-4 td:first-child{padding-left:192px !important;}tr.mud-table-row-group-indented-5 td:first-child{padding-left:240px !important;}.mud-table-row-expander{margin:-12px -2px -12px -12px;}@media(max-width:360px){.mud-table .mud-table-pagination .mud-select{margin-left:auto;margin-right:-14px;margin-inline-start:auto;margin-inline-end:-14px;}.mud-table .mud-table-pagination .mud-select~.mud-table-pagination-caption{margin-left:unset !important;margin-inline-start:unset !important;}}@media(max-width:416px){.mud-table .mud-table-pagination .mud-table-pagination-toolbar{flex-wrap:wrap;padding-top:16px;padding-right:16px;padding-inline-end:16px;padding-inline-start:unset;min-height:100px;}.mud-table .mud-table-pagination .mud-table-pagination-toolbar .mud-table-pagination-actions{margin-left:auto;margin-right:-14px;margin-inline-start:auto;margin-inline-end:-14px;}}@media(max-width:600px){.mud-xs-table .mud-table-root .mud-table-head,.mud-xs-table .mud-table-root .mud-table-foot{display:none;}.mud-xs-table .mud-table-smalldevices-sortselect{display:block;padding:4px 16px 8px;}.mud-xs-table .mud-table-body{border-top:1px solid var(--mud-palette-table-lines);}.mud-xs-table .mud-table-row{display:initial;}.mud-xs-table .mud-table-row .mud-table-cell:last-child{border-bottom:1px solid var(--mud-palette-table-lines);}.mud-xs-table .mud-table-cell{display:flex;justify-content:space-between;align-items:center;border:none;padding:14px 16px;text-align:start !important;}.mud-xs-table.mud-table-dense .mud-table-cell{padding:6px 16px;}.mud-xs-table .mud-table-cell:before{content:attr(data-label);font-weight:500;padding-right:16px;padding-inline-end:16px;padding-inline-start:unset;}.mud-xs-table.mud-table-small-alignright .mud-table-cell:before{margin-right:auto;}.mud-xs-table .mud-table-cell-hide{visibility:collapse;height:0;padding:0;margin:0;}.mud-xs-table .mud-table-pagination .mud-table-pagination-spacer{flex:none;}.mud-xs-table .mud-table-pagination .mud-table-pagination-actions .mud-button-root:first-child{display:none;}.mud-xs-table .mud-table-pagination .mud-table-pagination-actions .mud-button-root:last-child{display:none;}.mud-xs-table .mud-table-pagination .mud-select~.mud-table-pagination-caption{margin-left:auto;margin-inline-start:auto;}}@media(max-width:960px){.mud-sm-table .mud-table-root .mud-table-head,.mud-sm-table .mud-table-root .mud-table-foot{display:none;}.mud-sm-table .mud-table-smalldevices-sortselect{display:block;padding:4px 16px 8px;}.mud-sm-table .mud-table-body{border-top:1px solid var(--mud-palette-table-lines);}.mud-sm-table .mud-table-row{display:initial;}.mud-sm-table .mud-table-row .mud-table-cell:last-child{border-bottom:1px solid var(--mud-palette-table-lines);}.mud-sm-table .mud-table-cell{display:flex;justify-content:space-between;align-items:center;border:none;padding:14px 16px;text-align:start !important;}.mud-sm-table.mud-table-dense .mud-table-cell{padding:6px 16px;}.mud-sm-table .mud-table-cell:before{content:attr(data-label);font-weight:500;padding-right:16px;padding-inline-end:16px;padding-inline-start:unset;}.mud-sm-table.mud-table-small-alignright .mud-table-cell:before{margin-right:auto;}.mud-sm-table .mud-table-cell-hide{visibility:collapse;height:0;padding:0;margin:0;}.mud-sm-table .mud-table-pagination .mud-table-pagination-spacer{flex:none;}.mud-sm-table .mud-table-pagination .mud-table-pagination-actions .mud-button-root:first-child{display:none;}.mud-sm-table .mud-table-pagination .mud-table-pagination-actions .mud-button-root:last-child{display:none;}.mud-sm-table .mud-table-pagination .mud-select~.mud-table-pagination-caption{margin-left:auto;margin-inline-start:auto;}}@media(max-width:1280px){.mud-md-table .mud-table-root .mud-table-head,.mud-md-table .mud-table-root .mud-table-foot{display:none;}.mud-md-table .mud-table-smalldevices-sortselect{display:block;padding:4px 16px 8px;}.mud-md-table .mud-table-body{border-top:1px solid var(--mud-palette-table-lines);}.mud-md-table .mud-table-row{display:initial;}.mud-md-table .mud-table-row .mud-table-cell:last-child{border-bottom:1px solid var(--mud-palette-table-lines);}.mud-md-table .mud-table-cell{display:flex;justify-content:space-between;align-items:center;border:none;padding:14px 16px;text-align:start !important;}.mud-md-table.mud-table-dense .mud-table-cell{padding:6px 16px;}.mud-md-table .mud-table-cell:before{content:attr(data-label);font-weight:500;padding-right:16px;padding-inline-end:16px;padding-inline-start:unset;}.mud-md-table.mud-table-small-alignright .mud-table-cell:before{margin-right:auto;}.mud-md-table .mud-table-cell-hide{visibility:collapse;height:0;padding:0;margin:0;}.mud-md-table .mud-table-pagination .mud-table-pagination-spacer{flex:none;}.mud-md-table .mud-table-pagination .mud-table-pagination-actions .mud-button-root:first-child{display:none;}.mud-md-table .mud-table-pagination .mud-table-pagination-actions .mud-button-root:last-child{display:none;}.mud-md-table .mud-table-pagination .mud-select~.mud-table-pagination-caption{margin-left:auto;margin-inline-start:auto;}}@media(max-width:1920px){.mud-lg-table .mud-table-root .mud-table-head,.mud-lg-table .mud-table-root .mud-table-foot{display:none;}.mud-lg-table .mud-table-smalldevices-sortselect{display:block;padding:4px 16px 8px;}.mud-lg-table .mud-table-body{border-top:1px solid var(--mud-palette-table-lines);}.mud-lg-table .mud-table-row{display:initial;}.mud-lg-table .mud-table-row .mud-table-cell:last-child{border-bottom:1px solid var(--mud-palette-table-lines);}.mud-lg-table .mud-table-cell{display:flex;justify-content:space-between;align-items:center;border:none;padding:14px 16px;text-align:start !important;}.mud-lg-table.mud-table-dense .mud-table-cell{padding:6px 16px;}.mud-lg-table .mud-table-cell:before{content:attr(data-label);font-weight:500;padding-right:16px;padding-inline-end:16px;padding-inline-start:unset;}.mud-lg-table.mud-table-small-alignright .mud-table-cell:before{margin-right:auto;}.mud-lg-table .mud-table-cell-hide{visibility:collapse;height:0;padding:0;margin:0;}.mud-lg-table .mud-table-pagination .mud-table-pagination-spacer{flex:none;}.mud-lg-table .mud-table-pagination .mud-table-pagination-actions .mud-button-root:first-child{display:none;}.mud-lg-table .mud-table-pagination .mud-table-pagination-actions .mud-button-root:last-child{display:none;}.mud-lg-table .mud-table-pagination .mud-select~.mud-table-pagination-caption{margin-left:auto;margin-inline-start:auto;}}@media(max-width:2560px){.mud-xl-table .mud-table-root .mud-table-head,.mud-xl-table .mud-table-root .mud-table-foot{display:none;}.mud-xl-table .mud-table-smalldevices-sortselect{display:block;padding:4px 16px 8px;}.mud-xl-table .mud-table-body{border-top:1px solid var(--mud-palette-table-lines);}.mud-xl-table .mud-table-row{display:initial;}.mud-xl-table .mud-table-row .mud-table-cell:last-child{border-bottom:1px solid var(--mud-palette-table-lines);}.mud-xl-table .mud-table-cell{display:flex;justify-content:space-between;align-items:center;border:none;padding:14px 16px;text-align:start !important;}.mud-xl-table.mud-table-dense .mud-table-cell{padding:6px 16px;}.mud-xl-table .mud-table-cell:before{content:attr(data-label);font-weight:500;padding-right:16px;padding-inline-end:16px;padding-inline-start:unset;}.mud-xl-table.mud-table-small-alignright .mud-table-cell:before{margin-right:auto;}.mud-xl-table .mud-table-cell-hide{visibility:collapse;height:0;padding:0;margin:0;}.mud-xl-table .mud-table-pagination .mud-table-pagination-spacer{flex:none;}.mud-xl-table .mud-table-pagination .mud-table-pagination-actions .mud-button-root:first-child{display:none;}.mud-xl-table .mud-table-pagination .mud-table-pagination-actions .mud-button-root:last-child{display:none;}.mud-xl-table .mud-table-pagination .mud-select~.mud-table-pagination-caption{margin-left:auto;margin-inline-start:auto;}}@media(min-width:2560px){.mud-xxl-table .mud-table-root .mud-table-head,.mud-xxl-table .mud-table-root .mud-table-foot{display:none;}.mud-xxl-table .mud-table-smalldevices-sortselect{display:block;padding:4px 16px 8px;}.mud-xxl-table .mud-table-body{border-top:1px solid var(--mud-palette-table-lines);}.mud-xxl-table .mud-table-row{display:initial;}.mud-xxl-table .mud-table-row .mud-table-cell:last-child{border-bottom:1px solid var(--mud-palette-table-lines);}.mud-xxl-table .mud-table-cell{display:flex;justify-content:space-between;align-items:center;border:none;padding:14px 16px;text-align:start !important;}.mud-xxl-table.mud-table-dense .mud-table-cell{padding:6px 16px;}.mud-xxl-table .mud-table-cell:before{content:attr(data-label);font-weight:500;padding-right:16px;padding-inline-end:16px;padding-inline-start:unset;}.mud-xxl-table.mud-table-small-alignright .mud-table-cell:before{margin-right:auto;}.mud-xxl-table .mud-table-cell-hide{visibility:collapse;height:0;padding:0;margin:0;}.mud-xxl-table .mud-table-pagination .mud-table-pagination-spacer{flex:none;}.mud-xxl-table .mud-table-pagination .mud-table-pagination-actions .mud-button-root:first-child{display:none;}.mud-xxl-table .mud-table-pagination .mud-table-pagination-actions .mud-button-root:last-child{display:none;}.mud-xxl-table .mud-table-pagination .mud-select~.mud-table-pagination-caption{margin-left:auto;margin-inline-start:auto;}}.mud-tabs{display:flex;flex-direction:column;}.mud-tabs.mud-tabs-reverse{flex-direction:column-reverse;}.mud-tabs.mud-tabs-vertical{flex-direction:row;}.mud-tabs.mud-tabs-vertical-reverse{flex-direction:row-reverse;}.mud-tabs.mud-tabs-rounded{border-radius:var(--mud-default-borderradius);}.mud-tabs.mud-tabs-rounded .mud-tabs-toolbar{border-radius:var(--mud-default-borderradius);}.mud-tabs.mud-tabs-rounded .mud-tabs-panels{border-radius:var(--mud-default-borderradius);}.mud-tabs-toolbar{position:relative;background-color:var(--mud-palette-surface);}.mud-tabs-toolbar.mud-tabs-border-left{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-right:1px solid var(--mud-palette-lines-default);}.mud-tabs-toolbar.mud-tabs-border-right{border-top-left-radius:0 !important;border-bottom-left-radius:0 !important;border-left:1px solid var(--mud-palette-lines-default);}.mud-tabs-toolbar.mud-tabs-border-top{border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important;border-bottom:1px solid var(--mud-palette-lines-default);}.mud-tabs-toolbar.mud-tabs-border-bottom{border-top-left-radius:0 !important;border-top-right-radius:0 !important;border-top:1px solid var(--mud-palette-lines-default);}.mud-tabs-toolbar.mud-tabs-rounded{border-radius:var(--mud-default-borderradius);}.mud-tabs-toolbar.mud-tabs-vertical .mud-tabs-toolbar-inner{flex-direction:column;}.mud-tabs-toolbar.mud-tabs-vertical .mud-tabs-toolbar-inner .mud-tabs-scroll-button .mud-button-root{width:100%;border-radius:0;height:32px;}.mud-tabs-toolbar.mud-tabs-vertical .mud-tabs-toolbar-inner .mud-tabs-scroll-button .mud-button-root .mud-icon-button-label .mud-icon-root{transform:rotate(90deg);}.mud-tabs-toolbar .mud-tabs-toolbar-inner{display:flex;min-height:48px;}.mud-tabs-toolbar-content{width:100%;flex:1 1 auto;display:inline-block;position:relative;white-space:nowrap;overflow:hidden;}.mud-tabs-toolbar-content .mud-tabs-toolbar-wrapper{width:max-content;position:inherit;display:flex;transition:.3s cubic-bezier(.25,.8,.5,1);}.mud-tabs-toolbar-content .mud-tabs-toolbar-wrapper.mud-tabs-centered{margin:auto;}.mud-tabs-toolbar-content .mud-tabs-toolbar-wrapper.mud-tabs-vertical{flex-direction:column;}.mud-tabs-panels{position:relative;transition:.3s cubic-bezier(.25,.8,.5,1);}.mud-tabs-panels.mud-tabs-vertical{display:flex;flex-grow:1;}.mud-tab{width:100%;min-width:160px;display:inline-flex;padding:6px 12px;min-height:48px;flex-shrink:0;font-weight:500;line-height:1.75;user-select:none;white-space:normal;letter-spacing:.02857em;text-transform:uppercase;text-align:center;align-items:center;justify-content:center;transition:background-color 150ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-tab:hover{cursor:pointer;background-color:var(--mud-palette-action-default-hover);}.mud-tab.mud-tab-active{color:var(--mud-palette-primary);}.mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-primary-hover);}.mud-tab.mud-disabled{cursor:default;pointer-events:none;color:var(--mud-palette-text-disabled);}.mud-tab .mud-tab-icon-text{margin-right:8px;margin-inline-end:8px;margin-inline-start:unset;}.mud-tab-slider{position:absolute;background:var(--mud-palette-primary);}.mud-tab-slider.mud-tab-slider-horizontal{height:2px;left:0;bottom:0;transition:left .3s cubic-bezier(.64,.09,.08,1);will-change:left;}.mud-tab-slider.mud-tab-slider-horizontal.mud-tab-slider-horizontal-reverse{top:0;}.mud-tab-slider.mud-tab-slider-vertical{width:2px;right:0;transition:top .3s cubic-bezier(.64,.09,.08,1);will-change:top;}.mud-tab-slider.mud-tab-slider-vertical.mud-tab-slider-vertical-reverse{left:0;right:unset;}.mud-tab-badge{margin-left:8px;margin-inline-start:8px;margin-inline-end:unset;}.mud-tabs-toolbar-primary{background-color:var(--mud-palette-primary);color:var(--mud-palette-primary-text);}.mud-tabs-toolbar-primary .mud-tab-slider{background:var(--mud-palette-primary-text);}.mud-tabs-toolbar-primary .mud-tab.mud-tab-active{color:var(--mud-palette-primary-text);}.mud-tabs-toolbar-primary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-primary-lighten);}.mud-tabs-toolbar-secondary{background-color:var(--mud-palette-secondary);color:var(--mud-palette-secondary-text);}.mud-tabs-toolbar-secondary .mud-tab-slider{background:var(--mud-palette-secondary-text);}.mud-tabs-toolbar-secondary .mud-tab.mud-tab-active{color:var(--mud-palette-secondary-text);}.mud-tabs-toolbar-secondary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-secondary-lighten);}.mud-tabs-toolbar-tertiary{background-color:var(--mud-palette-tertiary);color:var(--mud-palette-tertiary-text);}.mud-tabs-toolbar-tertiary .mud-tab-slider{background:var(--mud-palette-tertiary-text);}.mud-tabs-toolbar-tertiary .mud-tab.mud-tab-active{color:var(--mud-palette-tertiary-text);}.mud-tabs-toolbar-tertiary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-tertiary-lighten);}.mud-tabs-toolbar-info{background-color:var(--mud-palette-info);color:var(--mud-palette-info-text);}.mud-tabs-toolbar-info .mud-tab-slider{background:var(--mud-palette-info-text);}.mud-tabs-toolbar-info .mud-tab.mud-tab-active{color:var(--mud-palette-info-text);}.mud-tabs-toolbar-info .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-info-lighten);}.mud-tabs-toolbar-success{background-color:var(--mud-palette-success);color:var(--mud-palette-success-text);}.mud-tabs-toolbar-success .mud-tab-slider{background:var(--mud-palette-success-text);}.mud-tabs-toolbar-success .mud-tab.mud-tab-active{color:var(--mud-palette-success-text);}.mud-tabs-toolbar-success .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-success-lighten);}.mud-tabs-toolbar-warning{background-color:var(--mud-palette-warning);color:var(--mud-palette-warning-text);}.mud-tabs-toolbar-warning .mud-tab-slider{background:var(--mud-palette-warning-text);}.mud-tabs-toolbar-warning .mud-tab.mud-tab-active{color:var(--mud-palette-warning-text);}.mud-tabs-toolbar-warning .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-warning-lighten);}.mud-tabs-toolbar-error{background-color:var(--mud-palette-error);color:var(--mud-palette-error-text);}.mud-tabs-toolbar-error .mud-tab-slider{background:var(--mud-palette-error-text);}.mud-tabs-toolbar-error .mud-tab.mud-tab-active{color:var(--mud-palette-error-text);}.mud-tabs-toolbar-error .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-error-lighten);}.mud-tabs-toolbar-dark{background-color:var(--mud-palette-dark);color:var(--mud-palette-dark-text);}.mud-tabs-toolbar-dark .mud-tab-slider{background:var(--mud-palette-dark-text);}.mud-tabs-toolbar-dark .mud-tab.mud-tab-active{color:var(--mud-palette-dark-text);}.mud-tabs-toolbar-dark .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-dark-lighten);}.tab-transition-enter{transform:translate(100%,0);}.tab-transition-leave,.tab-transition-leave-active{position:absolute;top:0;}.tab-transition-leave-to{position:absolute;transform:translate(-100%,0);}.tab-reverse-transition-enter{transform:translate(-100%,0);}.tab-reverse-transition-leave,.tab-reverse-transition-leave-to{top:0;position:absolute;transform:translate(100%,0);}.mud-dynamic-tabs .mud-tabs-toolbar .mud-tab{padding:6px 14px;}.mud-dynamic-tabs .mud-tabs-toolbar .mud-tab .mud-icon-button{padding:4px;margin-right:-4px;margin-inline-end:-4px;margin-inline-start:unset;}.mud-dynamic-tabs .mud-tabs-toolbar .mud-tab .mud-tabs-panel-header-before{padding-right:8px;padding-inline-end:8px;padding-inline-start:unset;}.mud-dynamic-tabs .mud-tabs-toolbar .mud-tab .mud-tabs-panel-header-after{padding-left:8px;padding-inline-start:8px;padding-inline-end:unset;}.mud-tabs-header.mud-tabs-header-before{display:inherit;}.mud-tabs-header.mud-tabs-header-after{display:inherit;}.mud-tabs-panel-header{display:flex;flex:1 1 auto;}.mud-tabs-panel-header.mud-tabs-panel-header-before{justify-content:flex-start;}.mud-tabs-panel-header.mud-tabs-panel-header-after{justify-content:flex-end;}.mud-select{display:flex;flex-grow:1;position:relative;}.mud-select.mud-autocomplete{display:block;}.mud-select.mud-autocomplete .mud-select-input{cursor:text;}.mud-select.mud-autocomplete .mud-input-adornment{cursor:pointer;}.mud-select .mud-select-input{cursor:pointer;}.mud-select .mud-select-input .mud-input-slot{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}.mud-select .mud-select-input .mud-input-adornment-end{margin-left:0;}.mud-select .mud-select-input:disabled{cursor:default;}.mud-select .mud-disabled .mud-select-input{cursor:default;}.mud-select>.mud-form-helpertext{margin-top:-21px;}.mud-select-all{margin-top:10px;border-bottom:1px solid #d3d3d3;padding-bottom:18px;}.mud-input{position:relative;color:var(--mud-palette-text-primary);cursor:text;display:inline-flex;font-size:1rem;box-sizing:border-box;align-items:center;font-weight:400;line-height:1.1876em;letter-spacing:.00938em;}.mud-input.mud-input-full-width{width:100%;}.mud-input.mud-disabled{color:var(--mud-palette-text-disabled);cursor:default;}.mud-input.mud-disabled>.mud-input-adornment{color:var(--mud-palette-text-disabled);pointer-events:none;}.mud-input.mud-input-underline:before{left:0;right:0;bottom:0;content:" ";position:absolute;transition:border-bottom .2s,background-color .2s;border-bottom:1px solid var(--mud-palette-lines-inputs);pointer-events:none;}.mud-input.mud-input-underline:hover:not(.mud-disabled):before{border-bottom:1px solid var(--mud-palette-action-default);}.mud-input.mud-input-underline:after{left:0;right:0;bottom:0;content:"";position:absolute;transform:scaleX(0);transition:transform 200ms cubic-bezier(0,0,.2,1) 0ms;border-bottom:2px solid var(--mud-palette-primary);pointer-events:none;}.mud-input.mud-input-underline.mud-disabled:before{border-bottom-style:dotted;}.mud-input.mud-input-underline.mud-input-error:after{transform:scaleX(1);border-bottom-color:var(--mud-palette-error);}.mud-input.mud-input-filled{position:relative;transition:background-color 200ms cubic-bezier(0,0,.2,1) 0ms;background-color:rgba(0,0,0,.09);border-top-left-radius:4px;border-top-right-radius:4px;}.mud-input.mud-input-filled:hover{background-color:rgba(0,0,0,.13);}.mud-input.mud-input-filled.mud-focused{background-color:rgba(0,0,0,.09);}.mud-input.mud-input-filled.mud-disabled{background-color:rgba(0,0,0,.12);}.mud-input.mud-input-filled.mud-input-adorned-start{padding-left:12px;padding-inline-start:12px;padding-inline-end:unset;}.mud-input.mud-input-filled.mud-input-adorned-end{padding-right:12px;padding-inline-end:12px;padding-inline-start:unset;}.mud-input.mud-input-filled.mud-input-underline:before{left:0;right:0;bottom:0;content:" ";position:absolute;transition:border-bottom-color 200ms cubic-bezier(.4,0,.2,1) 0ms;border-bottom:1px solid var(--mud-palette-lines-inputs);pointer-events:none;}.mud-input.mud-input-filled.mud-input-underline:after{left:0;right:0;bottom:0;content:"";position:absolute;transform:scaleX(0);transition:transform 200ms cubic-bezier(0,0,.2,1) 0ms;border-bottom:2px solid var(--mud-palette-primary);pointer-events:none;}.mud-input.mud-input-filled.mud-input-underline:hover:before{border-bottom:1px solid var(--mud-palette-action-default);}.mud-input.mud-input-filled.mud-input-underline.mud-disabled:before{border-bottom-style:dotted;}.mud-input.mud-input-filled.mud-input-underline.mud-input-error:after{transform:scaleX(1);border-bottom-color:var(--mud-palette-error);}.mud-input.mud-input-outlined{position:relative;border-width:0;}.mud-input.mud-input-outlined .mud-input-outlined-border{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:start;pointer-events:none;border-radius:var(--mud-default-borderradius);border-color:var(--mud-palette-lines-inputs);border-width:1px;border-style:solid;transition:border-width,border-color 200ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-input.mud-input-outlined:not(.mud-disabled):not(:focus-within):hover .mud-input-outlined-border{border-color:var(--mud-palette-action-default);}.mud-input.mud-input-outlined:focus-within .mud-input-outlined-border{border-width:2px;border-color:var(--mud-palette-primary);}.mud-input.mud-input-outlined.mud-disabled .mud-input-outlined-border{border-color:var(--mud-palette-action-disabled);}.mud-input.mud-input-outlined.mud-input-adorned-start{padding-left:14px;padding-inline-start:14px;padding-inline-end:unset;}.mud-input.mud-input-outlined.mud-input-adorned-end{padding-right:14px;padding-inline-end:14px;padding-inline-start:unset;}.mud-input-error .mud-input-outlined-border{border-color:var(--mud-palette-error) !important;}.mud-input:focus-within.mud-input-underline:after{transform:scaleX(1);}.mud-input>input.mud-input-root,div.mud-input-slot.mud-input-root{font:inherit;color:currentColor;width:100%;border:0;height:1.1876em;margin:0;display:block;padding:6px 0 7px;min-width:0;background:none;position:relative;box-sizing:content-box;letter-spacing:inherit;-webkit-tap-highlight-color:transparent;}.mud-input>input.mud-input-root::placeholder,div.mud-input-slot.mud-input-root::placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-input>input.mud-input-root::-webkit-input-placeholder,div.mud-input-slot.mud-input-root::-webkit-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-input>input.mud-input-root:-moz-placeholder,div.mud-input-slot.mud-input-root:-moz-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-input>input.mud-input-root::-moz-placeholder,div.mud-input-slot.mud-input-root::-moz-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-input>input.mud-input-root:-ms-input-placeholder,div.mud-input-slot.mud-input-root:-ms-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-input>input.mud-input-root::-ms-input-placeholder,div.mud-input-slot.mud-input-root::-ms-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-input>input.mud-input-root.mud-input-root-margin-dense,div.mud-input-slot.mud-input-root.mud-input-root-margin-dense{padding-top:3px;}.mud-input>input.mud-input-root.mud-input-root-multiline,div.mud-input-slot.mud-input-root.mud-input-root-multiline{height:auto;resize:none;padding:0;}.mud-input>input.mud-input-root.mud-input-root-type-search,div.mud-input-slot.mud-input-root.mud-input-root-type-search{-moz-appearance:textfield;-webkit-appearance:textfield;}.mud-input>input.mud-input-root:focus,div.mud-input-slot.mud-input-root:focus{outline:0;}.mud-input>input.mud-input-root:invalid,div.mud-input-slot.mud-input-root:invalid{box-shadow:none;}.mud-input>input.mud-input-root:disabled,div.mud-input-slot.mud-input-root:disabled{opacity:1;}.mud-input>input.mud-input-root.mud-input-root-filled,div.mud-input-slot.mud-input-root.mud-input-root-filled{padding:27px 12px 10px;}.mud-input>input.mud-input-root.mud-input-root-filled.mud-input-root-margin-dense,div.mud-input-slot.mud-input-root.mud-input-root-filled.mud-input-root-margin-dense{padding-top:23px;padding-bottom:6px;}.mud-input>input.mud-input-root.mud-input-root-filled:-webkit-autofill,div.mud-input-slot.mud-input-root.mud-input-root-filled:-webkit-autofill{border-top-left-radius:inherit;border-top-right-radius:inherit;}.mud-input>input.mud-input-root.mud-input-root-filled.mud-input-root-hidden-label,div.mud-input-slot.mud-input-root.mud-input-root-filled.mud-input-root-hidden-label{padding-top:18px;padding-bottom:19px;}.mud-input>input.mud-input-root.mud-input-root-filled.mud-input-root-hidden-label.mud-input-root-margin-dense,div.mud-input-slot.mud-input-root.mud-input-root-filled.mud-input-root-hidden-label.mud-input-root-margin-dense{padding-top:10px;padding-bottom:11px;}.mud-input>input.mud-input-root.mud-input-root-filled.mud-input-root-multiline,div.mud-input-slot.mud-input-root.mud-input-root-filled.mud-input-root-multiline{padding:0;}.mud-input>input.mud-input-root.mud-input-root-filled.mud-input-root-adorned-start,div.mud-input-slot.mud-input-root.mud-input-root-filled.mud-input-root-adorned-start{padding-left:0;padding-inline-start:0;padding-inline-end:12px;}.mud-input>input.mud-input-root.mud-input-root-filled.mud-input-root-adorned-end,div.mud-input-slot.mud-input-root.mud-input-root-filled.mud-input-root-adorned-end{padding-right:0;padding-inline-end:0;padding-inline-start:12px;}.mud-input>input.mud-input-root-outlined,div.mud-input-slot.mud-input-root-outlined{padding:18.5px 14px;}.mud-input>input.mud-input-root-outlined.mud-input-root:-webkit-autofill,div.mud-input-slot.mud-input-root-outlined.mud-input-root:-webkit-autofill{border-radius:inherit;}.mud-input>input.mud-input-root-outlined.mud-input-root-margin-dense,div.mud-input-slot.mud-input-root-outlined.mud-input-root-margin-dense{padding-top:10.5px;padding-bottom:10.5px;}.mud-input>input.mud-input-root-outlined.mud-input-root-adorned-start,div.mud-input-slot.mud-input-root-outlined.mud-input-root-adorned-start{padding-left:0;padding-inline-start:0;padding-inline-end:14px;}.mud-input>input.mud-input-root-outlined.mud-input-root-adorned-end,div.mud-input-slot.mud-input-root-outlined.mud-input-root-adorned-end{padding-right:0;padding-inline-end:0;padding-inline-start:14px;}.mud-input>input::-ms-reveal,.mud-input>input::-ms-clear,div.mud-input-slot::-ms-reveal,div.mud-input-slot::-ms-clear{display:none !important;}.mud-input>textarea.mud-input-root{font:inherit;color:currentColor;width:100%;border:0;height:auto;margin:6px 0 7px;padding:0;display:block;min-width:0;background:none;position:relative;box-sizing:content-box;letter-spacing:inherit;-webkit-tap-highlight-color:transparent;height:auto;resize:none;cursor:auto;}.mud-input>textarea.mud-input-root::placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-input>textarea.mud-input-root::-webkit-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-input>textarea.mud-input-root:-moz-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-input>textarea.mud-input-root::-moz-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-input>textarea.mud-input-root:-ms-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-input>textarea.mud-input-root::-ms-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-input>textarea.mud-input-root.mud-input-root-margin-dense{margin-top:3px;}.mud-input>textarea.mud-input-root.mud-input-root-type-search{-moz-appearance:textfield;-webkit-appearance:textfield;}.mud-input>textarea.mud-input-root:focus{outline:0;}.mud-input>textarea.mud-input-root:invalid{box-shadow:none;}.mud-input>textarea.mud-input-root:disabled{opacity:1;}.mud-input>textarea.mud-input-root.mud-input-root-filled{margin:27px 12px 10px;}.mud-input>textarea.mud-input-root.mud-input-root-filled.mud-input-root-margin-dense{margin-top:23px;margin-bottom:6px;}.mud-input>textarea.mud-input-root.mud-input-root-filled:-webkit-autofill{border-top-left-radius:inherit;border-top-right-radius:inherit;}.mud-input>textarea.mud-input-root.mud-input-root-filled.mud-input-root-hidden-label{margin-top:18px;margin-bottom:19px;}.mud-input>textarea.mud-input-root.mud-input-root-filled.mud-input-root-hidden-label.mud-input-root-margin-dense{margin-top:10px;margin-bottom:11px;}.mud-input>textarea.mud-input-root.mud-input-root-filled.mud-input-root-adorned-start{margin-left:0;margin-inline-start:0;margin-inline-end:12px;}.mud-input>textarea.mud-input-root.mud-input-root-filled.mud-input-root-adorned-end{margin-right:0;margin-inline-end:unset;margin-inline-start:12px;}.mud-input>textarea.mud-input-root::-webkit-scrollbar{width:8px;height:8px;z-index:1;cursor:crosshair;}.mud-input>textarea.mud-input-root::-webkit-scrollbar-thumb{background:var(--mud-palette-lines-inputs);border-radius:1px;}.mud-input>textarea.mud-input-root::-webkit-scrollbar-track{background:transparent;}.mud-input>textarea.mud-input-root-outlined{margin:18.5px 14px;}.mud-input>textarea.mud-input-root-outlined.mud-input-root:-webkit-autofill{border-radius:inherit;}.mud-input>textarea.mud-input-root-outlined.mud-input-root-margin-dense{margin-top:10.5px;margin-bottom:10.5px;}.mud-input>textarea.mud-input-root-outlined.mud-input-root-adorned-start{margin-left:0;margin-inline-start:0;margin-inline-end:14px;}.mud-input>textarea.mud-input-root-outlined.mud-input-root-adorned-end{margin-right:0;margin-inline-end:0;margin-inline-start:14px;}.mud-input-adornment{height:.01em;display:flex;max-height:2em;align-items:center;white-space:nowrap;}.mud-input-adornment-start.mud-input-root-filled-shrink{margin-top:16px;}.mud-input-adornment-start{margin-right:8px;margin-inline-end:8px;margin-inline-start:unset;}.mud-input-adornment-end{margin-left:8px;margin-inline-start:8px;margin-inline-end:unset;}.mud-input-number-control.mud-input-showspin .mud-input-adornment-end{margin-right:12px;margin-inline-end:12px;margin-inline-start:unset;}.mud-input-number-control.mud-input-showspin .mud-input-underline:not(.mud-input-filled) .mud-input-adornment-end{margin-right:24px;margin-inline-end:24px;margin-inline-start:unset;}.mud-input-adornment-disable-pointerevents{pointer-events:none;}.mud-range-input-separator{visibility:hidden;margin:0 4px;}.mud-input:focus-within .mud-range-input-separator{visibility:visible;}.mud-picker .mud-shrink .mud-range-input-separator{visibility:visible;}.mud-input-control{border:0;margin:0;padding:0;display:flex;flex:1 1 auto;max-width:100%;position:relative;flex-direction:column;vertical-align:top;margin-top:6px;}.mud-input-control.mud-input-control-margin-normal{margin-top:16px;margin-bottom:8px;}.mud-input-control.mud-input-control-margin-dense{margin-top:3px;margin-bottom:2px;}.mud-input-control.mud-input-control-full-width{width:100%;}.mud-input-control>.mud-input-control-input-container{position:relative;display:flex;flex-direction:column;}.mud-input-control>.mud-input-control-input-container>div.mud-input.mud-input-text{margin-top:16px;}.mud-input-control>.mud-input-control-input-container>.mud-input-label-outlined.mud-input-label-inputcontrol{line-height:18px;}.mud-input-control>.mud-input-control-input-container>.mud-input-label-inputcontrol{color:var(--mud-palette-text-secondary);padding:0;font-size:1rem;font-weight:400;line-height:1;letter-spacing:.00938em;z-index:0;pointer-events:none;}.mud-input-control>.mud-input-control-input-container>.mud-input-label-inputcontrol.mud-disabled{color:var(--mud-palette-text-disabled);}.mud-input-control>.mud-input-control-input-container>.mud-input-label-inputcontrol.mud-input-error{color:var(--mud-palette-error) !important;}.mud-input-control.mud-input-required>.mud-input-control-input-container>.mud-input-label::after{content:"*";}.mud-input-control.mud-input-number-control input::-webkit-outer-spin-button,.mud-input-control.mud-input-number-control input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}.mud-input-control.mud-input-number-control input[type=number]{-moz-appearance:textfield;}.mud-input-control.mud-input-number-control.mud-input-showspin .mud-input:not(.mud-input-adorned-end) input{padding-right:24px;padding-inline-end:24px;}.mud-input-control.mud-input-number-control.mud-input-showspin .mud-input:not(.mud-input-adorned-end) input.mud-input-root-margin-dense{padding-right:20px;padding-inline-end:20px;}.mud-input-control.mud-input-number-control.mud-input-showspin .mud-input:not(.mud-input-adorned-end).mud-input-text input{padding-inline-start:0;}.mud-input-control.mud-input-number-control.mud-input-showspin .mud-input:not(.mud-input-adorned-end).mud-input-text input.mud-input-root-margin-dense{padding-inline-start:0;}.mud-input-control.mud-input-number-control.mud-input-showspin .mud-input:not(.mud-input-adorned-end).mud-input-filled input{padding-inline-start:12px;}.mud-input-control.mud-input-number-control.mud-input-showspin .mud-input:not(.mud-input-adorned-end).mud-input-filled input.mud-input-root-margin-dense{padding-inline-start:12px;}.mud-input-control.mud-input-number-control.mud-input-showspin .mud-input:not(.mud-input-adorned-end).mud-input-outlined input{padding-inline-start:14px;}.mud-input-control.mud-input-number-control.mud-input-showspin .mud-input:not(.mud-input-adorned-end).mud-input-outlined input.mud-input-root-margin-dense{padding-inline-start:14px;}.mud-input-control.mud-input-number-control .mud-input-numeric-spin{display:inline-flex;flex-direction:column;justify-content:space-between;position:absolute;right:0;top:0;bottom:0;}.mud-input-control.mud-input-number-control .mud-input-numeric-spin button{padding:2px;min-width:unset;min-height:unset;}.mud-input-control.mud-input-number-control .mud-input-numeric-spin button{padding:2px 0;}.mud-input-control-helper-container{overflow:hidden;margin-top:3px;}.mud-input-helper-text{color:var(--mud-palette-text-secondary);margin:0;font-size:.75rem;text-align:start;font-weight:400;line-height:1.66;letter-spacing:.03333em;}.mud-input-helper-text.mud-input-helper-onfocus{transform:translateY(-100%);transition:color 200ms cubic-bezier(0,0,.2,1) 0ms,transform 200ms cubic-bezier(0,0,.2,1) 0ms;}.mud-input-control:focus-within .mud-input-helper-text.mud-input-helper-onfocus,.mud-input-control.mud-input-error .mud-input-helper-text.mud-input-helper-onfocus{transform:translateY(0);}.mud-input-helper-text.mud-disabled{color:var(--mud-palette-text-disabled);}.mud-input-helper-text.mud-input-error{color:var(--mud-palette-error) !important;}.mud-input-helper-text-margin-dense{margin-top:4px;}.mud-input-helper-text-contained{margin-left:14px;margin-right:14px;}.mud-application-layout-rtl .mud-input-control.mud-input-number-control .mud-input-numeric-spin{left:0;right:unset;}.mud-input-label{display:block;transform-origin:top left;}.mud-input-label-inputcontrol{top:0;left:0;position:absolute;transform:translate(0,24px) scale(1);}.mud-input-label-margindense{transform:translate(0,21px) scale(1);}.mud-input-label-shrink{transform:translate(0,1.5px) scale(.75);transform-origin:top left;}.mud-input-label-animated{transition:color 200ms cubic-bezier(0,0,.2,1) 0ms,transform 200ms cubic-bezier(0,0,.2,1) 0ms;}.mud-input-label-filled{z-index:1;transform:translate(12px,20px) scale(1);pointer-events:none;}.mud-input-label-filled.mud-input-label-margin-dense{transform:translate(12px,17px) scale(1);}.mud-input-label-outlined{transform:translate(14px,20px) scale(1);pointer-events:none;background-color:var(--mud-palette-surface);padding:0 5px !important;}.mud-input-label-outlined.mud-input-label-margin-dense{transform:translate(14px,12px) scale(1);}.mud-shrink~label.mud-input-label.mud-input-label-inputcontrol{color:var(--mud-palette-text-primary);}.mud-input:focus-within~label.mud-input-label.mud-input-label-inputcontrol{color:var(--mud-palette-primary);}.mud-shrink~label.mud-input-label.mud-input-label-inputcontrol,.mud-input:focus-within~label.mud-input-label.mud-input-label-inputcontrol{transform:translate(0,1.5px) scale(.75);transform-origin:top left;}.mud-shrink~label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-filled,.mud-input:focus-within~label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-filled{transform:translate(12px,10px) scale(.75);}.mud-shrink~label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-filled.mud-input-label-margin-dense,.mud-input:focus-within~label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-filled.mud-input-label-margin-dense{transform:translate(12px,7px) scale(.75);}.mud-shrink~label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-outlined,.mud-input:focus-within~label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-outlined{transform:translate(14px,-6px) scale(.75);}.mud-input:focus-within~label.mud-input-label.mud-input-label-inputcontrol.mud-input-error{color:var(--mud-palette-error);}.mud-application-layout-rtl .mud-input-label{transform-origin:top right;}.mud-application-layout-rtl .mud-input-label-inputcontrol{left:unset;right:0;}.mud-application-layout-rtl .mud-input-label-shrink{transform-origin:top right;}.mud-application-layout-rtl .mud-input-label-filled{transform:translate(-12px,20px) scale(1);}.mud-application-layout-rtl .mud-input-label-filled.mud-input-label-margin-dense{transform:translate(-12px,17px) scale(1);}.mud-application-layout-rtl .mud-input-label-outlined{transform:translate(-14px,20px) scale(1);}.mud-application-layout-rtl .mud-input-label-outlined.mud-input-label-margin-dense{transform:translate(-14px,12px) scale(1);}.mud-application-layout-rtl .mud-shrink~label.mud-input-label.mud-input-label-inputcontrol,.mud-application-layout-rtl .mud-input:focus-within~label.mud-input-label.mud-input-label-inputcontrol{transform-origin:top right;}.mud-application-layout-rtl .mud-shrink~label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-filled,.mud-application-layout-rtl .mud-input:focus-within~label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-filled{transform:translate(-12px,10px) scale(.75);}.mud-application-layout-rtl .mud-shrink~label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-filled.mud-input-label-margin-dense,.mud-application-layout-rtl .mud-input:focus-within~label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-filled.mud-input-label-margin-dense{transform:translate(-12px,7px) scale(.75);}.mud-application-layout-rtl .mud-shrink~label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-outlined,.mud-application-layout-rtl .mud-input:focus-within~label.mud-input-label.mud-input-label-inputcontrol.mud-input-label-outlined{transform:translate(-14px,-6px) scale(.75);}.mud-image.fluid{max-width:100%;height:auto;}.mud-overlay{top:0;left:0;right:0;bottom:0;margin:0 !important;align-items:center;justify-content:center;border-radius:inherit;display:flex;position:fixed;transition:.3s cubic-bezier(.25,.8,.5,1),z-index 1ms;z-index:5;}.mud-overlay.mud-overlay-absolute{position:absolute;}.mud-overlay .mud-overlay-scrim{top:0;left:0;right:0;bottom:0;border-radius:inherit;position:absolute;height:100%;width:100%;border-color:transparent;background-color:transparent;animation:mud-animation-fadein ease .15s;-webkit-animation:mud-animation-fadein ease .15s;-moz-animation:mud-animation-fadein ease .15s;-o-animation:mud-animation-fadein ease .15s;}.mud-overlay .mud-overlay-scrim.mud-overlay-dark{border-color:var(--mud-palette-overlay-dark);background-color:var(--mud-palette-overlay-dark);}.mud-overlay .mud-overlay-scrim.mud-overlay-light{border-color:var(--mud-palette-overlay-light);background-color:var(--mud-palette-overlay-light);}.mud-overlay .mud-overlay-scrim:hover{cursor:default;}.mud-overlay .mud-overlay-content{position:relative;}.mud-overlay.mud-overlay-popover{z-index:var(--mud-zindex-popover);}.mud-overlay.mud-overlay-dialog{z-index:calc(var(--mud-zindex-dialog) + 1);}.mud-overlay.mud-overlay-drawer{z-index:calc(var(--mud-zindex-appbar) + 1);}.mud-treeview{margin:0;padding:0;list-style:none;overflow:auto;}.mud-treeview.mud-treeview-selected-primary .mud-treeview-item-content.mud-treeview-item-selected{color:var(--mud-palette-primary);background-color:var(--mud-palette-primary-hover);}.mud-treeview.mud-treeview-selected-secondary .mud-treeview-item-content.mud-treeview-item-selected{color:var(--mud-palette-secondary);background-color:var(--mud-palette-secondary-hover);}.mud-treeview.mud-treeview-selected-tertiary .mud-treeview-item-content.mud-treeview-item-selected{color:var(--mud-palette-tertiary);background-color:var(--mud-palette-tertiary-hover);}.mud-treeview.mud-treeview-selected-info .mud-treeview-item-content.mud-treeview-item-selected{color:var(--mud-palette-info);background-color:var(--mud-palette-info-hover);}.mud-treeview.mud-treeview-selected-success .mud-treeview-item-content.mud-treeview-item-selected{color:var(--mud-palette-success);background-color:var(--mud-palette-success-hover);}.mud-treeview.mud-treeview-selected-warning .mud-treeview-item-content.mud-treeview-item-selected{color:var(--mud-palette-warning);background-color:var(--mud-palette-warning-hover);}.mud-treeview.mud-treeview-selected-error .mud-treeview-item-content.mud-treeview-item-selected{color:var(--mud-palette-error);background-color:var(--mud-palette-error-hover);}.mud-treeview.mud-treeview-selected-dark .mud-treeview-item-content.mud-treeview-item-selected{color:var(--mud-palette-dark);background-color:var(--mud-palette-dark-hover);}.mud-treeview.mud-treeview-checked-primary .mud-treeview-item-checkbox .mud-button-root.mud-icon-button{color:var(--mud-palette-primary);}.mud-treeview.mud-treeview-checked-secondary .mud-treeview-item-checkbox .mud-button-root.mud-icon-button{color:var(--mud-palette-secondary);}.mud-treeview.mud-treeview-checked-tertiary .mud-treeview-item-checkbox .mud-button-root.mud-icon-button{color:var(--mud-palette-tertiary);}.mud-treeview.mud-treeview-checked-info .mud-treeview-item-checkbox .mud-button-root.mud-icon-button{color:var(--mud-palette-info);}.mud-treeview.mud-treeview-checked-success .mud-treeview-item-checkbox .mud-button-root.mud-icon-button{color:var(--mud-palette-success);}.mud-treeview.mud-treeview-checked-warning .mud-treeview-item-checkbox .mud-button-root.mud-icon-button{color:var(--mud-palette-warning);}.mud-treeview.mud-treeview-checked-error .mud-treeview-item-checkbox .mud-button-root.mud-icon-button{color:var(--mud-palette-error);}.mud-treeview.mud-treeview-checked-dark .mud-treeview-item-checkbox .mud-button-root.mud-icon-button{color:var(--mud-palette-dark);}.mud-treeview-group{margin:0;padding:0;margin-left:17px;margin-inline-start:17px;margin-inline-end:unset;list-style:none;}.mud-treeview-item{margin:0;outline:0;padding:0;cursor:default;list-style:none;min-height:2rem;align-items:center;-webkit-tap-highlight-color:transparent;}.mud-treeview-item .mud-icon-button{padding:4px;}.mud-treeview-item-content{width:100%;display:flex;padding:4px 8px;align-items:center;transition:background-color 150ms cubic-bezier(.4,0,.2,1) 0ms;}.mud-treeview-hover .mud-treeview-item-content:hover{background-color:var(--mud-palette-action-default-hover);}.mud-treeview-item-arrow{width:2rem;display:flex;flex-shrink:0;margin:0 4px;min-height:32px;justify-content:center;}.mud-treeview-item-arrow .mud-treeview-item-arrow-expand{transition:.3s cubic-bezier(.25,.8,.5,1),visibility 0s;}.mud-treeview-item-arrow .mud-treeview-item-arrow-expand.mud-transform{transform:rotate(90deg);}.mud-treeview-item-arrow .mud-treeview-item-arrow-load{animation:rotation 1s infinite linear;}.mud-treeview-item-icon{width:32px;display:flex;flex-shrink:0;margin-right:4px;margin-inline-end:4px;margin-inline-start:unset;justify-content:center;}.mud-treeview-item-label{flex-grow:1;padding-left:4px;padding-right:4px;}.mud-treeview-dense .mud-treeview-item{min-height:unset;}.mud-treeview-dense .mud-treeview-item-content{padding:1px 4px;}.mud-treeview-dense .mud-treeview-item-arrow{min-height:unset;}.mud-treeview-dense .mud-icon-button{padding:0;}@keyframes rotation{from{transform:rotate(0deg);}to{transform:rotate(359deg);}}.mud-application-layout-rtl .mud-treeview-item-arrow{transform:scaleX(-1);}.mud-data-grid .mud-table-cell.edit-mode-cell .mud-input-control{margin:0 !important;}.mud-data-grid .mud-table-cell.edit-mode-cell .mud-input{font-size:inherit;}.mud-data-grid .mud-table-cell.edit-mode-cell .mud-input:before{content:none;}.mud-data-grid .mud-table-cell.edit-mode-cell .mud-inputafter{content:none;}.mud-data-grid .mud-table-cell.edit-mode-cell .mud-input .mud-input-outlined-border{border:none;}.mud-data-grid .mud-table-cell .mud-input-text{margin-top:0 !important;}.mud-data-grid .mud-table-cell .column-header{display:flex;justify-content:space-between;}.mud-data-grid .mud-table-cell .column-header .sortable-column-header{cursor:pointer;}.mud-data-grid .mud-table-cell .column-header:hover .column-options .sort-direction-icon,.mud-data-grid .mud-table-cell .column-header:hover .column-options .column-options-icon{opacity:.8;color:var(--mud-palette-action-default);}.mud-data-grid .mud-table-cell .column-header:hover .column-options .mud-menu .mud-icon-button-label{opacity:1;color:var(--mud-palette-action-default);}.mud-data-grid .mud-table-cell .column-header .column-options{cursor:pointer;display:inline-flex;align-items:center;flex-direction:inherit;justify-content:flex-start;}.mud-data-grid .mud-table-cell .column-header .sort-direction-icon{font-size:18px;margin-left:4px;margin-left:4px;margin-inline-start:4px;margin-inline-end:unset;user-select:none;transition:opacity 300ms cubic-bezier(.4,0,.2,1) 0ms,transform 200ms cubic-bezier(.4,0,.2,1) 0ms;opacity:0;}.mud-data-grid .mud-table-cell .column-header .sort-direction-icon.mud-direction-desc{opacity:1;transform:rotate(180deg);}.mud-data-grid .mud-table-cell .column-header .sort-direction-icon.mud-direction-asc{opacity:1;transform:rotate(0deg);}.mud-data-grid .mud-table-cell .column-header .column-options .mud-menu .mud-icon-button-label{user-select:none;transition:opacity 300ms cubic-bezier(.4,0,.2,1) 0ms,transform 200ms cubic-bezier(.4,0,.2,1) 0ms;opacity:0;}.rounded-0{border-radius:0 !important;}.rounded-t-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important;}.rounded-r-0,.rounded-e-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;}.rounded-b-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important;}.rounded-l-0,.rounded-s-0{border-top-left-radius:0 !important;border-bottom-left-radius:0 !important;}.rounded-tl-0,.rounded-ts-0{border-top-left-radius:0 !important;}.rounded-tr-0,.rounded-te-0{border-top-right-radius:0 !important;}.rounded-br-0,.rounded-be-0{border-bottom-right-radius:0 !important;}.rounded-bl-0,.rounded-bs-0{border-bottom-left-radius:0 !important;}.mud-application-layout-rtl .rounded-s-0{border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;border-top-left-radius:0 !important;border-bottom-left-radius:0 !important;}.mud-application-layout-rtl .rounded-e-0{border-top-left-radius:0 !important;border-bottom-left-radius:0 !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;}.mud-application-layout-rtl .rounded-ts-0{border-top-right-radius:0 !important;border-top-left-radius:0 !important;}.mud-application-layout-rtl .rounded-te-0{border-top-left-radius:0 !important;border-top-right-radius:0 !important;}.mud-application-layout-rtl .rounded-bs-0{border-bottom-right-radius:0 !important;border-bottom-left-radius:0 !important;}.mud-application-layout-rtl .rounded-be-0{border-bottom-left-radius:0 !important;border-bottom-right-radius:0 !important;}.rounded-sm{border-radius:2px !important;}.rounded-t-sm{border-top-left-radius:2px !important;border-top-right-radius:2px !important;}.rounded-r-sm,.rounded-e-sm{border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;}.rounded-b-sm{border-bottom-right-radius:2px !important;border-bottom-left-radius:2px !important;}.rounded-l-sm,.rounded-s-sm{border-top-left-radius:2px !important;border-bottom-left-radius:2px !important;}.rounded-tl-sm,.rounded-ts-sm{border-top-left-radius:2px !important;}.rounded-tr-sm,.rounded-te-sm{border-top-right-radius:2px !important;}.rounded-br-sm,.rounded-be-sm{border-bottom-right-radius:2px !important;}.rounded-bl-sm,.rounded-bs-sm{border-bottom-left-radius:2px !important;}.mud-application-layout-rtl .rounded-s-sm{border-top-right-radius:2px !important;border-bottom-right-radius:2px !important;border-top-left-radius:0 !important;border-bottom-left-radius:0 !important;}.mud-application-layout-rtl .rounded-e-sm{border-top-left-radius:2px !important;border-bottom-left-radius:2px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;}.mud-application-layout-rtl .rounded-ts-sm{border-top-right-radius:2px !important;border-top-left-radius:0 !important;}.mud-application-layout-rtl .rounded-te-sm{border-top-left-radius:2px !important;border-top-right-radius:0 !important;}.mud-application-layout-rtl .rounded-bs-sm{border-bottom-right-radius:2px !important;border-bottom-left-radius:0 !important;}.mud-application-layout-rtl .rounded-be-sm{border-bottom-left-radius:2px !important;border-bottom-right-radius:0 !important;}.rounded-lg{border-radius:8px !important;}.rounded-t-lg{border-top-left-radius:8px !important;border-top-right-radius:8px !important;}.rounded-r-lg,.rounded-e-lg{border-top-right-radius:8px !important;border-bottom-right-radius:8px !important;}.rounded-b-lg{border-bottom-right-radius:8px !important;border-bottom-left-radius:8px !important;}.rounded-l-lg,.rounded-s-lg{border-top-left-radius:8px !important;border-bottom-left-radius:8px !important;}.rounded-tl-lg,.rounded-ts-lg{border-top-left-radius:8px !important;}.rounded-tr-lg,.rounded-te-lg{border-top-right-radius:8px !important;}.rounded-br-lg,.rounded-be-lg{border-bottom-right-radius:8px !important;}.rounded-bl-lg,.rounded-bs-lg{border-bottom-left-radius:8px !important;}.mud-application-layout-rtl .rounded-s-lg{border-top-right-radius:8px !important;border-bottom-right-radius:8px !important;border-top-left-radius:0 !important;border-bottom-left-radius:0 !important;}.mud-application-layout-rtl .rounded-e-lg{border-top-left-radius:8px !important;border-bottom-left-radius:8px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;}.mud-application-layout-rtl .rounded-ts-lg{border-top-right-radius:8px !important;border-top-left-radius:0 !important;}.mud-application-layout-rtl .rounded-te-lg{border-top-left-radius:8px !important;border-top-right-radius:0 !important;}.mud-application-layout-rtl .rounded-bs-lg{border-bottom-right-radius:8px !important;border-bottom-left-radius:0 !important;}.mud-application-layout-rtl .rounded-be-lg{border-bottom-left-radius:8px !important;border-bottom-right-radius:0 !important;}.rounded-xl{border-radius:24px !important;}.rounded-t-xl{border-top-left-radius:24px !important;border-top-right-radius:24px !important;}.rounded-r-xl,.rounded-e-xl{border-top-right-radius:24px !important;border-bottom-right-radius:24px !important;}.rounded-b-xl{border-bottom-right-radius:24px !important;border-bottom-left-radius:24px !important;}.rounded-l-xl,.rounded-s-xl{border-top-left-radius:24px !important;border-bottom-left-radius:24px !important;}.rounded-tl-xl,.rounded-ts-xl{border-top-left-radius:24px !important;}.rounded-tr-xl,.rounded-te-xl{border-top-right-radius:24px !important;}.rounded-br-xl,.rounded-be-xl{border-bottom-right-radius:24px !important;}.rounded-bl-xl,.rounded-bs-xl{border-bottom-left-radius:24px !important;}.mud-application-layout-rtl .rounded-s-xl{border-top-right-radius:24px !important;border-bottom-right-radius:24px !important;border-top-left-radius:0 !important;border-bottom-left-radius:0 !important;}.mud-application-layout-rtl .rounded-e-xl{border-top-left-radius:24px !important;border-bottom-left-radius:24px !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;}.mud-application-layout-rtl .rounded-ts-xl{border-top-right-radius:24px !important;border-top-left-radius:0 !important;}.mud-application-layout-rtl .rounded-te-xl{border-top-left-radius:24px !important;border-top-right-radius:0 !important;}.mud-application-layout-rtl .rounded-bs-xl{border-bottom-right-radius:24px !important;border-bottom-left-radius:0 !important;}.mud-application-layout-rtl .rounded-be-xl{border-bottom-left-radius:24px !important;border-bottom-right-radius:0 !important;}.rounded{border-radius:var(--mud-default-borderradius) !important;}.rounded-t{border-top-left-radius:var(--mud-default-borderradius) !important;border-top-right-radius:var(--mud-default-borderradius) !important;}.rounded-r,.rounded-e{border-top-right-radius:var(--mud-default-borderradius) !important;border-bottom-right-radius:var(--mud-default-borderradius) !important;}.rounded-b{border-bottom-right-radius:var(--mud-default-borderradius) !important;border-bottom-left-radius:var(--mud-default-borderradius) !important;}.rounded-l,.rounded-s{border-top-left-radius:var(--mud-default-borderradius) !important;border-bottom-left-radius:var(--mud-default-borderradius) !important;}.rounded-tl,.rounded-ts{border-top-left-radius:var(--mud-default-borderradius) !important;}.rounded-tr,.rounded-te{border-top-right-radius:var(--mud-default-borderradius) !important;}.rounded-br,.rounded-be{border-bottom-right-radius:var(--mud-default-borderradius) !important;}.rounded-bl,.rounded-bs{border-bottom-left-radius:var(--mud-default-borderradius) !important;}.mud-application-layout-rtl .rounded-s{border-top-right-radius:var(--mud-default-borderradius) !important;border-bottom-right-radius:var(--mud-default-borderradius) !important;border-top-left-radius:0 !important;border-bottom-left-radius:0 !important;}.mud-application-layout-rtl .rounded-e{border-top-left-radius:var(--mud-default-borderradius) !important;border-bottom-left-radius:var(--mud-default-borderradius) !important;border-top-right-radius:0 !important;border-bottom-right-radius:0 !important;}.mud-application-layout-rtl .rounded-ts{border-top-right-radius:var(--mud-default-borderradius) !important;border-top-left-radius:0 !important;}.mud-application-layout-rtl .rounded-te{border-top-left-radius:var(--mud-default-borderradius) !important;border-top-right-radius:0 !important;}.mud-application-layout-rtl .rounded-bs{border-bottom-right-radius:var(--mud-default-borderradius) !important;border-bottom-left-radius:0 !important;}.mud-application-layout-rtl .rounded-be{border-bottom-left-radius:var(--mud-default-borderradius) !important;border-bottom-right-radius:0 !important;}.rounded-circle{border-radius:50% !important;}.rounded-pill{border-radius:9999px !important;}.border-solid{border-style:solid !important;}.border-dashed{border-style:dashed !important;}.border-dotted{border-style:dotted !important;}.border-double{border-style:double !important;}.border-hidden{border-style:hidden !important;}.border-none{border-style:none !important;}.border-0{border-width:0 !important;}.border-t-0{border-top-width:0 !important;}.border-r-0{border-right-width:0 !important;}.border-b-0{border-bottom-width:0 !important;}.border-l-0{border-left-width:0 !important;}.border-x-0{border-left-width:0 !important;border-right-width:0 !important;}.border-y-0{border-top-width:0 !important;border-bottom-width:0 !important;}.border{border-width:1px !important;}.border-t{border-top-width:1px !important;}.border-r{border-right-width:1px !important;}.border-b{border-bottom-width:1px !important;}.border-l{border-left-width:1px !important;}.border-x{border-left-width:1px !important;border-right-width:1px !important;}.border-y{border-top-width:1px !important;border-bottom-width:1px !important;}.border-2{border-width:2px !important;}.border-t-2{border-top-width:2px !important;}.border-r-2{border-right-width:2px !important;}.border-b-2{border-bottom-width:2px !important;}.border-l-2{border-left-width:2px !important;}.border-x-2{border-left-width:2px !important;border-right-width:2px !important;}.border-y-2{border-top-width:2px !important;border-bottom-width:2px !important;}.border-4{border-width:4px !important;}.border-t-4{border-top-width:4px !important;}.border-r-4{border-right-width:4px !important;}.border-b-4{border-bottom-width:4px !important;}.border-l-4{border-left-width:4px !important;}.border-x-4{border-left-width:4px !important;border-right-width:4px !important;}.border-y-4{border-top-width:4px !important;border-bottom-width:4px !important;}.border-8{border-width:8px !important;}.border-t-8{border-top-width:8px !important;}.border-r-8{border-right-width:8px !important;}.border-b-8{border-bottom-width:8px !important;}.border-l-8{border-left-width:8px !important;}.border-x-8{border-left-width:8px !important;border-right-width:8px !important;}.border-y-8{border-top-width:8px !important;border-bottom-width:8px !important;}.outline-none{outline-style:none;}.outline-solid{outline-style:solid;}.outline-dashed{outline-style:dashed;}.outline-dotted{outline-style:dotted;}.outline-double{outline-style:double;}.outline-hidden{outline-style:hidden;}.flex-1{flex:1 1 0% !important;}.flex-auto{flex:1 1 auto !important;}.flex-initial{flex:0 1 auto !important;}.flex-none{flex:none !important;}.flex-row{flex-direction:row !important;}.flex-row-reverse{flex-direction:row-reverse !important;}.flex-column{flex-direction:column !important;}.flex-column-reverse{flex-direction:column-reverse !important;}.flex-grow-0{flex-grow:0 !important;}.flex-grow-1{flex-grow:1 !important;}.flex-shrink-0{flex-shrink:0 !important;}.flex-shrink-1{flex-shrink:1 !important;}.flex-wrap{flex-wrap:wrap !important;}.flex-nowrap{flex-wrap:nowrap !important;}.flex-wrap-reverse{flex-wrap:wrap-reverse !important;}.justify-start{justify-content:flex-start !important;}.justify-end{justify-content:flex-end !important;}.justify-center{justify-content:center !important;}.justify-space-between{justify-content:space-between !important;}.justify-space-around{justify-content:space-around !important;}.justify-space-evenly{justify-content:space-evenly !important;}.order-first{order:-9999 !important;}.order-last{order:9999 !important;}.order-0{order:0 !important;}.order-1{order:1 !important;}.order-2{order:2 !important;}.order-3{order:3 !important;}.order-4{order:4 !important;}.order-5{order:5 !important;}.order-6{order:6 !important;}.order-7{order:7 !important;}.order-8{order:8 !important;}.order-9{order:9 !important;}.order-10{order:10 !important;}.order-11{order:11 !important;}.order-12{order:12 !important;}.align-content-start{align-content:flex-start !important;}.align-content-end{align-content:flex-end !important;}.align-content-center{align-content:center !important;}.align-content-space-between{align-content:space-between !important;}.align-content-space-around{align-content:space-around !important;}.align-content-stretch{align-content:stretch !important;}.align-start{align-items:flex-start !important;}.align-end{align-items:flex-end !important;}.align-center{align-items:center !important;}.align-baseline{align-items:baseline !important;}.align-stretch{align-items:stretch !important;}.align-self-auto{align-self:auto !important;}.align-self-start{align-self:flex-start !important;}.align-self-end{align-self:flex-end !important;}.align-self-center{align-self:center !important;}.align-self-stretch{align-self:stretch !important;}.gap-0{gap:0;}.gap-x-0{column-gap:0;}.gap-y-0{row-gap:0;}.gap-1{gap:4px;}.gap-x-1{column-gap:4px;}.gap-y-1{row-gap:4px;}.gap-2{gap:8px;}.gap-x-2{column-gap:8px;}.gap-y-2{row-gap:8px;}.gap-3{gap:12px;}.gap-x-3{column-gap:12px;}.gap-y-3{row-gap:12px;}.gap-4{gap:16px;}.gap-x-4{column-gap:16px;}.gap-y-4{row-gap:16px;}.gap-5{gap:20px;}.gap-x-5{column-gap:20px;}.gap-y-5{row-gap:20px;}.gap-6{gap:24px;}.gap-x-6{column-gap:24px;}.gap-y-6{row-gap:24px;}.gap-7{gap:28px;}.gap-x-7{column-gap:28px;}.gap-y-7{row-gap:28px;}.gap-8{gap:32px;}.gap-x-8{column-gap:32px;}.gap-y-8{row-gap:32px;}.gap-9{gap:36px;}.gap-x-9{column-gap:36px;}.gap-y-9{row-gap:36px;}.gap-10{gap:40px;}.gap-x-10{column-gap:40px;}.gap-y-10{row-gap:40px;}.gap-11{gap:44px;}.gap-x-11{column-gap:44px;}.gap-y-11{row-gap:44px;}.gap-12{gap:48px;}.gap-x-12{column-gap:48px;}.gap-y-12{row-gap:48px;}.gap-13{gap:52px;}.gap-x-13{column-gap:52px;}.gap-y-13{row-gap:52px;}.gap-14{gap:56px;}.gap-x-14{column-gap:56px;}.gap-y-14{row-gap:56px;}.gap-15{gap:60px;}.gap-x-15{column-gap:60px;}.gap-y-15{row-gap:60px;}.gap-16{gap:64px;}.gap-x-16{column-gap:64px;}.gap-y-16{row-gap:64px;}@media(min-width:600px){.flex-sm-1{flex:1 1 0% !important;}.flex-sm-auto{flex:1 1 auto !important;}.flex-sm-initial{flex:0 1 auto !important;}.flex-sm-none{flex:none !important;}.flex-sm-row{flex-direction:row !important;}.flex-sm-row-reverse{flex-direction:row-reverse !important;}.flex-sm-column{flex-direction:column !important;}.flex-sm-column-reverse{flex-direction:column-reverse !important;}.flex-sm-grow-0{flex-grow:0 !important;}.flex-sm-grow-1{flex-grow:1 !important;}.flex-sm-shrink-0{flex-shrink:0 !important;}.flex-sm-shrink-1{flex-shrink:1 !important;}.flex-sm-wrap{flex-wrap:wrap !important;}.flex-sm-nowrap{flex-wrap:nowrap !important;}.flex-sm-wrap-reverse{flex-wrap:wrap-reverse !important;}.justify-sm-start{justify-content:flex-start !important;}.justify-sm-end{justify-content:flex-end !important;}.justify-sm-center{justify-content:center !important;}.justify-sm-space-between{justify-content:space-between !important;}.justify-sm-space-around{justify-content:space-around !important;}.justify-sm-space-evenly{justify-content:space-evenly !important;}.order-sm-first{order:-9999 !important;}.order-sm-last{order:9999 !important;}.order-sm-0{order:0 !important;}.order-sm-1{order:1 !important;}.order-sm-2{order:2 !important;}.order-sm-3{order:3 !important;}.order-sm-4{order:4 !important;}.order-sm-5{order:5 !important;}.order-sm-6{order:6 !important;}.order-sm-7{order:7 !important;}.order-sm-8{order:8 !important;}.order-sm-9{order:9 !important;}.order-sm-10{order:10 !important;}.order-sm-11{order:11 !important;}.order-sm-12{order:12 !important;}.align-content-sm-start{align-content:flex-start !important;}.align-content-sm-end{align-content:flex-end !important;}.align-content-sm-center{align-content:center !important;}.align-content-sm-space-between{align-content:space-between !important;}.align-content-sm-space-around{align-content:space-around !important;}.align-content-sm-stretch{align-content:stretch !important;}.align-sm-start{align-items:flex-start !important;}.align-sm-end{align-items:flex-end !important;}.align-sm-center{align-items:center !important;}.align-sm-baseline{align-items:baseline !important;}.align-sm-stretch{align-items:stretch !important;}.align-self-sm-auto{align-self:auto !important;}.align-self-sm-start{align-self:flex-start !important;}.align-self-sm-end{align-self:flex-end !important;}.align-self-sm-center{align-self:center !important;}.align-self-sm-stretch{align-self:stretch !important;}.gap-sm-0{gap:0;}.gap-x-sm-0{column-gap:0;}.gap-y-sm-0{row-gap:0;}.gap-sm-1{gap:4px;}.gap-x-sm-1{column-gap:4px;}.gap-y-sm-1{row-gap:4px;}.gap-sm-2{gap:8px;}.gap-x-sm-2{column-gap:8px;}.gap-y-sm-2{row-gap:8px;}.gap-sm-3{gap:12px;}.gap-x-sm-3{column-gap:12px;}.gap-y-sm-3{row-gap:12px;}.gap-sm-4{gap:16px;}.gap-x-sm-4{column-gap:16px;}.gap-y-sm-4{row-gap:16px;}.gap-sm-5{gap:20px;}.gap-x-sm-5{column-gap:20px;}.gap-y-sm-5{row-gap:20px;}.gap-sm-6{gap:24px;}.gap-x-sm-6{column-gap:24px;}.gap-y-sm-6{row-gap:24px;}.gap-sm-7{gap:28px;}.gap-x-sm-7{column-gap:28px;}.gap-y-sm-7{row-gap:28px;}.gap-sm-8{gap:32px;}.gap-x-sm-8{column-gap:32px;}.gap-y-sm-8{row-gap:32px;}.gap-sm-9{gap:36px;}.gap-x-sm-9{column-gap:36px;}.gap-y-sm-9{row-gap:36px;}.gap-sm-10{gap:40px;}.gap-x-sm-10{column-gap:40px;}.gap-y-sm-10{row-gap:40px;}.gap-sm-11{gap:44px;}.gap-x-sm-11{column-gap:44px;}.gap-y-sm-11{row-gap:44px;}.gap-sm-12{gap:48px;}.gap-x-sm-12{column-gap:48px;}.gap-y-sm-12{row-gap:48px;}.gap-sm-13{gap:52px;}.gap-x-sm-13{column-gap:52px;}.gap-y-sm-13{row-gap:52px;}.gap-sm-14{gap:56px;}.gap-x-sm-14{column-gap:56px;}.gap-y-sm-14{row-gap:56px;}.gap-sm-15{gap:60px;}.gap-x-sm-15{column-gap:60px;}.gap-y-sm-15{row-gap:60px;}.gap-sm-16{gap:64px;}.gap-x-sm-16{column-gap:64px;}.gap-y-sm-16{row-gap:64px;}}@media(min-width:960px){.flex-md-1{flex:1 1 0% !important;}.flex-md-auto{flex:1 1 auto !important;}.flex-md-initial{flex:0 1 auto !important;}.flex-md-none{flex:none !important;}.flex-md-row{flex-direction:row !important;}.flex-md-row-reverse{flex-direction:row-reverse !important;}.flex-md-column{flex-direction:column !important;}.flex-md-column-reverse{flex-direction:column-reverse !important;}.flex-md-grow-0{flex-grow:0 !important;}.flex-md-grow-1{flex-grow:1 !important;}.flex-md-shrink-0{flex-shrink:0 !important;}.flex-md-shrink-1{flex-shrink:1 !important;}.flex-md-wrap{flex-wrap:wrap !important;}.flex-md-nowrap{flex-wrap:nowrap !important;}.flex-md-wrap-reverse{flex-wrap:wrap-reverse !important;}.justify-md-start{justify-content:flex-start !important;}.justify-md-end{justify-content:flex-end !important;}.justify-md-center{justify-content:center !important;}.justify-md-space-between{justify-content:space-between !important;}.justify-md-space-around{justify-content:space-around !important;}.justify-md-space-evenly{justify-content:space-evenly !important;}.order-md-first{order:-9999 !important;}.order-md-last{order:9999 !important;}.order-md-0{order:0 !important;}.order-md-1{order:1 !important;}.order-md-2{order:2 !important;}.order-md-3{order:3 !important;}.order-md-4{order:4 !important;}.order-md-5{order:5 !important;}.order-md-6{order:6 !important;}.order-md-7{order:7 !important;}.order-md-8{order:8 !important;}.order-md-9{order:9 !important;}.order-md-10{order:10 !important;}.order-md-11{order:11 !important;}.order-md-12{order:12 !important;}.align-content-md-start{align-content:flex-start !important;}.align-content-md-end{align-content:flex-end !important;}.align-content-md-center{align-content:center !important;}.align-content-md-space-between{align-content:space-between !important;}.align-content-md-space-around{align-content:space-around !important;}.align-content-md-stretch{align-content:stretch !important;}.align-md-start{align-items:flex-start !important;}.align-md-end{align-items:flex-end !important;}.align-md-center{align-items:center !important;}.align-md-baseline{align-items:baseline !important;}.align-md-stretch{align-items:stretch !important;}.align-self-md-auto{align-self:auto !important;}.align-self-md-start{align-self:flex-start !important;}.align-self-md-end{align-self:flex-end !important;}.align-self-md-center{align-self:center !important;}.align-self-md-stretch{align-self:stretch !important;}.gap-md-0{gap:0;}.gap-x-md-0{column-gap:0;}.gap-y-md-0{row-gap:0;}.gap-md-1{gap:4px;}.gap-x-md-1{column-gap:4px;}.gap-y-md-1{row-gap:4px;}.gap-md-2{gap:8px;}.gap-x-md-2{column-gap:8px;}.gap-y-md-2{row-gap:8px;}.gap-md-3{gap:12px;}.gap-x-md-3{column-gap:12px;}.gap-y-md-3{row-gap:12px;}.gap-md-4{gap:16px;}.gap-x-md-4{column-gap:16px;}.gap-y-md-4{row-gap:16px;}.gap-md-5{gap:20px;}.gap-x-md-5{column-gap:20px;}.gap-y-md-5{row-gap:20px;}.gap-md-6{gap:24px;}.gap-x-md-6{column-gap:24px;}.gap-y-md-6{row-gap:24px;}.gap-md-7{gap:28px;}.gap-x-md-7{column-gap:28px;}.gap-y-md-7{row-gap:28px;}.gap-md-8{gap:32px;}.gap-x-md-8{column-gap:32px;}.gap-y-md-8{row-gap:32px;}.gap-md-9{gap:36px;}.gap-x-md-9{column-gap:36px;}.gap-y-md-9{row-gap:36px;}.gap-md-10{gap:40px;}.gap-x-md-10{column-gap:40px;}.gap-y-md-10{row-gap:40px;}.gap-md-11{gap:44px;}.gap-x-md-11{column-gap:44px;}.gap-y-md-11{row-gap:44px;}.gap-md-12{gap:48px;}.gap-x-md-12{column-gap:48px;}.gap-y-md-12{row-gap:48px;}.gap-md-13{gap:52px;}.gap-x-md-13{column-gap:52px;}.gap-y-md-13{row-gap:52px;}.gap-md-14{gap:56px;}.gap-x-md-14{column-gap:56px;}.gap-y-md-14{row-gap:56px;}.gap-md-15{gap:60px;}.gap-x-md-15{column-gap:60px;}.gap-y-md-15{row-gap:60px;}.gap-md-16{gap:64px;}.gap-x-md-16{column-gap:64px;}.gap-y-md-16{row-gap:64px;}}@media(min-width:1280px){.flex-lg-1{flex:1 1 0% !important;}.flex-lg-auto{flex:1 1 auto !important;}.flex-lg-initial{flex:0 1 auto !important;}.flex-lg-none{flex:none !important;}.flex-lg-row{flex-direction:row !important;}.flex-lg-row-reverse{flex-direction:row-reverse !important;}.flex-lg-column{flex-direction:column !important;}.flex-lg-column-reverse{flex-direction:column-reverse !important;}.flex-lg-grow-0{flex-grow:0 !important;}.flex-lg-grow-1{flex-grow:1 !important;}.flex-lg-shrink-0{flex-shrink:0 !important;}.flex-lg-shrink-1{flex-shrink:1 !important;}.flex-lg-wrap{flex-wrap:wrap !important;}.flex-lg-nowrap{flex-wrap:nowrap !important;}.flex-lg-wrap-reverse{flex-wrap:wrap-reverse !important;}.justify-lg-start{justify-content:flex-start !important;}.justify-lg-end{justify-content:flex-end !important;}.justify-lg-center{justify-content:center !important;}.justify-lg-space-between{justify-content:space-between !important;}.justify-lg-space-around{justify-content:space-around !important;}.justify-lg-space-evenly{justify-content:space-evenly !important;}.order-lg-first{order:-9999 !important;}.order-lg-last{order:9999 !important;}.order-lg-0{order:0 !important;}.order-lg-1{order:1 !important;}.order-lg-2{order:2 !important;}.order-lg-3{order:3 !important;}.order-lg-4{order:4 !important;}.order-lg-5{order:5 !important;}.order-lg-6{order:6 !important;}.order-lg-7{order:7 !important;}.order-lg-8{order:8 !important;}.order-lg-9{order:9 !important;}.order-lg-10{order:10 !important;}.order-lg-11{order:11 !important;}.order-lg-12{order:12 !important;}.align-content-lg-start{align-content:flex-start !important;}.align-content-lg-end{align-content:flex-end !important;}.align-content-lg-center{align-content:center !important;}.align-content-lg-space-between{align-content:space-between !important;}.align-content-lg-space-around{align-content:space-around !important;}.align-content-lg-stretch{align-content:stretch !important;}.align-lg-start{align-items:flex-start !important;}.align-lg-end{align-items:flex-end !important;}.align-lg-center{align-items:center !important;}.align-lg-baseline{align-items:baseline !important;}.align-lg-stretch{align-items:stretch !important;}.align-self-lg-auto{align-self:auto !important;}.align-self-lg-start{align-self:flex-start !important;}.align-self-lg-end{align-self:flex-end !important;}.align-self-lg-center{align-self:center !important;}.align-self-lg-stretch{align-self:stretch !important;}.gap-lg-0{gap:0;}.gap-x-lg-0{column-gap:0;}.gap-y-lg-0{row-gap:0;}.gap-lg-1{gap:4px;}.gap-x-lg-1{column-gap:4px;}.gap-y-lg-1{row-gap:4px;}.gap-lg-2{gap:8px;}.gap-x-lg-2{column-gap:8px;}.gap-y-lg-2{row-gap:8px;}.gap-lg-3{gap:12px;}.gap-x-lg-3{column-gap:12px;}.gap-y-lg-3{row-gap:12px;}.gap-lg-4{gap:16px;}.gap-x-lg-4{column-gap:16px;}.gap-y-lg-4{row-gap:16px;}.gap-lg-5{gap:20px;}.gap-x-lg-5{column-gap:20px;}.gap-y-lg-5{row-gap:20px;}.gap-lg-6{gap:24px;}.gap-x-lg-6{column-gap:24px;}.gap-y-lg-6{row-gap:24px;}.gap-lg-7{gap:28px;}.gap-x-lg-7{column-gap:28px;}.gap-y-lg-7{row-gap:28px;}.gap-lg-8{gap:32px;}.gap-x-lg-8{column-gap:32px;}.gap-y-lg-8{row-gap:32px;}.gap-lg-9{gap:36px;}.gap-x-lg-9{column-gap:36px;}.gap-y-lg-9{row-gap:36px;}.gap-lg-10{gap:40px;}.gap-x-lg-10{column-gap:40px;}.gap-y-lg-10{row-gap:40px;}.gap-lg-11{gap:44px;}.gap-x-lg-11{column-gap:44px;}.gap-y-lg-11{row-gap:44px;}.gap-lg-12{gap:48px;}.gap-x-lg-12{column-gap:48px;}.gap-y-lg-12{row-gap:48px;}.gap-lg-13{gap:52px;}.gap-x-lg-13{column-gap:52px;}.gap-y-lg-13{row-gap:52px;}.gap-lg-14{gap:56px;}.gap-x-lg-14{column-gap:56px;}.gap-y-lg-14{row-gap:56px;}.gap-lg-15{gap:60px;}.gap-x-lg-15{column-gap:60px;}.gap-y-lg-15{row-gap:60px;}.gap-lg-16{gap:64px;}.gap-x-lg-16{column-gap:64px;}.gap-y-lg-16{row-gap:64px;}}@media(min-width:1920px){.flex-xl-1{flex:1 1 0% !important;}.flex-xl-auto{flex:1 1 auto !important;}.flex-xl-initial{flex:0 1 auto !important;}.flex-xl-none{flex:none !important;}.flex-xl-row{flex-direction:row !important;}.flex-xl-row-reverse{flex-direction:row-reverse !important;}.flex-xl-column{flex-direction:column !important;}.flex-xl-column-reverse{flex-direction:column-reverse !important;}.flex-xl-grow-0{flex-grow:0 !important;}.flex-xl-grow-1{flex-grow:1 !important;}.flex-xl-shrink-0{flex-shrink:0 !important;}.flex-xl-shrink-1{flex-shrink:1 !important;}.flex-xl-wrap{flex-wrap:wrap !important;}.flex-xl-nowrap{flex-wrap:nowrap !important;}.flex-xl-wrap-reverse{flex-wrap:wrap-reverse !important;}.justify-xl-start{justify-content:flex-start !important;}.justify-xl-end{justify-content:flex-end !important;}.justify-xl-center{justify-content:center !important;}.justify-xl-space-between{justify-content:space-between !important;}.justify-xl-space-around{justify-content:space-around !important;}.justify-xl-space-evenly{justify-content:space-evenly !important;}.order-xl-first{order:-9999 !important;}.order-xl-last{order:9999 !important;}.order-xl-0{order:0 !important;}.order-xl-1{order:1 !important;}.order-xl-2{order:2 !important;}.order-xl-3{order:3 !important;}.order-xl-4{order:4 !important;}.order-xl-5{order:5 !important;}.order-xl-6{order:6 !important;}.order-xl-7{order:7 !important;}.order-xl-8{order:8 !important;}.order-xl-9{order:9 !important;}.order-xl-10{order:10 !important;}.order-xl-11{order:11 !important;}.order-xl-12{order:12 !important;}.align-content-xl-start{align-content:flex-start !important;}.align-content-xl-end{align-content:flex-end !important;}.align-content-xl-center{align-content:center !important;}.align-content-xl-space-between{align-content:space-between !important;}.align-content-xl-space-around{align-content:space-around !important;}.align-content-xl-stretch{align-content:stretch !important;}.align-xl-start{align-items:flex-start !important;}.align-xl-end{align-items:flex-end !important;}.align-xl-center{align-items:center !important;}.align-xl-baseline{align-items:baseline !important;}.align-xl-stretch{align-items:stretch !important;}.align-self-xl-auto{align-self:auto !important;}.align-self-xl-start{align-self:flex-start !important;}.align-self-xl-end{align-self:flex-end !important;}.align-self-xl-center{align-self:center !important;}.align-self-xl-stretch{align-self:stretch !important;}.gap-xl-0{gap:0;}.gap-x-xl-0{column-gap:0;}.gap-y-xl-0{row-gap:0;}.gap-xl-1{gap:4px;}.gap-x-xl-1{column-gap:4px;}.gap-y-xl-1{row-gap:4px;}.gap-xl-2{gap:8px;}.gap-x-xl-2{column-gap:8px;}.gap-y-xl-2{row-gap:8px;}.gap-xl-3{gap:12px;}.gap-x-xl-3{column-gap:12px;}.gap-y-xl-3{row-gap:12px;}.gap-xl-4{gap:16px;}.gap-x-xl-4{column-gap:16px;}.gap-y-xl-4{row-gap:16px;}.gap-xl-5{gap:20px;}.gap-x-xl-5{column-gap:20px;}.gap-y-xl-5{row-gap:20px;}.gap-xl-6{gap:24px;}.gap-x-xl-6{column-gap:24px;}.gap-y-xl-6{row-gap:24px;}.gap-xl-7{gap:28px;}.gap-x-xl-7{column-gap:28px;}.gap-y-xl-7{row-gap:28px;}.gap-xl-8{gap:32px;}.gap-x-xl-8{column-gap:32px;}.gap-y-xl-8{row-gap:32px;}.gap-xl-9{gap:36px;}.gap-x-xl-9{column-gap:36px;}.gap-y-xl-9{row-gap:36px;}.gap-xl-10{gap:40px;}.gap-x-xl-10{column-gap:40px;}.gap-y-xl-10{row-gap:40px;}.gap-xl-11{gap:44px;}.gap-x-xl-11{column-gap:44px;}.gap-y-xl-11{row-gap:44px;}.gap-xl-12{gap:48px;}.gap-x-xl-12{column-gap:48px;}.gap-y-xl-12{row-gap:48px;}.gap-xl-13{gap:52px;}.gap-x-xl-13{column-gap:52px;}.gap-y-xl-13{row-gap:52px;}.gap-xl-14{gap:56px;}.gap-x-xl-14{column-gap:56px;}.gap-y-xl-14{row-gap:56px;}.gap-xl-15{gap:60px;}.gap-x-xl-15{column-gap:60px;}.gap-y-xl-15{row-gap:60px;}.gap-xl-16{gap:64px;}.gap-x-xl-16{column-gap:64px;}.gap-y-xl-16{row-gap:64px;}}@media(min-width:2560px){.flex-xxl-1{flex:1 1 0% !important;}.flex-xxl-auto{flex:1 1 auto !important;}.flex-xxl-initial{flex:0 1 auto !important;}.flex-xxl-none{flex:none !important;}.flex-xxl-row{flex-direction:row !important;}.flex-xxl-row-reverse{flex-direction:row-reverse !important;}.flex-xxl-column{flex-direction:column !important;}.flex-xxl-column-reverse{flex-direction:column-reverse !important;}.flex-xxl-grow-0{flex-grow:0 !important;}.flex-xxl-grow-1{flex-grow:1 !important;}.flex-xxl-shrink-0{flex-shrink:0 !important;}.flex-xxl-shrink-1{flex-shrink:1 !important;}.flex-xxl-wrap{flex-wrap:wrap !important;}.flex-xxl-nowrap{flex-wrap:nowrap !important;}.flex-xxl-wrap-reverse{flex-wrap:wrap-reverse !important;}.justify-xxl-start{justify-content:flex-start !important;}.justify-xxl-end{justify-content:flex-end !important;}.justify-xxl-center{justify-content:center !important;}.justify-xxl-space-between{justify-content:space-between !important;}.justify-xxl-space-around{justify-content:space-around !important;}.justify-xxl-space-evenly{justify-content:space-evenly !important;}.order-xxl-first{order:-9999 !important;}.order-xxl-last{order:9999 !important;}.order-xxl-0{order:0 !important;}.order-xxl-1{order:1 !important;}.order-xxl-2{order:2 !important;}.order-xxl-3{order:3 !important;}.order-xxl-4{order:4 !important;}.order-xxl-5{order:5 !important;}.order-xxl-6{order:6 !important;}.order-xxl-7{order:7 !important;}.order-xxl-8{order:8 !important;}.order-xxl-9{order:9 !important;}.order-xxl-10{order:10 !important;}.order-xxl-11{order:11 !important;}.order-xxl-12{order:12 !important;}.align-content-xxl-start{align-content:flex-start !important;}.align-content-xxl-end{align-content:flex-end !important;}.align-content-xxl-center{align-content:center !important;}.align-content-xxl-space-between{align-content:space-between !important;}.align-content-xxl-space-around{align-content:space-around !important;}.align-content-xxl-stretch{align-content:stretch !important;}.align-xxl-start{align-items:flex-start !important;}.align-xxl-end{align-items:flex-end !important;}.align-xxl-center{align-items:center !important;}.align-xxl-baseline{align-items:baseline !important;}.align-xxl-stretch{align-items:stretch !important;}.align-self-xxl-auto{align-self:auto !important;}.align-self-xxl-start{align-self:flex-start !important;}.align-self-xxl-end{align-self:flex-end !important;}.align-self-xxl-center{align-self:center !important;}.align-self-xxl-stretch{align-self:stretch !important;}.gap-xxl-0{gap:0;}.gap-x-xxl-0{column-gap:0;}.gap-y-xxl-0{row-gap:0;}.gap-xxl-1{gap:4px;}.gap-x-xxl-1{column-gap:4px;}.gap-y-xxl-1{row-gap:4px;}.gap-xxl-2{gap:8px;}.gap-x-xxl-2{column-gap:8px;}.gap-y-xxl-2{row-gap:8px;}.gap-xxl-3{gap:12px;}.gap-x-xxl-3{column-gap:12px;}.gap-y-xxl-3{row-gap:12px;}.gap-xxl-4{gap:16px;}.gap-x-xxl-4{column-gap:16px;}.gap-y-xxl-4{row-gap:16px;}.gap-xxl-5{gap:20px;}.gap-x-xxl-5{column-gap:20px;}.gap-y-xxl-5{row-gap:20px;}.gap-xxl-6{gap:24px;}.gap-x-xxl-6{column-gap:24px;}.gap-y-xxl-6{row-gap:24px;}.gap-xxl-7{gap:28px;}.gap-x-xxl-7{column-gap:28px;}.gap-y-xxl-7{row-gap:28px;}.gap-xxl-8{gap:32px;}.gap-x-xxl-8{column-gap:32px;}.gap-y-xxl-8{row-gap:32px;}.gap-xxl-9{gap:36px;}.gap-x-xxl-9{column-gap:36px;}.gap-y-xxl-9{row-gap:36px;}.gap-xxl-10{gap:40px;}.gap-x-xxl-10{column-gap:40px;}.gap-y-xxl-10{row-gap:40px;}.gap-xxl-11{gap:44px;}.gap-x-xxl-11{column-gap:44px;}.gap-y-xxl-11{row-gap:44px;}.gap-xxl-12{gap:48px;}.gap-x-xxl-12{column-gap:48px;}.gap-y-xxl-12{row-gap:48px;}.gap-xxl-13{gap:52px;}.gap-x-xxl-13{column-gap:52px;}.gap-y-xxl-13{row-gap:52px;}.gap-xxl-14{gap:56px;}.gap-x-xxl-14{column-gap:56px;}.gap-y-xxl-14{row-gap:56px;}.gap-xxl-15{gap:60px;}.gap-x-xxl-15{column-gap:60px;}.gap-y-xxl-15{row-gap:60px;}.gap-xxl-16{gap:64px;}.gap-x-xxl-16{column-gap:64px;}.gap-y-xxl-16{row-gap:64px;}}.cursor-auto{cursor:auto !important;}.cursor-default{cursor:default !important;}.cursor-pointer{cursor:pointer !important;}.cursor-wait{cursor:wait !important;}.cursor-text{cursor:text !important;}.cursor-move{cursor:move !important;}.cursor-help{cursor:help !important;}.cursor-not-allowed{cursor:not-allowed !important;}.cursor-none{cursor:none !important;}.cursor-progress{cursor:progress !important;}.cursor-cell{cursor:cell !important;}.cursor-crosshair{cursor:crosshair !important;}.cursor-vertical-text{cursor:vertical-text !important;}.cursor-alias{cursor:alias !important;}.cursor-copy{cursor:copy !important;}.cursor-no-drop{cursor:no-drop !important;}.cursor-grab{cursor:grab !important;}.cursor-grabbing{cursor:grabbing !important;}.cursor-all-scroll{cursor:all-scroll !important;}.cursor-col-resize{cursor:col-resize !important;}.cursor-row-resize{cursor:row-resize !important;}.cursor-n-resize{cursor:n-resize !important;}.cursor-w-resize{cursor:w-resize !important;}.cursor-zoom-in{cursor:zoom-in !important;}.cursor-zoom-out{cursor:zoom-out !important;}.cursor-url{cursor:url !important;}.pointer-events-none{pointer-events:none;}.pointer-events-auto{pointer-events:auto;}.d-none{display:none !important;}.d-inline{display:inline !important;}.d-inline-block{display:inline-block !important;}.d-block{display:block !important;}.d-table{display:table !important;}.d-table-row{display:table-row !important;}.d-table-cell{display:table-cell !important;}.d-flex{display:flex !important;}.d-inline-flex{display:inline-flex !important;}@media(min-width:600px){.d-sm-none{display:none !important;}.d-sm-inline{display:inline !important;}.d-sm-inline-block{display:inline-block !important;}.d-sm-block{display:block !important;}.d-sm-table{display:table !important;}.d-sm-table-row{display:table-row !important;}.d-sm-table-cell{display:table-cell !important;}.d-sm-flex{display:flex !important;}.d-sm-inline-flex{display:inline-flex !important;}}@media(min-width:960px){.d-md-none{display:none !important;}.d-md-inline{display:inline !important;}.d-md-inline-block{display:inline-block !important;}.d-md-block{display:block !important;}.d-md-table{display:table !important;}.d-md-table-row{display:table-row !important;}.d-md-table-cell{display:table-cell !important;}.d-md-flex{display:flex !important;}.d-md-inline-flex{display:inline-flex !important;}}@media(min-width:1280px){.d-lg-none{display:none !important;}.d-lg-inline{display:inline !important;}.d-lg-inline-block{display:inline-block !important;}.d-lg-block{display:block !important;}.d-lg-table{display:table !important;}.d-lg-table-row{display:table-row !important;}.d-lg-table-cell{display:table-cell !important;}.d-lg-flex{display:flex !important;}.d-lg-inline-flex{display:inline-flex !important;}}@media(min-width:1920px){.d-xl-none{display:none !important;}.d-xl-inline{display:inline !important;}.d-xl-inline-block{display:inline-block !important;}.d-xl-block{display:block !important;}.d-xl-table{display:table !important;}.d-xl-table-row{display:table-row !important;}.d-xl-table-cell{display:table-cell !important;}.d-xl-flex{display:flex !important;}.d-xl-inline-flex{display:inline-flex !important;}}@media(min-width:2560px){.d-xxl-none{display:none !important;}.d-xxl-inline{display:inline !important;}.d-xxl-inline-block{display:inline-block !important;}.d-xxl-block{display:block !important;}.d-xxl-table{display:table !important;}.d-xxl-table-row{display:table-row !important;}.d-xxl-table-cell{display:table-cell !important;}.d-xxl-flex{display:flex !important;}.d-xxl-inline-flex{display:inline-flex !important;}}.object-none{object-fit:none;}.object-cover{object-fit:cover;}.object-contain{object-fit:contain;}.object-fill{object-fit:fill;}.object-scale-down{object-fit:scale-down;}.object-center{object-position:center;}.object-top{object-position:top;}.object-bottom{object-position:bottom;}.object-left{object-position:left;}.object-left-top{object-position:left top;}.object-left-bottom{object-position:left bottom;}.object-right{object-position:right;}.object-right-top{object-position:right top;}.object-right-bottom{object-position:right bottom;}.overflow-auto{overflow:auto;}.overflow-hidden{overflow:hidden;}.overflow-visible{overflow:visible;}.overflow-scroll{overflow:scroll;}.overflow-x-auto{overflow-x:auto;}.overflow-y-auto{overflow-y:auto;}.overflow-x-hidden{overflow-x:hidden;}.overflow-y-hidden{overflow-y:hidden;}.overflow-x-visible{overflow-x:visible;}.overflow-y-visible{overflow-y:visible;}.overflow-x-scroll{overflow-x:scroll;}.overflow-y-scroll{overflow-y:scroll;}.absolute{position:absolute;}.fixed{position:fixed;}.relative{position:relative;}.static{position:static;}.sticky{position:sticky;}.visible{visibility:visible;}.invisible{visibility:hidden;}.z-0{z-index:0;}.z-10{z-index:10;}.z-20{z-index:20;}.z-30{z-index:30;}.z-40{z-index:40;}.z-50{z-index:50;}.z-60{z-index:60;}.z-70{z-index:70;}.z-80{z-index:80;}.z-90{z-index:90;}.z-100{z-index:100;}.z-auto{z-index:auto;}.mt-0,.my-0{margin-top:0 !important;}.mr-0,.mx-0{margin-right:0 !important;}.ml-0,.mx-0{margin-left:0 !important;}.mb-0,.my-0{margin-bottom:0 !important;}.ms-0{margin-inline-start:0 !important;}.me-0{margin-inline-end:0 !important;}.ma-0{margin:0 !important;}.mt-1,.my-1{margin-top:4px !important;}.mr-1,.mx-1{margin-right:4px !important;}.ml-1,.mx-1{margin-left:4px !important;}.mb-1,.my-1{margin-bottom:4px !important;}.ms-1{margin-inline-start:4px !important;}.me-1{margin-inline-end:4px !important;}.ma-1{margin:4px !important;}.mt-2,.my-2{margin-top:8px !important;}.mr-2,.mx-2{margin-right:8px !important;}.ml-2,.mx-2{margin-left:8px !important;}.mb-2,.my-2{margin-bottom:8px !important;}.ms-2{margin-inline-start:8px !important;}.me-2{margin-inline-end:8px !important;}.ma-2{margin:8px !important;}.mt-3,.my-3{margin-top:12px !important;}.mr-3,.mx-3{margin-right:12px !important;}.ml-3,.mx-3{margin-left:12px !important;}.mb-3,.my-3{margin-bottom:12px !important;}.ms-3{margin-inline-start:12px !important;}.me-3{margin-inline-end:12px !important;}.ma-3{margin:12px !important;}.mt-4,.my-4{margin-top:16px !important;}.mr-4,.mx-4{margin-right:16px !important;}.ml-4,.mx-4{margin-left:16px !important;}.mb-4,.my-4{margin-bottom:16px !important;}.ms-4{margin-inline-start:16px !important;}.me-4{margin-inline-end:16px !important;}.ma-4{margin:16px !important;}.mt-5,.my-5{margin-top:20px !important;}.mr-5,.mx-5{margin-right:20px !important;}.ml-5,.mx-5{margin-left:20px !important;}.mb-5,.my-5{margin-bottom:20px !important;}.ms-5{margin-inline-start:20px !important;}.me-5{margin-inline-end:20px !important;}.ma-5{margin:20px !important;}.mt-6,.my-6{margin-top:24px !important;}.mr-6,.mx-6{margin-right:24px !important;}.ml-6,.mx-6{margin-left:24px !important;}.mb-6,.my-6{margin-bottom:24px !important;}.ms-6{margin-inline-start:24px !important;}.me-6{margin-inline-end:24px !important;}.ma-6{margin:24px !important;}.mt-7,.my-7{margin-top:28px !important;}.mr-7,.mx-7{margin-right:28px !important;}.ml-7,.mx-7{margin-left:28px !important;}.mb-7,.my-7{margin-bottom:28px !important;}.ms-7{margin-inline-start:28px !important;}.me-7{margin-inline-end:28px !important;}.ma-7{margin:28px !important;}.mt-8,.my-8{margin-top:32px !important;}.mr-8,.mx-8{margin-right:32px !important;}.ml-8,.mx-8{margin-left:32px !important;}.mb-8,.my-8{margin-bottom:32px !important;}.ms-8{margin-inline-start:32px !important;}.me-8{margin-inline-end:32px !important;}.ma-8{margin:32px !important;}.mt-9,.my-9{margin-top:36px !important;}.mr-9,.mx-9{margin-right:36px !important;}.ml-9,.mx-9{margin-left:36px !important;}.mb-9,.my-9{margin-bottom:36px !important;}.ms-9{margin-inline-start:36px !important;}.me-9{margin-inline-end:36px !important;}.ma-9{margin:36px !important;}.mt-10,.my-10{margin-top:40px !important;}.mr-10,.mx-10{margin-right:40px !important;}.ml-10,.mx-10{margin-left:40px !important;}.mb-10,.my-10{margin-bottom:40px !important;}.ms-10{margin-inline-start:40px !important;}.me-10{margin-inline-end:40px !important;}.ma-10{margin:40px !important;}.mt-11,.my-11{margin-top:44px !important;}.mr-11,.mx-11{margin-right:44px !important;}.ml-11,.mx-11{margin-left:44px !important;}.mb-11,.my-11{margin-bottom:44px !important;}.ms-11{margin-inline-start:44px !important;}.me-11{margin-inline-end:44px !important;}.ma-11{margin:44px !important;}.mt-12,.my-12{margin-top:48px !important;}.mr-12,.mx-12{margin-right:48px !important;}.ml-12,.mx-12{margin-left:48px !important;}.mb-12,.my-12{margin-bottom:48px !important;}.ms-12{margin-inline-start:48px !important;}.me-12{margin-inline-end:48px !important;}.ma-12{margin:48px !important;}.mt-13,.my-13{margin-top:52px !important;}.mr-13,.mx-13{margin-right:52px !important;}.ml-13,.mx-13{margin-left:52px !important;}.mb-13,.my-13{margin-bottom:52px !important;}.ms-13{margin-inline-start:52px !important;}.me-13{margin-inline-end:52px !important;}.ma-13{margin:52px !important;}.mt-14,.my-14{margin-top:56px !important;}.mr-14,.mx-14{margin-right:56px !important;}.ml-14,.mx-14{margin-left:56px !important;}.mb-14,.my-14{margin-bottom:56px !important;}.ms-14{margin-inline-start:56px !important;}.me-14{margin-inline-end:56px !important;}.ma-14{margin:56px !important;}.mt-15,.my-15{margin-top:60px !important;}.mr-15,.mx-15{margin-right:60px !important;}.ml-15,.mx-15{margin-left:60px !important;}.mb-15,.my-15{margin-bottom:60px !important;}.ms-15{margin-inline-start:60px !important;}.me-15{margin-inline-end:60px !important;}.ma-15{margin:60px !important;}.mt-16,.my-16{margin-top:64px !important;}.mr-16,.mx-16{margin-right:64px !important;}.ml-16,.mx-16{margin-left:64px !important;}.mb-16,.my-16{margin-bottom:64px !important;}.ms-16{margin-inline-start:64px !important;}.me-16{margin-inline-end:64px !important;}.ma-16{margin:64px !important;}.mt-auto,.my-auto{margin-top:auto !important;}.mr-auto,.mx-auto{margin-right:auto !important;}.ml-auto,.mx-auto{margin-left:auto !important;}.mb-auto,.my-auto{margin-bottom:auto !important;}.ms-auto{margin-inline-start:auto !important;}.me-auto{margin-inline-end:auto !important;}.ma-auto{margin:auto !important;}.pt-0,.py-0{padding-top:0 !important;}.pr-0,.px-0{padding-right:0 !important;}.pl-0,.px-0{padding-left:0 !important;}.pb-0,.py-0{padding-bottom:0 !important;}.ps-0{padding-inline-start:0 !important;}.pe-0{padding-inline-end:0 !important;}.pa-0{padding:0 !important;}.pt-1,.py-1{padding-top:4px !important;}.pr-1,.px-1{padding-right:4px !important;}.pl-1,.px-1{padding-left:4px !important;}.pb-1,.py-1{padding-bottom:4px !important;}.ps-1{padding-inline-start:4px !important;}.pe-1{padding-inline-end:4px !important;}.pa-1{padding:4px !important;}.pt-2,.py-2{padding-top:8px !important;}.pr-2,.px-2{padding-right:8px !important;}.pl-2,.px-2{padding-left:8px !important;}.pb-2,.py-2{padding-bottom:8px !important;}.ps-2{padding-inline-start:8px !important;}.pe-2{padding-inline-end:8px !important;}.pa-2{padding:8px !important;}.pt-3,.py-3{padding-top:12px !important;}.pr-3,.px-3{padding-right:12px !important;}.pl-3,.px-3{padding-left:12px !important;}.pb-3,.py-3{padding-bottom:12px !important;}.ps-3{padding-inline-start:12px !important;}.pe-3{padding-inline-end:12px !important;}.pa-3{padding:12px !important;}.pt-4,.py-4{padding-top:16px !important;}.pr-4,.px-4{padding-right:16px !important;}.pl-4,.px-4{padding-left:16px !important;}.pb-4,.py-4{padding-bottom:16px !important;}.ps-4{padding-inline-start:16px !important;}.pe-4{padding-inline-end:16px !important;}.pa-4{padding:16px !important;}.pt-5,.py-5{padding-top:20px !important;}.pr-5,.px-5{padding-right:20px !important;}.pl-5,.px-5{padding-left:20px !important;}.pb-5,.py-5{padding-bottom:20px !important;}.ps-5{padding-inline-start:20px !important;}.pe-5{padding-inline-end:20px !important;}.pa-5{padding:20px !important;}.pt-6,.py-6{padding-top:24px !important;}.pr-6,.px-6{padding-right:24px !important;}.pl-6,.px-6{padding-left:24px !important;}.pb-6,.py-6{padding-bottom:24px !important;}.ps-6{padding-inline-start:24px !important;}.pe-6{padding-inline-end:24px !important;}.pa-6{padding:24px !important;}.pt-7,.py-7{padding-top:28px !important;}.pr-7,.px-7{padding-right:28px !important;}.pl-7,.px-7{padding-left:28px !important;}.pb-7,.py-7{padding-bottom:28px !important;}.ps-7{padding-inline-start:28px !important;}.pe-7{padding-inline-end:28px !important;}.pa-7{padding:28px !important;}.pt-8,.py-8{padding-top:32px !important;}.pr-8,.px-8{padding-right:32px !important;}.pl-8,.px-8{padding-left:32px !important;}.pb-8,.py-8{padding-bottom:32px !important;}.ps-8{padding-inline-start:32px !important;}.pe-8{padding-inline-end:32px !important;}.pa-8{padding:32px !important;}.pt-9,.py-9{padding-top:36px !important;}.pr-9,.px-9{padding-right:36px !important;}.pl-9,.px-9{padding-left:36px !important;}.pb-9,.py-9{padding-bottom:36px !important;}.ps-9{padding-inline-start:36px !important;}.pe-9{padding-inline-end:36px !important;}.pa-9{padding:36px !important;}.pt-10,.py-10{padding-top:40px !important;}.pr-10,.px-10{padding-right:40px !important;}.pl-10,.px-10{padding-left:40px !important;}.pb-10,.py-10{padding-bottom:40px !important;}.ps-10{padding-inline-start:40px !important;}.pe-10{padding-inline-end:40px !important;}.pa-10{padding:40px !important;}.pt-11,.py-11{padding-top:44px !important;}.pr-11,.px-11{padding-right:44px !important;}.pl-11,.px-11{padding-left:44px !important;}.pb-11,.py-11{padding-bottom:44px !important;}.ps-11{padding-inline-start:44px !important;}.pe-11{padding-inline-end:44px !important;}.pa-11{padding:44px !important;}.pt-12,.py-12{padding-top:48px !important;}.pr-12,.px-12{padding-right:48px !important;}.pl-12,.px-12{padding-left:48px !important;}.pb-12,.py-12{padding-bottom:48px !important;}.ps-12{padding-inline-start:48px !important;}.pe-12{padding-inline-end:48px !important;}.pa-12{padding:48px !important;}.pt-13,.py-13{padding-top:52px !important;}.pr-13,.px-13{padding-right:52px !important;}.pl-13,.px-13{padding-left:52px !important;}.pb-13,.py-13{padding-bottom:52px !important;}.ps-13{padding-inline-start:52px !important;}.pe-13{padding-inline-end:52px !important;}.pa-13{padding:52px !important;}.pt-14,.py-14{padding-top:56px !important;}.pr-14,.px-14{padding-right:56px !important;}.pl-14,.px-14{padding-left:56px !important;}.pb-14,.py-14{padding-bottom:56px !important;}.ps-14{padding-inline-start:56px !important;}.pe-14{padding-inline-end:56px !important;}.pa-14{padding:56px !important;}.pt-15,.py-15{padding-top:60px !important;}.pr-15,.px-15{padding-right:60px !important;}.pl-15,.px-15{padding-left:60px !important;}.pb-15,.py-15{padding-bottom:60px !important;}.ps-15{padding-inline-start:60px !important;}.pe-15{padding-inline-end:60px !important;}.pa-15{padding:60px !important;}.pt-16,.py-16{padding-top:64px !important;}.pr-16,.px-16{padding-right:64px !important;}.pl-16,.px-16{padding-left:64px !important;}.pb-16,.py-16{padding-bottom:64px !important;}.ps-16{padding-inline-start:64px !important;}.pe-16{padding-inline-end:64px !important;}.pa-16{padding:64px !important;}.pt-auto,.py-auto{padding-top:auto !important;}.pr-auto,.px-auto{padding-right:auto !important;}.pl-auto,.px-auto{padding-left:auto !important;}.pb-auto,.py-auto{padding-bottom:auto !important;}.ps-auto{padding-inline-start:auto !important;}.pe-auto{padding-inline-end:auto !important;}.pa-auto{padding:auto !important;}.mt-n1,.my-n1{margin-top:-4px !important;}.mr-n1,.mx-n1{margin-right:-4px !important;}.ml-n1,.mx-n1{margin-left:-4px !important;}.mb-n1,.my-n1{margin-bottom:-4px !important;}.ms-n1{margin-inline-start:-4px !important;}.me-n1{margin-inline-end:-4px !important;}.ma-n1{margin:-4px !important;}.mt-n2,.my-n2{margin-top:-8px !important;}.mr-n2,.mx-n2{margin-right:-8px !important;}.ml-n2,.mx-n2{margin-left:-8px !important;}.mb-n2,.my-n2{margin-bottom:-8px !important;}.ms-n2{margin-inline-start:-8px !important;}.me-n2{margin-inline-end:-8px !important;}.ma-n2{margin:-8px !important;}.mt-n3,.my-n3{margin-top:-12px !important;}.mr-n3,.mx-n3{margin-right:-12px !important;}.ml-n3,.mx-n3{margin-left:-12px !important;}.mb-n3,.my-n3{margin-bottom:-12px !important;}.ms-n3{margin-inline-start:-12px !important;}.me-n3{margin-inline-end:-12px !important;}.ma-n3{margin:-12px !important;}.mt-n4,.my-n4{margin-top:-16px !important;}.mr-n4,.mx-n4{margin-right:-16px !important;}.ml-n4,.mx-n4{margin-left:-16px !important;}.mb-n4,.my-n4{margin-bottom:-16px !important;}.ms-n4{margin-inline-start:-16px !important;}.me-n4{margin-inline-end:-16px !important;}.ma-n4{margin:-16px !important;}.mt-n5,.my-n5{margin-top:-20px !important;}.mr-n5,.mx-n5{margin-right:-20px !important;}.ml-n5,.mx-n5{margin-left:-20px !important;}.mb-n5,.my-n5{margin-bottom:-20px !important;}.ms-n5{margin-inline-start:-20px !important;}.me-n5{margin-inline-end:-20px !important;}.ma-n5{margin:-20px !important;}.mt-n6,.my-n6{margin-top:-24px !important;}.mr-n6,.mx-n6{margin-right:-24px !important;}.ml-n6,.mx-n6{margin-left:-24px !important;}.mb-n6,.my-n6{margin-bottom:-24px !important;}.ms-n6{margin-inline-start:-24px !important;}.me-n6{margin-inline-end:-24px !important;}.ma-n6{margin:-24px !important;}.mt-n7,.my-n7{margin-top:-28px !important;}.mr-n7,.mx-n7{margin-right:-28px !important;}.ml-n7,.mx-n7{margin-left:-28px !important;}.mb-n7,.my-n7{margin-bottom:-28px !important;}.ms-n7{margin-inline-start:-28px !important;}.me-n7{margin-inline-end:-28px !important;}.ma-n7{margin:-28px !important;}.mt-n8,.my-n8{margin-top:-32px !important;}.mr-n8,.mx-n8{margin-right:-32px !important;}.ml-n8,.mx-n8{margin-left:-32px !important;}.mb-n8,.my-n8{margin-bottom:-32px !important;}.ms-n8{margin-inline-start:-32px !important;}.me-n8{margin-inline-end:-32px !important;}.ma-n8{margin:-32px !important;}.mt-n9,.my-n9{margin-top:-36px !important;}.mr-n9,.mx-n9{margin-right:-36px !important;}.ml-n9,.mx-n9{margin-left:-36px !important;}.mb-n9,.my-n9{margin-bottom:-36px !important;}.ms-n9{margin-inline-start:-36px !important;}.me-n9{margin-inline-end:-36px !important;}.ma-n9{margin:-36px !important;}.mt-n10,.my-n10{margin-top:-40px !important;}.mr-n10,.mx-n10{margin-right:-40px !important;}.ml-n10,.mx-n10{margin-left:-40px !important;}.mb-n10,.my-n10{margin-bottom:-40px !important;}.ms-n10{margin-inline-start:-40px !important;}.me-n10{margin-inline-end:-40px !important;}.ma-n10{margin:-40px !important;}.mt-n11,.my-n11{margin-top:-44px !important;}.mr-n11,.mx-n11{margin-right:-44px !important;}.ml-n11,.mx-n11{margin-left:-44px !important;}.mb-n11,.my-n11{margin-bottom:-44px !important;}.ms-n11{margin-inline-start:-44px !important;}.me-n11{margin-inline-end:-44px !important;}.ma-n11{margin:-44px !important;}.mt-n12,.my-n12{margin-top:-48px !important;}.mr-n12,.mx-n12{margin-right:-48px !important;}.ml-n12,.mx-n12{margin-left:-48px !important;}.mb-n12,.my-n12{margin-bottom:-48px !important;}.ms-n12{margin-inline-start:-48px !important;}.me-n12{margin-inline-end:-48px !important;}.ma-n12{margin:-48px !important;}.mt-n13,.my-n13{margin-top:-52px !important;}.mr-n13,.mx-n13{margin-right:-52px !important;}.ml-n13,.mx-n13{margin-left:-52px !important;}.mb-n13,.my-n13{margin-bottom:-52px !important;}.ms-n13{margin-inline-start:-52px !important;}.me-n13{margin-inline-end:-52px !important;}.ma-n13{margin:-52px !important;}.mt-n14,.my-n14{margin-top:-56px !important;}.mr-n14,.mx-n14{margin-right:-56px !important;}.ml-n14,.mx-n14{margin-left:-56px !important;}.mb-n14,.my-n14{margin-bottom:-56px !important;}.ms-n14{margin-inline-start:-56px !important;}.me-n14{margin-inline-end:-56px !important;}.ma-n14{margin:-56px !important;}.mt-n15,.my-n15{margin-top:-60px !important;}.mr-n15,.mx-n15{margin-right:-60px !important;}.ml-n15,.mx-n15{margin-left:-60px !important;}.mb-n15,.my-n15{margin-bottom:-60px !important;}.ms-n15{margin-inline-start:-60px !important;}.me-n15{margin-inline-end:-60px !important;}.ma-n15{margin:-60px !important;}.mt-n16,.my-n16{margin-top:-64px !important;}.mr-n16,.mx-n16{margin-right:-64px !important;}.ml-n16,.mx-n16{margin-left:-64px !important;}.mb-n16,.my-n16{margin-bottom:-64px !important;}.ms-n16{margin-inline-start:-64px !important;}.me-n16{margin-inline-end:-64px !important;}.ma-n16{margin:-64px !important;}@media screen and (min-width:600px){.mt-sm-0,.my-sm-0{margin-top:0 !important;}.mr-sm-0,.mx-sm-0{margin-right:0 !important;}.ml-sm-0,.mx-sm-0{margin-left:0 !important;}.mb-sm-0,.my-sm-0{margin-bottom:0 !important;}.ms-sm-0{margin-inline-start:0 !important;}.me-sm-0{margin-inline-end:0 !important;}.ma-sm-0{margin:0 !important;}.mt-sm-1,.my-sm-1{margin-top:4px !important;}.mr-sm-1,.mx-sm-1{margin-right:4px !important;}.ml-sm-1,.mx-sm-1{margin-left:4px !important;}.mb-sm-1,.my-sm-1{margin-bottom:4px !important;}.ms-sm-1{margin-inline-start:4px !important;}.me-sm-1{margin-inline-end:4px !important;}.ma-sm-1{margin:4px !important;}.mt-sm-2,.my-sm-2{margin-top:8px !important;}.mr-sm-2,.mx-sm-2{margin-right:8px !important;}.ml-sm-2,.mx-sm-2{margin-left:8px !important;}.mb-sm-2,.my-sm-2{margin-bottom:8px !important;}.ms-sm-2{margin-inline-start:8px !important;}.me-sm-2{margin-inline-end:8px !important;}.ma-sm-2{margin:8px !important;}.mt-sm-3,.my-sm-3{margin-top:12px !important;}.mr-sm-3,.mx-sm-3{margin-right:12px !important;}.ml-sm-3,.mx-sm-3{margin-left:12px !important;}.mb-sm-3,.my-sm-3{margin-bottom:12px !important;}.ms-sm-3{margin-inline-start:12px !important;}.me-sm-3{margin-inline-end:12px !important;}.ma-sm-3{margin:12px !important;}.mt-sm-4,.my-sm-4{margin-top:16px !important;}.mr-sm-4,.mx-sm-4{margin-right:16px !important;}.ml-sm-4,.mx-sm-4{margin-left:16px !important;}.mb-sm-4,.my-sm-4{margin-bottom:16px !important;}.ms-sm-4{margin-inline-start:16px !important;}.me-sm-4{margin-inline-end:16px !important;}.ma-sm-4{margin:16px !important;}.mt-sm-5,.my-sm-5{margin-top:20px !important;}.mr-sm-5,.mx-sm-5{margin-right:20px !important;}.ml-sm-5,.mx-sm-5{margin-left:20px !important;}.mb-sm-5,.my-sm-5{margin-bottom:20px !important;}.ms-sm-5{margin-inline-start:20px !important;}.me-sm-5{margin-inline-end:20px !important;}.ma-sm-5{margin:20px !important;}.mt-sm-6,.my-sm-6{margin-top:24px !important;}.mr-sm-6,.mx-sm-6{margin-right:24px !important;}.ml-sm-6,.mx-sm-6{margin-left:24px !important;}.mb-sm-6,.my-sm-6{margin-bottom:24px !important;}.ms-sm-6{margin-inline-start:24px !important;}.me-sm-6{margin-inline-end:24px !important;}.ma-sm-6{margin:24px !important;}.mt-sm-7,.my-sm-7{margin-top:28px !important;}.mr-sm-7,.mx-sm-7{margin-right:28px !important;}.ml-sm-7,.mx-sm-7{margin-left:28px !important;}.mb-sm-7,.my-sm-7{margin-bottom:28px !important;}.ms-sm-7{margin-inline-start:28px !important;}.me-sm-7{margin-inline-end:28px !important;}.ma-sm-7{margin:28px !important;}.mt-sm-8,.my-sm-8{margin-top:32px !important;}.mr-sm-8,.mx-sm-8{margin-right:32px !important;}.ml-sm-8,.mx-sm-8{margin-left:32px !important;}.mb-sm-8,.my-sm-8{margin-bottom:32px !important;}.ms-sm-8{margin-inline-start:32px !important;}.me-sm-8{margin-inline-end:32px !important;}.ma-sm-8{margin:32px !important;}.mt-sm-9,.my-sm-9{margin-top:36px !important;}.mr-sm-9,.mx-sm-9{margin-right:36px !important;}.ml-sm-9,.mx-sm-9{margin-left:36px !important;}.mb-sm-9,.my-sm-9{margin-bottom:36px !important;}.ms-sm-9{margin-inline-start:36px !important;}.me-sm-9{margin-inline-end:36px !important;}.ma-sm-9{margin:36px !important;}.mt-sm-10,.my-sm-10{margin-top:40px !important;}.mr-sm-10,.mx-sm-10{margin-right:40px !important;}.ml-sm-10,.mx-sm-10{margin-left:40px !important;}.mb-sm-10,.my-sm-10{margin-bottom:40px !important;}.ms-sm-10{margin-inline-start:40px !important;}.me-sm-10{margin-inline-end:40px !important;}.ma-sm-10{margin:40px !important;}.mt-sm-11,.my-sm-11{margin-top:44px !important;}.mr-sm-11,.mx-sm-11{margin-right:44px !important;}.ml-sm-11,.mx-sm-11{margin-left:44px !important;}.mb-sm-11,.my-sm-11{margin-bottom:44px !important;}.ms-sm-11{margin-inline-start:44px !important;}.me-sm-11{margin-inline-end:44px !important;}.ma-sm-11{margin:44px !important;}.mt-sm-12,.my-sm-12{margin-top:48px !important;}.mr-sm-12,.mx-sm-12{margin-right:48px !important;}.ml-sm-12,.mx-sm-12{margin-left:48px !important;}.mb-sm-12,.my-sm-12{margin-bottom:48px !important;}.ms-sm-12{margin-inline-start:48px !important;}.me-sm-12{margin-inline-end:48px !important;}.ma-sm-12{margin:48px !important;}.mt-sm-13,.my-sm-13{margin-top:52px !important;}.mr-sm-13,.mx-sm-13{margin-right:52px !important;}.ml-sm-13,.mx-sm-13{margin-left:52px !important;}.mb-sm-13,.my-sm-13{margin-bottom:52px !important;}.ms-sm-13{margin-inline-start:52px !important;}.me-sm-13{margin-inline-end:52px !important;}.ma-sm-13{margin:52px !important;}.mt-sm-14,.my-sm-14{margin-top:56px !important;}.mr-sm-14,.mx-sm-14{margin-right:56px !important;}.ml-sm-14,.mx-sm-14{margin-left:56px !important;}.mb-sm-14,.my-sm-14{margin-bottom:56px !important;}.ms-sm-14{margin-inline-start:56px !important;}.me-sm-14{margin-inline-end:56px !important;}.ma-sm-14{margin:56px !important;}.mt-sm-15,.my-sm-15{margin-top:60px !important;}.mr-sm-15,.mx-sm-15{margin-right:60px !important;}.ml-sm-15,.mx-sm-15{margin-left:60px !important;}.mb-sm-15,.my-sm-15{margin-bottom:60px !important;}.ms-sm-15{margin-inline-start:60px !important;}.me-sm-15{margin-inline-end:60px !important;}.ma-sm-15{margin:60px !important;}.mt-sm-16,.my-sm-16{margin-top:64px !important;}.mr-sm-16,.mx-sm-16{margin-right:64px !important;}.ml-sm-16,.mx-sm-16{margin-left:64px !important;}.mb-sm-16,.my-sm-16{margin-bottom:64px !important;}.ms-sm-16{margin-inline-start:64px !important;}.me-sm-16{margin-inline-end:64px !important;}.ma-sm-16{margin:64px !important;}.mt-sm-auto,.my-sm-auto{margin-top:auto !important;}.mr-sm-auto,.mx-sm-auto{margin-right:auto !important;}.ml-sm-auto,.mx-sm-auto{margin-left:auto !important;}.mb-sm-auto,.my-sm-auto{margin-bottom:auto !important;}.ms-sm-auto{margin-inline-start:auto !important;}.me-sm-auto{margin-inline-end:auto !important;}.ma-sm-auto{margin:auto !important;}.pt-sm-0,.py-sm-0{padding-top:0 !important;}.pr-sm-0,.px-sm-0{padding-right:0 !important;}.pl-sm-0,.px-sm-0{padding-left:0 !important;}.pb-sm-0,.py-sm-0{padding-bottom:0 !important;}.ps-sm-0{padding-inline-start:0 !important;}.pe-sm-0{padding-inline-end:0 !important;}.pa-sm-0{padding:0 !important;}.pt-sm-1,.py-sm-1{padding-top:4px !important;}.pr-sm-1,.px-sm-1{padding-right:4px !important;}.pl-sm-1,.px-sm-1{padding-left:4px !important;}.pb-sm-1,.py-sm-1{padding-bottom:4px !important;}.ps-sm-1{padding-inline-start:4px !important;}.pe-sm-1{padding-inline-end:4px !important;}.pa-sm-1{padding:4px !important;}.pt-sm-2,.py-sm-2{padding-top:8px !important;}.pr-sm-2,.px-sm-2{padding-right:8px !important;}.pl-sm-2,.px-sm-2{padding-left:8px !important;}.pb-sm-2,.py-sm-2{padding-bottom:8px !important;}.ps-sm-2{padding-inline-start:8px !important;}.pe-sm-2{padding-inline-end:8px !important;}.pa-sm-2{padding:8px !important;}.pt-sm-3,.py-sm-3{padding-top:12px !important;}.pr-sm-3,.px-sm-3{padding-right:12px !important;}.pl-sm-3,.px-sm-3{padding-left:12px !important;}.pb-sm-3,.py-sm-3{padding-bottom:12px !important;}.ps-sm-3{padding-inline-start:12px !important;}.pe-sm-3{padding-inline-end:12px !important;}.pa-sm-3{padding:12px !important;}.pt-sm-4,.py-sm-4{padding-top:16px !important;}.pr-sm-4,.px-sm-4{padding-right:16px !important;}.pl-sm-4,.px-sm-4{padding-left:16px !important;}.pb-sm-4,.py-sm-4{padding-bottom:16px !important;}.ps-sm-4{padding-inline-start:16px !important;}.pe-sm-4{padding-inline-end:16px !important;}.pa-sm-4{padding:16px !important;}.pt-sm-5,.py-sm-5{padding-top:20px !important;}.pr-sm-5,.px-sm-5{padding-right:20px !important;}.pl-sm-5,.px-sm-5{padding-left:20px !important;}.pb-sm-5,.py-sm-5{padding-bottom:20px !important;}.ps-sm-5{padding-inline-start:20px !important;}.pe-sm-5{padding-inline-end:20px !important;}.pa-sm-5{padding:20px !important;}.pt-sm-6,.py-sm-6{padding-top:24px !important;}.pr-sm-6,.px-sm-6{padding-right:24px !important;}.pl-sm-6,.px-sm-6{padding-left:24px !important;}.pb-sm-6,.py-sm-6{padding-bottom:24px !important;}.ps-sm-6{padding-inline-start:24px !important;}.pe-sm-6{padding-inline-end:24px !important;}.pa-sm-6{padding:24px !important;}.pt-sm-7,.py-sm-7{padding-top:28px !important;}.pr-sm-7,.px-sm-7{padding-right:28px !important;}.pl-sm-7,.px-sm-7{padding-left:28px !important;}.pb-sm-7,.py-sm-7{padding-bottom:28px !important;}.ps-sm-7{padding-inline-start:28px !important;}.pe-sm-7{padding-inline-end:28px !important;}.pa-sm-7{padding:28px !important;}.pt-sm-8,.py-sm-8{padding-top:32px !important;}.pr-sm-8,.px-sm-8{padding-right:32px !important;}.pl-sm-8,.px-sm-8{padding-left:32px !important;}.pb-sm-8,.py-sm-8{padding-bottom:32px !important;}.ps-sm-8{padding-inline-start:32px !important;}.pe-sm-8{padding-inline-end:32px !important;}.pa-sm-8{padding:32px !important;}.pt-sm-9,.py-sm-9{padding-top:36px !important;}.pr-sm-9,.px-sm-9{padding-right:36px !important;}.pl-sm-9,.px-sm-9{padding-left:36px !important;}.pb-sm-9,.py-sm-9{padding-bottom:36px !important;}.ps-sm-9{padding-inline-start:36px !important;}.pe-sm-9{padding-inline-end:36px !important;}.pa-sm-9{padding:36px !important;}.pt-sm-10,.py-sm-10{padding-top:40px !important;}.pr-sm-10,.px-sm-10{padding-right:40px !important;}.pl-sm-10,.px-sm-10{padding-left:40px !important;}.pb-sm-10,.py-sm-10{padding-bottom:40px !important;}.ps-sm-10{padding-inline-start:40px !important;}.pe-sm-10{padding-inline-end:40px !important;}.pa-sm-10{padding:40px !important;}.pt-sm-11,.py-sm-11{padding-top:44px !important;}.pr-sm-11,.px-sm-11{padding-right:44px !important;}.pl-sm-11,.px-sm-11{padding-left:44px !important;}.pb-sm-11,.py-sm-11{padding-bottom:44px !important;}.ps-sm-11{padding-inline-start:44px !important;}.pe-sm-11{padding-inline-end:44px !important;}.pa-sm-11{padding:44px !important;}.pt-sm-12,.py-sm-12{padding-top:48px !important;}.pr-sm-12,.px-sm-12{padding-right:48px !important;}.pl-sm-12,.px-sm-12{padding-left:48px !important;}.pb-sm-12,.py-sm-12{padding-bottom:48px !important;}.ps-sm-12{padding-inline-start:48px !important;}.pe-sm-12{padding-inline-end:48px !important;}.pa-sm-12{padding:48px !important;}.pt-sm-13,.py-sm-13{padding-top:52px !important;}.pr-sm-13,.px-sm-13{padding-right:52px !important;}.pl-sm-13,.px-sm-13{padding-left:52px !important;}.pb-sm-13,.py-sm-13{padding-bottom:52px !important;}.ps-sm-13{padding-inline-start:52px !important;}.pe-sm-13{padding-inline-end:52px !important;}.pa-sm-13{padding:52px !important;}.pt-sm-14,.py-sm-14{padding-top:56px !important;}.pr-sm-14,.px-sm-14{padding-right:56px !important;}.pl-sm-14,.px-sm-14{padding-left:56px !important;}.pb-sm-14,.py-sm-14{padding-bottom:56px !important;}.ps-sm-14{padding-inline-start:56px !important;}.pe-sm-14{padding-inline-end:56px !important;}.pa-sm-14{padding:56px !important;}.pt-sm-15,.py-sm-15{padding-top:60px !important;}.pr-sm-15,.px-sm-15{padding-right:60px !important;}.pl-sm-15,.px-sm-15{padding-left:60px !important;}.pb-sm-15,.py-sm-15{padding-bottom:60px !important;}.ps-sm-15{padding-inline-start:60px !important;}.pe-sm-15{padding-inline-end:60px !important;}.pa-sm-15{padding:60px !important;}.pt-sm-16,.py-sm-16{padding-top:64px !important;}.pr-sm-16,.px-sm-16{padding-right:64px !important;}.pl-sm-16,.px-sm-16{padding-left:64px !important;}.pb-sm-16,.py-sm-16{padding-bottom:64px !important;}.ps-sm-16{padding-inline-start:64px !important;}.pe-sm-16{padding-inline-end:64px !important;}.pa-sm-16{padding:64px !important;}.pt-sm-auto,.py-sm-auto{padding-top:auto !important;}.pr-sm-auto,.px-sm-auto{padding-right:auto !important;}.pl-sm-auto,.px-sm-auto{padding-left:auto !important;}.pb-sm-auto,.py-sm-auto{padding-bottom:auto !important;}.ps-sm-auto{padding-inline-start:auto !important;}.pe-sm-auto{padding-inline-end:auto !important;}.pa-sm-auto{padding:auto !important;}.mt-sm-n1,.my-sm-n1{margin-top:-4px !important;}.mr-sm-n1,.mx-sm-n1{margin-right:-4px !important;}.ml-sm-n1,.mx-sm-n1{margin-left:-4px !important;}.mb-sm-n1,.my-sm-n1{margin-bottom:-4px !important;}.ms-sm-n1{margin-inline-start:-4px !important;}.me-sm-n1{margin-inline-end:-4px !important;}.ma-sm-n1{margin:-4px !important;}.mt-sm-n2,.my-sm-n2{margin-top:-8px !important;}.mr-sm-n2,.mx-sm-n2{margin-right:-8px !important;}.ml-sm-n2,.mx-sm-n2{margin-left:-8px !important;}.mb-sm-n2,.my-sm-n2{margin-bottom:-8px !important;}.ms-sm-n2{margin-inline-start:-8px !important;}.me-sm-n2{margin-inline-end:-8px !important;}.ma-sm-n2{margin:-8px !important;}.mt-sm-n3,.my-sm-n3{margin-top:-12px !important;}.mr-sm-n3,.mx-sm-n3{margin-right:-12px !important;}.ml-sm-n3,.mx-sm-n3{margin-left:-12px !important;}.mb-sm-n3,.my-sm-n3{margin-bottom:-12px !important;}.ms-sm-n3{margin-inline-start:-12px !important;}.me-sm-n3{margin-inline-end:-12px !important;}.ma-sm-n3{margin:-12px !important;}.mt-sm-n4,.my-sm-n4{margin-top:-16px !important;}.mr-sm-n4,.mx-sm-n4{margin-right:-16px !important;}.ml-sm-n4,.mx-sm-n4{margin-left:-16px !important;}.mb-sm-n4,.my-sm-n4{margin-bottom:-16px !important;}.ms-sm-n4{margin-inline-start:-16px !important;}.me-sm-n4{margin-inline-end:-16px !important;}.ma-sm-n4{margin:-16px !important;}.mt-sm-n5,.my-sm-n5{margin-top:-20px !important;}.mr-sm-n5,.mx-sm-n5{margin-right:-20px !important;}.ml-sm-n5,.mx-sm-n5{margin-left:-20px !important;}.mb-sm-n5,.my-sm-n5{margin-bottom:-20px !important;}.ms-sm-n5{margin-inline-start:-20px !important;}.me-sm-n5{margin-inline-end:-20px !important;}.ma-sm-n5{margin:-20px !important;}.mt-sm-n6,.my-sm-n6{margin-top:-24px !important;}.mr-sm-n6,.mx-sm-n6{margin-right:-24px !important;}.ml-sm-n6,.mx-sm-n6{margin-left:-24px !important;}.mb-sm-n6,.my-sm-n6{margin-bottom:-24px !important;}.ms-sm-n6{margin-inline-start:-24px !important;}.me-sm-n6{margin-inline-end:-24px !important;}.ma-sm-n6{margin:-24px !important;}.mt-sm-n7,.my-sm-n7{margin-top:-28px !important;}.mr-sm-n7,.mx-sm-n7{margin-right:-28px !important;}.ml-sm-n7,.mx-sm-n7{margin-left:-28px !important;}.mb-sm-n7,.my-sm-n7{margin-bottom:-28px !important;}.ms-sm-n7{margin-inline-start:-28px !important;}.me-sm-n7{margin-inline-end:-28px !important;}.ma-sm-n7{margin:-28px !important;}.mt-sm-n8,.my-sm-n8{margin-top:-32px !important;}.mr-sm-n8,.mx-sm-n8{margin-right:-32px !important;}.ml-sm-n8,.mx-sm-n8{margin-left:-32px !important;}.mb-sm-n8,.my-sm-n8{margin-bottom:-32px !important;}.ms-sm-n8{margin-inline-start:-32px !important;}.me-sm-n8{margin-inline-end:-32px !important;}.ma-sm-n8{margin:-32px !important;}.mt-sm-n9,.my-sm-n9{margin-top:-36px !important;}.mr-sm-n9,.mx-sm-n9{margin-right:-36px !important;}.ml-sm-n9,.mx-sm-n9{margin-left:-36px !important;}.mb-sm-n9,.my-sm-n9{margin-bottom:-36px !important;}.ms-sm-n9{margin-inline-start:-36px !important;}.me-sm-n9{margin-inline-end:-36px !important;}.ma-sm-n9{margin:-36px !important;}.mt-sm-n10,.my-sm-n10{margin-top:-40px !important;}.mr-sm-n10,.mx-sm-n10{margin-right:-40px !important;}.ml-sm-n10,.mx-sm-n10{margin-left:-40px !important;}.mb-sm-n10,.my-sm-n10{margin-bottom:-40px !important;}.ms-sm-n10{margin-inline-start:-40px !important;}.me-sm-n10{margin-inline-end:-40px !important;}.ma-sm-n10{margin:-40px !important;}.mt-sm-n11,.my-sm-n11{margin-top:-44px !important;}.mr-sm-n11,.mx-sm-n11{margin-right:-44px !important;}.ml-sm-n11,.mx-sm-n11{margin-left:-44px !important;}.mb-sm-n11,.my-sm-n11{margin-bottom:-44px !important;}.ms-sm-n11{margin-inline-start:-44px !important;}.me-sm-n11{margin-inline-end:-44px !important;}.ma-sm-n11{margin:-44px !important;}.mt-sm-n12,.my-sm-n12{margin-top:-48px !important;}.mr-sm-n12,.mx-sm-n12{margin-right:-48px !important;}.ml-sm-n12,.mx-sm-n12{margin-left:-48px !important;}.mb-sm-n12,.my-sm-n12{margin-bottom:-48px !important;}.ms-sm-n12{margin-inline-start:-48px !important;}.me-sm-n12{margin-inline-end:-48px !important;}.ma-sm-n12{margin:-48px !important;}.mt-sm-n13,.my-sm-n13{margin-top:-52px !important;}.mr-sm-n13,.mx-sm-n13{margin-right:-52px !important;}.ml-sm-n13,.mx-sm-n13{margin-left:-52px !important;}.mb-sm-n13,.my-sm-n13{margin-bottom:-52px !important;}.ms-sm-n13{margin-inline-start:-52px !important;}.me-sm-n13{margin-inline-end:-52px !important;}.ma-sm-n13{margin:-52px !important;}.mt-sm-n14,.my-sm-n14{margin-top:-56px !important;}.mr-sm-n14,.mx-sm-n14{margin-right:-56px !important;}.ml-sm-n14,.mx-sm-n14{margin-left:-56px !important;}.mb-sm-n14,.my-sm-n14{margin-bottom:-56px !important;}.ms-sm-n14{margin-inline-start:-56px !important;}.me-sm-n14{margin-inline-end:-56px !important;}.ma-sm-n14{margin:-56px !important;}.mt-sm-n15,.my-sm-n15{margin-top:-60px !important;}.mr-sm-n15,.mx-sm-n15{margin-right:-60px !important;}.ml-sm-n15,.mx-sm-n15{margin-left:-60px !important;}.mb-sm-n15,.my-sm-n15{margin-bottom:-60px !important;}.ms-sm-n15{margin-inline-start:-60px !important;}.me-sm-n15{margin-inline-end:-60px !important;}.ma-sm-n15{margin:-60px !important;}.mt-sm-n16,.my-sm-n16{margin-top:-64px !important;}.mr-sm-n16,.mx-sm-n16{margin-right:-64px !important;}.ml-sm-n16,.mx-sm-n16{margin-left:-64px !important;}.mb-sm-n16,.my-sm-n16{margin-bottom:-64px !important;}.ms-sm-n16{margin-inline-start:-64px !important;}.me-sm-n16{margin-inline-end:-64px !important;}.ma-sm-n16{margin:-64px !important;}}@media screen and (min-width:960px){.mt-md-0,.my-md-0{margin-top:0 !important;}.mr-md-0,.mx-md-0{margin-right:0 !important;}.ml-md-0,.mx-md-0{margin-left:0 !important;}.mb-md-0,.my-md-0{margin-bottom:0 !important;}.ms-md-0{margin-inline-start:0 !important;}.me-md-0{margin-inline-end:0 !important;}.ma-md-0{margin:0 !important;}.mt-md-1,.my-md-1{margin-top:4px !important;}.mr-md-1,.mx-md-1{margin-right:4px !important;}.ml-md-1,.mx-md-1{margin-left:4px !important;}.mb-md-1,.my-md-1{margin-bottom:4px !important;}.ms-md-1{margin-inline-start:4px !important;}.me-md-1{margin-inline-end:4px !important;}.ma-md-1{margin:4px !important;}.mt-md-2,.my-md-2{margin-top:8px !important;}.mr-md-2,.mx-md-2{margin-right:8px !important;}.ml-md-2,.mx-md-2{margin-left:8px !important;}.mb-md-2,.my-md-2{margin-bottom:8px !important;}.ms-md-2{margin-inline-start:8px !important;}.me-md-2{margin-inline-end:8px !important;}.ma-md-2{margin:8px !important;}.mt-md-3,.my-md-3{margin-top:12px !important;}.mr-md-3,.mx-md-3{margin-right:12px !important;}.ml-md-3,.mx-md-3{margin-left:12px !important;}.mb-md-3,.my-md-3{margin-bottom:12px !important;}.ms-md-3{margin-inline-start:12px !important;}.me-md-3{margin-inline-end:12px !important;}.ma-md-3{margin:12px !important;}.mt-md-4,.my-md-4{margin-top:16px !important;}.mr-md-4,.mx-md-4{margin-right:16px !important;}.ml-md-4,.mx-md-4{margin-left:16px !important;}.mb-md-4,.my-md-4{margin-bottom:16px !important;}.ms-md-4{margin-inline-start:16px !important;}.me-md-4{margin-inline-end:16px !important;}.ma-md-4{margin:16px !important;}.mt-md-5,.my-md-5{margin-top:20px !important;}.mr-md-5,.mx-md-5{margin-right:20px !important;}.ml-md-5,.mx-md-5{margin-left:20px !important;}.mb-md-5,.my-md-5{margin-bottom:20px !important;}.ms-md-5{margin-inline-start:20px !important;}.me-md-5{margin-inline-end:20px !important;}.ma-md-5{margin:20px !important;}.mt-md-6,.my-md-6{margin-top:24px !important;}.mr-md-6,.mx-md-6{margin-right:24px !important;}.ml-md-6,.mx-md-6{margin-left:24px !important;}.mb-md-6,.my-md-6{margin-bottom:24px !important;}.ms-md-6{margin-inline-start:24px !important;}.me-md-6{margin-inline-end:24px !important;}.ma-md-6{margin:24px !important;}.mt-md-7,.my-md-7{margin-top:28px !important;}.mr-md-7,.mx-md-7{margin-right:28px !important;}.ml-md-7,.mx-md-7{margin-left:28px !important;}.mb-md-7,.my-md-7{margin-bottom:28px !important;}.ms-md-7{margin-inline-start:28px !important;}.me-md-7{margin-inline-end:28px !important;}.ma-md-7{margin:28px !important;}.mt-md-8,.my-md-8{margin-top:32px !important;}.mr-md-8,.mx-md-8{margin-right:32px !important;}.ml-md-8,.mx-md-8{margin-left:32px !important;}.mb-md-8,.my-md-8{margin-bottom:32px !important;}.ms-md-8{margin-inline-start:32px !important;}.me-md-8{margin-inline-end:32px !important;}.ma-md-8{margin:32px !important;}.mt-md-9,.my-md-9{margin-top:36px !important;}.mr-md-9,.mx-md-9{margin-right:36px !important;}.ml-md-9,.mx-md-9{margin-left:36px !important;}.mb-md-9,.my-md-9{margin-bottom:36px !important;}.ms-md-9{margin-inline-start:36px !important;}.me-md-9{margin-inline-end:36px !important;}.ma-md-9{margin:36px !important;}.mt-md-10,.my-md-10{margin-top:40px !important;}.mr-md-10,.mx-md-10{margin-right:40px !important;}.ml-md-10,.mx-md-10{margin-left:40px !important;}.mb-md-10,.my-md-10{margin-bottom:40px !important;}.ms-md-10{margin-inline-start:40px !important;}.me-md-10{margin-inline-end:40px !important;}.ma-md-10{margin:40px !important;}.mt-md-11,.my-md-11{margin-top:44px !important;}.mr-md-11,.mx-md-11{margin-right:44px !important;}.ml-md-11,.mx-md-11{margin-left:44px !important;}.mb-md-11,.my-md-11{margin-bottom:44px !important;}.ms-md-11{margin-inline-start:44px !important;}.me-md-11{margin-inline-end:44px !important;}.ma-md-11{margin:44px !important;}.mt-md-12,.my-md-12{margin-top:48px !important;}.mr-md-12,.mx-md-12{margin-right:48px !important;}.ml-md-12,.mx-md-12{margin-left:48px !important;}.mb-md-12,.my-md-12{margin-bottom:48px !important;}.ms-md-12{margin-inline-start:48px !important;}.me-md-12{margin-inline-end:48px !important;}.ma-md-12{margin:48px !important;}.mt-md-13,.my-md-13{margin-top:52px !important;}.mr-md-13,.mx-md-13{margin-right:52px !important;}.ml-md-13,.mx-md-13{margin-left:52px !important;}.mb-md-13,.my-md-13{margin-bottom:52px !important;}.ms-md-13{margin-inline-start:52px !important;}.me-md-13{margin-inline-end:52px !important;}.ma-md-13{margin:52px !important;}.mt-md-14,.my-md-14{margin-top:56px !important;}.mr-md-14,.mx-md-14{margin-right:56px !important;}.ml-md-14,.mx-md-14{margin-left:56px !important;}.mb-md-14,.my-md-14{margin-bottom:56px !important;}.ms-md-14{margin-inline-start:56px !important;}.me-md-14{margin-inline-end:56px !important;}.ma-md-14{margin:56px !important;}.mt-md-15,.my-md-15{margin-top:60px !important;}.mr-md-15,.mx-md-15{margin-right:60px !important;}.ml-md-15,.mx-md-15{margin-left:60px !important;}.mb-md-15,.my-md-15{margin-bottom:60px !important;}.ms-md-15{margin-inline-start:60px !important;}.me-md-15{margin-inline-end:60px !important;}.ma-md-15{margin:60px !important;}.mt-md-16,.my-md-16{margin-top:64px !important;}.mr-md-16,.mx-md-16{margin-right:64px !important;}.ml-md-16,.mx-md-16{margin-left:64px !important;}.mb-md-16,.my-md-16{margin-bottom:64px !important;}.ms-md-16{margin-inline-start:64px !important;}.me-md-16{margin-inline-end:64px !important;}.ma-md-16{margin:64px !important;}.mt-md-auto,.my-md-auto{margin-top:auto !important;}.mr-md-auto,.mx-md-auto{margin-right:auto !important;}.ml-md-auto,.mx-md-auto{margin-left:auto !important;}.mb-md-auto,.my-md-auto{margin-bottom:auto !important;}.ms-md-auto{margin-inline-start:auto !important;}.me-md-auto{margin-inline-end:auto !important;}.ma-md-auto{margin:auto !important;}.pt-md-0,.py-md-0{padding-top:0 !important;}.pr-md-0,.px-md-0{padding-right:0 !important;}.pl-md-0,.px-md-0{padding-left:0 !important;}.pb-md-0,.py-md-0{padding-bottom:0 !important;}.ps-md-0{padding-inline-start:0 !important;}.pe-md-0{padding-inline-end:0 !important;}.pa-md-0{padding:0 !important;}.pt-md-1,.py-md-1{padding-top:4px !important;}.pr-md-1,.px-md-1{padding-right:4px !important;}.pl-md-1,.px-md-1{padding-left:4px !important;}.pb-md-1,.py-md-1{padding-bottom:4px !important;}.ps-md-1{padding-inline-start:4px !important;}.pe-md-1{padding-inline-end:4px !important;}.pa-md-1{padding:4px !important;}.pt-md-2,.py-md-2{padding-top:8px !important;}.pr-md-2,.px-md-2{padding-right:8px !important;}.pl-md-2,.px-md-2{padding-left:8px !important;}.pb-md-2,.py-md-2{padding-bottom:8px !important;}.ps-md-2{padding-inline-start:8px !important;}.pe-md-2{padding-inline-end:8px !important;}.pa-md-2{padding:8px !important;}.pt-md-3,.py-md-3{padding-top:12px !important;}.pr-md-3,.px-md-3{padding-right:12px !important;}.pl-md-3,.px-md-3{padding-left:12px !important;}.pb-md-3,.py-md-3{padding-bottom:12px !important;}.ps-md-3{padding-inline-start:12px !important;}.pe-md-3{padding-inline-end:12px !important;}.pa-md-3{padding:12px !important;}.pt-md-4,.py-md-4{padding-top:16px !important;}.pr-md-4,.px-md-4{padding-right:16px !important;}.pl-md-4,.px-md-4{padding-left:16px !important;}.pb-md-4,.py-md-4{padding-bottom:16px !important;}.ps-md-4{padding-inline-start:16px !important;}.pe-md-4{padding-inline-end:16px !important;}.pa-md-4{padding:16px !important;}.pt-md-5,.py-md-5{padding-top:20px !important;}.pr-md-5,.px-md-5{padding-right:20px !important;}.pl-md-5,.px-md-5{padding-left:20px !important;}.pb-md-5,.py-md-5{padding-bottom:20px !important;}.ps-md-5{padding-inline-start:20px !important;}.pe-md-5{padding-inline-end:20px !important;}.pa-md-5{padding:20px !important;}.pt-md-6,.py-md-6{padding-top:24px !important;}.pr-md-6,.px-md-6{padding-right:24px !important;}.pl-md-6,.px-md-6{padding-left:24px !important;}.pb-md-6,.py-md-6{padding-bottom:24px !important;}.ps-md-6{padding-inline-start:24px !important;}.pe-md-6{padding-inline-end:24px !important;}.pa-md-6{padding:24px !important;}.pt-md-7,.py-md-7{padding-top:28px !important;}.pr-md-7,.px-md-7{padding-right:28px !important;}.pl-md-7,.px-md-7{padding-left:28px !important;}.pb-md-7,.py-md-7{padding-bottom:28px !important;}.ps-md-7{padding-inline-start:28px !important;}.pe-md-7{padding-inline-end:28px !important;}.pa-md-7{padding:28px !important;}.pt-md-8,.py-md-8{padding-top:32px !important;}.pr-md-8,.px-md-8{padding-right:32px !important;}.pl-md-8,.px-md-8{padding-left:32px !important;}.pb-md-8,.py-md-8{padding-bottom:32px !important;}.ps-md-8{padding-inline-start:32px !important;}.pe-md-8{padding-inline-end:32px !important;}.pa-md-8{padding:32px !important;}.pt-md-9,.py-md-9{padding-top:36px !important;}.pr-md-9,.px-md-9{padding-right:36px !important;}.pl-md-9,.px-md-9{padding-left:36px !important;}.pb-md-9,.py-md-9{padding-bottom:36px !important;}.ps-md-9{padding-inline-start:36px !important;}.pe-md-9{padding-inline-end:36px !important;}.pa-md-9{padding:36px !important;}.pt-md-10,.py-md-10{padding-top:40px !important;}.pr-md-10,.px-md-10{padding-right:40px !important;}.pl-md-10,.px-md-10{padding-left:40px !important;}.pb-md-10,.py-md-10{padding-bottom:40px !important;}.ps-md-10{padding-inline-start:40px !important;}.pe-md-10{padding-inline-end:40px !important;}.pa-md-10{padding:40px !important;}.pt-md-11,.py-md-11{padding-top:44px !important;}.pr-md-11,.px-md-11{padding-right:44px !important;}.pl-md-11,.px-md-11{padding-left:44px !important;}.pb-md-11,.py-md-11{padding-bottom:44px !important;}.ps-md-11{padding-inline-start:44px !important;}.pe-md-11{padding-inline-end:44px !important;}.pa-md-11{padding:44px !important;}.pt-md-12,.py-md-12{padding-top:48px !important;}.pr-md-12,.px-md-12{padding-right:48px !important;}.pl-md-12,.px-md-12{padding-left:48px !important;}.pb-md-12,.py-md-12{padding-bottom:48px !important;}.ps-md-12{padding-inline-start:48px !important;}.pe-md-12{padding-inline-end:48px !important;}.pa-md-12{padding:48px !important;}.pt-md-13,.py-md-13{padding-top:52px !important;}.pr-md-13,.px-md-13{padding-right:52px !important;}.pl-md-13,.px-md-13{padding-left:52px !important;}.pb-md-13,.py-md-13{padding-bottom:52px !important;}.ps-md-13{padding-inline-start:52px !important;}.pe-md-13{padding-inline-end:52px !important;}.pa-md-13{padding:52px !important;}.pt-md-14,.py-md-14{padding-top:56px !important;}.pr-md-14,.px-md-14{padding-right:56px !important;}.pl-md-14,.px-md-14{padding-left:56px !important;}.pb-md-14,.py-md-14{padding-bottom:56px !important;}.ps-md-14{padding-inline-start:56px !important;}.pe-md-14{padding-inline-end:56px !important;}.pa-md-14{padding:56px !important;}.pt-md-15,.py-md-15{padding-top:60px !important;}.pr-md-15,.px-md-15{padding-right:60px !important;}.pl-md-15,.px-md-15{padding-left:60px !important;}.pb-md-15,.py-md-15{padding-bottom:60px !important;}.ps-md-15{padding-inline-start:60px !important;}.pe-md-15{padding-inline-end:60px !important;}.pa-md-15{padding:60px !important;}.pt-md-16,.py-md-16{padding-top:64px !important;}.pr-md-16,.px-md-16{padding-right:64px !important;}.pl-md-16,.px-md-16{padding-left:64px !important;}.pb-md-16,.py-md-16{padding-bottom:64px !important;}.ps-md-16{padding-inline-start:64px !important;}.pe-md-16{padding-inline-end:64px !important;}.pa-md-16{padding:64px !important;}.pt-md-auto,.py-md-auto{padding-top:auto !important;}.pr-md-auto,.px-md-auto{padding-right:auto !important;}.pl-md-auto,.px-md-auto{padding-left:auto !important;}.pb-md-auto,.py-md-auto{padding-bottom:auto !important;}.ps-md-auto{padding-inline-start:auto !important;}.pe-md-auto{padding-inline-end:auto !important;}.pa-md-auto{padding:auto !important;}.mt-md-n1,.my-md-n1{margin-top:-4px !important;}.mr-md-n1,.mx-md-n1{margin-right:-4px !important;}.ml-md-n1,.mx-md-n1{margin-left:-4px !important;}.mb-md-n1,.my-md-n1{margin-bottom:-4px !important;}.ms-md-n1{margin-inline-start:-4px !important;}.me-md-n1{margin-inline-end:-4px !important;}.ma-md-n1{margin:-4px !important;}.mt-md-n2,.my-md-n2{margin-top:-8px !important;}.mr-md-n2,.mx-md-n2{margin-right:-8px !important;}.ml-md-n2,.mx-md-n2{margin-left:-8px !important;}.mb-md-n2,.my-md-n2{margin-bottom:-8px !important;}.ms-md-n2{margin-inline-start:-8px !important;}.me-md-n2{margin-inline-end:-8px !important;}.ma-md-n2{margin:-8px !important;}.mt-md-n3,.my-md-n3{margin-top:-12px !important;}.mr-md-n3,.mx-md-n3{margin-right:-12px !important;}.ml-md-n3,.mx-md-n3{margin-left:-12px !important;}.mb-md-n3,.my-md-n3{margin-bottom:-12px !important;}.ms-md-n3{margin-inline-start:-12px !important;}.me-md-n3{margin-inline-end:-12px !important;}.ma-md-n3{margin:-12px !important;}.mt-md-n4,.my-md-n4{margin-top:-16px !important;}.mr-md-n4,.mx-md-n4{margin-right:-16px !important;}.ml-md-n4,.mx-md-n4{margin-left:-16px !important;}.mb-md-n4,.my-md-n4{margin-bottom:-16px !important;}.ms-md-n4{margin-inline-start:-16px !important;}.me-md-n4{margin-inline-end:-16px !important;}.ma-md-n4{margin:-16px !important;}.mt-md-n5,.my-md-n5{margin-top:-20px !important;}.mr-md-n5,.mx-md-n5{margin-right:-20px !important;}.ml-md-n5,.mx-md-n5{margin-left:-20px !important;}.mb-md-n5,.my-md-n5{margin-bottom:-20px !important;}.ms-md-n5{margin-inline-start:-20px !important;}.me-md-n5{margin-inline-end:-20px !important;}.ma-md-n5{margin:-20px !important;}.mt-md-n6,.my-md-n6{margin-top:-24px !important;}.mr-md-n6,.mx-md-n6{margin-right:-24px !important;}.ml-md-n6,.mx-md-n6{margin-left:-24px !important;}.mb-md-n6,.my-md-n6{margin-bottom:-24px !important;}.ms-md-n6{margin-inline-start:-24px !important;}.me-md-n6{margin-inline-end:-24px !important;}.ma-md-n6{margin:-24px !important;}.mt-md-n7,.my-md-n7{margin-top:-28px !important;}.mr-md-n7,.mx-md-n7{margin-right:-28px !important;}.ml-md-n7,.mx-md-n7{margin-left:-28px !important;}.mb-md-n7,.my-md-n7{margin-bottom:-28px !important;}.ms-md-n7{margin-inline-start:-28px !important;}.me-md-n7{margin-inline-end:-28px !important;}.ma-md-n7{margin:-28px !important;}.mt-md-n8,.my-md-n8{margin-top:-32px !important;}.mr-md-n8,.mx-md-n8{margin-right:-32px !important;}.ml-md-n8,.mx-md-n8{margin-left:-32px !important;}.mb-md-n8,.my-md-n8{margin-bottom:-32px !important;}.ms-md-n8{margin-inline-start:-32px !important;}.me-md-n8{margin-inline-end:-32px !important;}.ma-md-n8{margin:-32px !important;}.mt-md-n9,.my-md-n9{margin-top:-36px !important;}.mr-md-n9,.mx-md-n9{margin-right:-36px !important;}.ml-md-n9,.mx-md-n9{margin-left:-36px !important;}.mb-md-n9,.my-md-n9{margin-bottom:-36px !important;}.ms-md-n9{margin-inline-start:-36px !important;}.me-md-n9{margin-inline-end:-36px !important;}.ma-md-n9{margin:-36px !important;}.mt-md-n10,.my-md-n10{margin-top:-40px !important;}.mr-md-n10,.mx-md-n10{margin-right:-40px !important;}.ml-md-n10,.mx-md-n10{margin-left:-40px !important;}.mb-md-n10,.my-md-n10{margin-bottom:-40px !important;}.ms-md-n10{margin-inline-start:-40px !important;}.me-md-n10{margin-inline-end:-40px !important;}.ma-md-n10{margin:-40px !important;}.mt-md-n11,.my-md-n11{margin-top:-44px !important;}.mr-md-n11,.mx-md-n11{margin-right:-44px !important;}.ml-md-n11,.mx-md-n11{margin-left:-44px !important;}.mb-md-n11,.my-md-n11{margin-bottom:-44px !important;}.ms-md-n11{margin-inline-start:-44px !important;}.me-md-n11{margin-inline-end:-44px !important;}.ma-md-n11{margin:-44px !important;}.mt-md-n12,.my-md-n12{margin-top:-48px !important;}.mr-md-n12,.mx-md-n12{margin-right:-48px !important;}.ml-md-n12,.mx-md-n12{margin-left:-48px !important;}.mb-md-n12,.my-md-n12{margin-bottom:-48px !important;}.ms-md-n12{margin-inline-start:-48px !important;}.me-md-n12{margin-inline-end:-48px !important;}.ma-md-n12{margin:-48px !important;}.mt-md-n13,.my-md-n13{margin-top:-52px !important;}.mr-md-n13,.mx-md-n13{margin-right:-52px !important;}.ml-md-n13,.mx-md-n13{margin-left:-52px !important;}.mb-md-n13,.my-md-n13{margin-bottom:-52px !important;}.ms-md-n13{margin-inline-start:-52px !important;}.me-md-n13{margin-inline-end:-52px !important;}.ma-md-n13{margin:-52px !important;}.mt-md-n14,.my-md-n14{margin-top:-56px !important;}.mr-md-n14,.mx-md-n14{margin-right:-56px !important;}.ml-md-n14,.mx-md-n14{margin-left:-56px !important;}.mb-md-n14,.my-md-n14{margin-bottom:-56px !important;}.ms-md-n14{margin-inline-start:-56px !important;}.me-md-n14{margin-inline-end:-56px !important;}.ma-md-n14{margin:-56px !important;}.mt-md-n15,.my-md-n15{margin-top:-60px !important;}.mr-md-n15,.mx-md-n15{margin-right:-60px !important;}.ml-md-n15,.mx-md-n15{margin-left:-60px !important;}.mb-md-n15,.my-md-n15{margin-bottom:-60px !important;}.ms-md-n15{margin-inline-start:-60px !important;}.me-md-n15{margin-inline-end:-60px !important;}.ma-md-n15{margin:-60px !important;}.mt-md-n16,.my-md-n16{margin-top:-64px !important;}.mr-md-n16,.mx-md-n16{margin-right:-64px !important;}.ml-md-n16,.mx-md-n16{margin-left:-64px !important;}.mb-md-n16,.my-md-n16{margin-bottom:-64px !important;}.ms-md-n16{margin-inline-start:-64px !important;}.me-md-n16{margin-inline-end:-64px !important;}.ma-md-n16{margin:-64px !important;}}@media screen and (min-width:1280px){.mt-lg-0,.my-lg-0{margin-top:0 !important;}.mr-lg-0,.mx-lg-0{margin-right:0 !important;}.ml-lg-0,.mx-lg-0{margin-left:0 !important;}.mb-lg-0,.my-lg-0{margin-bottom:0 !important;}.ms-lg-0{margin-inline-start:0 !important;}.me-lg-0{margin-inline-end:0 !important;}.ma-lg-0{margin:0 !important;}.mt-lg-1,.my-lg-1{margin-top:4px !important;}.mr-lg-1,.mx-lg-1{margin-right:4px !important;}.ml-lg-1,.mx-lg-1{margin-left:4px !important;}.mb-lg-1,.my-lg-1{margin-bottom:4px !important;}.ms-lg-1{margin-inline-start:4px !important;}.me-lg-1{margin-inline-end:4px !important;}.ma-lg-1{margin:4px !important;}.mt-lg-2,.my-lg-2{margin-top:8px !important;}.mr-lg-2,.mx-lg-2{margin-right:8px !important;}.ml-lg-2,.mx-lg-2{margin-left:8px !important;}.mb-lg-2,.my-lg-2{margin-bottom:8px !important;}.ms-lg-2{margin-inline-start:8px !important;}.me-lg-2{margin-inline-end:8px !important;}.ma-lg-2{margin:8px !important;}.mt-lg-3,.my-lg-3{margin-top:12px !important;}.mr-lg-3,.mx-lg-3{margin-right:12px !important;}.ml-lg-3,.mx-lg-3{margin-left:12px !important;}.mb-lg-3,.my-lg-3{margin-bottom:12px !important;}.ms-lg-3{margin-inline-start:12px !important;}.me-lg-3{margin-inline-end:12px !important;}.ma-lg-3{margin:12px !important;}.mt-lg-4,.my-lg-4{margin-top:16px !important;}.mr-lg-4,.mx-lg-4{margin-right:16px !important;}.ml-lg-4,.mx-lg-4{margin-left:16px !important;}.mb-lg-4,.my-lg-4{margin-bottom:16px !important;}.ms-lg-4{margin-inline-start:16px !important;}.me-lg-4{margin-inline-end:16px !important;}.ma-lg-4{margin:16px !important;}.mt-lg-5,.my-lg-5{margin-top:20px !important;}.mr-lg-5,.mx-lg-5{margin-right:20px !important;}.ml-lg-5,.mx-lg-5{margin-left:20px !important;}.mb-lg-5,.my-lg-5{margin-bottom:20px !important;}.ms-lg-5{margin-inline-start:20px !important;}.me-lg-5{margin-inline-end:20px !important;}.ma-lg-5{margin:20px !important;}.mt-lg-6,.my-lg-6{margin-top:24px !important;}.mr-lg-6,.mx-lg-6{margin-right:24px !important;}.ml-lg-6,.mx-lg-6{margin-left:24px !important;}.mb-lg-6,.my-lg-6{margin-bottom:24px !important;}.ms-lg-6{margin-inline-start:24px !important;}.me-lg-6{margin-inline-end:24px !important;}.ma-lg-6{margin:24px !important;}.mt-lg-7,.my-lg-7{margin-top:28px !important;}.mr-lg-7,.mx-lg-7{margin-right:28px !important;}.ml-lg-7,.mx-lg-7{margin-left:28px !important;}.mb-lg-7,.my-lg-7{margin-bottom:28px !important;}.ms-lg-7{margin-inline-start:28px !important;}.me-lg-7{margin-inline-end:28px !important;}.ma-lg-7{margin:28px !important;}.mt-lg-8,.my-lg-8{margin-top:32px !important;}.mr-lg-8,.mx-lg-8{margin-right:32px !important;}.ml-lg-8,.mx-lg-8{margin-left:32px !important;}.mb-lg-8,.my-lg-8{margin-bottom:32px !important;}.ms-lg-8{margin-inline-start:32px !important;}.me-lg-8{margin-inline-end:32px !important;}.ma-lg-8{margin:32px !important;}.mt-lg-9,.my-lg-9{margin-top:36px !important;}.mr-lg-9,.mx-lg-9{margin-right:36px !important;}.ml-lg-9,.mx-lg-9{margin-left:36px !important;}.mb-lg-9,.my-lg-9{margin-bottom:36px !important;}.ms-lg-9{margin-inline-start:36px !important;}.me-lg-9{margin-inline-end:36px !important;}.ma-lg-9{margin:36px !important;}.mt-lg-10,.my-lg-10{margin-top:40px !important;}.mr-lg-10,.mx-lg-10{margin-right:40px !important;}.ml-lg-10,.mx-lg-10{margin-left:40px !important;}.mb-lg-10,.my-lg-10{margin-bottom:40px !important;}.ms-lg-10{margin-inline-start:40px !important;}.me-lg-10{margin-inline-end:40px !important;}.ma-lg-10{margin:40px !important;}.mt-lg-11,.my-lg-11{margin-top:44px !important;}.mr-lg-11,.mx-lg-11{margin-right:44px !important;}.ml-lg-11,.mx-lg-11{margin-left:44px !important;}.mb-lg-11,.my-lg-11{margin-bottom:44px !important;}.ms-lg-11{margin-inline-start:44px !important;}.me-lg-11{margin-inline-end:44px !important;}.ma-lg-11{margin:44px !important;}.mt-lg-12,.my-lg-12{margin-top:48px !important;}.mr-lg-12,.mx-lg-12{margin-right:48px !important;}.ml-lg-12,.mx-lg-12{margin-left:48px !important;}.mb-lg-12,.my-lg-12{margin-bottom:48px !important;}.ms-lg-12{margin-inline-start:48px !important;}.me-lg-12{margin-inline-end:48px !important;}.ma-lg-12{margin:48px !important;}.mt-lg-13,.my-lg-13{margin-top:52px !important;}.mr-lg-13,.mx-lg-13{margin-right:52px !important;}.ml-lg-13,.mx-lg-13{margin-left:52px !important;}.mb-lg-13,.my-lg-13{margin-bottom:52px !important;}.ms-lg-13{margin-inline-start:52px !important;}.me-lg-13{margin-inline-end:52px !important;}.ma-lg-13{margin:52px !important;}.mt-lg-14,.my-lg-14{margin-top:56px !important;}.mr-lg-14,.mx-lg-14{margin-right:56px !important;}.ml-lg-14,.mx-lg-14{margin-left:56px !important;}.mb-lg-14,.my-lg-14{margin-bottom:56px !important;}.ms-lg-14{margin-inline-start:56px !important;}.me-lg-14{margin-inline-end:56px !important;}.ma-lg-14{margin:56px !important;}.mt-lg-15,.my-lg-15{margin-top:60px !important;}.mr-lg-15,.mx-lg-15{margin-right:60px !important;}.ml-lg-15,.mx-lg-15{margin-left:60px !important;}.mb-lg-15,.my-lg-15{margin-bottom:60px !important;}.ms-lg-15{margin-inline-start:60px !important;}.me-lg-15{margin-inline-end:60px !important;}.ma-lg-15{margin:60px !important;}.mt-lg-16,.my-lg-16{margin-top:64px !important;}.mr-lg-16,.mx-lg-16{margin-right:64px !important;}.ml-lg-16,.mx-lg-16{margin-left:64px !important;}.mb-lg-16,.my-lg-16{margin-bottom:64px !important;}.ms-lg-16{margin-inline-start:64px !important;}.me-lg-16{margin-inline-end:64px !important;}.ma-lg-16{margin:64px !important;}.mt-lg-auto,.my-lg-auto{margin-top:auto !important;}.mr-lg-auto,.mx-lg-auto{margin-right:auto !important;}.ml-lg-auto,.mx-lg-auto{margin-left:auto !important;}.mb-lg-auto,.my-lg-auto{margin-bottom:auto !important;}.ms-lg-auto{margin-inline-start:auto !important;}.me-lg-auto{margin-inline-end:auto !important;}.ma-lg-auto{margin:auto !important;}.pt-lg-0,.py-lg-0{padding-top:0 !important;}.pr-lg-0,.px-lg-0{padding-right:0 !important;}.pl-lg-0,.px-lg-0{padding-left:0 !important;}.pb-lg-0,.py-lg-0{padding-bottom:0 !important;}.ps-lg-0{padding-inline-start:0 !important;}.pe-lg-0{padding-inline-end:0 !important;}.pa-lg-0{padding:0 !important;}.pt-lg-1,.py-lg-1{padding-top:4px !important;}.pr-lg-1,.px-lg-1{padding-right:4px !important;}.pl-lg-1,.px-lg-1{padding-left:4px !important;}.pb-lg-1,.py-lg-1{padding-bottom:4px !important;}.ps-lg-1{padding-inline-start:4px !important;}.pe-lg-1{padding-inline-end:4px !important;}.pa-lg-1{padding:4px !important;}.pt-lg-2,.py-lg-2{padding-top:8px !important;}.pr-lg-2,.px-lg-2{padding-right:8px !important;}.pl-lg-2,.px-lg-2{padding-left:8px !important;}.pb-lg-2,.py-lg-2{padding-bottom:8px !important;}.ps-lg-2{padding-inline-start:8px !important;}.pe-lg-2{padding-inline-end:8px !important;}.pa-lg-2{padding:8px !important;}.pt-lg-3,.py-lg-3{padding-top:12px !important;}.pr-lg-3,.px-lg-3{padding-right:12px !important;}.pl-lg-3,.px-lg-3{padding-left:12px !important;}.pb-lg-3,.py-lg-3{padding-bottom:12px !important;}.ps-lg-3{padding-inline-start:12px !important;}.pe-lg-3{padding-inline-end:12px !important;}.pa-lg-3{padding:12px !important;}.pt-lg-4,.py-lg-4{padding-top:16px !important;}.pr-lg-4,.px-lg-4{padding-right:16px !important;}.pl-lg-4,.px-lg-4{padding-left:16px !important;}.pb-lg-4,.py-lg-4{padding-bottom:16px !important;}.ps-lg-4{padding-inline-start:16px !important;}.pe-lg-4{padding-inline-end:16px !important;}.pa-lg-4{padding:16px !important;}.pt-lg-5,.py-lg-5{padding-top:20px !important;}.pr-lg-5,.px-lg-5{padding-right:20px !important;}.pl-lg-5,.px-lg-5{padding-left:20px !important;}.pb-lg-5,.py-lg-5{padding-bottom:20px !important;}.ps-lg-5{padding-inline-start:20px !important;}.pe-lg-5{padding-inline-end:20px !important;}.pa-lg-5{padding:20px !important;}.pt-lg-6,.py-lg-6{padding-top:24px !important;}.pr-lg-6,.px-lg-6{padding-right:24px !important;}.pl-lg-6,.px-lg-6{padding-left:24px !important;}.pb-lg-6,.py-lg-6{padding-bottom:24px !important;}.ps-lg-6{padding-inline-start:24px !important;}.pe-lg-6{padding-inline-end:24px !important;}.pa-lg-6{padding:24px !important;}.pt-lg-7,.py-lg-7{padding-top:28px !important;}.pr-lg-7,.px-lg-7{padding-right:28px !important;}.pl-lg-7,.px-lg-7{padding-left:28px !important;}.pb-lg-7,.py-lg-7{padding-bottom:28px !important;}.ps-lg-7{padding-inline-start:28px !important;}.pe-lg-7{padding-inline-end:28px !important;}.pa-lg-7{padding:28px !important;}.pt-lg-8,.py-lg-8{padding-top:32px !important;}.pr-lg-8,.px-lg-8{padding-right:32px !important;}.pl-lg-8,.px-lg-8{padding-left:32px !important;}.pb-lg-8,.py-lg-8{padding-bottom:32px !important;}.ps-lg-8{padding-inline-start:32px !important;}.pe-lg-8{padding-inline-end:32px !important;}.pa-lg-8{padding:32px !important;}.pt-lg-9,.py-lg-9{padding-top:36px !important;}.pr-lg-9,.px-lg-9{padding-right:36px !important;}.pl-lg-9,.px-lg-9{padding-left:36px !important;}.pb-lg-9,.py-lg-9{padding-bottom:36px !important;}.ps-lg-9{padding-inline-start:36px !important;}.pe-lg-9{padding-inline-end:36px !important;}.pa-lg-9{padding:36px !important;}.pt-lg-10,.py-lg-10{padding-top:40px !important;}.pr-lg-10,.px-lg-10{padding-right:40px !important;}.pl-lg-10,.px-lg-10{padding-left:40px !important;}.pb-lg-10,.py-lg-10{padding-bottom:40px !important;}.ps-lg-10{padding-inline-start:40px !important;}.pe-lg-10{padding-inline-end:40px !important;}.pa-lg-10{padding:40px !important;}.pt-lg-11,.py-lg-11{padding-top:44px !important;}.pr-lg-11,.px-lg-11{padding-right:44px !important;}.pl-lg-11,.px-lg-11{padding-left:44px !important;}.pb-lg-11,.py-lg-11{padding-bottom:44px !important;}.ps-lg-11{padding-inline-start:44px !important;}.pe-lg-11{padding-inline-end:44px !important;}.pa-lg-11{padding:44px !important;}.pt-lg-12,.py-lg-12{padding-top:48px !important;}.pr-lg-12,.px-lg-12{padding-right:48px !important;}.pl-lg-12,.px-lg-12{padding-left:48px !important;}.pb-lg-12,.py-lg-12{padding-bottom:48px !important;}.ps-lg-12{padding-inline-start:48px !important;}.pe-lg-12{padding-inline-end:48px !important;}.pa-lg-12{padding:48px !important;}.pt-lg-13,.py-lg-13{padding-top:52px !important;}.pr-lg-13,.px-lg-13{padding-right:52px !important;}.pl-lg-13,.px-lg-13{padding-left:52px !important;}.pb-lg-13,.py-lg-13{padding-bottom:52px !important;}.ps-lg-13{padding-inline-start:52px !important;}.pe-lg-13{padding-inline-end:52px !important;}.pa-lg-13{padding:52px !important;}.pt-lg-14,.py-lg-14{padding-top:56px !important;}.pr-lg-14,.px-lg-14{padding-right:56px !important;}.pl-lg-14,.px-lg-14{padding-left:56px !important;}.pb-lg-14,.py-lg-14{padding-bottom:56px !important;}.ps-lg-14{padding-inline-start:56px !important;}.pe-lg-14{padding-inline-end:56px !important;}.pa-lg-14{padding:56px !important;}.pt-lg-15,.py-lg-15{padding-top:60px !important;}.pr-lg-15,.px-lg-15{padding-right:60px !important;}.pl-lg-15,.px-lg-15{padding-left:60px !important;}.pb-lg-15,.py-lg-15{padding-bottom:60px !important;}.ps-lg-15{padding-inline-start:60px !important;}.pe-lg-15{padding-inline-end:60px !important;}.pa-lg-15{padding:60px !important;}.pt-lg-16,.py-lg-16{padding-top:64px !important;}.pr-lg-16,.px-lg-16{padding-right:64px !important;}.pl-lg-16,.px-lg-16{padding-left:64px !important;}.pb-lg-16,.py-lg-16{padding-bottom:64px !important;}.ps-lg-16{padding-inline-start:64px !important;}.pe-lg-16{padding-inline-end:64px !important;}.pa-lg-16{padding:64px !important;}.pt-lg-auto,.py-lg-auto{padding-top:auto !important;}.pr-lg-auto,.px-lg-auto{padding-right:auto !important;}.pl-lg-auto,.px-lg-auto{padding-left:auto !important;}.pb-lg-auto,.py-lg-auto{padding-bottom:auto !important;}.ps-lg-auto{padding-inline-start:auto !important;}.pe-lg-auto{padding-inline-end:auto !important;}.pa-lg-auto{padding:auto !important;}.mt-lg-n1,.my-lg-n1{margin-top:-4px !important;}.mr-lg-n1,.mx-lg-n1{margin-right:-4px !important;}.ml-lg-n1,.mx-lg-n1{margin-left:-4px !important;}.mb-lg-n1,.my-lg-n1{margin-bottom:-4px !important;}.ms-lg-n1{margin-inline-start:-4px !important;}.me-lg-n1{margin-inline-end:-4px !important;}.ma-lg-n1{margin:-4px !important;}.mt-lg-n2,.my-lg-n2{margin-top:-8px !important;}.mr-lg-n2,.mx-lg-n2{margin-right:-8px !important;}.ml-lg-n2,.mx-lg-n2{margin-left:-8px !important;}.mb-lg-n2,.my-lg-n2{margin-bottom:-8px !important;}.ms-lg-n2{margin-inline-start:-8px !important;}.me-lg-n2{margin-inline-end:-8px !important;}.ma-lg-n2{margin:-8px !important;}.mt-lg-n3,.my-lg-n3{margin-top:-12px !important;}.mr-lg-n3,.mx-lg-n3{margin-right:-12px !important;}.ml-lg-n3,.mx-lg-n3{margin-left:-12px !important;}.mb-lg-n3,.my-lg-n3{margin-bottom:-12px !important;}.ms-lg-n3{margin-inline-start:-12px !important;}.me-lg-n3{margin-inline-end:-12px !important;}.ma-lg-n3{margin:-12px !important;}.mt-lg-n4,.my-lg-n4{margin-top:-16px !important;}.mr-lg-n4,.mx-lg-n4{margin-right:-16px !important;}.ml-lg-n4,.mx-lg-n4{margin-left:-16px !important;}.mb-lg-n4,.my-lg-n4{margin-bottom:-16px !important;}.ms-lg-n4{margin-inline-start:-16px !important;}.me-lg-n4{margin-inline-end:-16px !important;}.ma-lg-n4{margin:-16px !important;}.mt-lg-n5,.my-lg-n5{margin-top:-20px !important;}.mr-lg-n5,.mx-lg-n5{margin-right:-20px !important;}.ml-lg-n5,.mx-lg-n5{margin-left:-20px !important;}.mb-lg-n5,.my-lg-n5{margin-bottom:-20px !important;}.ms-lg-n5{margin-inline-start:-20px !important;}.me-lg-n5{margin-inline-end:-20px !important;}.ma-lg-n5{margin:-20px !important;}.mt-lg-n6,.my-lg-n6{margin-top:-24px !important;}.mr-lg-n6,.mx-lg-n6{margin-right:-24px !important;}.ml-lg-n6,.mx-lg-n6{margin-left:-24px !important;}.mb-lg-n6,.my-lg-n6{margin-bottom:-24px !important;}.ms-lg-n6{margin-inline-start:-24px !important;}.me-lg-n6{margin-inline-end:-24px !important;}.ma-lg-n6{margin:-24px !important;}.mt-lg-n7,.my-lg-n7{margin-top:-28px !important;}.mr-lg-n7,.mx-lg-n7{margin-right:-28px !important;}.ml-lg-n7,.mx-lg-n7{margin-left:-28px !important;}.mb-lg-n7,.my-lg-n7{margin-bottom:-28px !important;}.ms-lg-n7{margin-inline-start:-28px !important;}.me-lg-n7{margin-inline-end:-28px !important;}.ma-lg-n7{margin:-28px !important;}.mt-lg-n8,.my-lg-n8{margin-top:-32px !important;}.mr-lg-n8,.mx-lg-n8{margin-right:-32px !important;}.ml-lg-n8,.mx-lg-n8{margin-left:-32px !important;}.mb-lg-n8,.my-lg-n8{margin-bottom:-32px !important;}.ms-lg-n8{margin-inline-start:-32px !important;}.me-lg-n8{margin-inline-end:-32px !important;}.ma-lg-n8{margin:-32px !important;}.mt-lg-n9,.my-lg-n9{margin-top:-36px !important;}.mr-lg-n9,.mx-lg-n9{margin-right:-36px !important;}.ml-lg-n9,.mx-lg-n9{margin-left:-36px !important;}.mb-lg-n9,.my-lg-n9{margin-bottom:-36px !important;}.ms-lg-n9{margin-inline-start:-36px !important;}.me-lg-n9{margin-inline-end:-36px !important;}.ma-lg-n9{margin:-36px !important;}.mt-lg-n10,.my-lg-n10{margin-top:-40px !important;}.mr-lg-n10,.mx-lg-n10{margin-right:-40px !important;}.ml-lg-n10,.mx-lg-n10{margin-left:-40px !important;}.mb-lg-n10,.my-lg-n10{margin-bottom:-40px !important;}.ms-lg-n10{margin-inline-start:-40px !important;}.me-lg-n10{margin-inline-end:-40px !important;}.ma-lg-n10{margin:-40px !important;}.mt-lg-n11,.my-lg-n11{margin-top:-44px !important;}.mr-lg-n11,.mx-lg-n11{margin-right:-44px !important;}.ml-lg-n11,.mx-lg-n11{margin-left:-44px !important;}.mb-lg-n11,.my-lg-n11{margin-bottom:-44px !important;}.ms-lg-n11{margin-inline-start:-44px !important;}.me-lg-n11{margin-inline-end:-44px !important;}.ma-lg-n11{margin:-44px !important;}.mt-lg-n12,.my-lg-n12{margin-top:-48px !important;}.mr-lg-n12,.mx-lg-n12{margin-right:-48px !important;}.ml-lg-n12,.mx-lg-n12{margin-left:-48px !important;}.mb-lg-n12,.my-lg-n12{margin-bottom:-48px !important;}.ms-lg-n12{margin-inline-start:-48px !important;}.me-lg-n12{margin-inline-end:-48px !important;}.ma-lg-n12{margin:-48px !important;}.mt-lg-n13,.my-lg-n13{margin-top:-52px !important;}.mr-lg-n13,.mx-lg-n13{margin-right:-52px !important;}.ml-lg-n13,.mx-lg-n13{margin-left:-52px !important;}.mb-lg-n13,.my-lg-n13{margin-bottom:-52px !important;}.ms-lg-n13{margin-inline-start:-52px !important;}.me-lg-n13{margin-inline-end:-52px !important;}.ma-lg-n13{margin:-52px !important;}.mt-lg-n14,.my-lg-n14{margin-top:-56px !important;}.mr-lg-n14,.mx-lg-n14{margin-right:-56px !important;}.ml-lg-n14,.mx-lg-n14{margin-left:-56px !important;}.mb-lg-n14,.my-lg-n14{margin-bottom:-56px !important;}.ms-lg-n14{margin-inline-start:-56px !important;}.me-lg-n14{margin-inline-end:-56px !important;}.ma-lg-n14{margin:-56px !important;}.mt-lg-n15,.my-lg-n15{margin-top:-60px !important;}.mr-lg-n15,.mx-lg-n15{margin-right:-60px !important;}.ml-lg-n15,.mx-lg-n15{margin-left:-60px !important;}.mb-lg-n15,.my-lg-n15{margin-bottom:-60px !important;}.ms-lg-n15{margin-inline-start:-60px !important;}.me-lg-n15{margin-inline-end:-60px !important;}.ma-lg-n15{margin:-60px !important;}.mt-lg-n16,.my-lg-n16{margin-top:-64px !important;}.mr-lg-n16,.mx-lg-n16{margin-right:-64px !important;}.ml-lg-n16,.mx-lg-n16{margin-left:-64px !important;}.mb-lg-n16,.my-lg-n16{margin-bottom:-64px !important;}.ms-lg-n16{margin-inline-start:-64px !important;}.me-lg-n16{margin-inline-end:-64px !important;}.ma-lg-n16{margin:-64px !important;}}@media screen and (min-width:1920px){.mt-xl-0,.my-xl-0{margin-top:0 !important;}.mr-xl-0,.mx-xl-0{margin-right:0 !important;}.ml-xl-0,.mx-xl-0{margin-left:0 !important;}.mb-xl-0,.my-xl-0{margin-bottom:0 !important;}.ms-xl-0{margin-inline-start:0 !important;}.me-xl-0{margin-inline-end:0 !important;}.ma-xl-0{margin:0 !important;}.mt-xl-1,.my-xl-1{margin-top:4px !important;}.mr-xl-1,.mx-xl-1{margin-right:4px !important;}.ml-xl-1,.mx-xl-1{margin-left:4px !important;}.mb-xl-1,.my-xl-1{margin-bottom:4px !important;}.ms-xl-1{margin-inline-start:4px !important;}.me-xl-1{margin-inline-end:4px !important;}.ma-xl-1{margin:4px !important;}.mt-xl-2,.my-xl-2{margin-top:8px !important;}.mr-xl-2,.mx-xl-2{margin-right:8px !important;}.ml-xl-2,.mx-xl-2{margin-left:8px !important;}.mb-xl-2,.my-xl-2{margin-bottom:8px !important;}.ms-xl-2{margin-inline-start:8px !important;}.me-xl-2{margin-inline-end:8px !important;}.ma-xl-2{margin:8px !important;}.mt-xl-3,.my-xl-3{margin-top:12px !important;}.mr-xl-3,.mx-xl-3{margin-right:12px !important;}.ml-xl-3,.mx-xl-3{margin-left:12px !important;}.mb-xl-3,.my-xl-3{margin-bottom:12px !important;}.ms-xl-3{margin-inline-start:12px !important;}.me-xl-3{margin-inline-end:12px !important;}.ma-xl-3{margin:12px !important;}.mt-xl-4,.my-xl-4{margin-top:16px !important;}.mr-xl-4,.mx-xl-4{margin-right:16px !important;}.ml-xl-4,.mx-xl-4{margin-left:16px !important;}.mb-xl-4,.my-xl-4{margin-bottom:16px !important;}.ms-xl-4{margin-inline-start:16px !important;}.me-xl-4{margin-inline-end:16px !important;}.ma-xl-4{margin:16px !important;}.mt-xl-5,.my-xl-5{margin-top:20px !important;}.mr-xl-5,.mx-xl-5{margin-right:20px !important;}.ml-xl-5,.mx-xl-5{margin-left:20px !important;}.mb-xl-5,.my-xl-5{margin-bottom:20px !important;}.ms-xl-5{margin-inline-start:20px !important;}.me-xl-5{margin-inline-end:20px !important;}.ma-xl-5{margin:20px !important;}.mt-xl-6,.my-xl-6{margin-top:24px !important;}.mr-xl-6,.mx-xl-6{margin-right:24px !important;}.ml-xl-6,.mx-xl-6{margin-left:24px !important;}.mb-xl-6,.my-xl-6{margin-bottom:24px !important;}.ms-xl-6{margin-inline-start:24px !important;}.me-xl-6{margin-inline-end:24px !important;}.ma-xl-6{margin:24px !important;}.mt-xl-7,.my-xl-7{margin-top:28px !important;}.mr-xl-7,.mx-xl-7{margin-right:28px !important;}.ml-xl-7,.mx-xl-7{margin-left:28px !important;}.mb-xl-7,.my-xl-7{margin-bottom:28px !important;}.ms-xl-7{margin-inline-start:28px !important;}.me-xl-7{margin-inline-end:28px !important;}.ma-xl-7{margin:28px !important;}.mt-xl-8,.my-xl-8{margin-top:32px !important;}.mr-xl-8,.mx-xl-8{margin-right:32px !important;}.ml-xl-8,.mx-xl-8{margin-left:32px !important;}.mb-xl-8,.my-xl-8{margin-bottom:32px !important;}.ms-xl-8{margin-inline-start:32px !important;}.me-xl-8{margin-inline-end:32px !important;}.ma-xl-8{margin:32px !important;}.mt-xl-9,.my-xl-9{margin-top:36px !important;}.mr-xl-9,.mx-xl-9{margin-right:36px !important;}.ml-xl-9,.mx-xl-9{margin-left:36px !important;}.mb-xl-9,.my-xl-9{margin-bottom:36px !important;}.ms-xl-9{margin-inline-start:36px !important;}.me-xl-9{margin-inline-end:36px !important;}.ma-xl-9{margin:36px !important;}.mt-xl-10,.my-xl-10{margin-top:40px !important;}.mr-xl-10,.mx-xl-10{margin-right:40px !important;}.ml-xl-10,.mx-xl-10{margin-left:40px !important;}.mb-xl-10,.my-xl-10{margin-bottom:40px !important;}.ms-xl-10{margin-inline-start:40px !important;}.me-xl-10{margin-inline-end:40px !important;}.ma-xl-10{margin:40px !important;}.mt-xl-11,.my-xl-11{margin-top:44px !important;}.mr-xl-11,.mx-xl-11{margin-right:44px !important;}.ml-xl-11,.mx-xl-11{margin-left:44px !important;}.mb-xl-11,.my-xl-11{margin-bottom:44px !important;}.ms-xl-11{margin-inline-start:44px !important;}.me-xl-11{margin-inline-end:44px !important;}.ma-xl-11{margin:44px !important;}.mt-xl-12,.my-xl-12{margin-top:48px !important;}.mr-xl-12,.mx-xl-12{margin-right:48px !important;}.ml-xl-12,.mx-xl-12{margin-left:48px !important;}.mb-xl-12,.my-xl-12{margin-bottom:48px !important;}.ms-xl-12{margin-inline-start:48px !important;}.me-xl-12{margin-inline-end:48px !important;}.ma-xl-12{margin:48px !important;}.mt-xl-13,.my-xl-13{margin-top:52px !important;}.mr-xl-13,.mx-xl-13{margin-right:52px !important;}.ml-xl-13,.mx-xl-13{margin-left:52px !important;}.mb-xl-13,.my-xl-13{margin-bottom:52px !important;}.ms-xl-13{margin-inline-start:52px !important;}.me-xl-13{margin-inline-end:52px !important;}.ma-xl-13{margin:52px !important;}.mt-xl-14,.my-xl-14{margin-top:56px !important;}.mr-xl-14,.mx-xl-14{margin-right:56px !important;}.ml-xl-14,.mx-xl-14{margin-left:56px !important;}.mb-xl-14,.my-xl-14{margin-bottom:56px !important;}.ms-xl-14{margin-inline-start:56px !important;}.me-xl-14{margin-inline-end:56px !important;}.ma-xl-14{margin:56px !important;}.mt-xl-15,.my-xl-15{margin-top:60px !important;}.mr-xl-15,.mx-xl-15{margin-right:60px !important;}.ml-xl-15,.mx-xl-15{margin-left:60px !important;}.mb-xl-15,.my-xl-15{margin-bottom:60px !important;}.ms-xl-15{margin-inline-start:60px !important;}.me-xl-15{margin-inline-end:60px !important;}.ma-xl-15{margin:60px !important;}.mt-xl-16,.my-xl-16{margin-top:64px !important;}.mr-xl-16,.mx-xl-16{margin-right:64px !important;}.ml-xl-16,.mx-xl-16{margin-left:64px !important;}.mb-xl-16,.my-xl-16{margin-bottom:64px !important;}.ms-xl-16{margin-inline-start:64px !important;}.me-xl-16{margin-inline-end:64px !important;}.ma-xl-16{margin:64px !important;}.mt-xl-auto,.my-xl-auto{margin-top:auto !important;}.mr-xl-auto,.mx-xl-auto{margin-right:auto !important;}.ml-xl-auto,.mx-xl-auto{margin-left:auto !important;}.mb-xl-auto,.my-xl-auto{margin-bottom:auto !important;}.ms-xl-auto{margin-inline-start:auto !important;}.me-xl-auto{margin-inline-end:auto !important;}.ma-xl-auto{margin:auto !important;}.pt-xl-0,.py-xl-0{padding-top:0 !important;}.pr-xl-0,.px-xl-0{padding-right:0 !important;}.pl-xl-0,.px-xl-0{padding-left:0 !important;}.pb-xl-0,.py-xl-0{padding-bottom:0 !important;}.ps-xl-0{padding-inline-start:0 !important;}.pe-xl-0{padding-inline-end:0 !important;}.pa-xl-0{padding:0 !important;}.pt-xl-1,.py-xl-1{padding-top:4px !important;}.pr-xl-1,.px-xl-1{padding-right:4px !important;}.pl-xl-1,.px-xl-1{padding-left:4px !important;}.pb-xl-1,.py-xl-1{padding-bottom:4px !important;}.ps-xl-1{padding-inline-start:4px !important;}.pe-xl-1{padding-inline-end:4px !important;}.pa-xl-1{padding:4px !important;}.pt-xl-2,.py-xl-2{padding-top:8px !important;}.pr-xl-2,.px-xl-2{padding-right:8px !important;}.pl-xl-2,.px-xl-2{padding-left:8px !important;}.pb-xl-2,.py-xl-2{padding-bottom:8px !important;}.ps-xl-2{padding-inline-start:8px !important;}.pe-xl-2{padding-inline-end:8px !important;}.pa-xl-2{padding:8px !important;}.pt-xl-3,.py-xl-3{padding-top:12px !important;}.pr-xl-3,.px-xl-3{padding-right:12px !important;}.pl-xl-3,.px-xl-3{padding-left:12px !important;}.pb-xl-3,.py-xl-3{padding-bottom:12px !important;}.ps-xl-3{padding-inline-start:12px !important;}.pe-xl-3{padding-inline-end:12px !important;}.pa-xl-3{padding:12px !important;}.pt-xl-4,.py-xl-4{padding-top:16px !important;}.pr-xl-4,.px-xl-4{padding-right:16px !important;}.pl-xl-4,.px-xl-4{padding-left:16px !important;}.pb-xl-4,.py-xl-4{padding-bottom:16px !important;}.ps-xl-4{padding-inline-start:16px !important;}.pe-xl-4{padding-inline-end:16px !important;}.pa-xl-4{padding:16px !important;}.pt-xl-5,.py-xl-5{padding-top:20px !important;}.pr-xl-5,.px-xl-5{padding-right:20px !important;}.pl-xl-5,.px-xl-5{padding-left:20px !important;}.pb-xl-5,.py-xl-5{padding-bottom:20px !important;}.ps-xl-5{padding-inline-start:20px !important;}.pe-xl-5{padding-inline-end:20px !important;}.pa-xl-5{padding:20px !important;}.pt-xl-6,.py-xl-6{padding-top:24px !important;}.pr-xl-6,.px-xl-6{padding-right:24px !important;}.pl-xl-6,.px-xl-6{padding-left:24px !important;}.pb-xl-6,.py-xl-6{padding-bottom:24px !important;}.ps-xl-6{padding-inline-start:24px !important;}.pe-xl-6{padding-inline-end:24px !important;}.pa-xl-6{padding:24px !important;}.pt-xl-7,.py-xl-7{padding-top:28px !important;}.pr-xl-7,.px-xl-7{padding-right:28px !important;}.pl-xl-7,.px-xl-7{padding-left:28px !important;}.pb-xl-7,.py-xl-7{padding-bottom:28px !important;}.ps-xl-7{padding-inline-start:28px !important;}.pe-xl-7{padding-inline-end:28px !important;}.pa-xl-7{padding:28px !important;}.pt-xl-8,.py-xl-8{padding-top:32px !important;}.pr-xl-8,.px-xl-8{padding-right:32px !important;}.pl-xl-8,.px-xl-8{padding-left:32px !important;}.pb-xl-8,.py-xl-8{padding-bottom:32px !important;}.ps-xl-8{padding-inline-start:32px !important;}.pe-xl-8{padding-inline-end:32px !important;}.pa-xl-8{padding:32px !important;}.pt-xl-9,.py-xl-9{padding-top:36px !important;}.pr-xl-9,.px-xl-9{padding-right:36px !important;}.pl-xl-9,.px-xl-9{padding-left:36px !important;}.pb-xl-9,.py-xl-9{padding-bottom:36px !important;}.ps-xl-9{padding-inline-start:36px !important;}.pe-xl-9{padding-inline-end:36px !important;}.pa-xl-9{padding:36px !important;}.pt-xl-10,.py-xl-10{padding-top:40px !important;}.pr-xl-10,.px-xl-10{padding-right:40px !important;}.pl-xl-10,.px-xl-10{padding-left:40px !important;}.pb-xl-10,.py-xl-10{padding-bottom:40px !important;}.ps-xl-10{padding-inline-start:40px !important;}.pe-xl-10{padding-inline-end:40px !important;}.pa-xl-10{padding:40px !important;}.pt-xl-11,.py-xl-11{padding-top:44px !important;}.pr-xl-11,.px-xl-11{padding-right:44px !important;}.pl-xl-11,.px-xl-11{padding-left:44px !important;}.pb-xl-11,.py-xl-11{padding-bottom:44px !important;}.ps-xl-11{padding-inline-start:44px !important;}.pe-xl-11{padding-inline-end:44px !important;}.pa-xl-11{padding:44px !important;}.pt-xl-12,.py-xl-12{padding-top:48px !important;}.pr-xl-12,.px-xl-12{padding-right:48px !important;}.pl-xl-12,.px-xl-12{padding-left:48px !important;}.pb-xl-12,.py-xl-12{padding-bottom:48px !important;}.ps-xl-12{padding-inline-start:48px !important;}.pe-xl-12{padding-inline-end:48px !important;}.pa-xl-12{padding:48px !important;}.pt-xl-13,.py-xl-13{padding-top:52px !important;}.pr-xl-13,.px-xl-13{padding-right:52px !important;}.pl-xl-13,.px-xl-13{padding-left:52px !important;}.pb-xl-13,.py-xl-13{padding-bottom:52px !important;}.ps-xl-13{padding-inline-start:52px !important;}.pe-xl-13{padding-inline-end:52px !important;}.pa-xl-13{padding:52px !important;}.pt-xl-14,.py-xl-14{padding-top:56px !important;}.pr-xl-14,.px-xl-14{padding-right:56px !important;}.pl-xl-14,.px-xl-14{padding-left:56px !important;}.pb-xl-14,.py-xl-14{padding-bottom:56px !important;}.ps-xl-14{padding-inline-start:56px !important;}.pe-xl-14{padding-inline-end:56px !important;}.pa-xl-14{padding:56px !important;}.pt-xl-15,.py-xl-15{padding-top:60px !important;}.pr-xl-15,.px-xl-15{padding-right:60px !important;}.pl-xl-15,.px-xl-15{padding-left:60px !important;}.pb-xl-15,.py-xl-15{padding-bottom:60px !important;}.ps-xl-15{padding-inline-start:60px !important;}.pe-xl-15{padding-inline-end:60px !important;}.pa-xl-15{padding:60px !important;}.pt-xl-16,.py-xl-16{padding-top:64px !important;}.pr-xl-16,.px-xl-16{padding-right:64px !important;}.pl-xl-16,.px-xl-16{padding-left:64px !important;}.pb-xl-16,.py-xl-16{padding-bottom:64px !important;}.ps-xl-16{padding-inline-start:64px !important;}.pe-xl-16{padding-inline-end:64px !important;}.pa-xl-16{padding:64px !important;}.pt-xl-auto,.py-xl-auto{padding-top:auto !important;}.pr-xl-auto,.px-xl-auto{padding-right:auto !important;}.pl-xl-auto,.px-xl-auto{padding-left:auto !important;}.pb-xl-auto,.py-xl-auto{padding-bottom:auto !important;}.ps-xl-auto{padding-inline-start:auto !important;}.pe-xl-auto{padding-inline-end:auto !important;}.pa-xl-auto{padding:auto !important;}.mt-xl-n1,.my-xl-n1{margin-top:-4px !important;}.mr-xl-n1,.mx-xl-n1{margin-right:-4px !important;}.ml-xl-n1,.mx-xl-n1{margin-left:-4px !important;}.mb-xl-n1,.my-xl-n1{margin-bottom:-4px !important;}.ms-xl-n1{margin-inline-start:-4px !important;}.me-xl-n1{margin-inline-end:-4px !important;}.ma-xl-n1{margin:-4px !important;}.mt-xl-n2,.my-xl-n2{margin-top:-8px !important;}.mr-xl-n2,.mx-xl-n2{margin-right:-8px !important;}.ml-xl-n2,.mx-xl-n2{margin-left:-8px !important;}.mb-xl-n2,.my-xl-n2{margin-bottom:-8px !important;}.ms-xl-n2{margin-inline-start:-8px !important;}.me-xl-n2{margin-inline-end:-8px !important;}.ma-xl-n2{margin:-8px !important;}.mt-xl-n3,.my-xl-n3{margin-top:-12px !important;}.mr-xl-n3,.mx-xl-n3{margin-right:-12px !important;}.ml-xl-n3,.mx-xl-n3{margin-left:-12px !important;}.mb-xl-n3,.my-xl-n3{margin-bottom:-12px !important;}.ms-xl-n3{margin-inline-start:-12px !important;}.me-xl-n3{margin-inline-end:-12px !important;}.ma-xl-n3{margin:-12px !important;}.mt-xl-n4,.my-xl-n4{margin-top:-16px !important;}.mr-xl-n4,.mx-xl-n4{margin-right:-16px !important;}.ml-xl-n4,.mx-xl-n4{margin-left:-16px !important;}.mb-xl-n4,.my-xl-n4{margin-bottom:-16px !important;}.ms-xl-n4{margin-inline-start:-16px !important;}.me-xl-n4{margin-inline-end:-16px !important;}.ma-xl-n4{margin:-16px !important;}.mt-xl-n5,.my-xl-n5{margin-top:-20px !important;}.mr-xl-n5,.mx-xl-n5{margin-right:-20px !important;}.ml-xl-n5,.mx-xl-n5{margin-left:-20px !important;}.mb-xl-n5,.my-xl-n5{margin-bottom:-20px !important;}.ms-xl-n5{margin-inline-start:-20px !important;}.me-xl-n5{margin-inline-end:-20px !important;}.ma-xl-n5{margin:-20px !important;}.mt-xl-n6,.my-xl-n6{margin-top:-24px !important;}.mr-xl-n6,.mx-xl-n6{margin-right:-24px !important;}.ml-xl-n6,.mx-xl-n6{margin-left:-24px !important;}.mb-xl-n6,.my-xl-n6{margin-bottom:-24px !important;}.ms-xl-n6{margin-inline-start:-24px !important;}.me-xl-n6{margin-inline-end:-24px !important;}.ma-xl-n6{margin:-24px !important;}.mt-xl-n7,.my-xl-n7{margin-top:-28px !important;}.mr-xl-n7,.mx-xl-n7{margin-right:-28px !important;}.ml-xl-n7,.mx-xl-n7{margin-left:-28px !important;}.mb-xl-n7,.my-xl-n7{margin-bottom:-28px !important;}.ms-xl-n7{margin-inline-start:-28px !important;}.me-xl-n7{margin-inline-end:-28px !important;}.ma-xl-n7{margin:-28px !important;}.mt-xl-n8,.my-xl-n8{margin-top:-32px !important;}.mr-xl-n8,.mx-xl-n8{margin-right:-32px !important;}.ml-xl-n8,.mx-xl-n8{margin-left:-32px !important;}.mb-xl-n8,.my-xl-n8{margin-bottom:-32px !important;}.ms-xl-n8{margin-inline-start:-32px !important;}.me-xl-n8{margin-inline-end:-32px !important;}.ma-xl-n8{margin:-32px !important;}.mt-xl-n9,.my-xl-n9{margin-top:-36px !important;}.mr-xl-n9,.mx-xl-n9{margin-right:-36px !important;}.ml-xl-n9,.mx-xl-n9{margin-left:-36px !important;}.mb-xl-n9,.my-xl-n9{margin-bottom:-36px !important;}.ms-xl-n9{margin-inline-start:-36px !important;}.me-xl-n9{margin-inline-end:-36px !important;}.ma-xl-n9{margin:-36px !important;}.mt-xl-n10,.my-xl-n10{margin-top:-40px !important;}.mr-xl-n10,.mx-xl-n10{margin-right:-40px !important;}.ml-xl-n10,.mx-xl-n10{margin-left:-40px !important;}.mb-xl-n10,.my-xl-n10{margin-bottom:-40px !important;}.ms-xl-n10{margin-inline-start:-40px !important;}.me-xl-n10{margin-inline-end:-40px !important;}.ma-xl-n10{margin:-40px !important;}.mt-xl-n11,.my-xl-n11{margin-top:-44px !important;}.mr-xl-n11,.mx-xl-n11{margin-right:-44px !important;}.ml-xl-n11,.mx-xl-n11{margin-left:-44px !important;}.mb-xl-n11,.my-xl-n11{margin-bottom:-44px !important;}.ms-xl-n11{margin-inline-start:-44px !important;}.me-xl-n11{margin-inline-end:-44px !important;}.ma-xl-n11{margin:-44px !important;}.mt-xl-n12,.my-xl-n12{margin-top:-48px !important;}.mr-xl-n12,.mx-xl-n12{margin-right:-48px !important;}.ml-xl-n12,.mx-xl-n12{margin-left:-48px !important;}.mb-xl-n12,.my-xl-n12{margin-bottom:-48px !important;}.ms-xl-n12{margin-inline-start:-48px !important;}.me-xl-n12{margin-inline-end:-48px !important;}.ma-xl-n12{margin:-48px !important;}.mt-xl-n13,.my-xl-n13{margin-top:-52px !important;}.mr-xl-n13,.mx-xl-n13{margin-right:-52px !important;}.ml-xl-n13,.mx-xl-n13{margin-left:-52px !important;}.mb-xl-n13,.my-xl-n13{margin-bottom:-52px !important;}.ms-xl-n13{margin-inline-start:-52px !important;}.me-xl-n13{margin-inline-end:-52px !important;}.ma-xl-n13{margin:-52px !important;}.mt-xl-n14,.my-xl-n14{margin-top:-56px !important;}.mr-xl-n14,.mx-xl-n14{margin-right:-56px !important;}.ml-xl-n14,.mx-xl-n14{margin-left:-56px !important;}.mb-xl-n14,.my-xl-n14{margin-bottom:-56px !important;}.ms-xl-n14{margin-inline-start:-56px !important;}.me-xl-n14{margin-inline-end:-56px !important;}.ma-xl-n14{margin:-56px !important;}.mt-xl-n15,.my-xl-n15{margin-top:-60px !important;}.mr-xl-n15,.mx-xl-n15{margin-right:-60px !important;}.ml-xl-n15,.mx-xl-n15{margin-left:-60px !important;}.mb-xl-n15,.my-xl-n15{margin-bottom:-60px !important;}.ms-xl-n15{margin-inline-start:-60px !important;}.me-xl-n15{margin-inline-end:-60px !important;}.ma-xl-n15{margin:-60px !important;}.mt-xl-n16,.my-xl-n16{margin-top:-64px !important;}.mr-xl-n16,.mx-xl-n16{margin-right:-64px !important;}.ml-xl-n16,.mx-xl-n16{margin-left:-64px !important;}.mb-xl-n16,.my-xl-n16{margin-bottom:-64px !important;}.ms-xl-n16{margin-inline-start:-64px !important;}.me-xl-n16{margin-inline-end:-64px !important;}.ma-xl-n16{margin:-64px !important;}}@media screen and (min-width:2560px){.mt-xxl-0,.my-xxl-0{margin-top:0 !important;}.mr-xxl-0,.mx-xxl-0{margin-right:0 !important;}.ml-xxl-0,.mx-xxl-0{margin-left:0 !important;}.mb-xxl-0,.my-xxl-0{margin-bottom:0 !important;}.ms-xxl-0{margin-inline-start:0 !important;}.me-xxl-0{margin-inline-end:0 !important;}.ma-xxl-0{margin:0 !important;}.mt-xxl-1,.my-xxl-1{margin-top:4px !important;}.mr-xxl-1,.mx-xxl-1{margin-right:4px !important;}.ml-xxl-1,.mx-xxl-1{margin-left:4px !important;}.mb-xxl-1,.my-xxl-1{margin-bottom:4px !important;}.ms-xxl-1{margin-inline-start:4px !important;}.me-xxl-1{margin-inline-end:4px !important;}.ma-xxl-1{margin:4px !important;}.mt-xxl-2,.my-xxl-2{margin-top:8px !important;}.mr-xxl-2,.mx-xxl-2{margin-right:8px !important;}.ml-xxl-2,.mx-xxl-2{margin-left:8px !important;}.mb-xxl-2,.my-xxl-2{margin-bottom:8px !important;}.ms-xxl-2{margin-inline-start:8px !important;}.me-xxl-2{margin-inline-end:8px !important;}.ma-xxl-2{margin:8px !important;}.mt-xxl-3,.my-xxl-3{margin-top:12px !important;}.mr-xxl-3,.mx-xxl-3{margin-right:12px !important;}.ml-xxl-3,.mx-xxl-3{margin-left:12px !important;}.mb-xxl-3,.my-xxl-3{margin-bottom:12px !important;}.ms-xxl-3{margin-inline-start:12px !important;}.me-xxl-3{margin-inline-end:12px !important;}.ma-xxl-3{margin:12px !important;}.mt-xxl-4,.my-xxl-4{margin-top:16px !important;}.mr-xxl-4,.mx-xxl-4{margin-right:16px !important;}.ml-xxl-4,.mx-xxl-4{margin-left:16px !important;}.mb-xxl-4,.my-xxl-4{margin-bottom:16px !important;}.ms-xxl-4{margin-inline-start:16px !important;}.me-xxl-4{margin-inline-end:16px !important;}.ma-xxl-4{margin:16px !important;}.mt-xxl-5,.my-xxl-5{margin-top:20px !important;}.mr-xxl-5,.mx-xxl-5{margin-right:20px !important;}.ml-xxl-5,.mx-xxl-5{margin-left:20px !important;}.mb-xxl-5,.my-xxl-5{margin-bottom:20px !important;}.ms-xxl-5{margin-inline-start:20px !important;}.me-xxl-5{margin-inline-end:20px !important;}.ma-xxl-5{margin:20px !important;}.mt-xxl-6,.my-xxl-6{margin-top:24px !important;}.mr-xxl-6,.mx-xxl-6{margin-right:24px !important;}.ml-xxl-6,.mx-xxl-6{margin-left:24px !important;}.mb-xxl-6,.my-xxl-6{margin-bottom:24px !important;}.ms-xxl-6{margin-inline-start:24px !important;}.me-xxl-6{margin-inline-end:24px !important;}.ma-xxl-6{margin:24px !important;}.mt-xxl-7,.my-xxl-7{margin-top:28px !important;}.mr-xxl-7,.mx-xxl-7{margin-right:28px !important;}.ml-xxl-7,.mx-xxl-7{margin-left:28px !important;}.mb-xxl-7,.my-xxl-7{margin-bottom:28px !important;}.ms-xxl-7{margin-inline-start:28px !important;}.me-xxl-7{margin-inline-end:28px !important;}.ma-xxl-7{margin:28px !important;}.mt-xxl-8,.my-xxl-8{margin-top:32px !important;}.mr-xxl-8,.mx-xxl-8{margin-right:32px !important;}.ml-xxl-8,.mx-xxl-8{margin-left:32px !important;}.mb-xxl-8,.my-xxl-8{margin-bottom:32px !important;}.ms-xxl-8{margin-inline-start:32px !important;}.me-xxl-8{margin-inline-end:32px !important;}.ma-xxl-8{margin:32px !important;}.mt-xxl-9,.my-xxl-9{margin-top:36px !important;}.mr-xxl-9,.mx-xxl-9{margin-right:36px !important;}.ml-xxl-9,.mx-xxl-9{margin-left:36px !important;}.mb-xxl-9,.my-xxl-9{margin-bottom:36px !important;}.ms-xxl-9{margin-inline-start:36px !important;}.me-xxl-9{margin-inline-end:36px !important;}.ma-xxl-9{margin:36px !important;}.mt-xxl-10,.my-xxl-10{margin-top:40px !important;}.mr-xxl-10,.mx-xxl-10{margin-right:40px !important;}.ml-xxl-10,.mx-xxl-10{margin-left:40px !important;}.mb-xxl-10,.my-xxl-10{margin-bottom:40px !important;}.ms-xxl-10{margin-inline-start:40px !important;}.me-xxl-10{margin-inline-end:40px !important;}.ma-xxl-10{margin:40px !important;}.mt-xxl-11,.my-xxl-11{margin-top:44px !important;}.mr-xxl-11,.mx-xxl-11{margin-right:44px !important;}.ml-xxl-11,.mx-xxl-11{margin-left:44px !important;}.mb-xxl-11,.my-xxl-11{margin-bottom:44px !important;}.ms-xxl-11{margin-inline-start:44px !important;}.me-xxl-11{margin-inline-end:44px !important;}.ma-xxl-11{margin:44px !important;}.mt-xxl-12,.my-xxl-12{margin-top:48px !important;}.mr-xxl-12,.mx-xxl-12{margin-right:48px !important;}.ml-xxl-12,.mx-xxl-12{margin-left:48px !important;}.mb-xxl-12,.my-xxl-12{margin-bottom:48px !important;}.ms-xxl-12{margin-inline-start:48px !important;}.me-xxl-12{margin-inline-end:48px !important;}.ma-xxl-12{margin:48px !important;}.mt-xxl-13,.my-xxl-13{margin-top:52px !important;}.mr-xxl-13,.mx-xxl-13{margin-right:52px !important;}.ml-xxl-13,.mx-xxl-13{margin-left:52px !important;}.mb-xxl-13,.my-xxl-13{margin-bottom:52px !important;}.ms-xxl-13{margin-inline-start:52px !important;}.me-xxl-13{margin-inline-end:52px !important;}.ma-xxl-13{margin:52px !important;}.mt-xxl-14,.my-xxl-14{margin-top:56px !important;}.mr-xxl-14,.mx-xxl-14{margin-right:56px !important;}.ml-xxl-14,.mx-xxl-14{margin-left:56px !important;}.mb-xxl-14,.my-xxl-14{margin-bottom:56px !important;}.ms-xxl-14{margin-inline-start:56px !important;}.me-xxl-14{margin-inline-end:56px !important;}.ma-xxl-14{margin:56px !important;}.mt-xxl-15,.my-xxl-15{margin-top:60px !important;}.mr-xxl-15,.mx-xxl-15{margin-right:60px !important;}.ml-xxl-15,.mx-xxl-15{margin-left:60px !important;}.mb-xxl-15,.my-xxl-15{margin-bottom:60px !important;}.ms-xxl-15{margin-inline-start:60px !important;}.me-xxl-15{margin-inline-end:60px !important;}.ma-xxl-15{margin:60px !important;}.mt-xxl-16,.my-xxl-16{margin-top:64px !important;}.mr-xxl-16,.mx-xxl-16{margin-right:64px !important;}.ml-xxl-16,.mx-xxl-16{margin-left:64px !important;}.mb-xxl-16,.my-xxl-16{margin-bottom:64px !important;}.ms-xxl-16{margin-inline-start:64px !important;}.me-xxl-16{margin-inline-end:64px !important;}.ma-xxl-16{margin:64px !important;}.mt-xxl-auto,.my-xxl-auto{margin-top:auto !important;}.mr-xxl-auto,.mx-xxl-auto{margin-right:auto !important;}.ml-xxl-auto,.mx-xxl-auto{margin-left:auto !important;}.mb-xxl-auto,.my-xxl-auto{margin-bottom:auto !important;}.ms-xxl-auto{margin-inline-start:auto !important;}.me-xxl-auto{margin-inline-end:auto !important;}.ma-xxl-auto{margin:auto !important;}.pt-xxl-0,.py-xxl-0{padding-top:0 !important;}.pr-xxl-0,.px-xxl-0{padding-right:0 !important;}.pl-xxl-0,.px-xxl-0{padding-left:0 !important;}.pb-xxl-0,.py-xxl-0{padding-bottom:0 !important;}.ps-xxl-0{padding-inline-start:0 !important;}.pe-xxl-0{padding-inline-end:0 !important;}.pa-xxl-0{padding:0 !important;}.pt-xxl-1,.py-xxl-1{padding-top:4px !important;}.pr-xxl-1,.px-xxl-1{padding-right:4px !important;}.pl-xxl-1,.px-xxl-1{padding-left:4px !important;}.pb-xxl-1,.py-xxl-1{padding-bottom:4px !important;}.ps-xxl-1{padding-inline-start:4px !important;}.pe-xxl-1{padding-inline-end:4px !important;}.pa-xxl-1{padding:4px !important;}.pt-xxl-2,.py-xxl-2{padding-top:8px !important;}.pr-xxl-2,.px-xxl-2{padding-right:8px !important;}.pl-xxl-2,.px-xxl-2{padding-left:8px !important;}.pb-xxl-2,.py-xxl-2{padding-bottom:8px !important;}.ps-xxl-2{padding-inline-start:8px !important;}.pe-xxl-2{padding-inline-end:8px !important;}.pa-xxl-2{padding:8px !important;}.pt-xxl-3,.py-xxl-3{padding-top:12px !important;}.pr-xxl-3,.px-xxl-3{padding-right:12px !important;}.pl-xxl-3,.px-xxl-3{padding-left:12px !important;}.pb-xxl-3,.py-xxl-3{padding-bottom:12px !important;}.ps-xxl-3{padding-inline-start:12px !important;}.pe-xxl-3{padding-inline-end:12px !important;}.pa-xxl-3{padding:12px !important;}.pt-xxl-4,.py-xxl-4{padding-top:16px !important;}.pr-xxl-4,.px-xxl-4{padding-right:16px !important;}.pl-xxl-4,.px-xxl-4{padding-left:16px !important;}.pb-xxl-4,.py-xxl-4{padding-bottom:16px !important;}.ps-xxl-4{padding-inline-start:16px !important;}.pe-xxl-4{padding-inline-end:16px !important;}.pa-xxl-4{padding:16px !important;}.pt-xxl-5,.py-xxl-5{padding-top:20px !important;}.pr-xxl-5,.px-xxl-5{padding-right:20px !important;}.pl-xxl-5,.px-xxl-5{padding-left:20px !important;}.pb-xxl-5,.py-xxl-5{padding-bottom:20px !important;}.ps-xxl-5{padding-inline-start:20px !important;}.pe-xxl-5{padding-inline-end:20px !important;}.pa-xxl-5{padding:20px !important;}.pt-xxl-6,.py-xxl-6{padding-top:24px !important;}.pr-xxl-6,.px-xxl-6{padding-right:24px !important;}.pl-xxl-6,.px-xxl-6{padding-left:24px !important;}.pb-xxl-6,.py-xxl-6{padding-bottom:24px !important;}.ps-xxl-6{padding-inline-start:24px !important;}.pe-xxl-6{padding-inline-end:24px !important;}.pa-xxl-6{padding:24px !important;}.pt-xxl-7,.py-xxl-7{padding-top:28px !important;}.pr-xxl-7,.px-xxl-7{padding-right:28px !important;}.pl-xxl-7,.px-xxl-7{padding-left:28px !important;}.pb-xxl-7,.py-xxl-7{padding-bottom:28px !important;}.ps-xxl-7{padding-inline-start:28px !important;}.pe-xxl-7{padding-inline-end:28px !important;}.pa-xxl-7{padding:28px !important;}.pt-xxl-8,.py-xxl-8{padding-top:32px !important;}.pr-xxl-8,.px-xxl-8{padding-right:32px !important;}.pl-xxl-8,.px-xxl-8{padding-left:32px !important;}.pb-xxl-8,.py-xxl-8{padding-bottom:32px !important;}.ps-xxl-8{padding-inline-start:32px !important;}.pe-xxl-8{padding-inline-end:32px !important;}.pa-xxl-8{padding:32px !important;}.pt-xxl-9,.py-xxl-9{padding-top:36px !important;}.pr-xxl-9,.px-xxl-9{padding-right:36px !important;}.pl-xxl-9,.px-xxl-9{padding-left:36px !important;}.pb-xxl-9,.py-xxl-9{padding-bottom:36px !important;}.ps-xxl-9{padding-inline-start:36px !important;}.pe-xxl-9{padding-inline-end:36px !important;}.pa-xxl-9{padding:36px !important;}.pt-xxl-10,.py-xxl-10{padding-top:40px !important;}.pr-xxl-10,.px-xxl-10{padding-right:40px !important;}.pl-xxl-10,.px-xxl-10{padding-left:40px !important;}.pb-xxl-10,.py-xxl-10{padding-bottom:40px !important;}.ps-xxl-10{padding-inline-start:40px !important;}.pe-xxl-10{padding-inline-end:40px !important;}.pa-xxl-10{padding:40px !important;}.pt-xxl-11,.py-xxl-11{padding-top:44px !important;}.pr-xxl-11,.px-xxl-11{padding-right:44px !important;}.pl-xxl-11,.px-xxl-11{padding-left:44px !important;}.pb-xxl-11,.py-xxl-11{padding-bottom:44px !important;}.ps-xxl-11{padding-inline-start:44px !important;}.pe-xxl-11{padding-inline-end:44px !important;}.pa-xxl-11{padding:44px !important;}.pt-xxl-12,.py-xxl-12{padding-top:48px !important;}.pr-xxl-12,.px-xxl-12{padding-right:48px !important;}.pl-xxl-12,.px-xxl-12{padding-left:48px !important;}.pb-xxl-12,.py-xxl-12{padding-bottom:48px !important;}.ps-xxl-12{padding-inline-start:48px !important;}.pe-xxl-12{padding-inline-end:48px !important;}.pa-xxl-12{padding:48px !important;}.pt-xxl-13,.py-xxl-13{padding-top:52px !important;}.pr-xxl-13,.px-xxl-13{padding-right:52px !important;}.pl-xxl-13,.px-xxl-13{padding-left:52px !important;}.pb-xxl-13,.py-xxl-13{padding-bottom:52px !important;}.ps-xxl-13{padding-inline-start:52px !important;}.pe-xxl-13{padding-inline-end:52px !important;}.pa-xxl-13{padding:52px !important;}.pt-xxl-14,.py-xxl-14{padding-top:56px !important;}.pr-xxl-14,.px-xxl-14{padding-right:56px !important;}.pl-xxl-14,.px-xxl-14{padding-left:56px !important;}.pb-xxl-14,.py-xxl-14{padding-bottom:56px !important;}.ps-xxl-14{padding-inline-start:56px !important;}.pe-xxl-14{padding-inline-end:56px !important;}.pa-xxl-14{padding:56px !important;}.pt-xxl-15,.py-xxl-15{padding-top:60px !important;}.pr-xxl-15,.px-xxl-15{padding-right:60px !important;}.pl-xxl-15,.px-xxl-15{padding-left:60px !important;}.pb-xxl-15,.py-xxl-15{padding-bottom:60px !important;}.ps-xxl-15{padding-inline-start:60px !important;}.pe-xxl-15{padding-inline-end:60px !important;}.pa-xxl-15{padding:60px !important;}.pt-xxl-16,.py-xxl-16{padding-top:64px !important;}.pr-xxl-16,.px-xxl-16{padding-right:64px !important;}.pl-xxl-16,.px-xxl-16{padding-left:64px !important;}.pb-xxl-16,.py-xxl-16{padding-bottom:64px !important;}.ps-xxl-16{padding-inline-start:64px !important;}.pe-xxl-16{padding-inline-end:64px !important;}.pa-xxl-16{padding:64px !important;}.pt-xxl-auto,.py-xxl-auto{padding-top:auto !important;}.pr-xxl-auto,.px-xxl-auto{padding-right:auto !important;}.pl-xxl-auto,.px-xxl-auto{padding-left:auto !important;}.pb-xxl-auto,.py-xxl-auto{padding-bottom:auto !important;}.ps-xxl-auto{padding-inline-start:auto !important;}.pe-xxl-auto{padding-inline-end:auto !important;}.pa-xxl-auto{padding:auto !important;}.mt-xxl-n1,.my-xxl-n1{margin-top:-4px !important;}.mr-xxl-n1,.mx-xxl-n1{margin-right:-4px !important;}.ml-xxl-n1,.mx-xxl-n1{margin-left:-4px !important;}.mb-xxl-n1,.my-xxl-n1{margin-bottom:-4px !important;}.ms-xxl-n1{margin-inline-start:-4px !important;}.me-xxl-n1{margin-inline-end:-4px !important;}.ma-xxl-n1{margin:-4px !important;}.mt-xxl-n2,.my-xxl-n2{margin-top:-8px !important;}.mr-xxl-n2,.mx-xxl-n2{margin-right:-8px !important;}.ml-xxl-n2,.mx-xxl-n2{margin-left:-8px !important;}.mb-xxl-n2,.my-xxl-n2{margin-bottom:-8px !important;}.ms-xxl-n2{margin-inline-start:-8px !important;}.me-xxl-n2{margin-inline-end:-8px !important;}.ma-xxl-n2{margin:-8px !important;}.mt-xxl-n3,.my-xxl-n3{margin-top:-12px !important;}.mr-xxl-n3,.mx-xxl-n3{margin-right:-12px !important;}.ml-xxl-n3,.mx-xxl-n3{margin-left:-12px !important;}.mb-xxl-n3,.my-xxl-n3{margin-bottom:-12px !important;}.ms-xxl-n3{margin-inline-start:-12px !important;}.me-xxl-n3{margin-inline-end:-12px !important;}.ma-xxl-n3{margin:-12px !important;}.mt-xxl-n4,.my-xxl-n4{margin-top:-16px !important;}.mr-xxl-n4,.mx-xxl-n4{margin-right:-16px !important;}.ml-xxl-n4,.mx-xxl-n4{margin-left:-16px !important;}.mb-xxl-n4,.my-xxl-n4{margin-bottom:-16px !important;}.ms-xxl-n4{margin-inline-start:-16px !important;}.me-xxl-n4{margin-inline-end:-16px !important;}.ma-xxl-n4{margin:-16px !important;}.mt-xxl-n5,.my-xxl-n5{margin-top:-20px !important;}.mr-xxl-n5,.mx-xxl-n5{margin-right:-20px !important;}.ml-xxl-n5,.mx-xxl-n5{margin-left:-20px !important;}.mb-xxl-n5,.my-xxl-n5{margin-bottom:-20px !important;}.ms-xxl-n5{margin-inline-start:-20px !important;}.me-xxl-n5{margin-inline-end:-20px !important;}.ma-xxl-n5{margin:-20px !important;}.mt-xxl-n6,.my-xxl-n6{margin-top:-24px !important;}.mr-xxl-n6,.mx-xxl-n6{margin-right:-24px !important;}.ml-xxl-n6,.mx-xxl-n6{margin-left:-24px !important;}.mb-xxl-n6,.my-xxl-n6{margin-bottom:-24px !important;}.ms-xxl-n6{margin-inline-start:-24px !important;}.me-xxl-n6{margin-inline-end:-24px !important;}.ma-xxl-n6{margin:-24px !important;}.mt-xxl-n7,.my-xxl-n7{margin-top:-28px !important;}.mr-xxl-n7,.mx-xxl-n7{margin-right:-28px !important;}.ml-xxl-n7,.mx-xxl-n7{margin-left:-28px !important;}.mb-xxl-n7,.my-xxl-n7{margin-bottom:-28px !important;}.ms-xxl-n7{margin-inline-start:-28px !important;}.me-xxl-n7{margin-inline-end:-28px !important;}.ma-xxl-n7{margin:-28px !important;}.mt-xxl-n8,.my-xxl-n8{margin-top:-32px !important;}.mr-xxl-n8,.mx-xxl-n8{margin-right:-32px !important;}.ml-xxl-n8,.mx-xxl-n8{margin-left:-32px !important;}.mb-xxl-n8,.my-xxl-n8{margin-bottom:-32px !important;}.ms-xxl-n8{margin-inline-start:-32px !important;}.me-xxl-n8{margin-inline-end:-32px !important;}.ma-xxl-n8{margin:-32px !important;}.mt-xxl-n9,.my-xxl-n9{margin-top:-36px !important;}.mr-xxl-n9,.mx-xxl-n9{margin-right:-36px !important;}.ml-xxl-n9,.mx-xxl-n9{margin-left:-36px !important;}.mb-xxl-n9,.my-xxl-n9{margin-bottom:-36px !important;}.ms-xxl-n9{margin-inline-start:-36px !important;}.me-xxl-n9{margin-inline-end:-36px !important;}.ma-xxl-n9{margin:-36px !important;}.mt-xxl-n10,.my-xxl-n10{margin-top:-40px !important;}.mr-xxl-n10,.mx-xxl-n10{margin-right:-40px !important;}.ml-xxl-n10,.mx-xxl-n10{margin-left:-40px !important;}.mb-xxl-n10,.my-xxl-n10{margin-bottom:-40px !important;}.ms-xxl-n10{margin-inline-start:-40px !important;}.me-xxl-n10{margin-inline-end:-40px !important;}.ma-xxl-n10{margin:-40px !important;}.mt-xxl-n11,.my-xxl-n11{margin-top:-44px !important;}.mr-xxl-n11,.mx-xxl-n11{margin-right:-44px !important;}.ml-xxl-n11,.mx-xxl-n11{margin-left:-44px !important;}.mb-xxl-n11,.my-xxl-n11{margin-bottom:-44px !important;}.ms-xxl-n11{margin-inline-start:-44px !important;}.me-xxl-n11{margin-inline-end:-44px !important;}.ma-xxl-n11{margin:-44px !important;}.mt-xxl-n12,.my-xxl-n12{margin-top:-48px !important;}.mr-xxl-n12,.mx-xxl-n12{margin-right:-48px !important;}.ml-xxl-n12,.mx-xxl-n12{margin-left:-48px !important;}.mb-xxl-n12,.my-xxl-n12{margin-bottom:-48px !important;}.ms-xxl-n12{margin-inline-start:-48px !important;}.me-xxl-n12{margin-inline-end:-48px !important;}.ma-xxl-n12{margin:-48px !important;}.mt-xxl-n13,.my-xxl-n13{margin-top:-52px !important;}.mr-xxl-n13,.mx-xxl-n13{margin-right:-52px !important;}.ml-xxl-n13,.mx-xxl-n13{margin-left:-52px !important;}.mb-xxl-n13,.my-xxl-n13{margin-bottom:-52px !important;}.ms-xxl-n13{margin-inline-start:-52px !important;}.me-xxl-n13{margin-inline-end:-52px !important;}.ma-xxl-n13{margin:-52px !important;}.mt-xxl-n14,.my-xxl-n14{margin-top:-56px !important;}.mr-xxl-n14,.mx-xxl-n14{margin-right:-56px !important;}.ml-xxl-n14,.mx-xxl-n14{margin-left:-56px !important;}.mb-xxl-n14,.my-xxl-n14{margin-bottom:-56px !important;}.ms-xxl-n14{margin-inline-start:-56px !important;}.me-xxl-n14{margin-inline-end:-56px !important;}.ma-xxl-n14{margin:-56px !important;}.mt-xxl-n15,.my-xxl-n15{margin-top:-60px !important;}.mr-xxl-n15,.mx-xxl-n15{margin-right:-60px !important;}.ml-xxl-n15,.mx-xxl-n15{margin-left:-60px !important;}.mb-xxl-n15,.my-xxl-n15{margin-bottom:-60px !important;}.ms-xxl-n15{margin-inline-start:-60px !important;}.me-xxl-n15{margin-inline-end:-60px !important;}.ma-xxl-n15{margin:-60px !important;}.mt-xxl-n16,.my-xxl-n16{margin-top:-64px !important;}.mr-xxl-n16,.mx-xxl-n16{margin-right:-64px !important;}.ml-xxl-n16,.mx-xxl-n16{margin-left:-64px !important;}.mb-xxl-n16,.my-xxl-n16{margin-bottom:-64px !important;}.ms-xxl-n16{margin-inline-start:-64px !important;}.me-xxl-n16{margin-inline-end:-64px !important;}.ma-xxl-n16{margin:-64px !important;}}.mud-width-full{width:100%;}.mud-height-full{height:100%;}.w-max{width:max-content;}.mud-appbar{width:100%;display:flex;z-index:var(--mud-zindex-appbar);position:relative;box-sizing:border-box;flex-shrink:0;flex-direction:column;color:var(--mud-palette-appbar-text);background-color:var(--mud-palette-appbar-background);transition:margin 225ms cubic-bezier(0,0,.2,1) 0ms,width 225ms cubic-bezier(0,0,.2,1) 0ms;}.mud-appbar.mud-appbar-fixed-top{position:fixed;top:0;right:0;left:0;}.mud-appbar.mud-appbar-fixed-top .mud-popover-cascading-value{position:fixed;}.mud-appbar.mud-appbar-fixed-bottom{position:fixed;bottom:0;right:0;left:0;}.mud-appbar.mud-appbar-fixed-bottom .mud-popover-cascading-value{position:fixed;}.mud-appbar .mud-toolbar-appbar{height:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/8);}@media(min-width:0) and (orientation:landscape){.mud-appbar .mud-toolbar-appbar{height:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/4);}}@media(min-width:600px){.mud-appbar .mud-toolbar-appbar{height:var(--mud-appbar-height);}}.mud-appbar.mud-appbar-dense .mud-toolbar-appbar{height:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/4);}@media(min-width:0){.mud-drawer-open-responsive-xs-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);width:calc(100% - var(--mud-drawer-width-left));}.mud-drawer-open-responsive-xs-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-right));}.mud-drawer-open-responsive-xs-left.mud-drawer-left-clipped-never.mud-drawer-open-responsive-xs-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-left) - var(--mud-drawer-width-right));}}@media(min-width:600px){.mud-drawer-open-responsive-sm-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);width:calc(100% - var(--mud-drawer-width-left));}.mud-drawer-open-responsive-sm-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-right));}.mud-drawer-open-responsive-sm-left.mud-drawer-left-clipped-never.mud-drawer-open-responsive-sm-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-left) - var(--mud-drawer-width-right));}}@media(min-width:960px){.mud-drawer-open-responsive-md-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);width:calc(100% - var(--mud-drawer-width-left));}.mud-drawer-open-responsive-md-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-right));}.mud-drawer-open-responsive-md-left.mud-drawer-left-clipped-never.mud-drawer-open-responsive-md-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-left) - var(--mud-drawer-width-right));}}@media(min-width:1280px){.mud-drawer-open-responsive-lg-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);width:calc(100% - var(--mud-drawer-width-left));}.mud-drawer-open-responsive-lg-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-right));}.mud-drawer-open-responsive-lg-left.mud-drawer-left-clipped-never.mud-drawer-open-responsive-lg-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-left) - var(--mud-drawer-width-right));}}@media(min-width:1920px){.mud-drawer-open-responsive-xl-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);width:calc(100% - var(--mud-drawer-width-left));}.mud-drawer-open-responsive-xl-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-right));}.mud-drawer-open-responsive-xl-left.mud-drawer-left-clipped-never.mud-drawer-open-responsive-xl-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-left) - var(--mud-drawer-width-right));}}@media(min-width:2560px){.mud-drawer-open-responsive-xxl-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);width:calc(100% - var(--mud-drawer-width-left));}.mud-drawer-open-responsive-xxl-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-right));}.mud-drawer-open-responsive-xxl-left.mud-drawer-left-clipped-never.mud-drawer-open-responsive-xxl-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-left) - var(--mud-drawer-width-right));}}.mud-drawer-open-persistent-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);width:calc(100% - var(--mud-drawer-width-left));}.mud-drawer-open-persistent-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-right));}.mud-drawer-open-persistent-left.mud-drawer-left-clipped-never.mud-drawer-open-persistent-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-left) - var(--mud-drawer-width-right));}@media(min-width:0){.mud-drawer-open-mini-xs-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);width:calc(100% - var(--mud-drawer-width-left));}.mud-drawer-open-mini-xs-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-right));}.mud-drawer-open-mini-xs-left.mud-drawer-left-clipped-never.mud-drawer-open-mini-xs-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-left) - var(--mud-drawer-width-right));}}@media(min-width:600px){.mud-drawer-open-mini-sm-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);width:calc(100% - var(--mud-drawer-width-left));}.mud-drawer-open-mini-sm-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-right));}.mud-drawer-open-mini-sm-left.mud-drawer-left-clipped-never.mud-drawer-open-mini-sm-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-left) - var(--mud-drawer-width-right));}}@media(min-width:960px){.mud-drawer-open-mini-md-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);width:calc(100% - var(--mud-drawer-width-left));}.mud-drawer-open-mini-md-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-right));}.mud-drawer-open-mini-md-left.mud-drawer-left-clipped-never.mud-drawer-open-mini-md-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-left) - var(--mud-drawer-width-right));}}@media(min-width:1280px){.mud-drawer-open-mini-lg-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);width:calc(100% - var(--mud-drawer-width-left));}.mud-drawer-open-mini-lg-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-right));}.mud-drawer-open-mini-lg-left.mud-drawer-left-clipped-never.mud-drawer-open-mini-lg-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-left) - var(--mud-drawer-width-right));}}@media(min-width:1920px){.mud-drawer-open-mini-xl-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);width:calc(100% - var(--mud-drawer-width-left));}.mud-drawer-open-mini-xl-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-right));}.mud-drawer-open-mini-xl-left.mud-drawer-left-clipped-never.mud-drawer-open-mini-xl-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-left) - var(--mud-drawer-width-right));}}@media(min-width:2560px){.mud-drawer-open-mini-xxl-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);width:calc(100% - var(--mud-drawer-width-left));}.mud-drawer-open-mini-xxl-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-right));}.mud-drawer-open-mini-xxl-left.mud-drawer-left-clipped-never.mud-drawer-open-mini-xxl-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-left);margin-right:var(--mud-drawer-width-right);width:calc(100% - var(--mud-drawer-width-left) - var(--mud-drawer-width-right));}}.mud-drawer-close-mini-xs-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);width:calc(100% - var(--mud-drawer-width-mini-left));}.mud-drawer-close-mini-xs-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-right));}.mud-drawer-close-mini-xs-left.mud-drawer-left-clipped-never.mud-drawer-close-mini-xs-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-left) - var(--mud-drawer-width-mini-right));}@media(max-width:0){.mud-drawer-close-mini-xs-left.mud-drawer-left-clipped-docked .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);width:calc(100% - var(--mud-drawer-width-mini-left));}.mud-drawer-close-mini-xs-right.mud-drawer-right-clipped-docked .mud-appbar{margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-right));}.mud-drawer-close-mini-xs-left.mud-drawer-left-clipped-docked.mud-drawer-close-mini-xs-right.mud-drawer-right-clipped-docked .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-left) - var(--mud-drawer-width-mini-right));}}.mud-drawer-close-mini-sm-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);width:calc(100% - var(--mud-drawer-width-mini-left));}.mud-drawer-close-mini-sm-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-right));}.mud-drawer-close-mini-sm-left.mud-drawer-left-clipped-never.mud-drawer-close-mini-sm-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-left) - var(--mud-drawer-width-mini-right));}@media(max-width:600px){.mud-drawer-close-mini-sm-left.mud-drawer-left-clipped-docked .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);width:calc(100% - var(--mud-drawer-width-mini-left));}.mud-drawer-close-mini-sm-right.mud-drawer-right-clipped-docked .mud-appbar{margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-right));}.mud-drawer-close-mini-sm-left.mud-drawer-left-clipped-docked.mud-drawer-close-mini-sm-right.mud-drawer-right-clipped-docked .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-left) - var(--mud-drawer-width-mini-right));}}.mud-drawer-close-mini-md-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);width:calc(100% - var(--mud-drawer-width-mini-left));}.mud-drawer-close-mini-md-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-right));}.mud-drawer-close-mini-md-left.mud-drawer-left-clipped-never.mud-drawer-close-mini-md-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-left) - var(--mud-drawer-width-mini-right));}@media(max-width:960px){.mud-drawer-close-mini-md-left.mud-drawer-left-clipped-docked .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);width:calc(100% - var(--mud-drawer-width-mini-left));}.mud-drawer-close-mini-md-right.mud-drawer-right-clipped-docked .mud-appbar{margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-right));}.mud-drawer-close-mini-md-left.mud-drawer-left-clipped-docked.mud-drawer-close-mini-md-right.mud-drawer-right-clipped-docked .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-left) - var(--mud-drawer-width-mini-right));}}.mud-drawer-close-mini-lg-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);width:calc(100% - var(--mud-drawer-width-mini-left));}.mud-drawer-close-mini-lg-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-right));}.mud-drawer-close-mini-lg-left.mud-drawer-left-clipped-never.mud-drawer-close-mini-lg-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-left) - var(--mud-drawer-width-mini-right));}@media(max-width:1280px){.mud-drawer-close-mini-lg-left.mud-drawer-left-clipped-docked .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);width:calc(100% - var(--mud-drawer-width-mini-left));}.mud-drawer-close-mini-lg-right.mud-drawer-right-clipped-docked .mud-appbar{margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-right));}.mud-drawer-close-mini-lg-left.mud-drawer-left-clipped-docked.mud-drawer-close-mini-lg-right.mud-drawer-right-clipped-docked .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-left) - var(--mud-drawer-width-mini-right));}}.mud-drawer-close-mini-xl-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);width:calc(100% - var(--mud-drawer-width-mini-left));}.mud-drawer-close-mini-xl-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-right));}.mud-drawer-close-mini-xl-left.mud-drawer-left-clipped-never.mud-drawer-close-mini-xl-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-left) - var(--mud-drawer-width-mini-right));}@media(max-width:1920px){.mud-drawer-close-mini-xl-left.mud-drawer-left-clipped-docked .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);width:calc(100% - var(--mud-drawer-width-mini-left));}.mud-drawer-close-mini-xl-right.mud-drawer-right-clipped-docked .mud-appbar{margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-right));}.mud-drawer-close-mini-xl-left.mud-drawer-left-clipped-docked.mud-drawer-close-mini-xl-right.mud-drawer-right-clipped-docked .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-left) - var(--mud-drawer-width-mini-right));}}.mud-drawer-close-mini-xxl-left.mud-drawer-left-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);width:calc(100% - var(--mud-drawer-width-mini-left));}.mud-drawer-close-mini-xxl-right.mud-drawer-right-clipped-never .mud-appbar{margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-right));}.mud-drawer-close-mini-xxl-left.mud-drawer-left-clipped-never.mud-drawer-close-mini-xxl-right.mud-drawer-right-clipped-never .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-left) - var(--mud-drawer-width-mini-right));}@media(max-width:2560px){.mud-drawer-close-mini-xxl-left.mud-drawer-left-clipped-docked .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);width:calc(100% - var(--mud-drawer-width-mini-left));}.mud-drawer-close-mini-xxl-right.mud-drawer-right-clipped-docked .mud-appbar{margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-right));}.mud-drawer-close-mini-xxl-left.mud-drawer-left-clipped-docked.mud-drawer-close-mini-xxl-right.mud-drawer-right-clipped-docked .mud-appbar{margin-left:var(--mud-drawer-width-mini-left);margin-right:var(--mud-drawer-width-mini-right);width:calc(100% - var(--mud-drawer-width-mini-left) - var(--mud-drawer-width-mini-right));}}.mud-drawer{display:flex;flex-shrink:0;flex-grow:1;flex:0 0 auto;outline:0;position:fixed;z-index:var(--mud-zindex-drawer);overflow-y:auto;flex-direction:column;color:var(--mud-palette-drawer-text);background-color:var(--mud-palette-drawer-background);--mud-drawer-content-height:0;}.mud-drawer .mud-drawer-content{height:100%;max-height:100%;display:flex;flex-shrink:0;flex-grow:1;flex:0 0 auto;flex-direction:column;}.mud-drawer:not(.mud-drawer-fixed){position:absolute;}@media(max-width:-1px){.mud-drawer.mud-drawer-mini.mud-drawer-xs:not(.mud-drawer--closed),.mud-drawer.mud-drawer-responsive.mud-drawer-xs{z-index:calc(var(--mud-zindex-appbar) + 2);}.mud-drawer.mud-drawer-mini.mud-drawer-xs:not(.mud-drawer--closed).mud-drawer--initial:not(.mud-drawer-mini),.mud-drawer.mud-drawer-responsive.mud-drawer-xs.mud-drawer--initial:not(.mud-drawer-mini){display:none !important;}}@media(max-width:599px){.mud-drawer.mud-drawer-mini.mud-drawer-sm:not(.mud-drawer--closed),.mud-drawer.mud-drawer-responsive.mud-drawer-sm{z-index:calc(var(--mud-zindex-appbar) + 2);}.mud-drawer.mud-drawer-mini.mud-drawer-sm:not(.mud-drawer--closed).mud-drawer--initial:not(.mud-drawer-mini),.mud-drawer.mud-drawer-responsive.mud-drawer-sm.mud-drawer--initial:not(.mud-drawer-mini){display:none !important;}}@media(max-width:959px){.mud-drawer.mud-drawer-mini.mud-drawer-md:not(.mud-drawer--closed),.mud-drawer.mud-drawer-responsive.mud-drawer-md{z-index:calc(var(--mud-zindex-appbar) + 2);}.mud-drawer.mud-drawer-mini.mud-drawer-md:not(.mud-drawer--closed).mud-drawer--initial:not(.mud-drawer-mini),.mud-drawer.mud-drawer-responsive.mud-drawer-md.mud-drawer--initial:not(.mud-drawer-mini){display:none !important;}}@media(max-width:1279px){.mud-drawer.mud-drawer-mini.mud-drawer-lg:not(.mud-drawer--closed),.mud-drawer.mud-drawer-responsive.mud-drawer-lg{z-index:calc(var(--mud-zindex-appbar) + 2);}.mud-drawer.mud-drawer-mini.mud-drawer-lg:not(.mud-drawer--closed).mud-drawer--initial:not(.mud-drawer-mini),.mud-drawer.mud-drawer-responsive.mud-drawer-lg.mud-drawer--initial:not(.mud-drawer-mini){display:none !important;}}@media(max-width:1919px){.mud-drawer.mud-drawer-mini.mud-drawer-xl:not(.mud-drawer--closed),.mud-drawer.mud-drawer-responsive.mud-drawer-xl{z-index:calc(var(--mud-zindex-appbar) + 2);}.mud-drawer.mud-drawer-mini.mud-drawer-xl:not(.mud-drawer--closed).mud-drawer--initial:not(.mud-drawer-mini),.mud-drawer.mud-drawer-responsive.mud-drawer-xl.mud-drawer--initial:not(.mud-drawer-mini){display:none !important;}}@media(max-width:2559px){.mud-drawer.mud-drawer-mini.mud-drawer-xxl:not(.mud-drawer--closed),.mud-drawer.mud-drawer-responsive.mud-drawer-xxl{z-index:calc(var(--mud-zindex-appbar) + 2);}.mud-drawer.mud-drawer-mini.mud-drawer-xxl:not(.mud-drawer--closed).mud-drawer--initial:not(.mud-drawer-mini),.mud-drawer.mud-drawer-responsive.mud-drawer-xxl.mud-drawer--initial:not(.mud-drawer-mini){display:none !important;}}.mud-drawer.mud-drawer-responsive,.mud-drawer.mud-drawer-persistent{height:100%;}.mud-drawer.mud-drawer-responsive.mud-drawer-pos-left,.mud-drawer.mud-drawer-persistent.mud-drawer-pos-left{right:auto;width:var(--mud-drawer-width,var(--mud-drawer-width-left));}.mud-drawer.mud-drawer-responsive.mud-drawer-pos-left.mud-drawer--open,.mud-drawer.mud-drawer-persistent.mud-drawer-pos-left.mud-drawer--open{left:0;}.mud-drawer.mud-drawer-responsive.mud-drawer-pos-left.mud-drawer--open:not(.mud-drawer--initial),.mud-drawer.mud-drawer-persistent.mud-drawer-pos-left.mud-drawer--open:not(.mud-drawer--initial){animation:mud-drawer-slide-in-left 225ms cubic-bezier(0,0,.2,1);}.mud-drawer.mud-drawer-responsive.mud-drawer-pos-left.mud-drawer--closed,.mud-drawer.mud-drawer-persistent.mud-drawer-pos-left.mud-drawer--closed{box-shadow:none;left:calc(-1*var(--mud-drawer-width,var(--mud-drawer-width-left)));}.mud-drawer.mud-drawer-responsive.mud-drawer-pos-left.mud-drawer--closed:not(.mud-drawer--initial),.mud-drawer.mud-drawer-persistent.mud-drawer-pos-left.mud-drawer--closed:not(.mud-drawer--initial){animation:mud-drawer-slide-out-left 225ms cubic-bezier(0,0,.2,1);}.mud-drawer.mud-drawer-responsive.mud-drawer-pos-right,.mud-drawer.mud-drawer-persistent.mud-drawer-pos-right{left:auto;width:var(--mud-drawer-width,var(--mud-drawer-width-right));}.mud-drawer.mud-drawer-responsive.mud-drawer-pos-right.mud-drawer--open,.mud-drawer.mud-drawer-persistent.mud-drawer-pos-right.mud-drawer--open{right:0;}.mud-drawer.mud-drawer-responsive.mud-drawer-pos-right.mud-drawer--open:not(.mud-drawer--initial),.mud-drawer.mud-drawer-persistent.mud-drawer-pos-right.mud-drawer--open:not(.mud-drawer--initial){animation:mud-drawer-slide-in-right 225ms cubic-bezier(0,0,.2,1);}.mud-drawer.mud-drawer-responsive.mud-drawer-pos-right.mud-drawer--closed,.mud-drawer.mud-drawer-persistent.mud-drawer-pos-right.mud-drawer--closed{box-shadow:none;right:calc(-1*var(--mud-drawer-width,var(--mud-drawer-width-right)));}.mud-drawer.mud-drawer-responsive.mud-drawer-pos-right.mud-drawer--closed:not(.mud-drawer--initial),.mud-drawer.mud-drawer-persistent.mud-drawer-pos-right.mud-drawer--closed:not(.mud-drawer--initial){animation:mud-drawer-slide-out-right 225ms cubic-bezier(0,0,.2,1);}.mud-drawer.mud-drawer-mini{height:100%;transition:width 225ms cubic-bezier(0,0,.2,1);}.mud-drawer.mud-drawer-mini.mud-drawer-pos-left{left:0;right:auto;}.mud-drawer.mud-drawer-mini.mud-drawer-pos-left.mud-drawer--closed{width:var(--mud-drawer-width-mini-left);}.mud-drawer.mud-drawer-mini.mud-drawer-pos-left.mud-drawer--open{width:var(--mud-drawer-width-left);}.mud-drawer.mud-drawer-mini.mud-drawer-pos-right{left:auto;right:0;}.mud-drawer.mud-drawer-mini.mud-drawer-pos-right.mud-drawer--closed{width:var(--mud-drawer-width-mini-right);}.mud-drawer.mud-drawer-mini.mud-drawer-pos-right.mud-drawer--open{width:var(--mud-drawer-width-right);}.mud-drawer.mud-drawer-temporary{margin:0 !important;z-index:calc(var(--mud-zindex-appbar) + 2);transition:transform 225ms cubic-bezier(0,0,.2,1) 0ms;}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-left{right:auto;top:0;height:100%;width:var(--mud-drawer-width,var(--mud-drawer-width-left));}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-left.mud-drawer--open{left:0;}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-left.mud-drawer--open:not(.mud-drawer--initial){animation:mud-drawer-slide-in-left 225ms cubic-bezier(0,0,.2,1) forwards;}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-left.mud-drawer--closed{left:calc(-1*var(--mud-drawer-width,var(--mud-drawer-width-left)));}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-left.mud-drawer--closed:not(.mud-drawer--initial){animation:mud-drawer-slide-out-left 225ms cubic-bezier(0,0,.2,1) forwards;}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-right{left:auto;top:0;height:100%;width:var(--mud-drawer-width,var(--mud-drawer-width-right));}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-right.mud-drawer--open{right:0;}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-right.mud-drawer--open:not(.mud-drawer--initial){animation:mud-drawer-slide-in-right 225ms cubic-bezier(0,0,.2,1) forwards;}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-right.mud-drawer--closed{right:calc(-1*var(--mud-drawer-width,var(--mud-drawer-width-right)));}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-right.mud-drawer--closed:not(.mud-drawer--initial){animation:mud-drawer-slide-out-right 225ms cubic-bezier(0,0,.2,1) forwards;}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-bottom{left:0;top:auto;width:100%;}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-bottom.mud-drawer--open{bottom:0;}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-bottom.mud-drawer--open:not(.mud-drawer--initial){animation:mud-drawer-slide-in-bottom 225ms cubic-bezier(0,0,.2,1) 0ms 1;}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-bottom.mud-drawer--closed{bottom:calc(-1*var(--mud-drawer-content-height));}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-bottom.mud-drawer--closed:not(.mud-drawer--initial){animation:mud-drawer-slide-out-bottom 225ms cubic-bezier(0,0,.2,1) 0ms 1;}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-top{left:0;bottom:auto;width:100%;}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-top.mud-drawer--open{top:0;}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-top.mud-drawer--open:not(.mud-drawer--initial){animation:mud-drawer-slide-in-top 225ms cubic-bezier(0,0,.2,1) 0ms 1;}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-top.mud-drawer--closed{top:calc(-1*var(--mud-drawer-content-height));}.mud-drawer.mud-drawer-temporary.mud-drawer-pos-top.mud-drawer--closed:not(.mud-drawer--initial){animation:mud-drawer-slide-out-top 225ms cubic-bezier(0,0,.2,1) 0ms 1;}.mud-drawer.mud-drawer-mini.mud-drawer-pos-left~div:not(.mud-main-content),.mud-drawer.mud-drawer-mini.mud-drawer-pos-right~div:not(.mud-main-content),.mud-drawer.mud-drawer-persistent.mud-drawer-pos-left~div:not(.mud-main-content),.mud-drawer.mud-drawer-persistent.mud-drawer-pos-right~div:not(.mud-main-content){transition:margin 225ms cubic-bezier(0,0,.2,1) 0ms;}.mud-drawer.mud-drawer-mini.mud-drawer-pos-left.mud-drawer--open~div:not(.mud-main-content),.mud-drawer.mud-drawer-persistent.mud-drawer-pos-left.mud-drawer--open~div:not(.mud-main-content){margin-left:var(--mud-drawer-width,var(--mud-drawer-width-left));}.mud-drawer.mud-drawer-mini.mud-drawer-pos-right.mud-drawer--open~div:not(.mud-main-content),.mud-drawer.mud-drawer-persistent.mud-drawer-pos-right.mud-drawer--open~div:not(.mud-main-content){margin-right:var(--mud-drawer-width,var(--mud-drawer-width-right));}.mud-drawer.mud-drawer-mini.mud-drawer-pos-left.mud-drawer--closed~div:not(.mud-main-content){margin-left:var(--mud-drawer-width,var(--mud-drawer-width-mini-left));}.mud-drawer.mud-drawer-mini.mud-drawer-pos-right.mud-drawer--closed~div:not(.mud-main-content){margin-right:var(--mud-drawer-width,var(--mud-drawer-width-mini-right));}.mud-drawer-header{display:flex;min-height:var(--mud-appbar-height);padding:12px 24px 12px 24px;}.mud-drawer-header.mud-drawer-header-dense{min-height:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/4);padding:8px 24px 8px 24px;}.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-always,.mud-drawer-fixed.mud-drawer-persistent:not(.mud-drawer-clipped-never),.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-always,.mud-drawer-fixed.mud-drawer-temporary.mud-drawer-clipped-always{top:var(--mud-appbar-height);height:calc(100% - var(--mud-appbar-height));}@media(max-width:599px) and (orientation:landscape){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-always,.mud-drawer-fixed.mud-drawer-persistent:not(.mud-drawer-clipped-never),.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-always,.mud-drawer-fixed.mud-drawer-temporary.mud-drawer-clipped-always{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/4);height:calc(100% - calc(var(--mud-appbar-height) - var(--mud-appbar-height)/4));}}@media(max-width:599px) and (orientation:portrait){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-always,.mud-drawer-fixed.mud-drawer-persistent:not(.mud-drawer-clipped-never),.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-always,.mud-drawer-fixed.mud-drawer-temporary.mud-drawer-clipped-always{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/8);height:calc(100% - calc(var(--mud-appbar-height) - var(--mud-appbar-height)/8));}}@media(min-width:0){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-xs,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-xs{top:var(--mud-appbar-height);height:calc(100% - var(--mud-appbar-height));}}@media(min-width:0) and (max-width:599px) and (orientation:landscape){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-xs,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-xs{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height) - var(--mud-appbar-height)/4);height:calc(100% - var(--mud-appbar-height) + var(--mud-appbar-height) - var(--mud-appbar-height)/4);}}@media(min-width:0) and (max-width:599px) and (orientation:portrait){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-xs,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-xs{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/8);height:calc(100% - var(--mud-appbar-height)/8);}}@media(min-width:600px){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-sm,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-sm{top:var(--mud-appbar-height);height:calc(100% - var(--mud-appbar-height));}}@media(min-width:600px) and (max-width:599px) and (orientation:landscape){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-sm,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-sm{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height) - var(--mud-appbar-height)/4);height:calc(100% - var(--mud-appbar-height) + var(--mud-appbar-height) - var(--mud-appbar-height)/4);}}@media(min-width:600px) and (max-width:599px) and (orientation:portrait){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-sm,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-sm{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/8);height:calc(100% - var(--mud-appbar-height)/8);}}@media(min-width:960px){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-md,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-md{top:var(--mud-appbar-height);height:calc(100% - var(--mud-appbar-height));}}@media(min-width:960px) and (max-width:599px) and (orientation:landscape){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-md,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-md{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height) - var(--mud-appbar-height)/4);height:calc(100% - var(--mud-appbar-height) + var(--mud-appbar-height) - var(--mud-appbar-height)/4);}}@media(min-width:960px) and (max-width:599px) and (orientation:portrait){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-md,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-md{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/8);height:calc(100% - var(--mud-appbar-height)/8);}}@media(min-width:1280px){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-lg,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-lg{top:var(--mud-appbar-height);height:calc(100% - var(--mud-appbar-height));}}@media(min-width:1280px) and (max-width:599px) and (orientation:landscape){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-lg,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-lg{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height) - var(--mud-appbar-height)/4);height:calc(100% - var(--mud-appbar-height) + var(--mud-appbar-height) - var(--mud-appbar-height)/4);}}@media(min-width:1280px) and (max-width:599px) and (orientation:portrait){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-lg,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-lg{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/8);height:calc(100% - var(--mud-appbar-height)/8);}}@media(min-width:1920px){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-xl,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-xl{top:var(--mud-appbar-height);height:calc(100% - var(--mud-appbar-height));}}@media(min-width:1920px) and (max-width:599px) and (orientation:landscape){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-xl,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-xl{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height) - var(--mud-appbar-height)/4);height:calc(100% - var(--mud-appbar-height) + var(--mud-appbar-height) - var(--mud-appbar-height)/4);}}@media(min-width:1920px) and (max-width:599px) and (orientation:portrait){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-xl,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-xl{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/8);height:calc(100% - var(--mud-appbar-height)/8);}}@media(min-width:2560px){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-xxl,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-xxl{top:var(--mud-appbar-height);height:calc(100% - var(--mud-appbar-height));}}@media(min-width:2560px) and (max-width:599px) and (orientation:landscape){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-xxl,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-xxl{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height) - var(--mud-appbar-height)/4);height:calc(100% - var(--mud-appbar-height) + var(--mud-appbar-height) - var(--mud-appbar-height)/4);}}@media(min-width:2560px) and (max-width:599px) and (orientation:portrait){.mud-drawer-fixed.mud-drawer-mini.mud-drawer-clipped-docked.mud-drawer-xxl,.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-xxl{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/8);height:calc(100% - var(--mud-appbar-height)/8);}}.mud-appbar-dense~.mud-drawer-fixed.mud-drawer-mini:not(.mud-drawer-clipped-never),.mud-appbar-dense~.mud-drawer-fixed.mud-drawer-persistent:not(.mud-drawer-clipped-never),.mud-appbar-dense~.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-always,.mud-appbar-dense~.mud-drawer-fixed.mud-drawer-temporary.mud-drawer-clipped-always{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/4);height:calc(100% - var(--mud-appbar-height) + var(--mud-appbar-height)/4);}@media(min-width:0){.mud-appbar-dense~.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-xs{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/4);height:calc(100% - var(--mud-appbar-height) + var(--mud-appbar-height)/4);}}@media(min-width:600px){.mud-appbar-dense~.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-sm{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/4);height:calc(100% - var(--mud-appbar-height) + var(--mud-appbar-height)/4);}}@media(min-width:960px){.mud-appbar-dense~.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-md{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/4);height:calc(100% - var(--mud-appbar-height) + var(--mud-appbar-height)/4);}}@media(min-width:1280px){.mud-appbar-dense~.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-lg{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/4);height:calc(100% - var(--mud-appbar-height) + var(--mud-appbar-height)/4);}}@media(min-width:1920px){.mud-appbar-dense~.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-xl{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/4);height:calc(100% - var(--mud-appbar-height) + var(--mud-appbar-height)/4);}}@media(min-width:2560px){.mud-appbar-dense~.mud-drawer-fixed.mud-drawer-responsive.mud-drawer-clipped-docked.mud-drawer-xxl{top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/4);height:calc(100% - var(--mud-appbar-height) + var(--mud-appbar-height)/4);}}.mud-drawer-overlay{display:none;}@media(max-width:-1px){.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-responsive.mud-drawer-overlay-xs{display:block;}.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-responsive.mud-drawer-overlay-xs.mud-drawer--initial{display:none;}}@media(max-width:-1px){.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-mini.mud-drawer-overlay-xs{display:block;}}@media(max-width:599px){.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-responsive.mud-drawer-overlay-sm{display:block;}.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-responsive.mud-drawer-overlay-sm.mud-drawer--initial{display:none;}}@media(max-width:599px){.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-mini.mud-drawer-overlay-sm{display:block;}}@media(max-width:959px){.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-responsive.mud-drawer-overlay-md{display:block;}.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-responsive.mud-drawer-overlay-md.mud-drawer--initial{display:none;}}@media(max-width:959px){.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-mini.mud-drawer-overlay-md{display:block;}}@media(max-width:1279px){.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-responsive.mud-drawer-overlay-lg{display:block;}.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-responsive.mud-drawer-overlay-lg.mud-drawer--initial{display:none;}}@media(max-width:1279px){.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-mini.mud-drawer-overlay-lg{display:block;}}@media(max-width:1919px){.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-responsive.mud-drawer-overlay-xl{display:block;}.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-responsive.mud-drawer-overlay-xl.mud-drawer--initial{display:none;}}@media(max-width:1919px){.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-mini.mud-drawer-overlay-xl{display:block;}}@media(max-width:2559px){.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-responsive.mud-drawer-overlay-xxl{display:block;}.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-responsive.mud-drawer-overlay-xxl.mud-drawer--initial{display:none;}}@media(max-width:2559px){.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-mini.mud-drawer-overlay-xxl{display:block;}}.mud-drawer-overlay.mud-drawer-overlay--open.mud-drawer-overlay-temporary{display:block;}@keyframes mud-drawer-slide-in-left{from{left:calc(-1*var(--mud-drawer-width,var(--mud-drawer-width-left)));}}@keyframes mud-drawer-slide-out-left{from{left:0;}}@keyframes mud-drawer-slide-in-right{from{right:calc(-1*var(--mud-drawer-width,var(--mud-drawer-width-right)));}}@keyframes mud-drawer-slide-out-right{from{right:0;}}@keyframes mud-drawer-slide-in-bottom{from{bottom:calc(-1*var(--mud-drawer-content-height));}}@keyframes mud-drawer-slide-out-bottom{from{bottom:0;}}@keyframes mud-drawer-slide-in-top{from{top:calc(-1*var(--mud-drawer-content-height));}}@keyframes mud-drawer-slide-out-top{from{top:0;}}.mud-main-content{margin:0;flex:1 1 auto;padding-top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/8);transition:margin 225ms cubic-bezier(0,0,.2,1) 0ms;}@media(min-width:0) and (orientation:landscape){.mud-main-content{padding-top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/4);}}@media(min-width:600px){.mud-main-content{padding-top:var(--mud-appbar-height);}}.mud-appbar-dense~.mud-main-content{padding-top:calc(var(--mud-appbar-height) - var(--mud-appbar-height)/4);}@media(min-width:0){.mud-drawer-open-responsive-xs-left .mud-main-content{margin-left:var(--mud-drawer-width-left);}.mud-drawer-open-responsive-xs-right .mud-main-content{margin-right:var(--mud-drawer-width-right);}.mud-drawer-open-responsive-xs-left.mud-drawer-open-responsive-xs-right .mud-main-content{margin-right:var(--mud-drawer-width-right);margin-left:var(--mud-drawer-width-left);}}@media(min-width:600px){.mud-drawer-open-responsive-sm-left .mud-main-content{margin-left:var(--mud-drawer-width-left);}.mud-drawer-open-responsive-sm-right .mud-main-content{margin-right:var(--mud-drawer-width-right);}.mud-drawer-open-responsive-sm-left.mud-drawer-open-responsive-sm-right .mud-main-content{margin-right:var(--mud-drawer-width-right);margin-left:var(--mud-drawer-width-left);}}@media(min-width:960px){.mud-drawer-open-responsive-md-left .mud-main-content{margin-left:var(--mud-drawer-width-left);}.mud-drawer-open-responsive-md-right .mud-main-content{margin-right:var(--mud-drawer-width-right);}.mud-drawer-open-responsive-md-left.mud-drawer-open-responsive-md-right .mud-main-content{margin-right:var(--mud-drawer-width-right);margin-left:var(--mud-drawer-width-left);}}@media(min-width:1280px){.mud-drawer-open-responsive-lg-left .mud-main-content{margin-left:var(--mud-drawer-width-left);}.mud-drawer-open-responsive-lg-right .mud-main-content{margin-right:var(--mud-drawer-width-right);}.mud-drawer-open-responsive-lg-left.mud-drawer-open-responsive-lg-right .mud-main-content{margin-right:var(--mud-drawer-width-right);margin-left:var(--mud-drawer-width-left);}}@media(min-width:1920px){.mud-drawer-open-responsive-xl-left .mud-main-content{margin-left:var(--mud-drawer-width-left);}.mud-drawer-open-responsive-xl-right .mud-main-content{margin-right:var(--mud-drawer-width-right);}.mud-drawer-open-responsive-xl-left.mud-drawer-open-responsive-xl-right .mud-main-content{margin-right:var(--mud-drawer-width-right);margin-left:var(--mud-drawer-width-left);}}@media(min-width:2560px){.mud-drawer-open-responsive-xxl-left .mud-main-content{margin-left:var(--mud-drawer-width-left);}.mud-drawer-open-responsive-xxl-right .mud-main-content{margin-right:var(--mud-drawer-width-right);}.mud-drawer-open-responsive-xxl-left.mud-drawer-open-responsive-xxl-right .mud-main-content{margin-right:var(--mud-drawer-width-right);margin-left:var(--mud-drawer-width-left);}}.mud-drawer-open-persistent-left:not(.mud-drawer-open-persistent-right) .mud-main-content{margin-left:var(--mud-drawer-width-left);}.mud-drawer-open-persistent-right:not(.mud-drawer-open-persistent-left) .mud-main-content{margin-right:var(--mud-drawer-width-right);}.mud-drawer-open-persistent-left.mud-drawer-open-persistent-right .mud-main-content{margin-right:var(--mud-drawer-width-right);margin-left:var(--mud-drawer-width-left);}@media(min-width:0){.mud-drawer-open-mini-xs-left .mud-main-content{margin-left:var(--mud-drawer-width-left);}.mud-drawer-open-mini-xs-right .mud-main-content{margin-right:var(--mud-drawer-width-right);}.mud-drawer-open-mini-xs-left.mud-drawer-open-mini-xs-right .mud-main-content{margin-right:var(--mud-drawer-width-right);margin-left:var(--mud-drawer-width-left);}}@media(min-width:600px){.mud-drawer-open-mini-sm-left .mud-main-content{margin-left:var(--mud-drawer-width-left);}.mud-drawer-open-mini-sm-right .mud-main-content{margin-right:var(--mud-drawer-width-right);}.mud-drawer-open-mini-sm-left.mud-drawer-open-mini-sm-right .mud-main-content{margin-right:var(--mud-drawer-width-right);margin-left:var(--mud-drawer-width-left);}}@media(min-width:960px){.mud-drawer-open-mini-md-left .mud-main-content{margin-left:var(--mud-drawer-width-left);}.mud-drawer-open-mini-md-right .mud-main-content{margin-right:var(--mud-drawer-width-right);}.mud-drawer-open-mini-md-left.mud-drawer-open-mini-md-right .mud-main-content{margin-right:var(--mud-drawer-width-right);margin-left:var(--mud-drawer-width-left);}}@media(min-width:1280px){.mud-drawer-open-mini-lg-left .mud-main-content{margin-left:var(--mud-drawer-width-left);}.mud-drawer-open-mini-lg-right .mud-main-content{margin-right:var(--mud-drawer-width-right);}.mud-drawer-open-mini-lg-left.mud-drawer-open-mini-lg-right .mud-main-content{margin-right:var(--mud-drawer-width-right);margin-left:var(--mud-drawer-width-left);}}@media(min-width:1920px){.mud-drawer-open-mini-xl-left .mud-main-content{margin-left:var(--mud-drawer-width-left);}.mud-drawer-open-mini-xl-right .mud-main-content{margin-right:var(--mud-drawer-width-right);}.mud-drawer-open-mini-xl-left.mud-drawer-open-mini-xl-right .mud-main-content{margin-right:var(--mud-drawer-width-right);margin-left:var(--mud-drawer-width-left);}}@media(min-width:2560px){.mud-drawer-open-mini-xxl-left .mud-main-content{margin-left:var(--mud-drawer-width-left);}.mud-drawer-open-mini-xxl-right .mud-main-content{margin-right:var(--mud-drawer-width-right);}.mud-drawer-open-mini-xxl-left.mud-drawer-open-mini-xxl-right .mud-main-content{margin-right:var(--mud-drawer-width-right);margin-left:var(--mud-drawer-width-left);}}.mud-drawer-open-mini-none-left .mud-main-content,.mud-drawer-open-mini-always-left .mud-main-content{margin-left:var(--mud-drawer-width-left);}.mud-drawer-open-mini-none-right .mud-main-content,.mud-drawer-open-mini-always-right .mud-main-content{margin-right:var(--mud-drawer-width-right);}.mud-drawer-open-mini-none-left.mud-drawer-open-mini-none,.mud-drawer-open-mini-none .mud-drawer-open-mini-always-right .mud-main-content,.mud-drawer-open-mini-always-left.mud-drawer-open-mini-none,.mud-drawer-open-mini-always .mud-drawer-open-mini-always-right .mud-main-content{margin-right:var(--mud-drawer-width-right);margin-left:var(--mud-drawer-width-left);}.mud-drawer-close-mini-xs-left .mud-main-content{margin-left:var(--mud-drawer-width-mini-left);}.mud-drawer-close-mini-xs-right .mud-main-content{margin-right:var(--mud-drawer-width-mini-right);}.mud-drawer-close-mini-xs-left.mud-drawer-close-mini-xs-right .mud-main-content{margin-right:var(--mud-drawer-width-mini-right);margin-left:var(--mud-drawer-width-mini-left);}.mud-drawer-close-mini-sm-left .mud-main-content{margin-left:var(--mud-drawer-width-mini-left);}.mud-drawer-close-mini-sm-right .mud-main-content{margin-right:var(--mud-drawer-width-mini-right);}.mud-drawer-close-mini-sm-left.mud-drawer-close-mini-sm-right .mud-main-content{margin-right:var(--mud-drawer-width-mini-right);margin-left:var(--mud-drawer-width-mini-left);}.mud-drawer-close-mini-md-left .mud-main-content{margin-left:var(--mud-drawer-width-mini-left);}.mud-drawer-close-mini-md-right .mud-main-content{margin-right:var(--mud-drawer-width-mini-right);}.mud-drawer-close-mini-md-left.mud-drawer-close-mini-md-right .mud-main-content{margin-right:var(--mud-drawer-width-mini-right);margin-left:var(--mud-drawer-width-mini-left);}.mud-drawer-close-mini-lg-left .mud-main-content{margin-left:var(--mud-drawer-width-mini-left);}.mud-drawer-close-mini-lg-right .mud-main-content{margin-right:var(--mud-drawer-width-mini-right);}.mud-drawer-close-mini-lg-left.mud-drawer-close-mini-lg-right .mud-main-content{margin-right:var(--mud-drawer-width-mini-right);margin-left:var(--mud-drawer-width-mini-left);}.mud-drawer-close-mini-xl-left .mud-main-content{margin-left:var(--mud-drawer-width-mini-left);}.mud-drawer-close-mini-xl-right .mud-main-content{margin-right:var(--mud-drawer-width-mini-right);}.mud-drawer-close-mini-xl-left.mud-drawer-close-mini-xl-right .mud-main-content{margin-right:var(--mud-drawer-width-mini-right);margin-left:var(--mud-drawer-width-mini-left);}.mud-drawer-close-mini-xxl-left .mud-main-content{margin-left:var(--mud-drawer-width-mini-left);}.mud-drawer-close-mini-xxl-right .mud-main-content{margin-right:var(--mud-drawer-width-mini-right);}.mud-drawer-close-mini-xxl-left.mud-drawer-close-mini-xxl-right .mud-main-content{margin-right:var(--mud-drawer-width-mini-right);margin-left:var(--mud-drawer-width-mini-left);}.mud-drawer-close-mini-none-left .mud-main-content,.mud-drawer-close-mini-always-left .mud-main-content{margin-left:var(--mud-drawer-width-mini-left);}.mud-drawer-close-mini-none-right .mud-main-content,.mud-drawer-close-mini-always-right .mud-main-content{margin-right:var(--mud-drawer-width-mini-right);}.mud-drawer-close-mini-none-left.mud-drawer-close-mini-none,.mud-drawer-close-mini-none .mud-drawer-close-mini-always-right .mud-main-content,.mud-drawer-close-mini-always-left.mud-drawer-close-mini-none,.mud-drawer-close-mini-always .mud-drawer-close-mini-always-right .mud-main-content{margin-right:var(--mud-drawer-width-mini-right);margin-left:var(--mud-drawer-width-mini-left);}.mud-container{width:100%;display:block;box-sizing:border-box;margin-left:auto;margin-right:auto;padding-left:16px;padding-right:16px;}@media(min-width:600px){.mud-container{padding-left:24px;padding-right:24px;}}.mud-container-disable-gutters{padding-left:0;padding-right:0;}@media(min-width:600px){.mud-container-fixed{max-width:600px;}}@media(min-width:960px){.mud-container-fixed{max-width:960px;}}@media(min-width:1280px){.mud-container-fixed{max-width:1280px;}}@media(min-width:1920px){.mud-container-fixed{max-width:1920px;}}@media(min-width:2560px){.mud-container-fixed{max-width:2560px;}}@media(min-width:0){.mud-container-maxwidth-xs{max-width:444px;}}@media(min-width:600px){.mud-container-maxwidth-sm{max-width:600px;}}@media(min-width:960px){.mud-container-maxwidth-md{max-width:960px;}}@media(min-width:1280px){.mud-container-maxwidth-lg{max-width:1280px;}}@media(min-width:1920px){.mud-container-maxwidth-xl{max-width:1920px;}}@media(min-width:2560px){.mud-container-maxwidth-xxl{max-width:2560px;}}.scroll-locked{padding-right:8px;overflow:hidden;}.scroll-locked .mud-layout .mud-appbar{padding-right:8px;}.scroll-locked .mud-layout .mud-main-content .mud-scroll-to-top{padding-right:8px;}@-moz-document url-prefix(){.scroll-locked{padding-right:17px;}.scroll-locked .mud-layout .mud-appbar{padding-right:17px;}.scroll-locked .mud-layout .mud-main-content .mud-scroll-to-top{padding-right:17px;}}.mud-scroll-to-top{position:fixed;cursor:pointer;z-index:100;}.mud-scroll-to-top.visible{bottom:16px;right:16px;opacity:1;transition:transform .5s;flex:1;}.mud-scroll-to-top.hidden{bottom:16px;right:16px;opacity:0;transition:all .5s;visibility:hidden;transform:scale(0) rotate(180deg);flex:0;}.mud-scroll-to-top:after{content:'';background:transparent;top:0;bottom:0;left:0;right:0;position:absolute;z-index:var(--mud-zindex-tooltip);}.red{background-color:#f44336;}.red-text{color:#f44336;}.red.lighten-5{background-color:#ffebee;}.red-text.text-lighten-5{color:#ffebee;}.red.lighten-4{background-color:#ffcdd2;}.red-text.text-lighten-4{color:#ffcdd2;}.red.lighten-3{background-color:#ef9a9a;}.red-text.text-lighten-3{color:#ef9a9a;}.red.lighten-2{background-color:#e57373;}.red-text.text-lighten-2{color:#e57373;}.red.lighten-1{background-color:#ef5350;}.red-text.text-lighten-1{color:#ef5350;}.red.darken-1{background-color:#e53935;}.red-text.text-darken-1{color:#e53935;}.red.darken-2{background-color:#d32f2f;}.red-text.text-darken-2{color:#d32f2f;}.red.darken-3{background-color:#c62828;}.red-text.text-darken-3{color:#c62828;}.red.darken-4{background-color:#b71c1c;}.red-text.text-darken-4{color:#b71c1c;}.red.accent-1{background-color:#ff8a80;}.red-text.text-accent-1{color:#ff8a80;}.red.accent-2{background-color:#ff5252;}.red-text.text-accent-2{color:#ff5252;}.red.accent-3{background-color:#ff1744;}.red-text.text-accent-3{color:#ff1744;}.red.accent-4{background-color:#d50000;}.red-text.text-accent-4{color:#d50000;}.pink{background-color:#e91e63;}.pink-text{color:#e91e63;}.pink.lighten-5{background-color:#fce4ec;}.pink-text.text-lighten-5{color:#fce4ec;}.pink.lighten-4{background-color:#f8bbd0;}.pink-text.text-lighten-4{color:#f8bbd0;}.pink.lighten-3{background-color:#f48fb1;}.pink-text.text-lighten-3{color:#f48fb1;}.pink.lighten-2{background-color:#f06292;}.pink-text.text-lighten-2{color:#f06292;}.pink.lighten-1{background-color:#ec407a;}.pink-text.text-lighten-1{color:#ec407a;}.pink.darken-1{background-color:#d81b60;}.pink-text.text-darken-1{color:#d81b60;}.pink.darken-2{background-color:#c2185b;}.pink-text.text-darken-2{color:#c2185b;}.pink.darken-3{background-color:#ad1457;}.pink-text.text-darken-3{color:#ad1457;}.pink.darken-4{background-color:#880e4f;}.pink-text.text-darken-4{color:#880e4f;}.pink.accent-1{background-color:#ff80ab;}.pink-text.text-accent-1{color:#ff80ab;}.pink.accent-2{background-color:#ff4081;}.pink-text.text-accent-2{color:#ff4081;}.pink.accent-3{background-color:#f50057;}.pink-text.text-accent-3{color:#f50057;}.pink.accent-4{background-color:#c51162;}.pink-text.text-accent-4{color:#c51162;}.purple{background-color:#9c27b0;}.purple-text{color:#9c27b0;}.purple.lighten-5{background-color:#f3e5f5;}.purple-text.text-lighten-5{color:#f3e5f5;}.purple.lighten-4{background-color:#e1bee7;}.purple-text.text-lighten-4{color:#e1bee7;}.purple.lighten-3{background-color:#ce93d8;}.purple-text.text-lighten-3{color:#ce93d8;}.purple.lighten-2{background-color:#ba68c8;}.purple-text.text-lighten-2{color:#ba68c8;}.purple.lighten-1{background-color:#ab47bc;}.purple-text.text-lighten-1{color:#ab47bc;}.purple.darken-1{background-color:#8e24aa;}.purple-text.text-darken-1{color:#8e24aa;}.purple.darken-2{background-color:#7b1fa2;}.purple-text.text-darken-2{color:#7b1fa2;}.purple.darken-3{background-color:#6a1b9a;}.purple-text.text-darken-3{color:#6a1b9a;}.purple.darken-4{background-color:#4a148c;}.purple-text.text-darken-4{color:#4a148c;}.purple.accent-1{background-color:#ea80fc;}.purple-text.text-accent-1{color:#ea80fc;}.purple.accent-2{background-color:#e040fb;}.purple-text.text-accent-2{color:#e040fb;}.purple.accent-3{background-color:#d500f9;}.purple-text.text-accent-3{color:#d500f9;}.purple.accent-4{background-color:#a0f;}.purple-text.text-accent-4{color:#a0f;}.deep-purple{background-color:#673ab7;}.deep-purple-text{color:#673ab7;}.deep-purple.lighten-5{background-color:#ede7f6;}.deep-purple-text.text-lighten-5{color:#ede7f6;}.deep-purple.lighten-4{background-color:#d1c4e9;}.deep-purple-text.text-lighten-4{color:#d1c4e9;}.deep-purple.lighten-3{background-color:#b39ddb;}.deep-purple-text.text-lighten-3{color:#b39ddb;}.deep-purple.lighten-2{background-color:#9575cd;}.deep-purple-text.text-lighten-2{color:#9575cd;}.deep-purple.lighten-1{background-color:#7e57c2;}.deep-purple-text.text-lighten-1{color:#7e57c2;}.deep-purple.darken-1{background-color:#5e35b1;}.deep-purple-text.text-darken-1{color:#5e35b1;}.deep-purple.darken-2{background-color:#512da8;}.deep-purple-text.text-darken-2{color:#512da8;}.deep-purple.darken-3{background-color:#4527a0;}.deep-purple-text.text-darken-3{color:#4527a0;}.deep-purple.darken-4{background-color:#311b92;}.deep-purple-text.text-darken-4{color:#311b92;}.deep-purple.accent-1{background-color:#b388ff;}.deep-purple-text.text-accent-1{color:#b388ff;}.deep-purple.accent-2{background-color:#7c4dff;}.deep-purple-text.text-accent-2{color:#7c4dff;}.deep-purple.accent-3{background-color:#651fff;}.deep-purple-text.text-accent-3{color:#651fff;}.deep-purple.accent-4{background-color:#6200ea;}.deep-purple-text.text-accent-4{color:#6200ea;}.indigo{background-color:#3f51b5;}.indigo-text{color:#3f51b5;}.indigo.lighten-5{background-color:#e8eaf6;}.indigo-text.text-lighten-5{color:#e8eaf6;}.indigo.lighten-4{background-color:#c5cae9;}.indigo-text.text-lighten-4{color:#c5cae9;}.indigo.lighten-3{background-color:#9fa8da;}.indigo-text.text-lighten-3{color:#9fa8da;}.indigo.lighten-2{background-color:#7986cb;}.indigo-text.text-lighten-2{color:#7986cb;}.indigo.lighten-1{background-color:#5c6bc0;}.indigo-text.text-lighten-1{color:#5c6bc0;}.indigo.darken-1{background-color:#3949ab;}.indigo-text.text-darken-1{color:#3949ab;}.indigo.darken-2{background-color:#303f9f;}.indigo-text.text-darken-2{color:#303f9f;}.indigo.darken-3{background-color:#283593;}.indigo-text.text-darken-3{color:#283593;}.indigo.darken-4{background-color:#1a237e;}.indigo-text.text-darken-4{color:#1a237e;}.indigo.accent-1{background-color:#8c9eff;}.indigo-text.text-accent-1{color:#8c9eff;}.indigo.accent-2{background-color:#536dfe;}.indigo-text.text-accent-2{color:#536dfe;}.indigo.accent-3{background-color:#3d5afe;}.indigo-text.text-accent-3{color:#3d5afe;}.indigo.accent-4{background-color:#304ffe;}.indigo-text.text-accent-4{color:#304ffe;}.blue{background-color:#2196f3;}.blue-text{color:#2196f3;}.blue.lighten-5{background-color:#e3f2fd;}.blue-text.text-lighten-5{color:#e3f2fd;}.blue.lighten-4{background-color:#bbdefb;}.blue-text.text-lighten-4{color:#bbdefb;}.blue.lighten-3{background-color:#90caf9;}.blue-text.text-lighten-3{color:#90caf9;}.blue.lighten-2{background-color:#64b5f6;}.blue-text.text-lighten-2{color:#64b5f6;}.blue.lighten-1{background-color:#42a5f5;}.blue-text.text-lighten-1{color:#42a5f5;}.blue.darken-1{background-color:#1e88e5;}.blue-text.text-darken-1{color:#1e88e5;}.blue.darken-2{background-color:#1976d2;}.blue-text.text-darken-2{color:#1976d2;}.blue.darken-3{background-color:#1565c0;}.blue-text.text-darken-3{color:#1565c0;}.blue.darken-4{background-color:#0d47a1;}.blue-text.text-darken-4{color:#0d47a1;}.blue.accent-1{background-color:#82b1ff;}.blue-text.text-accent-1{color:#82b1ff;}.blue.accent-2{background-color:#448aff;}.blue-text.text-accent-2{color:#448aff;}.blue.accent-3{background-color:#2979ff;}.blue-text.text-accent-3{color:#2979ff;}.blue.accent-4{background-color:#2962ff;}.blue-text.text-accent-4{color:#2962ff;}.light-blue{background-color:#03a9f4;}.light-blue-text{color:#03a9f4;}.light-blue.lighten-5{background-color:#e1f5fe;}.light-blue-text.text-lighten-5{color:#e1f5fe;}.light-blue.lighten-4{background-color:#b3e5fc;}.light-blue-text.text-lighten-4{color:#b3e5fc;}.light-blue.lighten-3{background-color:#81d4fa;}.light-blue-text.text-lighten-3{color:#81d4fa;}.light-blue.lighten-2{background-color:#4fc3f7;}.light-blue-text.text-lighten-2{color:#4fc3f7;}.light-blue.lighten-1{background-color:#29b6f6;}.light-blue-text.text-lighten-1{color:#29b6f6;}.light-blue.darken-1{background-color:#039be5;}.light-blue-text.text-darken-1{color:#039be5;}.light-blue.darken-2{background-color:#0288d1;}.light-blue-text.text-darken-2{color:#0288d1;}.light-blue.darken-3{background-color:#0277bd;}.light-blue-text.text-darken-3{color:#0277bd;}.light-blue.darken-4{background-color:#01579b;}.light-blue-text.text-darken-4{color:#01579b;}.light-blue.accent-1{background-color:#80d8ff;}.light-blue-text.text-accent-1{color:#80d8ff;}.light-blue.accent-2{background-color:#40c4ff;}.light-blue-text.text-accent-2{color:#40c4ff;}.light-blue.accent-3{background-color:#00b0ff;}.light-blue-text.text-accent-3{color:#00b0ff;}.light-blue.accent-4{background-color:#0091ea;}.light-blue-text.text-accent-4{color:#0091ea;}.cyan{background-color:#00bcd4;}.cyan-text{color:#00bcd4;}.cyan.lighten-5{background-color:#e0f7fa;}.cyan-text.text-lighten-5{color:#e0f7fa;}.cyan.lighten-4{background-color:#b2ebf2;}.cyan-text.text-lighten-4{color:#b2ebf2;}.cyan.lighten-3{background-color:#80deea;}.cyan-text.text-lighten-3{color:#80deea;}.cyan.lighten-2{background-color:#4dd0e1;}.cyan-text.text-lighten-2{color:#4dd0e1;}.cyan.lighten-1{background-color:#26c6da;}.cyan-text.text-lighten-1{color:#26c6da;}.cyan.darken-1{background-color:#00acc1;}.cyan-text.text-darken-1{color:#00acc1;}.cyan.darken-2{background-color:#0097a7;}.cyan-text.text-darken-2{color:#0097a7;}.cyan.darken-3{background-color:#00838f;}.cyan-text.text-darken-3{color:#00838f;}.cyan.darken-4{background-color:#006064;}.cyan-text.text-darken-4{color:#006064;}.cyan.accent-1{background-color:#84ffff;}.cyan-text.text-accent-1{color:#84ffff;}.cyan.accent-2{background-color:#18ffff;}.cyan-text.text-accent-2{color:#18ffff;}.cyan.accent-3{background-color:#00e5ff;}.cyan-text.text-accent-3{color:#00e5ff;}.cyan.accent-4{background-color:#00b8d4;}.cyan-text.text-accent-4{color:#00b8d4;}.teal{background-color:#009688;}.teal-text{color:#009688;}.teal.lighten-5{background-color:#e0f2f1;}.teal-text.text-lighten-5{color:#e0f2f1;}.teal.lighten-4{background-color:#b2dfdb;}.teal-text.text-lighten-4{color:#b2dfdb;}.teal.lighten-3{background-color:#80cbc4;}.teal-text.text-lighten-3{color:#80cbc4;}.teal.lighten-2{background-color:#4db6ac;}.teal-text.text-lighten-2{color:#4db6ac;}.teal.lighten-1{background-color:#26a69a;}.teal-text.text-lighten-1{color:#26a69a;}.teal.darken-1{background-color:#00897b;}.teal-text.text-darken-1{color:#00897b;}.teal.darken-2{background-color:#00796b;}.teal-text.text-darken-2{color:#00796b;}.teal.darken-3{background-color:#00695c;}.teal-text.text-darken-3{color:#00695c;}.teal.darken-4{background-color:#004d40;}.teal-text.text-darken-4{color:#004d40;}.teal.accent-1{background-color:#a7ffeb;}.teal-text.text-accent-1{color:#a7ffeb;}.teal.accent-2{background-color:#64ffda;}.teal-text.text-accent-2{color:#64ffda;}.teal.accent-3{background-color:#1de9b6;}.teal-text.text-accent-3{color:#1de9b6;}.teal.accent-4{background-color:#00bfa5;}.teal-text.text-accent-4{color:#00bfa5;}.green{background-color:#4caf50;}.green-text{color:#4caf50;}.green.lighten-5{background-color:#e8f5e9;}.green-text.text-lighten-5{color:#e8f5e9;}.green.lighten-4{background-color:#c8e6c9;}.green-text.text-lighten-4{color:#c8e6c9;}.green.lighten-3{background-color:#a5d6a7;}.green-text.text-lighten-3{color:#a5d6a7;}.green.lighten-2{background-color:#81c784;}.green-text.text-lighten-2{color:#81c784;}.green.lighten-1{background-color:#66bb6a;}.green-text.text-lighten-1{color:#66bb6a;}.green.darken-1{background-color:#43a047;}.green-text.text-darken-1{color:#43a047;}.green.darken-2{background-color:#388e3c;}.green-text.text-darken-2{color:#388e3c;}.green.darken-3{background-color:#2e7d32;}.green-text.text-darken-3{color:#2e7d32;}.green.darken-4{background-color:#1b5e20;}.green-text.text-darken-4{color:#1b5e20;}.green.accent-1{background-color:#b9f6ca;}.green-text.text-accent-1{color:#b9f6ca;}.green.accent-2{background-color:#69f0ae;}.green-text.text-accent-2{color:#69f0ae;}.green.accent-3{background-color:#00e676;}.green-text.text-accent-3{color:#00e676;}.green.accent-4{background-color:#00c853;}.green-text.text-accent-4{color:#00c853;}.light-green{background-color:#8bc34a;}.light-green-text{color:#8bc34a;}.light-green.lighten-5{background-color:#f1f8e9;}.light-green-text.text-lighten-5{color:#f1f8e9;}.light-green.lighten-4{background-color:#dcedc8;}.light-green-text.text-lighten-4{color:#dcedc8;}.light-green.lighten-3{background-color:#c5e1a5;}.light-green-text.text-lighten-3{color:#c5e1a5;}.light-green.lighten-2{background-color:#aed581;}.light-green-text.text-lighten-2{color:#aed581;}.light-green.lighten-1{background-color:#9ccc65;}.light-green-text.text-lighten-1{color:#9ccc65;}.light-green.darken-1{background-color:#7cb342;}.light-green-text.text-darken-1{color:#7cb342;}.light-green.darken-2{background-color:#689f38;}.light-green-text.text-darken-2{color:#689f38;}.light-green.darken-3{background-color:#558b2f;}.light-green-text.text-darken-3{color:#558b2f;}.light-green.darken-4{background-color:#33691e;}.light-green-text.text-darken-4{color:#33691e;}.light-green.accent-1{background-color:#ccff90;}.light-green-text.text-accent-1{color:#ccff90;}.light-green.accent-2{background-color:#b2ff59;}.light-green-text.text-accent-2{color:#b2ff59;}.light-green.accent-3{background-color:#76ff03;}.light-green-text.text-accent-3{color:#76ff03;}.light-green.accent-4{background-color:#64dd17;}.light-green-text.text-accent-4{color:#64dd17;}.lime{background-color:#cddc39;}.lime-text{color:#cddc39;}.lime.lighten-5{background-color:#f9fbe7;}.lime-text.text-lighten-5{color:#f9fbe7;}.lime.lighten-4{background-color:#f0f4c3;}.lime-text.text-lighten-4{color:#f0f4c3;}.lime.lighten-3{background-color:#e6ee9c;}.lime-text.text-lighten-3{color:#e6ee9c;}.lime.lighten-2{background-color:#dce775;}.lime-text.text-lighten-2{color:#dce775;}.lime.lighten-1{background-color:#d4e157;}.lime-text.text-lighten-1{color:#d4e157;}.lime.darken-1{background-color:#c0ca33;}.lime-text.text-darken-1{color:#c0ca33;}.lime.darken-2{background-color:#afb42b;}.lime-text.text-darken-2{color:#afb42b;}.lime.darken-3{background-color:#9e9d24;}.lime-text.text-darken-3{color:#9e9d24;}.lime.darken-4{background-color:#827717;}.lime-text.text-darken-4{color:#827717;}.lime.accent-1{background-color:#f4ff81;}.lime-text.text-accent-1{color:#f4ff81;}.lime.accent-2{background-color:#eeff41;}.lime-text.text-accent-2{color:#eeff41;}.lime.accent-3{background-color:#c6ff00;}.lime-text.text-accent-3{color:#c6ff00;}.lime.accent-4{background-color:#aeea00;}.lime-text.text-accent-4{color:#aeea00;}.yellow{background-color:#ffeb3b;}.yellow-text{color:#ffeb3b;}.yellow.lighten-5{background-color:#fffde7;}.yellow-text.text-lighten-5{color:#fffde7;}.yellow.lighten-4{background-color:#fff9c4;}.yellow-text.text-lighten-4{color:#fff9c4;}.yellow.lighten-3{background-color:#fff59d;}.yellow-text.text-lighten-3{color:#fff59d;}.yellow.lighten-2{background-color:#fff176;}.yellow-text.text-lighten-2{color:#fff176;}.yellow.lighten-1{background-color:#ffee58;}.yellow-text.text-lighten-1{color:#ffee58;}.yellow.darken-1{background-color:#fdd835;}.yellow-text.text-darken-1{color:#fdd835;}.yellow.darken-2{background-color:#fbc02d;}.yellow-text.text-darken-2{color:#fbc02d;}.yellow.darken-3{background-color:#f9a825;}.yellow-text.text-darken-3{color:#f9a825;}.yellow.darken-4{background-color:#f57f17;}.yellow-text.text-darken-4{color:#f57f17;}.yellow.accent-1{background-color:#ffff8d;}.yellow-text.text-accent-1{color:#ffff8d;}.yellow.accent-2{background-color:#ff0;}.yellow-text.text-accent-2{color:#ff0;}.yellow.accent-3{background-color:#ffea00;}.yellow-text.text-accent-3{color:#ffea00;}.yellow.accent-4{background-color:#ffd600;}.yellow-text.text-accent-4{color:#ffd600;}.amber{background-color:#ffc107;}.amber-text{color:#ffc107;}.amber.lighten-5{background-color:#fff8e1;}.amber-text.text-lighten-5{color:#fff8e1;}.amber.lighten-4{background-color:#ffecb3;}.amber-text.text-lighten-4{color:#ffecb3;}.amber.lighten-3{background-color:#ffe082;}.amber-text.text-lighten-3{color:#ffe082;}.amber.lighten-2{background-color:#ffd54f;}.amber-text.text-lighten-2{color:#ffd54f;}.amber.lighten-1{background-color:#ffca28;}.amber-text.text-lighten-1{color:#ffca28;}.amber.darken-1{background-color:#ffb300;}.amber-text.text-darken-1{color:#ffb300;}.amber.darken-2{background-color:#ffa000;}.amber-text.text-darken-2{color:#ffa000;}.amber.darken-3{background-color:#ff8f00;}.amber-text.text-darken-3{color:#ff8f00;}.amber.darken-4{background-color:#ff6f00;}.amber-text.text-darken-4{color:#ff6f00;}.amber.accent-1{background-color:#ffe57f;}.amber-text.text-accent-1{color:#ffe57f;}.amber.accent-2{background-color:#ffd740;}.amber-text.text-accent-2{color:#ffd740;}.amber.accent-3{background-color:#ffc400;}.amber-text.text-accent-3{color:#ffc400;}.amber.accent-4{background-color:#ffab00;}.amber-text.text-accent-4{color:#ffab00;}.orange{background-color:#ff9800;}.orange-text{color:#ff9800;}.orange.lighten-5{background-color:#fff3e0;}.orange-text.text-lighten-5{color:#fff3e0;}.orange.lighten-4{background-color:#ffe0b2;}.orange-text.text-lighten-4{color:#ffe0b2;}.orange.lighten-3{background-color:#ffcc80;}.orange-text.text-lighten-3{color:#ffcc80;}.orange.lighten-2{background-color:#ffb74d;}.orange-text.text-lighten-2{color:#ffb74d;}.orange.lighten-1{background-color:#ffa726;}.orange-text.text-lighten-1{color:#ffa726;}.orange.darken-1{background-color:#fb8c00;}.orange-text.text-darken-1{color:#fb8c00;}.orange.darken-2{background-color:#f57c00;}.orange-text.text-darken-2{color:#f57c00;}.orange.darken-3{background-color:#ef6c00;}.orange-text.text-darken-3{color:#ef6c00;}.orange.darken-4{background-color:#e65100;}.orange-text.text-darken-4{color:#e65100;}.orange.accent-1{background-color:#ffd180;}.orange-text.text-accent-1{color:#ffd180;}.orange.accent-2{background-color:#ffab40;}.orange-text.text-accent-2{color:#ffab40;}.orange.accent-3{background-color:#ff9100;}.orange-text.text-accent-3{color:#ff9100;}.orange.accent-4{background-color:#ff6d00;}.orange-text.text-accent-4{color:#ff6d00;}.deep-orange{background-color:#ff5722;}.deep-orange-text{color:#ff5722;}.deep-orange.lighten-5{background-color:#fbe9e7;}.deep-orange-text.text-lighten-5{color:#fbe9e7;}.deep-orange.lighten-4{background-color:#ffccbc;}.deep-orange-text.text-lighten-4{color:#ffccbc;}.deep-orange.lighten-3{background-color:#ffab91;}.deep-orange-text.text-lighten-3{color:#ffab91;}.deep-orange.lighten-2{background-color:#ff8a65;}.deep-orange-text.text-lighten-2{color:#ff8a65;}.deep-orange.lighten-1{background-color:#ff7043;}.deep-orange-text.text-lighten-1{color:#ff7043;}.deep-orange.darken-1{background-color:#f4511e;}.deep-orange-text.text-darken-1{color:#f4511e;}.deep-orange.darken-2{background-color:#e64a19;}.deep-orange-text.text-darken-2{color:#e64a19;}.deep-orange.darken-3{background-color:#d84315;}.deep-orange-text.text-darken-3{color:#d84315;}.deep-orange.darken-4{background-color:#bf360c;}.deep-orange-text.text-darken-4{color:#bf360c;}.deep-orange.accent-1{background-color:#ff9e80;}.deep-orange-text.text-accent-1{color:#ff9e80;}.deep-orange.accent-2{background-color:#ff6e40;}.deep-orange-text.text-accent-2{color:#ff6e40;}.deep-orange.accent-3{background-color:#ff3d00;}.deep-orange-text.text-accent-3{color:#ff3d00;}.deep-orange.accent-4{background-color:#dd2c00;}.deep-orange-text.text-accent-4{color:#dd2c00;}.brown{background-color:#795548;}.brown-text{color:#795548;}.brown.lighten-5{background-color:#efebe9;}.brown-text.text-lighten-5{color:#efebe9;}.brown.lighten-4{background-color:#d7ccc8;}.brown-text.text-lighten-4{color:#d7ccc8;}.brown.lighten-3{background-color:#bcaaa4;}.brown-text.text-lighten-3{color:#bcaaa4;}.brown.lighten-2{background-color:#a1887f;}.brown-text.text-lighten-2{color:#a1887f;}.brown.lighten-1{background-color:#8d6e63;}.brown-text.text-lighten-1{color:#8d6e63;}.brown.darken-1{background-color:#6d4c41;}.brown-text.text-darken-1{color:#6d4c41;}.brown.darken-2{background-color:#5d4037;}.brown-text.text-darken-2{color:#5d4037;}.brown.darken-3{background-color:#4e342e;}.brown-text.text-darken-3{color:#4e342e;}.brown.darken-4{background-color:#3e2723;}.brown-text.text-darken-4{color:#3e2723;}.blue-grey{background-color:#607d8b;}.blue-grey-text{color:#607d8b;}.blue-grey.lighten-5{background-color:#eceff1;}.blue-grey-text.text-lighten-5{color:#eceff1;}.blue-grey.lighten-4{background-color:#cfd8dc;}.blue-grey-text.text-lighten-4{color:#cfd8dc;}.blue-grey.lighten-3{background-color:#b0bec5;}.blue-grey-text.text-lighten-3{color:#b0bec5;}.blue-grey.lighten-2{background-color:#90a4ae;}.blue-grey-text.text-lighten-2{color:#90a4ae;}.blue-grey.lighten-1{background-color:#78909c;}.blue-grey-text.text-lighten-1{color:#78909c;}.blue-grey.darken-1{background-color:#546e7a;}.blue-grey-text.text-darken-1{color:#546e7a;}.blue-grey.darken-2{background-color:#455a64;}.blue-grey-text.text-darken-2{color:#455a64;}.blue-grey.darken-3{background-color:#37474f;}.blue-grey-text.text-darken-3{color:#37474f;}.blue-grey.darken-4{background-color:#263238;}.blue-grey-text.text-darken-4{color:#263238;}.grey{background-color:#9e9e9e;}.grey-text{color:#9e9e9e;}.grey.lighten-5{background-color:#fafafa;}.grey-text.text-lighten-5{color:#fafafa;}.grey.lighten-4{background-color:#f5f5f5;}.grey-text.text-lighten-4{color:#f5f5f5;}.grey.lighten-3{background-color:#eee;}.grey-text.text-lighten-3{color:#eee;}.grey.lighten-2{background-color:#e0e0e0;}.grey-text.text-lighten-2{color:#e0e0e0;}.grey.lighten-1{background-color:#bdbdbd;}.grey-text.text-lighten-1{color:#bdbdbd;}.grey.darken-1{background-color:#757575;}.grey-text.text-darken-1{color:#757575;}.grey.darken-2{background-color:#616161;}.grey-text.text-darken-2{color:#616161;}.grey.darken-3{background-color:#424242;}.grey-text.text-darken-3{color:#424242;}.grey.darken-4{background-color:#212121;}.grey-text.text-darken-4{color:#212121;}.shades.black{background-color:#000;}.shades-text.text-black{color:#000;}.shades.white{background-color:#fff;}.shades-text.text-white{color:#fff;}.shades.transparent{background-color:transparent;}.shades-text.text-transparent{color:transparent;}.mud-ripple{position:relative;overflow:hidden;}.mud-ripple:after{content:"";display:block;position:absolute;width:100%;height:100%;top:0;left:0;pointer-events:none;background-image:radial-gradient(circle,#000 10%,transparent 10.01%);background-repeat:no-repeat;background-position:50%;transform:scale(10,10);opacity:0;transition:transform .3s,opacity 1s;}.mud-ripple:active:after{transform:scale(0,0);opacity:.1;transition:0s;}.mud-ripple-icon:after,.mud-ripple-checkbox:after,.mud-ripple-switch:after,.mud-ripple-radio:after{transform:scale(7,7);}.mud-ripple-switch{position:absolute;}.mud-rtl{direction:rtl !important;}.mud-ltr{direction:ltr !important;}.mud-application-layout-rtl .mud-flip-x-rtl{transform:scaleX(-1);} \ No newline at end of file diff --git a/_content/MudBlazor/MudBlazor.min.js b/_content/MudBlazor/MudBlazor.min.js deleted file mode 100755 index 1fb431a..0000000 --- a/_content/MudBlazor/MudBlazor.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! -* MudBlazor (https://mudblazor.com/) -* Copyright (c) 2021 MudBlazor -* Licensed under MIT (https://github.com/MudBlazor/MudBlazor/blob/master/LICENSE) -*/ -window.mudDragAndDrop={initDropZone:id=>{const elem=document.getElementById("mud-drop-zone-"+id);elem.addEventListener("dragover",()=>event.preventDefault());elem.addEventListener("dragstart",()=>event.dataTransfer.setData("",event.target.id))}};class MudElementReference{constructor(){this.listenerId=0;this.eventListeners={}}focus(element){element&&element.focus()}focusFirst(element,skip=0,min=0){if(element){let tabbables=getTabbableElements(element);tabbables.length<=min?element.focus():tabbables[skip].focus()}}focusLast(element,skip=0,min=0){if(element){let tabbables=getTabbableElements(element);tabbables.length<=min?element.focus():tabbables[tabbables.length-skip-1].focus()}}saveFocus(element){element&&(element.mudblazor_savedFocus=document.activeElement)}restoreFocus(element){if(element){let previous=element.mudblazor_savedFocus;delete element.mudblazor_savedFocus;previous&&previous.focus()}}selectRange(element,pos1,pos2){if(element){if(element.createTextRange){let selRange=element.createTextRange();selRange.collapse(!0);selRange.moveStart("character",pos1);selRange.moveEnd("character",pos2);selRange.select()}else element.setSelectionRange?element.setSelectionRange(pos1,pos2):element.selectionStart&&(element.selectionStart=pos1,element.selectionEnd=pos2);element.focus()}}select(element){element&&element.select()}getClientRectFromParent(element){if(element){let parent=element.parentElement;if(parent)return this.getBoundingClientRect(parent)}}getClientRectFromFirstChild(element){if(element){let child=element.children&&element.children[0];if(child)return this.getBoundingClientRect(child)}}getBoundingClientRect(element){if(element){var rect=JSON.parse(JSON.stringify(element.getBoundingClientRect()));return rect.scrollY=window.scrollY||document.documentElement.scrollTop,rect.scrollX=window.scrollX||document.documentElement.scrollLeft,rect.windowHeight=window.innerHeight,rect.windowWidth=window.innerWidth,rect}}hasFixedAncestors(element){for(;element&&element!==document;element=element.parentNode)if(window.getComputedStyle(element).getPropertyValue("position")==="fixed")return!0;return!1}changeCss(element,css){element&&(element.className=css)}changeCssVariable(element,name,newValue){element&&element.style.setProperty(name,newValue)}addEventListener(element,dotnet,event,callback,spec,stopPropagation){let listener=function(e){const args=Array.from(spec,x=>serializeParameter(e,x));dotnet.invokeMethodAsync(callback,...args);stopPropagation&&e.stopPropagation()};return element.addEventListener(event,listener),this.eventListeners[++this.listenerId]=listener,this.listenerId}removeEventListener(element,event,eventId){element.removeEventListener(event,this.eventListeners[eventId]);delete this.eventListeners[eventId]}}window.mudElementRef=new MudElementReference;class MudThrottledEventManager{constructor(){this.mapper={}}subscribe(eventName,elementId,projection,throotleInterval,key,properties,dotnetReference){const handlerRef=this.throttleEventHandler.bind(this,key);let elem=document.getElementById(elementId);if(elem){elem.addEventListener(eventName,handlerRef,!1);let projector=null;if(projection){const parts=projection.split(".");let functionPointer=window,functionReferenceFound=!0;if(parts.length==0||parts.length==1)functionPointer=functionPointer[projection];else for(let i=0;ielement.querySelectorAll("a[href]:not([tabindex='-1']),area[href]:not([tabindex='-1']),button:not([disabled]):not([tabindex='-1']),input:not([disabled]):not([tabindex='-1']):not([type='hidden']),select:not([disabled]):not([tabindex='-1']),textarea:not([disabled]):not([tabindex='-1']),iframe:not([tabindex='-1']),details:not([tabindex='-1']),[tabindex]:not([tabindex='-1']),[contentEditable=true]:not([tabindex='-1']");window.serializeParameter=(data,spec)=>{if(typeof data=="undefined"||data===null)return null;if(typeof data=="number"||typeof data=="string"||typeof data=="boolean")return data;let res=Array.isArray(data)?[]:{};spec||(spec="*");for(let i in data){let currentMember=data[i];if(typeof currentMember!="function"&¤tMember!==null){let currentMemberSpec;if(spec!="*"){if(currentMemberSpec=Array.isArray(data)?spec:spec[i],!currentMemberSpec)continue}else currentMemberSpec="*";if(typeof currentMember=="object")if(Array.isArray(currentMember)||currentMember.length){res[i]=[];for(let j=0;j{};this.logger("[MudBlazor | JsEvent] Initialized",{options});this._subscribedEvents={}}connect(element){if(this._options){if(!this._options.targetClass)throw"_options.targetClass: css class name expected";if(!this._observer){var targetClass=this._options.targetClass;this.logger("[MudBlazor | JsEvent] Start observing DOM of element for changes to child with class ",{element,targetClass});this._element=element;this._observer=new MutationObserver(this.onDomChanged);this._observer.mudJsEvent=this;this._observer.observe(this._element,{attributes:!1,childList:!0,subtree:!0});this._observedChildren=[]}}}disconnect(){if(this._observer){this.logger("[MudBlazor | JsEvent] disconnect mutation observer and event handler ");this._observer.disconnect();this._observer=null;for(const child of this._observedChildren)this.detachHandlers(child)}}subscribe(eventName){if(!this._subscribedEvents[eventName]){var element=this._element,targetClass=this._options.targetClass;this._subscribedEvents[eventName]=!0;for(const child of element.getElementsByClassName(targetClass))this.attachHandlers(child)}}unsubscribe(eventName){if(this._observer){this.logger("[MudBlazor | JsEvent] unsubscribe event handler "+eventName);this._observer.disconnect();this._observer=null;this._subscribedEvents[eventName]=!1;for(const child of this._observedChildren)this.detachHandler(child,eventName)}}attachHandlers(child){child.mudJsEvent=this;for(var eventName of Object.getOwnPropertyNames(this._subscribedEvents))this._subscribedEvents[eventName]&&(this.logger("[MudBlazor | JsEvent] attaching event "+eventName,child),child.addEventListener(eventName,this.eventHandler));this._observedChildren.indexOf(child)<0&&this._observedChildren.push(child)}detachHandler(child,eventName){this.logger("[MudBlazor | JsEvent] detaching handler "+eventName,child);child.removeEventListener(eventName,this.eventHandler)}detachHandlers(child){this.logger("[MudBlazor | JsEvent] detaching handlers ",child);for(var eventName of Object.getOwnPropertyNames(this._subscribedEvents))this._subscribedEvents[eventName]&&child.removeEventListener(eventName,this.eventHandler);this._observedChildren=this._observedChildren.filter(x=>x!==child)}onDomChanged(mutationsList){var self=this.mudJsEvent,targetClass=self._options.targetClass;for(const mutation of mutationsList){for(const element of mutation.addedNodes)element.classList&&element.classList.contains(targetClass)&&(self._options.TagName&&element.tagName!=self._options.TagName||self.attachHandlers(element));for(const element of mutation.removedNodes)element.classList&&element.classList.contains(targetClass)&&(self._options.tagName&&element.tagName!=self._options.tagName||self.detachHandlers(element))}}eventHandler(e){var self=this.mudJsEvent,eventName=e.type;self.logger('[MudBlazor | JsEvent] "'+eventName+'"',e);self["on"+eventName](self,e)}onkeyup(self,e){const caretPosition=e.target.selectionStart,invoke=self._subscribedEvents.keyup;invoke&&self._dotNetRef.invokeMethodAsync("OnCaretPositionChanged",caretPosition)}onclick(self,e){const caretPosition=e.target.selectionStart,invoke=self._subscribedEvents.click;invoke&&self._dotNetRef.invokeMethodAsync("OnCaretPositionChanged",caretPosition)}onpaste(self,e){const invoke=self._subscribedEvents.paste;if(invoke){e.preventDefault();e.stopPropagation();const text=(e.originalEvent||e).clipboardData.getData("text/plain");self._dotNetRef.invokeMethodAsync("OnPaste",text)}}onselect(self,e){const invoke=self._subscribedEvents.select;if(invoke){const start=e.target.selectionStart,end=e.target.selectionEnd;if(start===end)return;self._dotNetRef.invokeMethodAsync("OnSelect",start,end)}}}class MudKeyInterceptorFactory{connect(dotNetRef,elementId,options){if(!elementId)throw"elementId: expected element id!";var element=document.getElementById(elementId);if(!element)throw"no element found for id: "+elementId;element.mudKeyInterceptor||(element.mudKeyInterceptor=new MudKeyInterceptor(dotNetRef,options));element.mudKeyInterceptor.connect(element)}updatekey(elementId,option){var element=document.getElementById(elementId);element&&element.mudKeyInterceptor&&element.mudKeyInterceptor.updatekey(option)}disconnect(elementId){var element=document.getElementById(elementId);element&&element.mudKeyInterceptor&&element.mudKeyInterceptor.disconnect()}}window.mudKeyInterceptor=new MudKeyInterceptorFactory;class MudKeyInterceptor{constructor(dotNetRef,options){this._dotNetRef=dotNetRef;this._options=options;this.logger=options.enableLogging?console.log:()=>{};this.logger("[MudBlazor | KeyInterceptor] Interceptor initialized",{options})}connect(element){if(this._options){if(!this._options.keys)throw"_options.keys: array of KeyOptions expected";if(!this._options.targetClass)throw"_options.targetClass: css class name expected";if(!this._observer){var targetClass=this._options.targetClass;this.logger("[MudBlazor | KeyInterceptor] Start observing DOM of element for changes to child with class ",{element,targetClass});this._element=element;this._observer=new MutationObserver(this.onDomChanged);this._observer.mudKeyInterceptor=this;this._observer.observe(this._element,{attributes:!1,childList:!0,subtree:!0});this._observedChildren=[];this._keyOptions={};this._regexOptions=[];for(const keyOption of this._options.keys){if(!keyOption||!keyOption.key){this.logger("[MudBlazor | KeyInterceptor] got invalid key options: ",keyOption);continue}this.setKeyOption(keyOption)}this.logger("[MudBlazor | KeyInterceptor] key options: ",this._keyOptions);this._regexOptions.size>0&&this.logger("[MudBlazor | KeyInterceptor] regex options: ",this._regexOptions);for(const child of this._element.getElementsByClassName(targetClass))this.attachHandlers(child)}}}setKeyOption(keyOption){keyOption.key.length>2&&keyOption.key.startsWith("/")&&keyOption.key.endsWith("/")?(keyOption.regex=new RegExp(keyOption.key.substring(1,keyOption.key.length-1)),this._regexOptions.push(keyOption)):this._keyOptions[keyOption.key.toLowerCase()]=keyOption;var whitespace=new RegExp("\\s","g");keyOption.preventDown=(keyOption.preventDown||"none").replace(whitespace,"").toLowerCase();keyOption.preventUp=(keyOption.preventUp||"none").replace(whitespace,"").toLowerCase();keyOption.stopDown=(keyOption.stopDown||"none").replace(whitespace,"").toLowerCase();keyOption.stopUp=(keyOption.stopUp||"none").replace(whitespace,"").toLowerCase()}updatekey(updatedOption){var option=this._keyOptions[updatedOption.key.toLowerCase()];option||this.logger("[MudBlazor | KeyInterceptor] updating option failed: key not registered");this.setKeyOption(updatedOption);this.logger("[MudBlazor | KeyInterceptor] updated option ",{option,updatedOption})}disconnect(){if(this._observer){this.logger("[MudBlazor | KeyInterceptor] disconnect mutation observer and event handlers");this._observer.disconnect();this._observer=null;for(const child of this._observedChildren)this.detachHandlers(child)}}attachHandlers(child){(this.logger("[MudBlazor | KeyInterceptor] attaching handlers ",{child}),this._observedChildren.indexOf(child)>-1)||(child.mudKeyInterceptor=this,child.addEventListener("keydown",this.onKeyDown),child.addEventListener("keyup",this.onKeyUp),this._observedChildren.push(child))}detachHandlers(child){this.logger("[MudBlazor | KeyInterceptor] detaching handlers ",{child});child.removeEventListener("keydown",this.onKeyDown);child.removeEventListener("keyup",this.onKeyUp);this._observedChildren=this._observedChildren.filter(x=>x!==child)}onDomChanged(mutationsList){var self=this.mudKeyInterceptor,targetClass=self._options.targetClass;for(const mutation of mutationsList){for(const element of mutation.addedNodes)element.classList&&element.classList.contains(targetClass)&&self.attachHandlers(element);for(const element of mutation.removedNodes)element.classList&&element.classList.contains(targetClass)&&self.detachHandlers(element)}}matchesKeyCombination(option,args){var combi;if(!option||option==="none")return!1;if(option==="any")return!0;var shift=args.shiftKey,ctrl=args.ctrlKey,alt=args.altKey,meta=args.metaKey,any=shift||ctrl||alt||meta;return any&&option==="key+any"?!0:!any&&option.includes("key+none")?!0:any?(combi=`key${shift?"+shift":""}${ctrl?"+ctrl":""}${alt?"+alt":""}${meta?"+meta":""}`,option.includes(combi)):!1}onKeyDown(args){var self=this.mudKeyInterceptor,key=args.key.toLowerCase(),invoke,keyOptions,eventArgs;self.logger('[MudBlazor | KeyInterceptor] down "'+key+'"',args);invoke=!1;self._keyOptions.hasOwnProperty(key)&&(keyOptions=self._keyOptions[key],self.logger('[MudBlazor | KeyInterceptor] options for "'+key+'"',keyOptions),self.processKeyDown(args,keyOptions),keyOptions.subscribeDown&&(invoke=!0));for(const keyOptions of self._regexOptions)keyOptions.regex.test(key)&&(self.logger('[MudBlazor | KeyInterceptor] regex options for "'+key+'"',keyOptions),self.processKeyDown(args,keyOptions),keyOptions.subscribeDown&&(invoke=!0));invoke&&(eventArgs=self.toKeyboardEventArgs(args),eventArgs.Type="keydown",self._dotNetRef.invokeMethodAsync("OnKeyDown",eventArgs))}processKeyDown(args,keyOptions){this.matchesKeyCombination(keyOptions.preventDown,args)&&args.preventDefault();this.matchesKeyCombination(keyOptions.stopDown,args)&&args.stopPropagation()}onKeyUp(args){var self=this.mudKeyInterceptor,key=args.key.toLowerCase(),invoke,keyOptions,eventArgs;self.logger('[MudBlazor | KeyInterceptor] up "'+key+'"',args);invoke=!1;self._keyOptions.hasOwnProperty(key)&&(keyOptions=self._keyOptions[key],self.processKeyUp(args,keyOptions),keyOptions.subscribeUp&&(invoke=!0));for(const keyOptions of self._regexOptions)keyOptions.regex.test(key)&&(self.processKeyUp(args,keyOptions),keyOptions.subscribeUp&&(invoke=!0));invoke&&(eventArgs=self.toKeyboardEventArgs(args),eventArgs.Type="keyup",self._dotNetRef.invokeMethodAsync("OnKeyUp",eventArgs))}processKeyUp(args,keyOptions){this.matchesKeyCombination(keyOptions.preventUp,args)&&args.preventDefault();this.matchesKeyCombination(keyOptions.stopUp,args)&&args.stopPropagation()}toKeyboardEventArgs(args){return{Key:args.key,Code:args.code,Location:args.location,Repeat:args.repeat,CtrlKey:args.ctrlKey,ShiftKey:args.shiftKey,AltKey:args.altKey,MetaKey:args.metaKey}}}window.mudpopoverHelper={calculatePopoverPosition:function(list,boundingRect,selfRect){let top=0,left=0;list.indexOf("mud-popover-anchor-top-left")>=0?(left=boundingRect.left,top=boundingRect.top):list.indexOf("mud-popover-anchor-top-center")>=0?(left=boundingRect.left+boundingRect.width/2,top=boundingRect.top):list.indexOf("mud-popover-anchor-top-right")>=0?(left=boundingRect.left+boundingRect.width,top=boundingRect.top):list.indexOf("mud-popover-anchor-center-left")>=0?(left=boundingRect.left,top=boundingRect.top+boundingRect.height/2):list.indexOf("mud-popover-anchor-center-center")>=0?(left=boundingRect.left+boundingRect.width/2,top=boundingRect.top+boundingRect.height/2):list.indexOf("mud-popover-anchor-center-right")>=0?(left=boundingRect.left+boundingRect.width,top=boundingRect.top+boundingRect.height/2):list.indexOf("mud-popover-anchor-bottom-left")>=0?(left=boundingRect.left,top=boundingRect.top+boundingRect.height):list.indexOf("mud-popover-anchor-bottom-center")>=0?(left=boundingRect.left+boundingRect.width/2,top=boundingRect.top+boundingRect.height):list.indexOf("mud-popover-anchor-bottom-right")>=0&&(left=boundingRect.left+boundingRect.width,top=boundingRect.top+boundingRect.height);let offsetX=0,offsetY=0;return list.indexOf("mud-popover-top-left")>=0?(offsetX=0,offsetY=0):list.indexOf("mud-popover-top-center")>=0?(offsetX=-selfRect.width/2,offsetY=0):list.indexOf("mud-popover-top-right")>=0?(offsetX=-selfRect.width,offsetY=0):list.indexOf("mud-popover-center-left")>=0?(offsetX=0,offsetY=-selfRect.height/2):list.indexOf("mud-popover-center-center")>=0?(offsetX=-selfRect.width/2,offsetY=-selfRect.height/2):list.indexOf("mud-popover-center-right")>=0?(offsetX=-selfRect.width,offsetY=-selfRect.height/2):list.indexOf("mud-popover-bottom-left")>=0?(offsetX=0,offsetY=-selfRect.height):list.indexOf("mud-popover-bottom-center")>=0?(offsetX=-selfRect.width/2,offsetY=-selfRect.height):list.indexOf("mud-popover-bottom-right")>=0&&(offsetX=-selfRect.width,offsetY=-selfRect.height),{top:top,left:left,offsetX:offsetX,offsetY:offsetY}},flipClassReplacements:{top:{"mud-popover-top-left":"mud-popover-bottom-left","mud-popover-top-center":"mud-popover-bottom-center","mud-popover-anchor-bottom-center":"mud-popover-anchor-top-center","mud-popover-top-right":"mud-popover-bottom-right"},left:{"mud-popover-top-left":"mud-popover-top-right","mud-popover-center-left":"mud-popover-center-right","mud-popover-anchor-center-right":"mud-popover-anchor-center-left","mud-popover-bottom-left":"mud-popover-bottom-right"},right:{"mud-popover-top-right":"mud-popover-top-left","mud-popover-center-right":"mud-popover-center-left","mud-popover-anchor-center-left":"mud-popover-anchor-center-right","mud-popover-bottom-right":"mud-popover-bottom-left"},bottom:{"mud-popover-bottom-left":"mud-popover-top-left","mud-popover-bottom-center":"mud-popover-top-center","mud-popover-anchor-top-center":"mud-popover-anchor-bottom-center","mud-popover-bottom-right":"mud-popover-top-right"},"top-and-left":{"mud-popover-top-left":"mud-popover-bottom-right"},"top-and-right":{"mud-popover-top-right":"mud-popover-bottom-left"},"bottom-and-left":{"mud-popover-bottom-left":"mud-popover-top-right"},"bottom-and-right":{"mud-popover-bottom-right":"mud-popover-top-left"}},flipMargin:0,getPositionForFlippedPopver:function(inputArray,selector,boundingRect,selfRect){const classList=[];for(var i=0;i0&&(appBarOffset=appBarElements[0].getBoundingClientRect().height);const graceMargin=window.mudpopoverHelper.flipMargin,deltaToLeft=left+offsetX,deltaToRight=window.innerWidth-left-selfRect.width,deltaTop=top-selfRect.height-appBarOffset,spaceToTop=top-appBarOffset,deltaBottom=window.innerHeight-top-selfRect.height;let selector=popoverContentNode.mudPopoverFliped;if(selector||(classList.contains("mud-popover-top-left")?deltaBottom=selfRect.height&&deltaToLeft>=selfRect.width?selector="top-and-left":deltaBottom=selfRect.height?selector="top":deltaToRight=selfRect.width&&(selector="left"):classList.contains("mud-popover-top-center")?deltaBottom=selfRect.height&&(selector="top"):classList.contains("mud-popover-top-right")?deltaBottom=selfRect.height&&deltaToRight>=selfRect.width?selector="top-and-right":deltaBottom=selfRect.height?selector="top":deltaToLeft=selfRect.width&&(selector="right"):classList.contains("mud-popover-center-left")?deltaToRight=selfRect.width&&(selector="left"):classList.contains("mud-popover-center-right")?deltaToLeft=selfRect.width&&(selector="right"):classList.contains("mud-popover-bottom-left")?deltaTop=0&&deltaToLeft>=selfRect.width?selector="bottom-and-left":deltaTop=0?selector="bottom":deltaToRight=selfRect.width&&(selector="left"):classList.contains("mud-popover-bottom-center")?deltaTop=0&&(selector="bottom"):classList.contains("mud-popover-bottom-right")&&(deltaTop=0&&deltaToRight>=selfRect.width?selector="bottom-and-right":deltaTop=0?selector="bottom":deltaToLeft=selfRect.width&&(selector="right"))),selector&&selector!="none"){const newPosition=window.mudpopoverHelper.getPositionForFlippedPopver(classListArray,selector,boundingRect,selfRect);left=newPosition.left;top=newPosition.top;offsetX=newPosition.offsetX;offsetY=newPosition.offsetY;popoverContentNode.setAttribute("data-mudpopover-flip","flipped")}else popoverContentNode.removeAttribute("data-mudpopover-flip");classList.contains("mud-popover-overflow-flip-onopen")&&(popoverContentNode.mudPopoverFliped||(popoverContentNode.mudPopoverFliped=selector||"none"))}popoverContentNode.classList.contains("mud-popover-fixed")||(window.getComputedStyle(popoverNode).position=="fixed"?popoverContentNode.style.position="fixed":(offsetX+=window.scrollX,offsetY+=window.scrollY));popoverContentNode.style.left=left+offsetX+"px";popoverContentNode.style.top=top+offsetY+"px";window.getComputedStyle(popoverNode).getPropertyValue("z-index")!="auto"&&(popoverContentNode.style["z-index"]=window.getComputedStyle(popoverNode).getPropertyValue("z-index"),popoverContentNode.skipZIndex=!0)}},placePopoverByClassSelector:function(classSelector=null){var items=window.mudPopover.getAllObservedContainers();for(let i=0;i=0||(tickValues.push(tickValue),tickValue>max&&(max=tickValue)))}if(tickValues.length==0)continue;const sortedTickValues=tickValues.sort((x,y)=>x-y);for(let i=0;i{window.mudpopoverHelper.placePopoverByClassSelector()}),this.contentObserver.observe(mainContent[0])))}connect(id){this.initilize(this.mainContainerClass);const popoverNode=document.getElementById("popover-"+id),popoverContentNode=document.getElementById("popovercontent-"+id);if(popoverNode&&popoverNode.parentNode&&popoverContentNode){window.mudpopoverHelper.placePopover(popoverNode);const observer=new MutationObserver(this.callback.bind(this,id));observer.observe(popoverContentNode,{attributeFilter:["class","data-ticks"]});const resizeObserver=new ResizeObserver(entries=>{for(let entry of entries){const target=entry.target;for(var i=0;i{for(let entry of entries){var target=entry.target;window.mudpopoverHelper.placePopoverByNode(target)}});contentNodeObserver.observe(popoverContentNode);this.map[id]={mutationObserver:observer,resizeObserver:resizeObserver,contentNodeObserver:contentNodeObserver}}}disconnect(id){if(this.map[id]){const item=this.map[id];item.mutationObserver.disconnect();item.resizeObserver.disconnect();item.contentNodeObserver.disconnect();delete this.map[id]}}dispose(){for(var i in this.map)disconnect(i);this.contentObserver.disconnect();this.contentObserver=null}getAllObservedContainers(){const result=[];for(var i in this.map)result.push(i);return result}}window.mudPopover=new MudPopover;window.addEventListener("scroll",()=>{window.mudpopoverHelper.placePopoverByClassSelector("mud-popover-fixed"),window.mudpopoverHelper.placePopoverByClassSelector("mud-popover-overflow-flip-always")});window.addEventListener("resize",()=>{window.mudpopoverHelper.placePopoverByClassSelector()});class MudResizeListener{constructor(id){this.logger=function(){};this.options={};this.throttleResizeHandlerId=-1;this.dotnet=undefined;this.breakpoint=-1;this.id=id}listenForResize(dotnetRef,options){if(this.dotnet){this.options=options;return}this.options=options;this.dotnet=dotnetRef;this.logger=options.enableLogging?console.log:()=>{};this.logger(`[MudBlazor] Reporting resize events at rate of: ${(this.options||{}).reportRate||100}ms`);window.addEventListener("resize",this.throttleResizeHandler.bind(this),!1);this.options.suppressInitEvent||this.resizeHandler();this.breakpoint=this.getBreakpoint(window.innerWidth)}throttleResizeHandler(){clearTimeout(this.throttleResizeHandlerId);this.throttleResizeHandlerId=window.setTimeout(this.resizeHandler.bind(this),(this.options||{}).reportRate||100)}resizeHandler(){if(this.options.notifyOnBreakpointOnly){let bp=this.getBreakpoint(window.innerWidth);if(bp==this.breakpoint)return;this.breakpoint=bp}try{this.id?this.dotnet.invokeMethodAsync("RaiseOnResized",{height:window.innerHeight,width:window.innerWidth},this.getBreakpoint(window.innerWidth),this.id):this.dotnet.invokeMethodAsync("RaiseOnResized",{height:window.innerHeight,width:window.innerWidth},this.getBreakpoint(window.innerWidth))}catch(error){this.logger("[MudBlazor] Error in resizeHandler:",{error})}}cancelListener(){this.dotnet=undefined;window.removeEventListener("resize",this.throttleResizeHandler)}matchMedia(query){return window.matchMedia(query).matches}getBrowserWindowSize(){return{height:window.innerHeight,width:window.innerWidth}}getBreakpoint(width){return width>=this.options.breakpointDefinitions.Xl?4:width>=this.options.breakpointDefinitions.Lg?3:width>=this.options.breakpointDefinitions.Md?2:width>=this.options.breakpointDefinitions.Sm?1:0}}window.mudResizeListener=new MudResizeListener;window.mudResizeListenerFactory={mapping:{},listenForResize:(dotnetRef,options,id)=>{var map=window.mudResizeListenerFactory.mapping,listener;map[id]||(listener=new MudResizeListener(id),listener.listenForResize(dotnetRef,options),map[id]=listener)},cancelListener:id=>{var map=window.mudResizeListenerFactory.mapping,listener;map[id]&&(listener=map[id],listener.cancelListener(),delete map[id])},cancelListeners:ids=>{for(let i=0;i{};this.options=options;this._dotNetRef=dotNetRef;delay=(this.options||{}).reportRate||200;this.throttleResizeHandlerId=-1;observervedElements=[];this._observervedElements=observervedElements;this.logger("[MudBlazor | ResizeObserver] Observer initilized");this._resizeObserver=new ResizeObserver(entries=>{var changes=[],target,affectedObservedElement,size;this.logger("[MudBlazor | ResizeObserver] changes detected");for(let entry of entries)target=entry.target,affectedObservedElement=observervedElements.find(x=>x.element==target),affectedObservedElement&&(size=entry.target.getBoundingClientRect(),affectedObservedElement.isInitilized==!0?changes.push({id:affectedObservedElement.id,size:size}):affectedObservedElement.isInitilized=!0);changes.length>0&&(this.throttleResizeHandlerId>=0&&clearTimeout(this.throttleResizeHandlerId),this.throttleResizeHandlerId=window.setTimeout(this.resizeHandler.bind(this,changes),delay))})}resizeHandler(changes){try{this.logger("[MudBlazor | ResizeObserver] OnSizeChanged handler invoked");this._dotNetRef.invokeMethodAsync("OnSizeChanged",changes)}catch(error){this.logger("[MudBlazor | ResizeObserver] Error in OnSizeChanged handler:",{error})}}connect(elements,ids){var result=[],i,newEntry;for(this.logger("[MudBlazor | ResizeObserver] Start observing elements..."),i=0;ix.id==elementId);affectedObservedElement&&(element=affectedObservedElement.element,this._resizeObserver.unobserve(element),this.logger("[MudBlazor | ResizeObserver] Element found. Ubobserving size changes of element",{element}),index=this._observervedElements.indexOf(affectedObservedElement),this._observervedElements.splice(index,1))}cancelListener(){this.logger("[MudBlazor | ResizeObserver] Closing ResizeObserver. Detaching all observed elements");this._resizeObserver.disconnect();this._dotNetRef=undefined}}window.mudResizeObserver=new MudResizeObserverFactory;class MudScrollListener{constructor(){this.throttleScrollHandlerId=-1}listenForScroll(dotnetReference,selector){let element=selector?document.querySelector(selector):document;element.addEventListener("scroll",this.throttleScrollHandler.bind(this,dotnetReference),!1)}throttleScrollHandler(dotnetReference,event){clearTimeout(this.throttleScrollHandlerId);this.throttleScrollHandlerId=window.setTimeout(this.scrollHandler.bind(this,dotnetReference,event),100)}scrollHandler(dotnetReference,event){try{let element=event.target,scrollTop=element.scrollTop,scrollHeight=element.scrollHeight,scrollWidth=element.scrollWidth,scrollLeft=element.scrollLeft,nodeName=element.nodeName,firstChild=element.firstElementChild,firstChildBoundingClientRect=firstChild.getBoundingClientRect();dotnetReference.invokeMethodAsync("RaiseOnScroll",{firstChildBoundingClientRect,scrollLeft,scrollTop,scrollHeight,scrollWidth,nodeName})}catch(error){console.log("[MudBlazor] Error in scrollHandler:",{error})}}cancelListener(selector){let element=selector?document.querySelector(selector):document.documentElement;element.removeEventListener("scroll",this.throttleScrollHandler)}}window.mudScrollListener=new MudScrollListener;class MudScrollManager{scrollToFragment(elementId,behavior){let element=document.getElementById(elementId);element&&element.scrollIntoView({behavior,block:"center",inline:"start"})}scrollToYear(elementId){let element=document.getElementById(elementId);element&&(element.parentNode.scrollTop=element.offsetTop-element.parentNode.offsetTop-element.scrollHeight*3)}scrollToListItem(elementId){let element=document.getElementById(elementId);if(element){let parent=element.parentElement;parent&&(parent.scrollTop=element.offsetTop)}}scrollTo(selector,left,top,behavior){let element=document.querySelector(selector)||document.documentElement;element.scrollTo({left,top,behavior})}scrollToBottom(selector){let element=document.querySelector(selector);element?element.scrollTop=element.scrollHeight:window.scrollTo(0,document.body.scrollHeight)}lockScroll(selector,lockclass){let element=document.querySelector(selector)||document.body,hasScrollBar=window.innerWidth>document.body.clientWidth;hasScrollBar&&element.classList.add(lockclass)}unlockScroll(selector,lockclass){let element=document.querySelector(selector)||document.body;element.classList.remove(lockclass)}}window.mudScrollManager=new MudScrollManager;class MudScrollSpy{constructor(){this.scrollToSectionRequested=null;this.lastKnowElement=null;this.handlerRef=null}spying(dotnetReference,selector){this.scrollToSectionRequested=null;this.lastKnowElement=null;this.handlerRef=this.handleScroll.bind(this,selector,dotnetReference);document.addEventListener("scroll",this.handlerRef,!0);window.addEventListener("resize",this.handlerRef,!0)}handleScroll(dotnetReference,selector){const elements=document.getElementsByClassName(selector);if(elements.length!==0){const center=window.innerHeight/2;let minDifference=Number.MAX_SAFE_INTEGER,elementId="";for(let i=0;idarkThemeMediaQuery.matches;class MudWindow{copyToClipboard(text){navigator.clipboard.writeText(text)}changeCssById(id,css){var element=document.getElementById(id);element&&(element.className=css)}changeGlobalCssVariable(name,newValue){document.documentElement.style.setProperty(name,newValue)}open(args){window.open(args)}}window.mudWindow=new MudWindow; \ No newline at end of file diff --git a/_framework/Blazored.LocalStorage.dll b/_framework/Blazored.LocalStorage.dll deleted file mode 100755 index eacb55f..0000000 Binary files a/_framework/Blazored.LocalStorage.dll and /dev/null differ diff --git a/_framework/Blazored.LocalStorage.dll.br b/_framework/Blazored.LocalStorage.dll.br deleted file mode 100644 index a60f8c4..0000000 Binary files a/_framework/Blazored.LocalStorage.dll.br and /dev/null differ diff --git a/_framework/Blazored.LocalStorage.dll.gz b/_framework/Blazored.LocalStorage.dll.gz deleted file mode 100644 index 1418519..0000000 Binary files a/_framework/Blazored.LocalStorage.dll.gz and /dev/null differ diff --git a/_framework/FSH.WebApi.Shared.dll b/_framework/FSH.WebApi.Shared.dll deleted file mode 100644 index bf29303..0000000 Binary files a/_framework/FSH.WebApi.Shared.dll and /dev/null differ diff --git a/_framework/FSH.WebApi.Shared.dll.br b/_framework/FSH.WebApi.Shared.dll.br deleted file mode 100644 index 8839b28..0000000 Binary files a/_framework/FSH.WebApi.Shared.dll.br and /dev/null differ diff --git a/_framework/FSH.WebApi.Shared.dll.gz b/_framework/FSH.WebApi.Shared.dll.gz deleted file mode 100644 index 2f70946..0000000 Binary files a/_framework/FSH.WebApi.Shared.dll.gz and /dev/null differ diff --git a/_framework/FSH.WebApi.Shared.pdb.gz b/_framework/FSH.WebApi.Shared.pdb.gz deleted file mode 100644 index 037091f..0000000 Binary files a/_framework/FSH.WebApi.Shared.pdb.gz and /dev/null differ diff --git a/_framework/Mapster.Core.dll b/_framework/Mapster.Core.dll deleted file mode 100755 index f3a5189..0000000 Binary files a/_framework/Mapster.Core.dll and /dev/null differ diff --git a/_framework/Mapster.Core.dll.br b/_framework/Mapster.Core.dll.br deleted file mode 100644 index fc082b5..0000000 Binary files a/_framework/Mapster.Core.dll.br and /dev/null differ diff --git a/_framework/Mapster.Core.dll.gz b/_framework/Mapster.Core.dll.gz deleted file mode 100644 index 4ad58c6..0000000 Binary files a/_framework/Mapster.Core.dll.gz and /dev/null differ diff --git a/_framework/Mapster.dll b/_framework/Mapster.dll deleted file mode 100755 index 83cc7e4..0000000 Binary files a/_framework/Mapster.dll and /dev/null differ diff --git a/_framework/Mapster.dll.br b/_framework/Mapster.dll.br deleted file mode 100644 index ed0e6ba..0000000 Binary files a/_framework/Mapster.dll.br and /dev/null differ diff --git a/_framework/Mapster.dll.gz b/_framework/Mapster.dll.gz deleted file mode 100644 index 0033154..0000000 Binary files a/_framework/Mapster.dll.gz and /dev/null differ diff --git a/_framework/MediatR.Contracts.dll b/_framework/MediatR.Contracts.dll deleted file mode 100755 index 3b99f56..0000000 Binary files a/_framework/MediatR.Contracts.dll and /dev/null differ diff --git a/_framework/MediatR.Contracts.dll.br b/_framework/MediatR.Contracts.dll.br deleted file mode 100644 index 33fd3b9..0000000 Binary files a/_framework/MediatR.Contracts.dll.br and /dev/null differ diff --git a/_framework/MediatR.Contracts.dll.gz b/_framework/MediatR.Contracts.dll.gz deleted file mode 100644 index 41a343b..0000000 Binary files a/_framework/MediatR.Contracts.dll.gz and /dev/null differ diff --git a/_framework/MediatR.Courier.DependencyInjection.dll b/_framework/MediatR.Courier.DependencyInjection.dll deleted file mode 100755 index 2864369..0000000 Binary files a/_framework/MediatR.Courier.DependencyInjection.dll and /dev/null differ diff --git a/_framework/MediatR.Courier.DependencyInjection.dll.br b/_framework/MediatR.Courier.DependencyInjection.dll.br deleted file mode 100644 index 672a85b..0000000 Binary files a/_framework/MediatR.Courier.DependencyInjection.dll.br and /dev/null differ diff --git a/_framework/MediatR.Courier.DependencyInjection.dll.gz b/_framework/MediatR.Courier.DependencyInjection.dll.gz deleted file mode 100644 index eaa2f6a..0000000 Binary files a/_framework/MediatR.Courier.DependencyInjection.dll.gz and /dev/null differ diff --git a/_framework/MediatR.Courier.dll b/_framework/MediatR.Courier.dll deleted file mode 100755 index 802c6cf..0000000 Binary files a/_framework/MediatR.Courier.dll and /dev/null differ diff --git a/_framework/MediatR.Courier.dll.br b/_framework/MediatR.Courier.dll.br deleted file mode 100644 index 1ced97c..0000000 Binary files a/_framework/MediatR.Courier.dll.br and /dev/null differ diff --git a/_framework/MediatR.Courier.dll.gz b/_framework/MediatR.Courier.dll.gz deleted file mode 100644 index 2c30422..0000000 Binary files a/_framework/MediatR.Courier.dll.gz and /dev/null differ diff --git a/_framework/MediatR.Extensions.Microsoft.DependencyInjection.dll b/_framework/MediatR.Extensions.Microsoft.DependencyInjection.dll deleted file mode 100755 index 80aeaf4..0000000 Binary files a/_framework/MediatR.Extensions.Microsoft.DependencyInjection.dll and /dev/null differ diff --git a/_framework/MediatR.Extensions.Microsoft.DependencyInjection.dll.br b/_framework/MediatR.Extensions.Microsoft.DependencyInjection.dll.br deleted file mode 100644 index 16a05fa..0000000 Binary files a/_framework/MediatR.Extensions.Microsoft.DependencyInjection.dll.br and /dev/null differ diff --git a/_framework/MediatR.Extensions.Microsoft.DependencyInjection.dll.gz b/_framework/MediatR.Extensions.Microsoft.DependencyInjection.dll.gz deleted file mode 100644 index fe85637..0000000 Binary files a/_framework/MediatR.Extensions.Microsoft.DependencyInjection.dll.gz and /dev/null differ diff --git a/_framework/MediatR.dll b/_framework/MediatR.dll deleted file mode 100755 index 02da783..0000000 Binary files a/_framework/MediatR.dll and /dev/null differ diff --git a/_framework/MediatR.dll.br b/_framework/MediatR.dll.br deleted file mode 100644 index 1d30c9e..0000000 Binary files a/_framework/MediatR.dll.br and /dev/null differ diff --git a/_framework/MediatR.dll.gz b/_framework/MediatR.dll.gz deleted file mode 100644 index 7679907..0000000 Binary files a/_framework/MediatR.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Authorization.dll b/_framework/Microsoft.AspNetCore.Authorization.dll deleted file mode 100644 index 55145af..0000000 Binary files a/_framework/Microsoft.AspNetCore.Authorization.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Authorization.dll.br b/_framework/Microsoft.AspNetCore.Authorization.dll.br deleted file mode 100644 index 63c1abc..0000000 Binary files a/_framework/Microsoft.AspNetCore.Authorization.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Authorization.dll.gz b/_framework/Microsoft.AspNetCore.Authorization.dll.gz deleted file mode 100644 index a8147d4..0000000 Binary files a/_framework/Microsoft.AspNetCore.Authorization.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.Authorization.dll b/_framework/Microsoft.AspNetCore.Components.Authorization.dll deleted file mode 100644 index 46c9571..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.Authorization.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.Authorization.dll.br b/_framework/Microsoft.AspNetCore.Components.Authorization.dll.br deleted file mode 100644 index d4dd462..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.Authorization.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.Authorization.dll.gz b/_framework/Microsoft.AspNetCore.Components.Authorization.dll.gz deleted file mode 100644 index 0c2d5d7..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.Authorization.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.Forms.dll b/_framework/Microsoft.AspNetCore.Components.Forms.dll deleted file mode 100644 index 5ee9bc1..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.Forms.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.Forms.dll.br b/_framework/Microsoft.AspNetCore.Components.Forms.dll.br deleted file mode 100644 index 1e8495f..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.Forms.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.Forms.dll.gz b/_framework/Microsoft.AspNetCore.Components.Forms.dll.gz deleted file mode 100644 index cbd7cfb..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.Forms.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.Web.dll b/_framework/Microsoft.AspNetCore.Components.Web.dll deleted file mode 100644 index d7dc8ce..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.Web.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.Web.dll.br b/_framework/Microsoft.AspNetCore.Components.Web.dll.br deleted file mode 100644 index 6317150..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.Web.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.Web.dll.gz b/_framework/Microsoft.AspNetCore.Components.Web.dll.gz deleted file mode 100644 index 98d75c1..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.Web.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll b/_framework/Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll deleted file mode 100755 index e5611c8..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll.br b/_framework/Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll.br deleted file mode 100644 index 394af49..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll.gz b/_framework/Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll.gz deleted file mode 100644 index 9d7a872..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.WebAssembly.dll b/_framework/Microsoft.AspNetCore.Components.WebAssembly.dll deleted file mode 100644 index 27850b2..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.WebAssembly.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.WebAssembly.dll.br b/_framework/Microsoft.AspNetCore.Components.WebAssembly.dll.br deleted file mode 100644 index 7902ca5..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.WebAssembly.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.WebAssembly.dll.gz b/_framework/Microsoft.AspNetCore.Components.WebAssembly.dll.gz deleted file mode 100644 index 97cfbda..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.WebAssembly.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.dll b/_framework/Microsoft.AspNetCore.Components.dll deleted file mode 100644 index 09c32e8..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.dll.br b/_framework/Microsoft.AspNetCore.Components.dll.br deleted file mode 100644 index 5dd0ad3..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Components.dll.gz b/_framework/Microsoft.AspNetCore.Components.dll.gz deleted file mode 100644 index 3b4cc0c..0000000 Binary files a/_framework/Microsoft.AspNetCore.Components.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Connections.Abstractions.dll b/_framework/Microsoft.AspNetCore.Connections.Abstractions.dll deleted file mode 100755 index 85586ae..0000000 Binary files a/_framework/Microsoft.AspNetCore.Connections.Abstractions.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Connections.Abstractions.dll.br b/_framework/Microsoft.AspNetCore.Connections.Abstractions.dll.br deleted file mode 100644 index cd7dd53..0000000 Binary files a/_framework/Microsoft.AspNetCore.Connections.Abstractions.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Connections.Abstractions.dll.gz b/_framework/Microsoft.AspNetCore.Connections.Abstractions.dll.gz deleted file mode 100644 index 71fd2a0..0000000 Binary files a/_framework/Microsoft.AspNetCore.Connections.Abstractions.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Abstractions.dll b/_framework/Microsoft.AspNetCore.Http.Abstractions.dll deleted file mode 100755 index c817782..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Abstractions.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Abstractions.dll.br b/_framework/Microsoft.AspNetCore.Http.Abstractions.dll.br deleted file mode 100644 index 11df693..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Abstractions.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Abstractions.dll.gz b/_framework/Microsoft.AspNetCore.Http.Abstractions.dll.gz deleted file mode 100644 index 7983b1f..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Abstractions.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Connections.Client.dll b/_framework/Microsoft.AspNetCore.Http.Connections.Client.dll deleted file mode 100755 index dfe5a8f..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Connections.Client.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Connections.Client.dll.br b/_framework/Microsoft.AspNetCore.Http.Connections.Client.dll.br deleted file mode 100644 index e143ecb..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Connections.Client.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Connections.Client.dll.gz b/_framework/Microsoft.AspNetCore.Http.Connections.Client.dll.gz deleted file mode 100644 index fb0ac20..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Connections.Client.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Connections.Common.dll b/_framework/Microsoft.AspNetCore.Http.Connections.Common.dll deleted file mode 100755 index 365c071..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Connections.Common.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Connections.Common.dll.br b/_framework/Microsoft.AspNetCore.Http.Connections.Common.dll.br deleted file mode 100644 index 0496769..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Connections.Common.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Connections.Common.dll.gz b/_framework/Microsoft.AspNetCore.Http.Connections.Common.dll.gz deleted file mode 100644 index c232324..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Connections.Common.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Extensions.dll b/_framework/Microsoft.AspNetCore.Http.Extensions.dll deleted file mode 100755 index 3dfb5e0..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Extensions.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Extensions.dll.br b/_framework/Microsoft.AspNetCore.Http.Extensions.dll.br deleted file mode 100644 index 4fcba08..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Extensions.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Extensions.dll.gz b/_framework/Microsoft.AspNetCore.Http.Extensions.dll.gz deleted file mode 100644 index 2342134..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Extensions.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Features.dll b/_framework/Microsoft.AspNetCore.Http.Features.dll deleted file mode 100755 index c5f6f86..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Features.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Features.dll.br b/_framework/Microsoft.AspNetCore.Http.Features.dll.br deleted file mode 100644 index 5a5c60c..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Features.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Http.Features.dll.gz b/_framework/Microsoft.AspNetCore.Http.Features.dll.gz deleted file mode 100644 index c2cb4e3..0000000 Binary files a/_framework/Microsoft.AspNetCore.Http.Features.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Localization.dll b/_framework/Microsoft.AspNetCore.Localization.dll deleted file mode 100755 index a82aac8..0000000 Binary files a/_framework/Microsoft.AspNetCore.Localization.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Localization.dll.br b/_framework/Microsoft.AspNetCore.Localization.dll.br deleted file mode 100644 index c2326b3..0000000 Binary files a/_framework/Microsoft.AspNetCore.Localization.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Localization.dll.gz b/_framework/Microsoft.AspNetCore.Localization.dll.gz deleted file mode 100644 index dba0992..0000000 Binary files a/_framework/Microsoft.AspNetCore.Localization.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Metadata.dll b/_framework/Microsoft.AspNetCore.Metadata.dll deleted file mode 100644 index ed42058..0000000 Binary files a/_framework/Microsoft.AspNetCore.Metadata.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Metadata.dll.br b/_framework/Microsoft.AspNetCore.Metadata.dll.br deleted file mode 100644 index cca13e1..0000000 Binary files a/_framework/Microsoft.AspNetCore.Metadata.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.Metadata.dll.gz b/_framework/Microsoft.AspNetCore.Metadata.dll.gz deleted file mode 100644 index 6d63edc..0000000 Binary files a/_framework/Microsoft.AspNetCore.Metadata.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.SignalR.Client.Core.dll b/_framework/Microsoft.AspNetCore.SignalR.Client.Core.dll deleted file mode 100755 index 7338e17..0000000 Binary files a/_framework/Microsoft.AspNetCore.SignalR.Client.Core.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.SignalR.Client.Core.dll.br b/_framework/Microsoft.AspNetCore.SignalR.Client.Core.dll.br deleted file mode 100644 index f7d9623..0000000 Binary files a/_framework/Microsoft.AspNetCore.SignalR.Client.Core.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.SignalR.Client.Core.dll.gz b/_framework/Microsoft.AspNetCore.SignalR.Client.Core.dll.gz deleted file mode 100644 index 98fbab5..0000000 Binary files a/_framework/Microsoft.AspNetCore.SignalR.Client.Core.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.SignalR.Client.dll b/_framework/Microsoft.AspNetCore.SignalR.Client.dll deleted file mode 100755 index 5551ade..0000000 Binary files a/_framework/Microsoft.AspNetCore.SignalR.Client.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.SignalR.Client.dll.br b/_framework/Microsoft.AspNetCore.SignalR.Client.dll.br deleted file mode 100644 index ad09392..0000000 Binary files a/_framework/Microsoft.AspNetCore.SignalR.Client.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.SignalR.Client.dll.gz b/_framework/Microsoft.AspNetCore.SignalR.Client.dll.gz deleted file mode 100644 index 2145e5e..0000000 Binary files a/_framework/Microsoft.AspNetCore.SignalR.Client.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.SignalR.Common.dll b/_framework/Microsoft.AspNetCore.SignalR.Common.dll deleted file mode 100755 index cc430da..0000000 Binary files a/_framework/Microsoft.AspNetCore.SignalR.Common.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.SignalR.Common.dll.br b/_framework/Microsoft.AspNetCore.SignalR.Common.dll.br deleted file mode 100644 index 38affe0..0000000 Binary files a/_framework/Microsoft.AspNetCore.SignalR.Common.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.SignalR.Common.dll.gz b/_framework/Microsoft.AspNetCore.SignalR.Common.dll.gz deleted file mode 100644 index 63545aa..0000000 Binary files a/_framework/Microsoft.AspNetCore.SignalR.Common.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.SignalR.Protocols.Json.dll b/_framework/Microsoft.AspNetCore.SignalR.Protocols.Json.dll deleted file mode 100755 index 6396ee0..0000000 Binary files a/_framework/Microsoft.AspNetCore.SignalR.Protocols.Json.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.SignalR.Protocols.Json.dll.br b/_framework/Microsoft.AspNetCore.SignalR.Protocols.Json.dll.br deleted file mode 100644 index ee71089..0000000 Binary files a/_framework/Microsoft.AspNetCore.SignalR.Protocols.Json.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.SignalR.Protocols.Json.dll.gz b/_framework/Microsoft.AspNetCore.SignalR.Protocols.Json.dll.gz deleted file mode 100644 index 0f22c49..0000000 Binary files a/_framework/Microsoft.AspNetCore.SignalR.Protocols.Json.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.WebUtilities.dll b/_framework/Microsoft.AspNetCore.WebUtilities.dll deleted file mode 100755 index dc1e804..0000000 Binary files a/_framework/Microsoft.AspNetCore.WebUtilities.dll and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.WebUtilities.dll.br b/_framework/Microsoft.AspNetCore.WebUtilities.dll.br deleted file mode 100644 index a92d3f6..0000000 Binary files a/_framework/Microsoft.AspNetCore.WebUtilities.dll.br and /dev/null differ diff --git a/_framework/Microsoft.AspNetCore.WebUtilities.dll.gz b/_framework/Microsoft.AspNetCore.WebUtilities.dll.gz deleted file mode 100644 index 0374cd0..0000000 Binary files a/_framework/Microsoft.AspNetCore.WebUtilities.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Authentication.WebAssembly.Msal.dll b/_framework/Microsoft.Authentication.WebAssembly.Msal.dll deleted file mode 100755 index 2a5d1be..0000000 Binary files a/_framework/Microsoft.Authentication.WebAssembly.Msal.dll and /dev/null differ diff --git a/_framework/Microsoft.Authentication.WebAssembly.Msal.dll.br b/_framework/Microsoft.Authentication.WebAssembly.Msal.dll.br deleted file mode 100644 index cd1e301..0000000 Binary files a/_framework/Microsoft.Authentication.WebAssembly.Msal.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Authentication.WebAssembly.Msal.dll.gz b/_framework/Microsoft.Authentication.WebAssembly.Msal.dll.gz deleted file mode 100644 index 2d14802..0000000 Binary files a/_framework/Microsoft.Authentication.WebAssembly.Msal.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.CSharp.dll b/_framework/Microsoft.CSharp.dll deleted file mode 100644 index 11cfab2..0000000 Binary files a/_framework/Microsoft.CSharp.dll and /dev/null differ diff --git a/_framework/Microsoft.CSharp.dll.br b/_framework/Microsoft.CSharp.dll.br deleted file mode 100644 index 48fdbb0..0000000 Binary files a/_framework/Microsoft.CSharp.dll.br and /dev/null differ diff --git a/_framework/Microsoft.CSharp.dll.gz b/_framework/Microsoft.CSharp.dll.gz deleted file mode 100644 index 078e98c..0000000 Binary files a/_framework/Microsoft.CSharp.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Configuration.Abstractions.dll b/_framework/Microsoft.Extensions.Configuration.Abstractions.dll deleted file mode 100644 index 5e8691e..0000000 Binary files a/_framework/Microsoft.Extensions.Configuration.Abstractions.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Configuration.Abstractions.dll.br b/_framework/Microsoft.Extensions.Configuration.Abstractions.dll.br deleted file mode 100644 index 32b0d0c..0000000 Binary files a/_framework/Microsoft.Extensions.Configuration.Abstractions.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Configuration.Abstractions.dll.gz b/_framework/Microsoft.Extensions.Configuration.Abstractions.dll.gz deleted file mode 100644 index 71ff3ec..0000000 Binary files a/_framework/Microsoft.Extensions.Configuration.Abstractions.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Configuration.Binder.dll b/_framework/Microsoft.Extensions.Configuration.Binder.dll deleted file mode 100644 index 8aae99e..0000000 Binary files a/_framework/Microsoft.Extensions.Configuration.Binder.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Configuration.Binder.dll.br b/_framework/Microsoft.Extensions.Configuration.Binder.dll.br deleted file mode 100644 index 5c0957a..0000000 Binary files a/_framework/Microsoft.Extensions.Configuration.Binder.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Configuration.Binder.dll.gz b/_framework/Microsoft.Extensions.Configuration.Binder.dll.gz deleted file mode 100644 index af7758d..0000000 Binary files a/_framework/Microsoft.Extensions.Configuration.Binder.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Configuration.Json.dll b/_framework/Microsoft.Extensions.Configuration.Json.dll deleted file mode 100644 index 93972bb..0000000 Binary files a/_framework/Microsoft.Extensions.Configuration.Json.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Configuration.Json.dll.br b/_framework/Microsoft.Extensions.Configuration.Json.dll.br deleted file mode 100644 index 1ffe4a5..0000000 Binary files a/_framework/Microsoft.Extensions.Configuration.Json.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Configuration.Json.dll.gz b/_framework/Microsoft.Extensions.Configuration.Json.dll.gz deleted file mode 100644 index 5e80dd5..0000000 Binary files a/_framework/Microsoft.Extensions.Configuration.Json.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Configuration.dll b/_framework/Microsoft.Extensions.Configuration.dll deleted file mode 100644 index 0c64dbb..0000000 Binary files a/_framework/Microsoft.Extensions.Configuration.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Configuration.dll.br b/_framework/Microsoft.Extensions.Configuration.dll.br deleted file mode 100644 index a34f3b5..0000000 Binary files a/_framework/Microsoft.Extensions.Configuration.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Configuration.dll.gz b/_framework/Microsoft.Extensions.Configuration.dll.gz deleted file mode 100644 index 7f3262c..0000000 Binary files a/_framework/Microsoft.Extensions.Configuration.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.dll b/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.dll deleted file mode 100644 index f543931..0000000 Binary files a/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.dll.br b/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.dll.br deleted file mode 100644 index cdc8925..0000000 Binary files a/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.dll.gz b/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.dll.gz deleted file mode 100644 index c8752b6..0000000 Binary files a/_framework/Microsoft.Extensions.DependencyInjection.Abstractions.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.DependencyInjection.dll b/_framework/Microsoft.Extensions.DependencyInjection.dll deleted file mode 100644 index fdd3e9f..0000000 Binary files a/_framework/Microsoft.Extensions.DependencyInjection.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.DependencyInjection.dll.br b/_framework/Microsoft.Extensions.DependencyInjection.dll.br deleted file mode 100644 index f9eef4f..0000000 Binary files a/_framework/Microsoft.Extensions.DependencyInjection.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.DependencyInjection.dll.gz b/_framework/Microsoft.Extensions.DependencyInjection.dll.gz deleted file mode 100644 index 5234bc5..0000000 Binary files a/_framework/Microsoft.Extensions.DependencyInjection.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Features.dll b/_framework/Microsoft.Extensions.Features.dll deleted file mode 100755 index 71bca4a..0000000 Binary files a/_framework/Microsoft.Extensions.Features.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Features.dll.br b/_framework/Microsoft.Extensions.Features.dll.br deleted file mode 100644 index 644ade3..0000000 Binary files a/_framework/Microsoft.Extensions.Features.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Features.dll.gz b/_framework/Microsoft.Extensions.Features.dll.gz deleted file mode 100644 index f6866f9..0000000 Binary files a/_framework/Microsoft.Extensions.Features.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.FileProviders.Abstractions.dll b/_framework/Microsoft.Extensions.FileProviders.Abstractions.dll deleted file mode 100644 index f65fc82..0000000 Binary files a/_framework/Microsoft.Extensions.FileProviders.Abstractions.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.FileProviders.Abstractions.dll.br b/_framework/Microsoft.Extensions.FileProviders.Abstractions.dll.br deleted file mode 100644 index 5602505..0000000 Binary files a/_framework/Microsoft.Extensions.FileProviders.Abstractions.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.FileProviders.Abstractions.dll.gz b/_framework/Microsoft.Extensions.FileProviders.Abstractions.dll.gz deleted file mode 100644 index c157c63..0000000 Binary files a/_framework/Microsoft.Extensions.FileProviders.Abstractions.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Http.dll b/_framework/Microsoft.Extensions.Http.dll deleted file mode 100644 index 8659022..0000000 Binary files a/_framework/Microsoft.Extensions.Http.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Http.dll.br b/_framework/Microsoft.Extensions.Http.dll.br deleted file mode 100644 index 11d2ccb..0000000 Binary files a/_framework/Microsoft.Extensions.Http.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Http.dll.gz b/_framework/Microsoft.Extensions.Http.dll.gz deleted file mode 100644 index fe6aa9c..0000000 Binary files a/_framework/Microsoft.Extensions.Http.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Localization.Abstractions.dll b/_framework/Microsoft.Extensions.Localization.Abstractions.dll deleted file mode 100755 index 257df96..0000000 Binary files a/_framework/Microsoft.Extensions.Localization.Abstractions.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Localization.Abstractions.dll.br b/_framework/Microsoft.Extensions.Localization.Abstractions.dll.br deleted file mode 100644 index 00ed7f2..0000000 Binary files a/_framework/Microsoft.Extensions.Localization.Abstractions.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Localization.Abstractions.dll.gz b/_framework/Microsoft.Extensions.Localization.Abstractions.dll.gz deleted file mode 100644 index 7b54d77..0000000 Binary files a/_framework/Microsoft.Extensions.Localization.Abstractions.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Localization.dll b/_framework/Microsoft.Extensions.Localization.dll deleted file mode 100755 index f6fe7bb..0000000 Binary files a/_framework/Microsoft.Extensions.Localization.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Localization.dll.br b/_framework/Microsoft.Extensions.Localization.dll.br deleted file mode 100644 index 639e20b..0000000 Binary files a/_framework/Microsoft.Extensions.Localization.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Localization.dll.gz b/_framework/Microsoft.Extensions.Localization.dll.gz deleted file mode 100644 index ed49dce..0000000 Binary files a/_framework/Microsoft.Extensions.Localization.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Logging.Abstractions.dll b/_framework/Microsoft.Extensions.Logging.Abstractions.dll deleted file mode 100644 index 9aef0ff..0000000 Binary files a/_framework/Microsoft.Extensions.Logging.Abstractions.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Logging.Abstractions.dll.br b/_framework/Microsoft.Extensions.Logging.Abstractions.dll.br deleted file mode 100644 index 537955f..0000000 Binary files a/_framework/Microsoft.Extensions.Logging.Abstractions.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Logging.Abstractions.dll.gz b/_framework/Microsoft.Extensions.Logging.Abstractions.dll.gz deleted file mode 100644 index 8c09fe8..0000000 Binary files a/_framework/Microsoft.Extensions.Logging.Abstractions.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Logging.dll b/_framework/Microsoft.Extensions.Logging.dll deleted file mode 100644 index 4f26931..0000000 Binary files a/_framework/Microsoft.Extensions.Logging.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Logging.dll.br b/_framework/Microsoft.Extensions.Logging.dll.br deleted file mode 100644 index 68d9842..0000000 Binary files a/_framework/Microsoft.Extensions.Logging.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Logging.dll.gz b/_framework/Microsoft.Extensions.Logging.dll.gz deleted file mode 100644 index 14e55fe..0000000 Binary files a/_framework/Microsoft.Extensions.Logging.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Options.dll b/_framework/Microsoft.Extensions.Options.dll deleted file mode 100644 index 579b5ab..0000000 Binary files a/_framework/Microsoft.Extensions.Options.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Options.dll.br b/_framework/Microsoft.Extensions.Options.dll.br deleted file mode 100644 index b98ba46..0000000 Binary files a/_framework/Microsoft.Extensions.Options.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Options.dll.gz b/_framework/Microsoft.Extensions.Options.dll.gz deleted file mode 100644 index 54e021b..0000000 Binary files a/_framework/Microsoft.Extensions.Options.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Primitives.dll b/_framework/Microsoft.Extensions.Primitives.dll deleted file mode 100644 index 4f4393a..0000000 Binary files a/_framework/Microsoft.Extensions.Primitives.dll and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Primitives.dll.br b/_framework/Microsoft.Extensions.Primitives.dll.br deleted file mode 100644 index 3a1a9c0..0000000 Binary files a/_framework/Microsoft.Extensions.Primitives.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Extensions.Primitives.dll.gz b/_framework/Microsoft.Extensions.Primitives.dll.gz deleted file mode 100644 index a616e15..0000000 Binary files a/_framework/Microsoft.Extensions.Primitives.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.JSInterop.WebAssembly.dll b/_framework/Microsoft.JSInterop.WebAssembly.dll deleted file mode 100644 index e9e4afb..0000000 Binary files a/_framework/Microsoft.JSInterop.WebAssembly.dll and /dev/null differ diff --git a/_framework/Microsoft.JSInterop.WebAssembly.dll.br b/_framework/Microsoft.JSInterop.WebAssembly.dll.br deleted file mode 100644 index 3f21db4..0000000 Binary files a/_framework/Microsoft.JSInterop.WebAssembly.dll.br and /dev/null differ diff --git a/_framework/Microsoft.JSInterop.WebAssembly.dll.gz b/_framework/Microsoft.JSInterop.WebAssembly.dll.gz deleted file mode 100644 index f17faa8..0000000 Binary files a/_framework/Microsoft.JSInterop.WebAssembly.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.JSInterop.dll b/_framework/Microsoft.JSInterop.dll deleted file mode 100644 index 63f3adc..0000000 Binary files a/_framework/Microsoft.JSInterop.dll and /dev/null differ diff --git a/_framework/Microsoft.JSInterop.dll.br b/_framework/Microsoft.JSInterop.dll.br deleted file mode 100644 index cea46a4..0000000 Binary files a/_framework/Microsoft.JSInterop.dll.br and /dev/null differ diff --git a/_framework/Microsoft.JSInterop.dll.gz b/_framework/Microsoft.JSInterop.dll.gz deleted file mode 100644 index 7a439d3..0000000 Binary files a/_framework/Microsoft.JSInterop.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Net.Http.Headers.dll b/_framework/Microsoft.Net.Http.Headers.dll deleted file mode 100755 index 01dec16..0000000 Binary files a/_framework/Microsoft.Net.Http.Headers.dll and /dev/null differ diff --git a/_framework/Microsoft.Net.Http.Headers.dll.br b/_framework/Microsoft.Net.Http.Headers.dll.br deleted file mode 100644 index adb5130..0000000 Binary files a/_framework/Microsoft.Net.Http.Headers.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Net.Http.Headers.dll.gz b/_framework/Microsoft.Net.Http.Headers.dll.gz deleted file mode 100644 index bb44cce..0000000 Binary files a/_framework/Microsoft.Net.Http.Headers.dll.gz and /dev/null differ diff --git a/_framework/Microsoft.Win32.Primitives.dll b/_framework/Microsoft.Win32.Primitives.dll deleted file mode 100644 index 06ff654..0000000 Binary files a/_framework/Microsoft.Win32.Primitives.dll and /dev/null differ diff --git a/_framework/Microsoft.Win32.Primitives.dll.br b/_framework/Microsoft.Win32.Primitives.dll.br deleted file mode 100644 index d7ca4e6..0000000 Binary files a/_framework/Microsoft.Win32.Primitives.dll.br and /dev/null differ diff --git a/_framework/Microsoft.Win32.Primitives.dll.gz b/_framework/Microsoft.Win32.Primitives.dll.gz deleted file mode 100644 index 405617d..0000000 Binary files a/_framework/Microsoft.Win32.Primitives.dll.gz and /dev/null differ diff --git a/_framework/MudBlazor.dll b/_framework/MudBlazor.dll deleted file mode 100755 index c5cba9f..0000000 Binary files a/_framework/MudBlazor.dll and /dev/null differ diff --git a/_framework/MudBlazor.dll.br b/_framework/MudBlazor.dll.br deleted file mode 100644 index 0afef02..0000000 Binary files a/_framework/MudBlazor.dll.br and /dev/null differ diff --git a/_framework/MudBlazor.dll.gz b/_framework/MudBlazor.dll.gz deleted file mode 100644 index cfb90f2..0000000 Binary files a/_framework/MudBlazor.dll.gz and /dev/null differ diff --git a/_framework/Newtonsoft.Json.dll b/_framework/Newtonsoft.Json.dll deleted file mode 100755 index 1ffeabe..0000000 Binary files a/_framework/Newtonsoft.Json.dll and /dev/null differ diff --git a/_framework/Newtonsoft.Json.dll.br b/_framework/Newtonsoft.Json.dll.br deleted file mode 100644 index 223ae92..0000000 Binary files a/_framework/Newtonsoft.Json.dll.br and /dev/null differ diff --git a/_framework/Newtonsoft.Json.dll.gz b/_framework/Newtonsoft.Json.dll.gz deleted file mode 100644 index 865d36f..0000000 Binary files a/_framework/Newtonsoft.Json.dll.gz and /dev/null differ diff --git a/_framework/RewardsPlus.BlazorWebAssembly.Client.Infrastructure.dll b/_framework/RewardsPlus.BlazorWebAssembly.Client.Infrastructure.dll deleted file mode 100644 index 5798a9d..0000000 Binary files a/_framework/RewardsPlus.BlazorWebAssembly.Client.Infrastructure.dll and /dev/null differ diff --git a/_framework/RewardsPlus.BlazorWebAssembly.Client.Infrastructure.dll.br b/_framework/RewardsPlus.BlazorWebAssembly.Client.Infrastructure.dll.br deleted file mode 100644 index 3335014..0000000 Binary files a/_framework/RewardsPlus.BlazorWebAssembly.Client.Infrastructure.dll.br and /dev/null differ diff --git a/_framework/RewardsPlus.BlazorWebAssembly.Client.Infrastructure.dll.gz b/_framework/RewardsPlus.BlazorWebAssembly.Client.Infrastructure.dll.gz deleted file mode 100644 index f31f471..0000000 Binary files a/_framework/RewardsPlus.BlazorWebAssembly.Client.Infrastructure.dll.gz and /dev/null differ diff --git a/_framework/RewardsPlus.BlazorWebAssembly.Client.Infrastructure.pdb.gz b/_framework/RewardsPlus.BlazorWebAssembly.Client.Infrastructure.pdb.gz deleted file mode 100644 index baf3e50..0000000 Binary files a/_framework/RewardsPlus.BlazorWebAssembly.Client.Infrastructure.pdb.gz and /dev/null differ diff --git a/_framework/RewardsPlus.BlazorWebAssembly.Client.dll b/_framework/RewardsPlus.BlazorWebAssembly.Client.dll deleted file mode 100644 index e12b48f..0000000 Binary files a/_framework/RewardsPlus.BlazorWebAssembly.Client.dll and /dev/null differ diff --git a/_framework/RewardsPlus.BlazorWebAssembly.Client.dll.br b/_framework/RewardsPlus.BlazorWebAssembly.Client.dll.br deleted file mode 100644 index bf2ecea..0000000 Binary files a/_framework/RewardsPlus.BlazorWebAssembly.Client.dll.br and /dev/null differ diff --git a/_framework/RewardsPlus.BlazorWebAssembly.Client.dll.gz b/_framework/RewardsPlus.BlazorWebAssembly.Client.dll.gz deleted file mode 100644 index f79e505..0000000 Binary files a/_framework/RewardsPlus.BlazorWebAssembly.Client.dll.gz and /dev/null differ diff --git a/_framework/RewardsPlus.BlazorWebAssembly.Client.pdb.gz b/_framework/RewardsPlus.BlazorWebAssembly.Client.pdb.gz deleted file mode 100644 index 2b94cd9..0000000 Binary files a/_framework/RewardsPlus.BlazorWebAssembly.Client.pdb.gz and /dev/null differ diff --git a/_framework/System.Buffers.dll b/_framework/System.Buffers.dll deleted file mode 100644 index ba6eac9..0000000 Binary files a/_framework/System.Buffers.dll and /dev/null differ diff --git a/_framework/System.Buffers.dll.br b/_framework/System.Buffers.dll.br deleted file mode 100644 index 88ec76e..0000000 Binary files a/_framework/System.Buffers.dll.br and /dev/null differ diff --git a/_framework/System.Buffers.dll.gz b/_framework/System.Buffers.dll.gz deleted file mode 100644 index 03899bb..0000000 Binary files a/_framework/System.Buffers.dll.gz and /dev/null differ diff --git a/_framework/System.Collections.Concurrent.dll b/_framework/System.Collections.Concurrent.dll deleted file mode 100644 index e7509cf..0000000 Binary files a/_framework/System.Collections.Concurrent.dll and /dev/null differ diff --git a/_framework/System.Collections.Concurrent.dll.br b/_framework/System.Collections.Concurrent.dll.br deleted file mode 100644 index ba7dd73..0000000 Binary files a/_framework/System.Collections.Concurrent.dll.br and /dev/null differ diff --git a/_framework/System.Collections.Concurrent.dll.gz b/_framework/System.Collections.Concurrent.dll.gz deleted file mode 100644 index cd5c257..0000000 Binary files a/_framework/System.Collections.Concurrent.dll.gz and /dev/null differ diff --git a/_framework/System.Collections.NonGeneric.dll b/_framework/System.Collections.NonGeneric.dll deleted file mode 100644 index 4c2c2c8..0000000 Binary files a/_framework/System.Collections.NonGeneric.dll and /dev/null differ diff --git a/_framework/System.Collections.NonGeneric.dll.br b/_framework/System.Collections.NonGeneric.dll.br deleted file mode 100644 index 49a9e9b..0000000 Binary files a/_framework/System.Collections.NonGeneric.dll.br and /dev/null differ diff --git a/_framework/System.Collections.NonGeneric.dll.gz b/_framework/System.Collections.NonGeneric.dll.gz deleted file mode 100644 index 699145f..0000000 Binary files a/_framework/System.Collections.NonGeneric.dll.gz and /dev/null differ diff --git a/_framework/System.Collections.Specialized.dll b/_framework/System.Collections.Specialized.dll deleted file mode 100644 index 6b5a8b4..0000000 Binary files a/_framework/System.Collections.Specialized.dll and /dev/null differ diff --git a/_framework/System.Collections.Specialized.dll.br b/_framework/System.Collections.Specialized.dll.br deleted file mode 100644 index f44584e..0000000 Binary files a/_framework/System.Collections.Specialized.dll.br and /dev/null differ diff --git a/_framework/System.Collections.Specialized.dll.gz b/_framework/System.Collections.Specialized.dll.gz deleted file mode 100644 index 39b52df..0000000 Binary files a/_framework/System.Collections.Specialized.dll.gz and /dev/null differ diff --git a/_framework/System.Collections.dll b/_framework/System.Collections.dll deleted file mode 100644 index 9151605..0000000 Binary files a/_framework/System.Collections.dll and /dev/null differ diff --git a/_framework/System.Collections.dll.br b/_framework/System.Collections.dll.br deleted file mode 100644 index 0a7eadf..0000000 Binary files a/_framework/System.Collections.dll.br and /dev/null differ diff --git a/_framework/System.Collections.dll.gz b/_framework/System.Collections.dll.gz deleted file mode 100644 index 74ecb70..0000000 Binary files a/_framework/System.Collections.dll.gz and /dev/null differ diff --git a/_framework/System.ComponentModel.Annotations.dll b/_framework/System.ComponentModel.Annotations.dll deleted file mode 100644 index 0bbae58..0000000 Binary files a/_framework/System.ComponentModel.Annotations.dll and /dev/null differ diff --git a/_framework/System.ComponentModel.Annotations.dll.br b/_framework/System.ComponentModel.Annotations.dll.br deleted file mode 100644 index cb38b81..0000000 Binary files a/_framework/System.ComponentModel.Annotations.dll.br and /dev/null differ diff --git a/_framework/System.ComponentModel.Annotations.dll.gz b/_framework/System.ComponentModel.Annotations.dll.gz deleted file mode 100644 index 75582cd..0000000 Binary files a/_framework/System.ComponentModel.Annotations.dll.gz and /dev/null differ diff --git a/_framework/System.ComponentModel.Primitives.dll b/_framework/System.ComponentModel.Primitives.dll deleted file mode 100644 index 4c62e9f..0000000 Binary files a/_framework/System.ComponentModel.Primitives.dll and /dev/null differ diff --git a/_framework/System.ComponentModel.Primitives.dll.br b/_framework/System.ComponentModel.Primitives.dll.br deleted file mode 100644 index 74ba3cf..0000000 Binary files a/_framework/System.ComponentModel.Primitives.dll.br and /dev/null differ diff --git a/_framework/System.ComponentModel.Primitives.dll.gz b/_framework/System.ComponentModel.Primitives.dll.gz deleted file mode 100644 index 7931f13..0000000 Binary files a/_framework/System.ComponentModel.Primitives.dll.gz and /dev/null differ diff --git a/_framework/System.ComponentModel.TypeConverter.dll b/_framework/System.ComponentModel.TypeConverter.dll deleted file mode 100644 index cd78724..0000000 Binary files a/_framework/System.ComponentModel.TypeConverter.dll and /dev/null differ diff --git a/_framework/System.ComponentModel.TypeConverter.dll.br b/_framework/System.ComponentModel.TypeConverter.dll.br deleted file mode 100644 index 0252892..0000000 Binary files a/_framework/System.ComponentModel.TypeConverter.dll.br and /dev/null differ diff --git a/_framework/System.ComponentModel.TypeConverter.dll.gz b/_framework/System.ComponentModel.TypeConverter.dll.gz deleted file mode 100644 index dfa7ba3..0000000 Binary files a/_framework/System.ComponentModel.TypeConverter.dll.gz and /dev/null differ diff --git a/_framework/System.ComponentModel.dll b/_framework/System.ComponentModel.dll deleted file mode 100644 index 66eb177..0000000 Binary files a/_framework/System.ComponentModel.dll and /dev/null differ diff --git a/_framework/System.ComponentModel.dll.br b/_framework/System.ComponentModel.dll.br deleted file mode 100644 index 8aa95e4..0000000 Binary files a/_framework/System.ComponentModel.dll.br and /dev/null differ diff --git a/_framework/System.ComponentModel.dll.gz b/_framework/System.ComponentModel.dll.gz deleted file mode 100644 index fc2e89d..0000000 Binary files a/_framework/System.ComponentModel.dll.gz and /dev/null differ diff --git a/_framework/System.Console.dll b/_framework/System.Console.dll deleted file mode 100644 index 2148fb6..0000000 Binary files a/_framework/System.Console.dll and /dev/null differ diff --git a/_framework/System.Console.dll.br b/_framework/System.Console.dll.br deleted file mode 100644 index 690a7dc..0000000 Binary files a/_framework/System.Console.dll.br and /dev/null differ diff --git a/_framework/System.Console.dll.gz b/_framework/System.Console.dll.gz deleted file mode 100644 index 6e81690..0000000 Binary files a/_framework/System.Console.dll.gz and /dev/null differ diff --git a/_framework/System.Data.Common.dll b/_framework/System.Data.Common.dll deleted file mode 100644 index 5291750..0000000 Binary files a/_framework/System.Data.Common.dll and /dev/null differ diff --git a/_framework/System.Data.Common.dll.br b/_framework/System.Data.Common.dll.br deleted file mode 100644 index a9cc05c..0000000 Binary files a/_framework/System.Data.Common.dll.br and /dev/null differ diff --git a/_framework/System.Data.Common.dll.gz b/_framework/System.Data.Common.dll.gz deleted file mode 100644 index 2e67654..0000000 Binary files a/_framework/System.Data.Common.dll.gz and /dev/null differ diff --git a/_framework/System.Diagnostics.TraceSource.dll b/_framework/System.Diagnostics.TraceSource.dll deleted file mode 100644 index 4ea75dd..0000000 Binary files a/_framework/System.Diagnostics.TraceSource.dll and /dev/null differ diff --git a/_framework/System.Diagnostics.TraceSource.dll.br b/_framework/System.Diagnostics.TraceSource.dll.br deleted file mode 100644 index 6df1cc4..0000000 Binary files a/_framework/System.Diagnostics.TraceSource.dll.br and /dev/null differ diff --git a/_framework/System.Diagnostics.TraceSource.dll.gz b/_framework/System.Diagnostics.TraceSource.dll.gz deleted file mode 100644 index 10c2bb7..0000000 Binary files a/_framework/System.Diagnostics.TraceSource.dll.gz and /dev/null differ diff --git a/_framework/System.Drawing.Primitives.dll b/_framework/System.Drawing.Primitives.dll deleted file mode 100644 index 57bd53c..0000000 Binary files a/_framework/System.Drawing.Primitives.dll and /dev/null differ diff --git a/_framework/System.Drawing.Primitives.dll.br b/_framework/System.Drawing.Primitives.dll.br deleted file mode 100644 index 0731684..0000000 Binary files a/_framework/System.Drawing.Primitives.dll.br and /dev/null differ diff --git a/_framework/System.Drawing.Primitives.dll.gz b/_framework/System.Drawing.Primitives.dll.gz deleted file mode 100644 index 421dc6e..0000000 Binary files a/_framework/System.Drawing.Primitives.dll.gz and /dev/null differ diff --git a/_framework/System.Drawing.dll b/_framework/System.Drawing.dll deleted file mode 100644 index df0d4f2..0000000 Binary files a/_framework/System.Drawing.dll and /dev/null differ diff --git a/_framework/System.Drawing.dll.br b/_framework/System.Drawing.dll.br deleted file mode 100644 index f1fd142..0000000 Binary files a/_framework/System.Drawing.dll.br and /dev/null differ diff --git a/_framework/System.Drawing.dll.gz b/_framework/System.Drawing.dll.gz deleted file mode 100644 index b501ce6..0000000 Binary files a/_framework/System.Drawing.dll.gz and /dev/null differ diff --git a/_framework/System.IO.Pipelines.dll b/_framework/System.IO.Pipelines.dll deleted file mode 100644 index bba7b56..0000000 Binary files a/_framework/System.IO.Pipelines.dll and /dev/null differ diff --git a/_framework/System.IO.Pipelines.dll.br b/_framework/System.IO.Pipelines.dll.br deleted file mode 100644 index f12955d..0000000 Binary files a/_framework/System.IO.Pipelines.dll.br and /dev/null differ diff --git a/_framework/System.IO.Pipelines.dll.gz b/_framework/System.IO.Pipelines.dll.gz deleted file mode 100644 index 74339c8..0000000 Binary files a/_framework/System.IO.Pipelines.dll.gz and /dev/null differ diff --git a/_framework/System.Linq.Expressions.dll b/_framework/System.Linq.Expressions.dll deleted file mode 100644 index a3f8842..0000000 Binary files a/_framework/System.Linq.Expressions.dll and /dev/null differ diff --git a/_framework/System.Linq.Expressions.dll.br b/_framework/System.Linq.Expressions.dll.br deleted file mode 100644 index a2713b4..0000000 Binary files a/_framework/System.Linq.Expressions.dll.br and /dev/null differ diff --git a/_framework/System.Linq.Expressions.dll.gz b/_framework/System.Linq.Expressions.dll.gz deleted file mode 100644 index 3f5b741..0000000 Binary files a/_framework/System.Linq.Expressions.dll.gz and /dev/null differ diff --git a/_framework/System.Linq.Queryable.dll b/_framework/System.Linq.Queryable.dll deleted file mode 100644 index e4b6289..0000000 Binary files a/_framework/System.Linq.Queryable.dll and /dev/null differ diff --git a/_framework/System.Linq.Queryable.dll.br b/_framework/System.Linq.Queryable.dll.br deleted file mode 100644 index cd3ce5b..0000000 Binary files a/_framework/System.Linq.Queryable.dll.br and /dev/null differ diff --git a/_framework/System.Linq.Queryable.dll.gz b/_framework/System.Linq.Queryable.dll.gz deleted file mode 100644 index 85d1809..0000000 Binary files a/_framework/System.Linq.Queryable.dll.gz and /dev/null differ diff --git a/_framework/System.Linq.dll b/_framework/System.Linq.dll deleted file mode 100644 index 2ce3101..0000000 Binary files a/_framework/System.Linq.dll and /dev/null differ diff --git a/_framework/System.Linq.dll.br b/_framework/System.Linq.dll.br deleted file mode 100644 index d78a031..0000000 Binary files a/_framework/System.Linq.dll.br and /dev/null differ diff --git a/_framework/System.Linq.dll.gz b/_framework/System.Linq.dll.gz deleted file mode 100644 index d068cb4..0000000 Binary files a/_framework/System.Linq.dll.gz and /dev/null differ diff --git a/_framework/System.Memory.dll b/_framework/System.Memory.dll deleted file mode 100644 index 80608aa..0000000 Binary files a/_framework/System.Memory.dll and /dev/null differ diff --git a/_framework/System.Memory.dll.br b/_framework/System.Memory.dll.br deleted file mode 100644 index 93ce42b..0000000 Binary files a/_framework/System.Memory.dll.br and /dev/null differ diff --git a/_framework/System.Memory.dll.gz b/_framework/System.Memory.dll.gz deleted file mode 100644 index 1470aa8..0000000 Binary files a/_framework/System.Memory.dll.gz and /dev/null differ diff --git a/_framework/System.Net.Http.dll b/_framework/System.Net.Http.dll deleted file mode 100644 index ca39309..0000000 Binary files a/_framework/System.Net.Http.dll and /dev/null differ diff --git a/_framework/System.Net.Http.dll.br b/_framework/System.Net.Http.dll.br deleted file mode 100644 index 2f2f3ac..0000000 Binary files a/_framework/System.Net.Http.dll.br and /dev/null differ diff --git a/_framework/System.Net.Http.dll.gz b/_framework/System.Net.Http.dll.gz deleted file mode 100644 index 235c0ac..0000000 Binary files a/_framework/System.Net.Http.dll.gz and /dev/null differ diff --git a/_framework/System.Net.Primitives.dll b/_framework/System.Net.Primitives.dll deleted file mode 100644 index 446bc65..0000000 Binary files a/_framework/System.Net.Primitives.dll and /dev/null differ diff --git a/_framework/System.Net.Primitives.dll.br b/_framework/System.Net.Primitives.dll.br deleted file mode 100644 index 5478ac8..0000000 Binary files a/_framework/System.Net.Primitives.dll.br and /dev/null differ diff --git a/_framework/System.Net.Primitives.dll.gz b/_framework/System.Net.Primitives.dll.gz deleted file mode 100644 index 3d2a38c..0000000 Binary files a/_framework/System.Net.Primitives.dll.gz and /dev/null differ diff --git a/_framework/System.Net.Requests.dll b/_framework/System.Net.Requests.dll deleted file mode 100644 index 49b2519..0000000 Binary files a/_framework/System.Net.Requests.dll and /dev/null differ diff --git a/_framework/System.Net.Requests.dll.br b/_framework/System.Net.Requests.dll.br deleted file mode 100644 index fdbdf2e..0000000 Binary files a/_framework/System.Net.Requests.dll.br and /dev/null differ diff --git a/_framework/System.Net.Requests.dll.gz b/_framework/System.Net.Requests.dll.gz deleted file mode 100644 index 2c312cb..0000000 Binary files a/_framework/System.Net.Requests.dll.gz and /dev/null differ diff --git a/_framework/System.Net.Security.dll b/_framework/System.Net.Security.dll deleted file mode 100644 index 088ebc2..0000000 Binary files a/_framework/System.Net.Security.dll and /dev/null differ diff --git a/_framework/System.Net.Security.dll.br b/_framework/System.Net.Security.dll.br deleted file mode 100644 index 0535039..0000000 Binary files a/_framework/System.Net.Security.dll.br and /dev/null differ diff --git a/_framework/System.Net.Security.dll.gz b/_framework/System.Net.Security.dll.gz deleted file mode 100644 index a8cfc2b..0000000 Binary files a/_framework/System.Net.Security.dll.gz and /dev/null differ diff --git a/_framework/System.Net.Sockets.dll b/_framework/System.Net.Sockets.dll deleted file mode 100644 index 7f5e8b7..0000000 Binary files a/_framework/System.Net.Sockets.dll and /dev/null differ diff --git a/_framework/System.Net.Sockets.dll.br b/_framework/System.Net.Sockets.dll.br deleted file mode 100644 index 407791e..0000000 Binary files a/_framework/System.Net.Sockets.dll.br and /dev/null differ diff --git a/_framework/System.Net.Sockets.dll.gz b/_framework/System.Net.Sockets.dll.gz deleted file mode 100644 index 32c4812..0000000 Binary files a/_framework/System.Net.Sockets.dll.gz and /dev/null differ diff --git a/_framework/System.Net.WebSockets.Client.dll b/_framework/System.Net.WebSockets.Client.dll deleted file mode 100644 index 81f509b..0000000 Binary files a/_framework/System.Net.WebSockets.Client.dll and /dev/null differ diff --git a/_framework/System.Net.WebSockets.Client.dll.br b/_framework/System.Net.WebSockets.Client.dll.br deleted file mode 100644 index 7b6c9ed..0000000 Binary files a/_framework/System.Net.WebSockets.Client.dll.br and /dev/null differ diff --git a/_framework/System.Net.WebSockets.Client.dll.gz b/_framework/System.Net.WebSockets.Client.dll.gz deleted file mode 100644 index 1aab426..0000000 Binary files a/_framework/System.Net.WebSockets.Client.dll.gz and /dev/null differ diff --git a/_framework/System.Net.WebSockets.dll b/_framework/System.Net.WebSockets.dll deleted file mode 100644 index 9d061bf..0000000 Binary files a/_framework/System.Net.WebSockets.dll and /dev/null differ diff --git a/_framework/System.Net.WebSockets.dll.br b/_framework/System.Net.WebSockets.dll.br deleted file mode 100644 index a5949a4..0000000 Binary files a/_framework/System.Net.WebSockets.dll.br and /dev/null differ diff --git a/_framework/System.Net.WebSockets.dll.gz b/_framework/System.Net.WebSockets.dll.gz deleted file mode 100644 index 5f1fe2f..0000000 Binary files a/_framework/System.Net.WebSockets.dll.gz and /dev/null differ diff --git a/_framework/System.ObjectModel.dll b/_framework/System.ObjectModel.dll deleted file mode 100644 index 6819c98..0000000 Binary files a/_framework/System.ObjectModel.dll and /dev/null differ diff --git a/_framework/System.ObjectModel.dll.br b/_framework/System.ObjectModel.dll.br deleted file mode 100644 index 443d02a..0000000 Binary files a/_framework/System.ObjectModel.dll.br and /dev/null differ diff --git a/_framework/System.ObjectModel.dll.gz b/_framework/System.ObjectModel.dll.gz deleted file mode 100644 index 3a4964a..0000000 Binary files a/_framework/System.ObjectModel.dll.gz and /dev/null differ diff --git a/_framework/System.Private.CoreLib.dll b/_framework/System.Private.CoreLib.dll deleted file mode 100644 index 61b261d..0000000 Binary files a/_framework/System.Private.CoreLib.dll and /dev/null differ diff --git a/_framework/System.Private.CoreLib.dll.br b/_framework/System.Private.CoreLib.dll.br deleted file mode 100644 index 51b5347..0000000 Binary files a/_framework/System.Private.CoreLib.dll.br and /dev/null differ diff --git a/_framework/System.Private.CoreLib.dll.gz b/_framework/System.Private.CoreLib.dll.gz deleted file mode 100644 index 379c4b5..0000000 Binary files a/_framework/System.Private.CoreLib.dll.gz and /dev/null differ diff --git a/_framework/System.Private.Runtime.InteropServices.JavaScript.dll b/_framework/System.Private.Runtime.InteropServices.JavaScript.dll deleted file mode 100644 index 4f2d351..0000000 Binary files a/_framework/System.Private.Runtime.InteropServices.JavaScript.dll and /dev/null differ diff --git a/_framework/System.Private.Runtime.InteropServices.JavaScript.dll.br b/_framework/System.Private.Runtime.InteropServices.JavaScript.dll.br deleted file mode 100644 index ca6c60f..0000000 Binary files a/_framework/System.Private.Runtime.InteropServices.JavaScript.dll.br and /dev/null differ diff --git a/_framework/System.Private.Runtime.InteropServices.JavaScript.dll.gz b/_framework/System.Private.Runtime.InteropServices.JavaScript.dll.gz deleted file mode 100644 index f789f07..0000000 Binary files a/_framework/System.Private.Runtime.InteropServices.JavaScript.dll.gz and /dev/null differ diff --git a/_framework/System.Private.Uri.dll b/_framework/System.Private.Uri.dll deleted file mode 100644 index fae0c0a..0000000 Binary files a/_framework/System.Private.Uri.dll and /dev/null differ diff --git a/_framework/System.Private.Uri.dll.br b/_framework/System.Private.Uri.dll.br deleted file mode 100644 index 9291397..0000000 Binary files a/_framework/System.Private.Uri.dll.br and /dev/null differ diff --git a/_framework/System.Private.Uri.dll.gz b/_framework/System.Private.Uri.dll.gz deleted file mode 100644 index af8c796..0000000 Binary files a/_framework/System.Private.Uri.dll.gz and /dev/null differ diff --git a/_framework/System.Private.Xml.Linq.dll b/_framework/System.Private.Xml.Linq.dll deleted file mode 100644 index fc36ca8..0000000 Binary files a/_framework/System.Private.Xml.Linq.dll and /dev/null differ diff --git a/_framework/System.Private.Xml.Linq.dll.br b/_framework/System.Private.Xml.Linq.dll.br deleted file mode 100644 index f0fa774..0000000 Binary files a/_framework/System.Private.Xml.Linq.dll.br and /dev/null differ diff --git a/_framework/System.Private.Xml.Linq.dll.gz b/_framework/System.Private.Xml.Linq.dll.gz deleted file mode 100644 index d007ae4..0000000 Binary files a/_framework/System.Private.Xml.Linq.dll.gz and /dev/null differ diff --git a/_framework/System.Private.Xml.dll b/_framework/System.Private.Xml.dll deleted file mode 100644 index 22d2d93..0000000 Binary files a/_framework/System.Private.Xml.dll and /dev/null differ diff --git a/_framework/System.Private.Xml.dll.br b/_framework/System.Private.Xml.dll.br deleted file mode 100644 index cb999b9..0000000 Binary files a/_framework/System.Private.Xml.dll.br and /dev/null differ diff --git a/_framework/System.Private.Xml.dll.gz b/_framework/System.Private.Xml.dll.gz deleted file mode 100644 index 01bcddb..0000000 Binary files a/_framework/System.Private.Xml.dll.gz and /dev/null differ diff --git a/_framework/System.Reflection.Emit.ILGeneration.dll b/_framework/System.Reflection.Emit.ILGeneration.dll deleted file mode 100644 index 5d0aad2..0000000 Binary files a/_framework/System.Reflection.Emit.ILGeneration.dll and /dev/null differ diff --git a/_framework/System.Reflection.Emit.ILGeneration.dll.br b/_framework/System.Reflection.Emit.ILGeneration.dll.br deleted file mode 100644 index 7c860fa..0000000 Binary files a/_framework/System.Reflection.Emit.ILGeneration.dll.br and /dev/null differ diff --git a/_framework/System.Reflection.Emit.ILGeneration.dll.gz b/_framework/System.Reflection.Emit.ILGeneration.dll.gz deleted file mode 100644 index 5caff94..0000000 Binary files a/_framework/System.Reflection.Emit.ILGeneration.dll.gz and /dev/null differ diff --git a/_framework/System.Reflection.Emit.dll b/_framework/System.Reflection.Emit.dll deleted file mode 100644 index cfa7bdf..0000000 Binary files a/_framework/System.Reflection.Emit.dll and /dev/null differ diff --git a/_framework/System.Reflection.Emit.dll.br b/_framework/System.Reflection.Emit.dll.br deleted file mode 100644 index e2ca338..0000000 Binary files a/_framework/System.Reflection.Emit.dll.br and /dev/null differ diff --git a/_framework/System.Reflection.Emit.dll.gz b/_framework/System.Reflection.Emit.dll.gz deleted file mode 100644 index da9f824..0000000 Binary files a/_framework/System.Reflection.Emit.dll.gz and /dev/null differ diff --git a/_framework/System.Runtime.CompilerServices.Unsafe.dll b/_framework/System.Runtime.CompilerServices.Unsafe.dll deleted file mode 100644 index ad4356c..0000000 Binary files a/_framework/System.Runtime.CompilerServices.Unsafe.dll and /dev/null differ diff --git a/_framework/System.Runtime.CompilerServices.Unsafe.dll.br b/_framework/System.Runtime.CompilerServices.Unsafe.dll.br deleted file mode 100644 index bcd7294..0000000 Binary files a/_framework/System.Runtime.CompilerServices.Unsafe.dll.br and /dev/null differ diff --git a/_framework/System.Runtime.CompilerServices.Unsafe.dll.gz b/_framework/System.Runtime.CompilerServices.Unsafe.dll.gz deleted file mode 100644 index 7dfc3e4..0000000 Binary files a/_framework/System.Runtime.CompilerServices.Unsafe.dll.gz and /dev/null differ diff --git a/_framework/System.Runtime.InteropServices.RuntimeInformation.dll b/_framework/System.Runtime.InteropServices.RuntimeInformation.dll deleted file mode 100644 index 12b03b0..0000000 Binary files a/_framework/System.Runtime.InteropServices.RuntimeInformation.dll and /dev/null differ diff --git a/_framework/System.Runtime.InteropServices.RuntimeInformation.dll.br b/_framework/System.Runtime.InteropServices.RuntimeInformation.dll.br deleted file mode 100644 index e660cbf..0000000 Binary files a/_framework/System.Runtime.InteropServices.RuntimeInformation.dll.br and /dev/null differ diff --git a/_framework/System.Runtime.InteropServices.RuntimeInformation.dll.gz b/_framework/System.Runtime.InteropServices.RuntimeInformation.dll.gz deleted file mode 100644 index 6647c3e..0000000 Binary files a/_framework/System.Runtime.InteropServices.RuntimeInformation.dll.gz and /dev/null differ diff --git a/_framework/System.Runtime.Numerics.dll b/_framework/System.Runtime.Numerics.dll deleted file mode 100644 index 7674fbb..0000000 Binary files a/_framework/System.Runtime.Numerics.dll and /dev/null differ diff --git a/_framework/System.Runtime.Numerics.dll.br b/_framework/System.Runtime.Numerics.dll.br deleted file mode 100644 index 414fd92..0000000 Binary files a/_framework/System.Runtime.Numerics.dll.br and /dev/null differ diff --git a/_framework/System.Runtime.Numerics.dll.gz b/_framework/System.Runtime.Numerics.dll.gz deleted file mode 100644 index 782bf8a..0000000 Binary files a/_framework/System.Runtime.Numerics.dll.gz and /dev/null differ diff --git a/_framework/System.Runtime.Serialization.Formatters.dll b/_framework/System.Runtime.Serialization.Formatters.dll deleted file mode 100644 index a6e0c6a..0000000 Binary files a/_framework/System.Runtime.Serialization.Formatters.dll and /dev/null differ diff --git a/_framework/System.Runtime.Serialization.Formatters.dll.br b/_framework/System.Runtime.Serialization.Formatters.dll.br deleted file mode 100644 index cda8985..0000000 Binary files a/_framework/System.Runtime.Serialization.Formatters.dll.br and /dev/null differ diff --git a/_framework/System.Runtime.Serialization.Formatters.dll.gz b/_framework/System.Runtime.Serialization.Formatters.dll.gz deleted file mode 100644 index 5e2af30..0000000 Binary files a/_framework/System.Runtime.Serialization.Formatters.dll.gz and /dev/null differ diff --git a/_framework/System.Runtime.Serialization.Primitives.dll b/_framework/System.Runtime.Serialization.Primitives.dll deleted file mode 100644 index 56d4604..0000000 Binary files a/_framework/System.Runtime.Serialization.Primitives.dll and /dev/null differ diff --git a/_framework/System.Runtime.Serialization.Primitives.dll.br b/_framework/System.Runtime.Serialization.Primitives.dll.br deleted file mode 100644 index abf4de5..0000000 Binary files a/_framework/System.Runtime.Serialization.Primitives.dll.br and /dev/null differ diff --git a/_framework/System.Runtime.Serialization.Primitives.dll.gz b/_framework/System.Runtime.Serialization.Primitives.dll.gz deleted file mode 100644 index fd29f0f..0000000 Binary files a/_framework/System.Runtime.Serialization.Primitives.dll.gz and /dev/null differ diff --git a/_framework/System.Runtime.dll b/_framework/System.Runtime.dll deleted file mode 100644 index 8b7639d..0000000 Binary files a/_framework/System.Runtime.dll and /dev/null differ diff --git a/_framework/System.Runtime.dll.br b/_framework/System.Runtime.dll.br deleted file mode 100644 index 3c47205..0000000 Binary files a/_framework/System.Runtime.dll.br and /dev/null differ diff --git a/_framework/System.Runtime.dll.gz b/_framework/System.Runtime.dll.gz deleted file mode 100644 index 10f3e36..0000000 Binary files a/_framework/System.Runtime.dll.gz and /dev/null differ diff --git a/_framework/System.Security.Claims.dll b/_framework/System.Security.Claims.dll deleted file mode 100644 index a7f9395..0000000 Binary files a/_framework/System.Security.Claims.dll and /dev/null differ diff --git a/_framework/System.Security.Claims.dll.br b/_framework/System.Security.Claims.dll.br deleted file mode 100644 index 87fea7c..0000000 Binary files a/_framework/System.Security.Claims.dll.br and /dev/null differ diff --git a/_framework/System.Security.Claims.dll.gz b/_framework/System.Security.Claims.dll.gz deleted file mode 100644 index 02384e9..0000000 Binary files a/_framework/System.Security.Claims.dll.gz and /dev/null differ diff --git a/_framework/System.Security.Cryptography.Algorithms.dll b/_framework/System.Security.Cryptography.Algorithms.dll deleted file mode 100644 index 9c5aaf6..0000000 Binary files a/_framework/System.Security.Cryptography.Algorithms.dll and /dev/null differ diff --git a/_framework/System.Security.Cryptography.Algorithms.dll.br b/_framework/System.Security.Cryptography.Algorithms.dll.br deleted file mode 100644 index b527c59..0000000 Binary files a/_framework/System.Security.Cryptography.Algorithms.dll.br and /dev/null differ diff --git a/_framework/System.Security.Cryptography.Algorithms.dll.gz b/_framework/System.Security.Cryptography.Algorithms.dll.gz deleted file mode 100644 index ce2c542..0000000 Binary files a/_framework/System.Security.Cryptography.Algorithms.dll.gz and /dev/null differ diff --git a/_framework/System.Security.Cryptography.Primitives.dll b/_framework/System.Security.Cryptography.Primitives.dll deleted file mode 100644 index f8d2022..0000000 Binary files a/_framework/System.Security.Cryptography.Primitives.dll and /dev/null differ diff --git a/_framework/System.Security.Cryptography.Primitives.dll.br b/_framework/System.Security.Cryptography.Primitives.dll.br deleted file mode 100644 index 7929eeb..0000000 Binary files a/_framework/System.Security.Cryptography.Primitives.dll.br and /dev/null differ diff --git a/_framework/System.Security.Cryptography.Primitives.dll.gz b/_framework/System.Security.Cryptography.Primitives.dll.gz deleted file mode 100644 index 67d083f..0000000 Binary files a/_framework/System.Security.Cryptography.Primitives.dll.gz and /dev/null differ diff --git a/_framework/System.Security.Cryptography.X509Certificates.dll b/_framework/System.Security.Cryptography.X509Certificates.dll deleted file mode 100644 index 948eefc..0000000 Binary files a/_framework/System.Security.Cryptography.X509Certificates.dll and /dev/null differ diff --git a/_framework/System.Security.Cryptography.X509Certificates.dll.br b/_framework/System.Security.Cryptography.X509Certificates.dll.br deleted file mode 100644 index 76ebb3a..0000000 Binary files a/_framework/System.Security.Cryptography.X509Certificates.dll.br and /dev/null differ diff --git a/_framework/System.Security.Cryptography.X509Certificates.dll.gz b/_framework/System.Security.Cryptography.X509Certificates.dll.gz deleted file mode 100644 index 631f0db..0000000 Binary files a/_framework/System.Security.Cryptography.X509Certificates.dll.gz and /dev/null differ diff --git a/_framework/System.Text.Encoding.Extensions.dll b/_framework/System.Text.Encoding.Extensions.dll deleted file mode 100644 index c0e75f1..0000000 Binary files a/_framework/System.Text.Encoding.Extensions.dll and /dev/null differ diff --git a/_framework/System.Text.Encoding.Extensions.dll.br b/_framework/System.Text.Encoding.Extensions.dll.br deleted file mode 100644 index ff61a73..0000000 Binary files a/_framework/System.Text.Encoding.Extensions.dll.br and /dev/null differ diff --git a/_framework/System.Text.Encoding.Extensions.dll.gz b/_framework/System.Text.Encoding.Extensions.dll.gz deleted file mode 100644 index 8bf85f5..0000000 Binary files a/_framework/System.Text.Encoding.Extensions.dll.gz and /dev/null differ diff --git a/_framework/System.Text.Encodings.Web.dll b/_framework/System.Text.Encodings.Web.dll deleted file mode 100644 index 039b883..0000000 Binary files a/_framework/System.Text.Encodings.Web.dll and /dev/null differ diff --git a/_framework/System.Text.Encodings.Web.dll.br b/_framework/System.Text.Encodings.Web.dll.br deleted file mode 100644 index 3d7ce1a..0000000 Binary files a/_framework/System.Text.Encodings.Web.dll.br and /dev/null differ diff --git a/_framework/System.Text.Encodings.Web.dll.gz b/_framework/System.Text.Encodings.Web.dll.gz deleted file mode 100644 index 04cd0ed..0000000 Binary files a/_framework/System.Text.Encodings.Web.dll.gz and /dev/null differ diff --git a/_framework/System.Text.Json.dll b/_framework/System.Text.Json.dll deleted file mode 100644 index cd0a630..0000000 Binary files a/_framework/System.Text.Json.dll and /dev/null differ diff --git a/_framework/System.Text.Json.dll.br b/_framework/System.Text.Json.dll.br deleted file mode 100644 index 3d4cdef..0000000 Binary files a/_framework/System.Text.Json.dll.br and /dev/null differ diff --git a/_framework/System.Text.Json.dll.gz b/_framework/System.Text.Json.dll.gz deleted file mode 100644 index 62ece87..0000000 Binary files a/_framework/System.Text.Json.dll.gz and /dev/null differ diff --git a/_framework/System.Text.RegularExpressions.dll b/_framework/System.Text.RegularExpressions.dll deleted file mode 100644 index 077ad14..0000000 Binary files a/_framework/System.Text.RegularExpressions.dll and /dev/null differ diff --git a/_framework/System.Text.RegularExpressions.dll.br b/_framework/System.Text.RegularExpressions.dll.br deleted file mode 100644 index 796dce4..0000000 Binary files a/_framework/System.Text.RegularExpressions.dll.br and /dev/null differ diff --git a/_framework/System.Text.RegularExpressions.dll.gz b/_framework/System.Text.RegularExpressions.dll.gz deleted file mode 100644 index a3bfe98..0000000 Binary files a/_framework/System.Text.RegularExpressions.dll.gz and /dev/null differ diff --git a/_framework/System.Threading.Channels.dll b/_framework/System.Threading.Channels.dll deleted file mode 100644 index 7f836c3..0000000 Binary files a/_framework/System.Threading.Channels.dll and /dev/null differ diff --git a/_framework/System.Threading.Channels.dll.br b/_framework/System.Threading.Channels.dll.br deleted file mode 100644 index 5313e1a..0000000 Binary files a/_framework/System.Threading.Channels.dll.br and /dev/null differ diff --git a/_framework/System.Threading.Channels.dll.gz b/_framework/System.Threading.Channels.dll.gz deleted file mode 100644 index 209f0fb..0000000 Binary files a/_framework/System.Threading.Channels.dll.gz and /dev/null differ diff --git a/_framework/System.Threading.ThreadPool.dll b/_framework/System.Threading.ThreadPool.dll deleted file mode 100644 index a15752a..0000000 Binary files a/_framework/System.Threading.ThreadPool.dll and /dev/null differ diff --git a/_framework/System.Threading.ThreadPool.dll.br b/_framework/System.Threading.ThreadPool.dll.br deleted file mode 100644 index e0c0d8d..0000000 Binary files a/_framework/System.Threading.ThreadPool.dll.br and /dev/null differ diff --git a/_framework/System.Threading.ThreadPool.dll.gz b/_framework/System.Threading.ThreadPool.dll.gz deleted file mode 100644 index ffc6629..0000000 Binary files a/_framework/System.Threading.ThreadPool.dll.gz and /dev/null differ diff --git a/_framework/System.Threading.dll b/_framework/System.Threading.dll deleted file mode 100644 index 4fdde3f..0000000 Binary files a/_framework/System.Threading.dll and /dev/null differ diff --git a/_framework/System.Threading.dll.br b/_framework/System.Threading.dll.br deleted file mode 100644 index 0887a46..0000000 Binary files a/_framework/System.Threading.dll.br and /dev/null differ diff --git a/_framework/System.Threading.dll.gz b/_framework/System.Threading.dll.gz deleted file mode 100644 index 176178b..0000000 Binary files a/_framework/System.Threading.dll.gz and /dev/null differ diff --git a/_framework/System.dll b/_framework/System.dll deleted file mode 100644 index 31eb5b9..0000000 Binary files a/_framework/System.dll and /dev/null differ diff --git a/_framework/System.dll.br b/_framework/System.dll.br deleted file mode 100644 index 93ff15a..0000000 Binary files a/_framework/System.dll.br and /dev/null differ diff --git a/_framework/System.dll.gz b/_framework/System.dll.gz deleted file mode 100644 index 83f9a5f..0000000 Binary files a/_framework/System.dll.gz and /dev/null differ diff --git a/_framework/ar/RewardsPlus.BlazorWebAssembly.Client.resources.dll b/_framework/ar/RewardsPlus.BlazorWebAssembly.Client.resources.dll deleted file mode 100644 index 24a5a93..0000000 Binary files a/_framework/ar/RewardsPlus.BlazorWebAssembly.Client.resources.dll and /dev/null differ diff --git a/_framework/ar/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br b/_framework/ar/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br deleted file mode 100644 index c70c6dd..0000000 Binary files a/_framework/ar/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br and /dev/null differ diff --git a/_framework/ar/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz b/_framework/ar/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz deleted file mode 100644 index d36a00a..0000000 Binary files a/_framework/ar/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz and /dev/null differ diff --git a/_framework/blazor.boot.json b/_framework/blazor.boot.json deleted file mode 100644 index e9d5ea8..0000000 --- a/_framework/blazor.boot.json +++ /dev/null @@ -1,170 +0,0 @@ -{ - "cacheBootResources": true, - "config": [ - "appsettings.Development.json", - "appsettings.json" - ], - "debugBuild": false, - "entryAssembly": "RewardsPlus.BlazorWebAssembly.Client", - "icuDataMode": 1, - "linkerEnabled": true, - "resources": { - "assembly": { - "Blazored.LocalStorage.dll": "sha256-6RRoYeDP3d0xabXmcCMF66wXeJlXVPem28Trs8sQiis=", - "FSH.WebApi.Shared.dll": "sha256-LpITyYg0FAmK3TQE30Q4uB8j5OtDjNlXQMOYbghvoTI=", - "Mapster.Core.dll": "sha256-t4scC57orK9Pzk+stzDyapVp1P7RjVmaEkumPBlVL5c=", - "Mapster.dll": "sha256-ru7A\/3AB6xrsWcoz+YngxJVJl5vCMYweQzhp7gIfuqA=", - "MediatR.Contracts.dll": "sha256-jbWZnge7bolAMw8ppWQLC7bKPAY6DjkJn2ezN9OXafU=", - "MediatR.Courier.DependencyInjection.dll": "sha256-aj58N38ZtFF7HlXezBRNE\/T3uyoUkRe3F3kIMV8G2X0=", - "MediatR.Courier.dll": "sha256-rVeAbDm\/i5fYooVWYC\/BLq2hHXfR6596ZqecBLhr8Ng=", - "MediatR.dll": "sha256-5JP3MguhkAHQ+bz8WyGxc8bqkRX2InbWKVplJEsFzGQ=", - "MediatR.Extensions.Microsoft.DependencyInjection.dll": "sha256-blkFqVBGqO7GrdhrAXsMHPTRmzPouRK2+2BV\/23QKbc=", - "Microsoft.AspNetCore.Authorization.dll": "sha256-dP2eW5JTtUsshiKoU69sg6FuHYepmgEqCgwad5\/HMQs=", - "Microsoft.AspNetCore.Components.Authorization.dll": "sha256-d9L1ipZCPXWKh9nSVZXz41zRuHBVM8fhZuKplZq1ckw=", - "Microsoft.AspNetCore.Components.dll": "sha256-+H0ZdqdRQgDRU1XzoQF3DAf5IJVKUUR8UTd0ITWX2pE=", - "Microsoft.AspNetCore.Components.Forms.dll": "sha256-YnKbDjkWyjrZlEJLAxz2jUx4Fg\/\/YGJfLzxbXE3zTi4=", - "Microsoft.AspNetCore.Components.Web.dll": "sha256-+HT3hrYBD1lWi5m14OWWsaoMPDZXce5tz8TXL1w5AzU=", - "Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll": "sha256-ckwbaERYVRqKqGhJHS5gA1KPsZxhX0Fe70E4AfAc2Og=", - "Microsoft.AspNetCore.Components.WebAssembly.dll": "sha256-NYCse3eafShatS2zkl\/0HW8UnikEQHWB5+uxvtuHJxc=", - "Microsoft.AspNetCore.Connections.Abstractions.dll": "sha256-vzq9rpJDxzu9JRcHe0ed2MVZoh+olL\/xkfZyLqxCGRk=", - "Microsoft.AspNetCore.Http.Abstractions.dll": "sha256-qFKmKNr9iAZiZxOVvLJBfMhkKfDy1GvY81fHh1hiphU=", - "Microsoft.AspNetCore.Http.Connections.Client.dll": "sha256-Fr\/4x5eYPqozkIAva\/QrqSY3nhnx6goWDl0nAUNsOvo=", - "Microsoft.AspNetCore.Http.Connections.Common.dll": "sha256-gdYxGkDYzqsGu2qh6O2BeOwZiW72IHs37zgSaEfdzmI=", - "Microsoft.AspNetCore.Http.Extensions.dll": "sha256-dsGZ+sGJdrYngMg72CIF31THFtl6ovcKTjtGtj9orn8=", - "Microsoft.AspNetCore.Http.Features.dll": "sha256-J2xQUZ4BD6tsrQkvGS5HDQfkTGMzmaS76TA9nJrtCpg=", - "Microsoft.AspNetCore.Localization.dll": "sha256-syddeSMQNcZ\/gP0LTGrOj2PUlA2ml5rjdJjeO9cI2Dw=", - "Microsoft.AspNetCore.Metadata.dll": "sha256-v+gwghA7MejDF7Ed9XQielmvM0gFZ6wQSitmfQWBeHg=", - "Microsoft.AspNetCore.SignalR.Client.Core.dll": "sha256-7w1e3DfS\/8\/MuJ3yqeZRA2SqCI\/4RODeRvtXzKKuIlw=", - "Microsoft.AspNetCore.SignalR.Client.dll": "sha256-FHvjWu2H1JhR1nVdjB9w6leRwFOo1czrcd8kZJB+kPE=", - "Microsoft.AspNetCore.SignalR.Common.dll": "sha256-Y5qVjSqbGNerRoGQjHSQu4bb8LYmcCJkeZYHxq4y+LM=", - "Microsoft.AspNetCore.SignalR.Protocols.Json.dll": "sha256-cMpnORhL8CdUpCiESMqMKS+PnKHwYtDXgvSbuADPDDI=", - "Microsoft.AspNetCore.WebUtilities.dll": "sha256-D5akJeBd7NNITuzAXxlX7zl2jfsc4uTKyeEKwwNhqoo=", - "Microsoft.Authentication.WebAssembly.Msal.dll": "sha256-aGYDQ5L00KvQW5BRm6wqXFbLWI09QTaRRo\/w3+zK4rQ=", - "Microsoft.CSharp.dll": "sha256-CT31ZWU5wycX0Ci\/DFuFMqb03kSO9tcnwDqXkwur1CE=", - "Microsoft.Extensions.Configuration.Abstractions.dll": "sha256-C7yvnYV7TlPnFYkL43g+hDNDjzhfAEibiTtXZxV3YuE=", - "Microsoft.Extensions.Configuration.Binder.dll": "sha256-C9t25y7nwznCCJYXMcdZrhg1MOn5+1\/y+f0N\/42fdlc=", - "Microsoft.Extensions.Configuration.dll": "sha256-dvb9kX75WyJbp6q7S359zKdmkcU5f7q9b38Kpv9auQM=", - "Microsoft.Extensions.Configuration.Json.dll": "sha256-fF3xaP+hT6R3GYUctLIY1ixaXQ8mrHzwWHHf2dKfueU=", - "Microsoft.Extensions.DependencyInjection.Abstractions.dll": "sha256-KtbP8\/87azocKpwHAL8EcjHffcFC+Tfnuk\/h8gmSlnQ=", - "Microsoft.Extensions.DependencyInjection.dll": "sha256-gO4lKLg3HYGVeknndsz8D4LF3DQ4yjRJhdQQ4lE2Kp0=", - "Microsoft.Extensions.Features.dll": "sha256-Pe7BwDw8uSilWqbuIoD8cOynbHKP8GrxCZoSBmNmHNY=", - "Microsoft.Extensions.FileProviders.Abstractions.dll": "sha256-1gbiZuENOGeoFVqaEOGrAdQ2ex3+SXDhJeii8VOgMAM=", - "Microsoft.Extensions.Http.dll": "sha256-9Xyd2IMf6dFjeIDN9EMSn+213iU28MJjK2sjvGSO8L0=", - "Microsoft.Extensions.Localization.Abstractions.dll": "sha256-iWyiOMgRvXZUch\/8rknDGbCc9444R3mFKIPQPE84TXU=", - "Microsoft.Extensions.Localization.dll": "sha256-8\/yYB4eK92AuRM3jaqjYHYlJJ+uvNNJyOV4VnXAVWnU=", - "Microsoft.Extensions.Logging.Abstractions.dll": "sha256-i427vyIolYbbkpfUZkJfNzprDAxRAkM9Wf+iaZKTSbA=", - "Microsoft.Extensions.Logging.dll": "sha256-CA\/IKQawCKkcbE+m\/VMo6jI8l00LeZK4qKZG5CD8y0E=", - "Microsoft.Extensions.Options.dll": "sha256-ZMqrRybn4TAjymQuTCdgMzETZr9w9Ccnu8n2cnJzbHE=", - "Microsoft.Extensions.Primitives.dll": "sha256-F48vl9cZ1\/TyJDLp2\/Vb9LwJ2cBNsD4X9ZJrTl1q2Yw=", - "Microsoft.JSInterop.dll": "sha256-EqN8YJV3WzpbUQg8dQbQ0l8Zk9m6OHSujBVUliVJlIw=", - "Microsoft.JSInterop.WebAssembly.dll": "sha256-lGzGmghWC2n88jfdnt\/ZlgOBbU9tjhYhdRO8P4zXTXo=", - "Microsoft.Net.Http.Headers.dll": "sha256-P66ftDrXwc6ayND8uYzIk0CPQy1GjNZAPHx9RMhi3V4=", - "Microsoft.Win32.Primitives.dll": "sha256-Pf7bNBgcv9Mhe+wyoKj4Kdk9vvMaTwlkvXSupkU9FYk=", - "MudBlazor.dll": "sha256-N8OntIImtRTymxWAyRXmiqLo\/izwqpytlMhP6Z1Qfdw=", - "netstandard.dll": "sha256-xXSP3iMRpTmOtciiWJl0qGJqJrNdPk0v1KflGOB3QzM=", - "Newtonsoft.Json.dll": "sha256-cs8pHUurDt0IqbB8YXPh560au3q3J\/1wRL9jBddRVmE=", - "RewardsPlus.BlazorWebAssembly.Client.dll": "sha256-h7QwzV7ePC80ze8wNlEthpx24UjLMUadRxTfrX3\/YuE=", - "RewardsPlus.BlazorWebAssembly.Client.Infrastructure.dll": "sha256-Pi7lptt7Fm55aV0Q2pekM7ECCssRpa1eDnSrshyrm0M=", - "System.Buffers.dll": "sha256-WDgcaUbBz5uavvGK8utWdhV5TwHfqExTpMXU6tJizEE=", - "System.Collections.Concurrent.dll": "sha256-WZ0eGDhYt5XwJH8ZNB\/OHzndq\/tHC+IkfFBC8Po2++g=", - "System.Collections.dll": "sha256-nlua9vPbpL\/Zfcx5eWGUsmZW58G1m804aWSdLkrmN14=", - "System.Collections.NonGeneric.dll": "sha256-tRrWecYE6\/0T8vA3MvRQj8chHDwcqCvB117Jm4mStj8=", - "System.Collections.Specialized.dll": "sha256-Z1T\/IBH2yi+aU7Orj32zKObMt3knvYStCaoI\/YMls9E=", - "System.ComponentModel.Annotations.dll": "sha256-3A6gQzfQm\/\/fBnIxakm0CjH35guCh50v3vqK3aLuDoI=", - "System.ComponentModel.dll": "sha256-E8qPRhkPyz9\/wS+89BDUyylG4kiMEom3axbH7iHPxbQ=", - "System.ComponentModel.Primitives.dll": "sha256-bUCvVVblSWDASp1M9k3pQhBD9ol9eDS0G7mEWdzUiyk=", - "System.ComponentModel.TypeConverter.dll": "sha256-gsm3URp0JbAPt3pr76xjSWeOBp2\/TN+czfhlopq6E+k=", - "System.Console.dll": "sha256-g66cymcOw3j\/zsIev3FpMujYnFiApeD7TLr49CeAivE=", - "System.Data.Common.dll": "sha256-w9BbzDUpgHNPd0pClo3Uv2+nzWvSEb1o7YaAxyGvNgw=", - "System.Diagnostics.TraceSource.dll": "sha256-5QSPFGh30Vo0L8S9EuAfZkUTrdQb6524AMMVenHNdk0=", - "System.dll": "sha256-qFt7Sn46LEHHeD8406OAazAmy0nu+cf36x6xFLQgpbA=", - "System.Drawing.dll": "sha256-GEq16b1QpGf9nRMjNYFZBJRePNySgsN3TVyQquf7JT4=", - "System.Drawing.Primitives.dll": "sha256-TFGPMHLIqS5pw4wp4sjkCgIPzx8wIpuC5XROvd8HIt0=", - "System.IO.Pipelines.dll": "sha256-8hGtQTRku4431biMSG4pVrXaTMGJgqHJhkeV+PqLSIQ=", - "System.Linq.dll": "sha256-pRiURsxOxEyF11U1kGRaqynBca01EXG+AqdtW5RrG\/E=", - "System.Linq.Expressions.dll": "sha256-jhDKadGMz9vl81FeC0ey8kxTcVTotBV\/0era9D1\/M7w=", - "System.Linq.Queryable.dll": "sha256-4wyltQm7dr3by5ZZoReRzSLppAnh18WmJIWCMHL6FF4=", - "System.Memory.dll": "sha256-f\/alvK4QgiRZfkguXIyXn9+0JAT5\/gx4qTL23r4ezYU=", - "System.Net.Http.dll": "sha256-f1yMv89aLxhs0mXEaNbppTnWOqrP5eS0GBQiqOeMe+E=", - "System.Net.Primitives.dll": "sha256-uArWsO5FbW++mpzi2\/kWQQ5aVmcKhGX+UpGJdZ2fXJE=", - "System.Net.Requests.dll": "sha256-xnYMnQG\/3DcWv7xyGxSR9BH7Ror7EKZQgw9R3YL28cc=", - "System.Net.Security.dll": "sha256-Zvv7BonSOo7coK329x+E+bnyaA+JKmpYYDQPwwooUtc=", - "System.Net.Sockets.dll": "sha256-bgnKA8OrQY2ovfTYBDBan6RKi9tuT2XA1lADCEUrIIw=", - "System.Net.WebSockets.Client.dll": "sha256-rpV3zGrSoiKW7JVvCIr6PrQklhS\/9MHdCXinCKUktxU=", - "System.Net.WebSockets.dll": "sha256-hWVi53s9f3skjIvuTdSFk9kQ1UjJexOUgN7eHbNwYMg=", - "System.ObjectModel.dll": "sha256-IJocdzh4mDYcmUrPv6egwjvBqmNK4GG3kqA0yjXMtSU=", - "System.Private.CoreLib.dll": "sha256-V4jnRGdfDvFVm6L7n2N5h81QelsSi72x0yGxWeLd+CE=", - "System.Private.Runtime.InteropServices.JavaScript.dll": "sha256-Ddf5NDTqVM710oMpU2zfDQLPMRNNYE0anj\/Qqvyw4nM=", - "System.Private.Uri.dll": "sha256-WvOEFqFuCVLBr3ZbHf2vbwZOp9+SNK0O2Ni83fTWb5A=", - "System.Private.Xml.dll": "sha256-4eb4LRqquZShXu43jMjmar72evfvZdD+hkvmfNdL9uM=", - "System.Private.Xml.Linq.dll": "sha256-RYIvYPR9u4UJag4iBc3OAYklnmhmd5BRJBeahiPHZIY=", - "System.Reflection.Emit.dll": "sha256-UMapKSFJrvfna7rnIdKzREU37OmVsmVmcMcAQDA++Zo=", - "System.Reflection.Emit.ILGeneration.dll": "sha256-fx93wBc1IK9Czcstp2284uZyqdul0NGxMPidnWCjkEU=", - "System.Runtime.CompilerServices.Unsafe.dll": "sha256-t3dZ32qJS4oN6lt3r0sfZkJrqIl+9cY5Yd0klBWkkB8=", - "System.Runtime.dll": "sha256-cmN3h\/Jm\/UYaYI6iG2ba\/o3dLpUPGCk9xUfVZiDYQ2c=", - "System.Runtime.InteropServices.RuntimeInformation.dll": "sha256-D+W3YL\/nWGv6Gnz7sUWVNc926kkQF0gp\/2w9wu\/97qs=", - "System.Runtime.Numerics.dll": "sha256-ygbJP1TiLhUhwTnvwy1ZOlhVrA8Y1DYtB5YBA14f8DU=", - "System.Runtime.Serialization.Formatters.dll": "sha256-22W91rnPKMALks9tIPDk3FYnsvFgRP3\/bqgyw+lrIGA=", - "System.Runtime.Serialization.Primitives.dll": "sha256-CY4c0JAerTeuSFGAiA1TD8\/7ZnIHDIrZs4HVLNg0kvI=", - "System.Security.Claims.dll": "sha256-OwJpfoXDQ5Ew2zkqYl2fOr+ikbpnpk\/yDAZ3Ajegg6I=", - "System.Security.Cryptography.Algorithms.dll": "sha256-KhQvpT2gja30fGp2VN37zcgZxuq7hcmzkp\/98d9o2gg=", - "System.Security.Cryptography.Primitives.dll": "sha256-WtYQjxrbl+MvFyl42D+OrjM4Pd+SWJ8PhJfqrZmgWoI=", - "System.Security.Cryptography.X509Certificates.dll": "sha256-MLvjhritGZ9tHJORaPGRiUhtJUwuWmtNGa5AL1tDaqA=", - "System.Text.Encoding.Extensions.dll": "sha256-i3OuSu4w8AgZd1euiZNYowGWfvFtd0sItt\/J16HgNAI=", - "System.Text.Encodings.Web.dll": "sha256-pbguTG9zJbB0Si8npSkT3CR6JGkyQcIoaeAnLvPEbWY=", - "System.Text.Json.dll": "sha256-ij1sGeS9v\/scXkHthrbwDoqGdpeKMUUjcaPyVmJ65zk=", - "System.Text.RegularExpressions.dll": "sha256-kI+fdBA8ks7wKIw9a3B7s7eprLkX6ZXwu7Tbf5oyaRU=", - "System.Threading.Channels.dll": "sha256-lRUzrPQvAVaUgQLo0OUOuLurUDXeuugcrCWoVOb6SSI=", - "System.Threading.dll": "sha256-bqgS8QZTAi0k9NKuoBOKGHoZWDcvIgQ1fMmMbAAmSCc=", - "System.Threading.ThreadPool.dll": "sha256-zDFd8He\/wEfpV1dW051QwkqfiM5xqqVudlplpCknDc8=" - }, - "extensions": null, - "lazyAssembly": null, - "libraryInitializers": null, - "pdb": null, - "runtime": { - "dotnet.6.0.5.5og2bxjr7p.js": "sha256-783uOt0jgblQfP6Yz5TJeuW2xxtl6UHZQPngZtCz79U=", - "dotnet.timezones.blat": "sha256-vRU6+wGzQ3FJ0JtyPJtipblPe9MvJf+qKY20xZhuyKQ=", - "dotnet.wasm": "sha256-vmRDDmubs49Hwffzas8p5i8FwcPcYxb33H6g5\/2UyYk=", - "icudt_CJK.dat": "sha256-WPyI4hWDPnOw62Nr27FkzGjdbucZnQD+Ph+GOPhAedw=", - "icudt_EFIGS.dat": "sha256-4RwaPx87Z4dvn77ie\/ro3\/QzyS+\/gGmO3Y\/0CSAXw4k=", - "icudt_no_CJK.dat": "sha256-OxylFgLJlFqixsj+nLxYVsv5iZLvfIKMpLf9hrWaChA=", - "icudt.dat": "sha256-Zuq0dWAsBm6\/2lSOsz7+H9PvFaRn61KIXHMMwXDfvyE=" - }, - "satelliteResources": { - "ar": { - "ar\/RewardsPlus.BlazorWebAssembly.Client.resources.dll": "sha256-vEcQowYWPCjNJ8ULOIfskgYEjoB+mZCmvBGEhJ2vejw=" - }, - "de": { - "de\/RewardsPlus.BlazorWebAssembly.Client.resources.dll": "sha256-37kSSeqjNREvZqeSI9mo0hYFggI+CFl\/75z4TKX8NUc=" - }, - "en": { - "en\/RewardsPlus.BlazorWebAssembly.Client.resources.dll": "sha256-qiLPFWAWNC5FsAZWBrdHB7+1iiTvm49S30yMIgx7vuc=" - }, - "es": { - "es\/RewardsPlus.BlazorWebAssembly.Client.resources.dll": "sha256-S3UIT\/4NbSg5P8DBe6davGSZDggLnjMVI1umDQAJ3jA=" - }, - "fr": { - "fr\/RewardsPlus.BlazorWebAssembly.Client.resources.dll": "sha256-qyH6yQcvRToBAFU3sXjPA4kTzi6F1aYvJr8BCjKvP1M=" - }, - "id": { - "id\/RewardsPlus.BlazorWebAssembly.Client.resources.dll": "sha256-RYFUC7FtwxjLhrOS0SEmLTKnP1tbzNSmQUSpWMS\/h88=" - }, - "it": { - "it\/RewardsPlus.BlazorWebAssembly.Client.resources.dll": "sha256-rYLHjev6d5E8l3rO5GTvUxTEPqVCTaJB4VOh2NZJRtQ=" - }, - "km": { - "km\/RewardsPlus.BlazorWebAssembly.Client.resources.dll": "sha256-inwzcBzxAv7hb5uwgTX6zsloq5J6+xpSRHmLHSPEbQ0=" - }, - "nl": { - "nl\/RewardsPlus.BlazorWebAssembly.Client.resources.dll": "sha256-TDkYZITkrwz69vQbe80xA\/ZVvrWrNk0Puj+xuVcRsR4=" - }, - "ru": { - "ru\/RewardsPlus.BlazorWebAssembly.Client.resources.dll": "sha256-gUPITw50n1NFZZVurcrb0IH+1zxqT5eXPGbs5hZA9JQ=" - }, - "sv": { - "sv\/RewardsPlus.BlazorWebAssembly.Client.resources.dll": "sha256-m30HkGcTRi+KO3PBA3\/iYUfxMhnPsumf83idNGV8L18=" - } - } - } -} \ No newline at end of file diff --git a/_framework/blazor.boot.json.br b/_framework/blazor.boot.json.br deleted file mode 100644 index 093ed1f..0000000 Binary files a/_framework/blazor.boot.json.br and /dev/null differ diff --git a/_framework/blazor.boot.json.gz b/_framework/blazor.boot.json.gz deleted file mode 100644 index a410c26..0000000 Binary files a/_framework/blazor.boot.json.gz and /dev/null differ diff --git a/_framework/blazor.webassembly.js b/_framework/blazor.webassembly.js deleted file mode 100755 index f889743..0000000 --- a/_framework/blazor.webassembly.js +++ /dev/null @@ -1 +0,0 @@ -(()=>{"use strict";var e,t,n;!function(e){window.DotNet=e;const t=[],n=new Map,r=new Map,o="__jsObjectId",s="__byte[]";class a{constructor(e){this._jsObject=e,this._cachedFunctions=new Map}findFunction(e){const t=this._cachedFunctions.get(e);if(t)return t;let n,r=this._jsObject;if(e.split(".").forEach((t=>{if(!(t in r))throw new Error(`Could not find '${e}' ('${t}' was undefined).`);n=r,r=r[t]})),r instanceof Function)return r=r.bind(n),this._cachedFunctions.set(e,r),r;throw new Error(`The value '${e}' is not a function.`)}getWrappedObject(){return this._jsObject}}const i={},c={0:new a(window)};c[0]._cachedFunctions.set("import",(e=>("string"==typeof e&&e.startsWith("./")&&(e=document.baseURI+e.substr(2)),import(e))));let l,u=1,d=1,f=null;function m(e){t.push(e)}function h(e){if(e&&"object"==typeof e){c[d]=new a(e);const t={[o]:d};return d++,t}throw new Error(`Cannot create a JSObjectReference from the value '${e}'.`)}function p(e){let t=-1;if(e instanceof ArrayBuffer&&(e=new Uint8Array(e)),e instanceof Blob)t=e.size;else{if(!(e.buffer instanceof ArrayBuffer))throw new Error("Supplied value is not a typed array or blob.");if(void 0===e.byteLength)throw new Error(`Cannot create a JSStreamReference from the value '${e}' as it doesn't have a byteLength.`);t=e.byteLength}const n={__jsStreamReferenceLength:t};try{const t=h(e);n.__jsObjectId=t.__jsObjectId}catch{throw new Error(`Cannot create a JSStreamReference from the value '${e}'.`)}return n}function y(e){return e?JSON.parse(e,((e,n)=>t.reduce(((t,n)=>n(e,t)),n))):null}function g(e,t,n,r){const o=w();if(o.invokeDotNetFromJS){const s=O(r),a=o.invokeDotNetFromJS(e,t,n,s);return a?y(a):null}throw new Error("The current dispatcher does not support synchronous calls from JS to .NET. Use invokeMethodAsync instead.")}function b(e,t,n,r){if(e&&n)throw new Error(`For instance method calls, assemblyName should be null. Received '${e}'.`);const o=u++,s=new Promise(((e,t)=>{i[o]={resolve:e,reject:t}}));try{const s=O(r);w().beginInvokeDotNetFromJS(o,e,t,n,s)}catch(e){v(o,!1,e)}return s}function w(){if(null!==f)return f;throw new Error("No .NET call dispatcher has been set.")}function v(e,t,n){if(!i.hasOwnProperty(e))throw new Error(`There is no pending async call with ID ${e}.`);const r=i[e];delete i[e],t?r.resolve(n):r.reject(n)}function E(e){return e instanceof Error?`${e.message}\n${e.stack}`:e?e.toString():"null"}function _(e,t){let n=c[t];if(n)return n.findFunction(e);throw new Error(`JS object instance with ID ${t} does not exist (has it been disposed?).`)}function I(e){delete c[e]}e.attachDispatcher=function(e){f=e},e.attachReviver=m,e.invokeMethod=function(e,t,...n){return g(e,t,null,n)},e.invokeMethodAsync=function(e,t,...n){return b(e,t,null,n)},e.createJSObjectReference=h,e.createJSStreamReference=p,e.disposeJSObjectReference=function(e){const t=e&&e.__jsObjectId;"number"==typeof t&&I(t)},function(e){e[e.Default=0]="Default",e[e.JSObjectReference=1]="JSObjectReference",e[e.JSStreamReference=2]="JSStreamReference",e[e.JSVoidResult=3]="JSVoidResult"}(l=e.JSCallResultType||(e.JSCallResultType={})),e.jsCallDispatcher={findJSFunction:_,disposeJSObjectReferenceById:I,invokeJSFromDotNet:(e,t,n,r)=>{const o=S(_(e,r).apply(null,y(t)),n);return null==o?null:O(o)},beginInvokeJSFromDotNet:(e,t,n,r,o)=>{const s=new Promise((e=>{e(_(t,o).apply(null,y(n)))}));e&&s.then((t=>w().endInvokeJSFromDotNet(e,!0,O([e,!0,S(t,r)]))),(t=>w().endInvokeJSFromDotNet(e,!1,JSON.stringify([e,!1,E(t)]))))},endInvokeDotNetFromJS:(e,t,n)=>{const r=t?y(n):new Error(n);v(parseInt(e),t,r)},receiveByteArray:(e,t)=>{n.set(e,t)},supplyDotNetStream:(e,t)=>{if(r.has(e)){const n=r.get(e);r.delete(e),n.resolve(t)}else{const n=new A;n.resolve(t),r.set(e,n)}}};class N{constructor(e){this._id=e}invokeMethod(e,...t){return g(null,e,this._id,t)}invokeMethodAsync(e,...t){return b(null,e,this._id,t)}dispose(){b(null,"__Dispose",this._id,null).catch((e=>console.error(e)))}serializeAsArg(){return{__dotNetObject:this._id}}}e.DotNetObject=N,m((function(e,t){if(t&&"object"==typeof t){if(t.hasOwnProperty("__dotNetObject"))return new N(t.__dotNetObject);if(t.hasOwnProperty(o)){const e=t.__jsObjectId,n=c[e];if(n)return n.getWrappedObject();throw new Error(`JS object instance with Id '${e}' does not exist. It may have been disposed.`)}if(t.hasOwnProperty(s)){const e=t["__byte[]"],r=n.get(e);if(void 0===r)throw new Error(`Byte array index '${e}' does not exist.`);return n.delete(e),r}if(t.hasOwnProperty("__dotNetStream"))return new C(t.__dotNetStream)}return t}));class C{constructor(e){var t;if(r.has(e))this._streamPromise=null===(t=r.get(e))||void 0===t?void 0:t.streamPromise,r.delete(e);else{const t=new A;r.set(e,t),this._streamPromise=t.streamPromise}}stream(){return this._streamPromise}async arrayBuffer(){return new Response(await this.stream()).arrayBuffer()}}class A{constructor(){this.streamPromise=new Promise(((e,t)=>{this.resolve=e,this.reject=t}))}}function S(e,t){switch(t){case l.Default:return e;case l.JSObjectReference:return h(e);case l.JSStreamReference:return p(e);case l.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${t}'.`)}}let R=0;function O(e){return R=0,JSON.stringify(e,k)}function k(e,t){if(t instanceof N)return t.serializeAsArg();if(t instanceof Uint8Array){f.sendByteArray(R,t);const e={[s]:R};return R++,e}return t}}(e||(e={})),function(e){e[e.prependFrame=1]="prependFrame",e[e.removeFrame=2]="removeFrame",e[e.setAttribute=3]="setAttribute",e[e.removeAttribute=4]="removeAttribute",e[e.updateText=5]="updateText",e[e.stepIn=6]="stepIn",e[e.stepOut=7]="stepOut",e[e.updateMarkup=8]="updateMarkup",e[e.permutationListEntry=9]="permutationListEntry",e[e.permutationListEnd=10]="permutationListEnd"}(t||(t={})),function(e){e[e.element=1]="element",e[e.text=2]="text",e[e.attribute=3]="attribute",e[e.component=4]="component",e[e.region=5]="region",e[e.elementReferenceCapture=6]="elementReferenceCapture",e[e.markup=8]="markup"}(n||(n={}));class r{constructor(e,t){this.componentId=e,this.fieldValue=t}static fromEvent(e,t){const n=t.target;if(n instanceof Element){const t=function(e){return e instanceof HTMLInputElement?e.type&&"checkbox"===e.type.toLowerCase()?{value:e.checked}:{value:e.value}:e instanceof HTMLSelectElement||e instanceof HTMLTextAreaElement?{value:e.value}:null}(n);if(t)return new r(e,t.value)}return null}}const o=new Map,s=new Map,a=[];function i(e){return o.get(e)}function c(e){const t=o.get(e);return(null==t?void 0:t.browserEventName)||e}function l(e,t){e.forEach((e=>o.set(e,t)))}function u(e){const t=[];for(let n=0;ne.selected)).map((e=>e.value))}}return{value:function(e){return!!e&&"INPUT"===e.tagName&&"checkbox"===e.getAttribute("type")}(t)?!!t.checked:t.value}}}),l(["copy","cut","paste"],{createEventArgs:e=>({type:e.type})}),l(["drag","dragend","dragenter","dragleave","dragover","dragstart","drop"],{createEventArgs:e=>{return{...d(t=e),dataTransfer:t.dataTransfer?{dropEffect:t.dataTransfer.dropEffect,effectAllowed:t.dataTransfer.effectAllowed,files:Array.from(t.dataTransfer.files).map((e=>e.name)),items:Array.from(t.dataTransfer.items).map((e=>({kind:e.kind,type:e.type}))),types:t.dataTransfer.types}:null};var t}}),l(["focus","blur","focusin","focusout"],{createEventArgs:e=>({type:e.type})}),l(["keydown","keyup","keypress"],{createEventArgs:e=>{return{key:(t=e).key,code:t.code,location:t.location,repeat:t.repeat,ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),l(["contextmenu","click","mouseover","mouseout","mousemove","mousedown","mouseup","dblclick"],{createEventArgs:e=>d(e)}),l(["error"],{createEventArgs:e=>{return{message:(t=e).message,filename:t.filename,lineno:t.lineno,colno:t.colno,type:t.type};var t}}),l(["loadstart","timeout","abort","load","loadend","progress"],{createEventArgs:e=>{return{lengthComputable:(t=e).lengthComputable,loaded:t.loaded,total:t.total,type:t.type};var t}}),l(["touchcancel","touchend","touchmove","touchenter","touchleave","touchstart"],{createEventArgs:e=>{return{detail:(t=e).detail,touches:u(t.touches),targetTouches:u(t.targetTouches),changedTouches:u(t.changedTouches),ctrlKey:t.ctrlKey,shiftKey:t.shiftKey,altKey:t.altKey,metaKey:t.metaKey,type:t.type};var t}}),l(["gotpointercapture","lostpointercapture","pointercancel","pointerdown","pointerenter","pointerleave","pointermove","pointerout","pointerover","pointerup"],{createEventArgs:e=>{return{...d(t=e),pointerId:t.pointerId,width:t.width,height:t.height,pressure:t.pressure,tiltX:t.tiltX,tiltY:t.tiltY,pointerType:t.pointerType,isPrimary:t.isPrimary};var t}}),l(["wheel","mousewheel"],{createEventArgs:e=>{return{...d(t=e),deltaX:t.deltaX,deltaY:t.deltaY,deltaZ:t.deltaZ,deltaMode:t.deltaMode};var t}}),l(["toggle"],{createEventArgs:()=>({})});const f=["date","datetime-local","month","time","week"],m=new Map;let h,p,y=0;const g={async add(e,t,n){if(!n)throw new Error("initialParameters must be an object, even if empty.");const r="__bl-dynamic-root:"+(++y).toString();m.set(r,e);const o=await v().invokeMethodAsync("AddRootComponent",t,r),s=new w(o,p[t]);return await s.setParameters(n),s}};class b{invoke(e){return this._callback(e)}setCallback(t){this._selfJSObjectReference||(this._selfJSObjectReference=e.createJSObjectReference(this)),this._callback=t}getJSObjectReference(){return this._selfJSObjectReference}dispose(){this._selfJSObjectReference&&e.disposeJSObjectReference(this._selfJSObjectReference)}}class w{constructor(e,t){this._jsEventCallbackWrappers=new Map,this._componentId=e;for(const e of t)"eventcallback"===e.type&&this._jsEventCallbackWrappers.set(e.name.toLowerCase(),new b)}setParameters(e){const t={},n=Object.entries(e||{}),r=n.length;for(const[e,r]of n){const n=this._jsEventCallbackWrappers.get(e.toLowerCase());n&&r?(n.setCallback(r),t[e]=n.getJSObjectReference()):t[e]=r}return v().invokeMethodAsync("SetRootComponentParameters",this._componentId,r,t)}async dispose(){if(null!==this._componentId){await v().invokeMethodAsync("RemoveRootComponent",this._componentId),this._componentId=null;for(const e of this._jsEventCallbackWrappers.values())e.dispose()}}}function v(){if(!h)throw new Error("Dynamic root components have not been enabled in this application.");return h}const E=new Map;let _;const I=new Promise((e=>{_=e}));function N(e,t,n){return A(e,t.eventHandlerId,(()=>C(e).invokeMethodAsync("DispatchEventAsync",t,n)))}function C(e){const t=E.get(e);if(!t)throw new Error(`No interop methods are registered for renderer ${e}`);return t}let A=(e,t,n)=>n();const S=F(["abort","blur","canplay","canplaythrough","change","cuechange","durationchange","emptied","ended","error","focus","load","loadeddata","loadedmetadata","loadend","loadstart","mouseenter","mouseleave","pause","play","playing","progress","ratechange","reset","scroll","seeked","seeking","stalled","submit","suspend","timeupdate","toggle","unload","volumechange","waiting","DOMNodeInsertedIntoDocument","DOMNodeRemovedFromDocument"]),R={submit:!0},O=F(["click","dblclick","mousedown","mousemove","mouseup"]);class k{constructor(e){this.browserRendererId=e,this.afterClickCallbacks=[];const t=++k.nextEventDelegatorId;this.eventsCollectionKey=`_blazorEvents_${t}`,this.eventInfoStore=new D(this.onGlobalEvent.bind(this))}setListener(e,t,n,r){const o=this.getEventHandlerInfosForElement(e,!0),s=o.getHandler(t);if(s)this.eventInfoStore.update(s.eventHandlerId,n);else{const s={element:e,eventName:t,eventHandlerId:n,renderingComponentId:r};this.eventInfoStore.add(s),o.setHandler(t,s)}}getHandler(e){return this.eventInfoStore.get(e)}removeListener(e){const t=this.eventInfoStore.remove(e);if(t){const e=t.element,n=this.getEventHandlerInfosForElement(e,!1);n&&n.removeHandler(t.eventName)}}notifyAfterClick(e){this.afterClickCallbacks.push(e),this.eventInfoStore.addGlobalListener("click")}setStopPropagation(e,t,n){this.getEventHandlerInfosForElement(e,!0).stopPropagation(t,n)}setPreventDefault(e,t,n){this.getEventHandlerInfosForElement(e,!0).preventDefault(t,n)}onGlobalEvent(e){if(!(e.target instanceof Element))return;this.dispatchGlobalEventToAllElements(e.type,e);const t=(n=e.type,s.get(n));var n;t&&t.forEach((t=>this.dispatchGlobalEventToAllElements(t,e))),"click"===e.type&&this.afterClickCallbacks.forEach((t=>t(e)))}dispatchGlobalEventToAllElements(e,t){const n=t.composedPath();let o=n.shift(),s=null,a=!1;const c=S.hasOwnProperty(e);let l=!1;for(;o;){const f=o,m=this.getEventHandlerInfosForElement(f,!1);if(m){const n=m.getHandler(e);if(n&&(u=f,d=t.type,!((u instanceof HTMLButtonElement||u instanceof HTMLInputElement||u instanceof HTMLTextAreaElement||u instanceof HTMLSelectElement)&&O.hasOwnProperty(d)&&u.disabled))){if(!a){const n=i(e);s=(null==n?void 0:n.createEventArgs)?n.createEventArgs(t):{},a=!0}R.hasOwnProperty(t.type)&&t.preventDefault(),N(this.browserRendererId,{eventHandlerId:n.eventHandlerId,eventName:e,eventFieldInfo:r.fromEvent(n.renderingComponentId,t)},s)}m.stopPropagation(e)&&(l=!0),m.preventDefault(e)&&t.preventDefault()}o=c||l?void 0:n.shift()}var u,d}getEventHandlerInfosForElement(e,t){return e.hasOwnProperty(this.eventsCollectionKey)?e[this.eventsCollectionKey]:t?e[this.eventsCollectionKey]=new B:null}}k.nextEventDelegatorId=0;class D{constructor(e){this.globalListener=e,this.infosByEventHandlerId={},this.countByEventName={},a.push(this.handleEventNameAliasAdded.bind(this))}add(e){if(this.infosByEventHandlerId[e.eventHandlerId])throw new Error(`Event ${e.eventHandlerId} is already tracked`);this.infosByEventHandlerId[e.eventHandlerId]=e,this.addGlobalListener(e.eventName)}get(e){return this.infosByEventHandlerId[e]}addGlobalListener(e){if(e=c(e),this.countByEventName.hasOwnProperty(e))this.countByEventName[e]++;else{this.countByEventName[e]=1;const t=S.hasOwnProperty(e);document.addEventListener(e,this.globalListener,t)}}update(e,t){if(this.infosByEventHandlerId.hasOwnProperty(t))throw new Error(`Event ${t} is already tracked`);const n=this.infosByEventHandlerId[e];delete this.infosByEventHandlerId[e],n.eventHandlerId=t,this.infosByEventHandlerId[t]=n}remove(e){const t=this.infosByEventHandlerId[e];if(t){delete this.infosByEventHandlerId[e];const n=c(t.eventName);0==--this.countByEventName[n]&&(delete this.countByEventName[n],document.removeEventListener(n,this.globalListener))}return t}handleEventNameAliasAdded(e,t){if(this.countByEventName.hasOwnProperty(e)){const n=this.countByEventName[e];delete this.countByEventName[e],document.removeEventListener(e,this.globalListener),this.addGlobalListener(t),this.countByEventName[t]+=n-1}}}class B{constructor(){this.handlers={},this.preventDefaultFlags=null,this.stopPropagationFlags=null}getHandler(e){return this.handlers.hasOwnProperty(e)?this.handlers[e]:null}setHandler(e,t){this.handlers[e]=t}removeHandler(e){delete this.handlers[e]}preventDefault(e,t){return void 0!==t&&(this.preventDefaultFlags=this.preventDefaultFlags||{},this.preventDefaultFlags[e]=t),!!this.preventDefaultFlags&&this.preventDefaultFlags[e]}stopPropagation(e,t){return void 0!==t&&(this.stopPropagationFlags=this.stopPropagationFlags||{},this.stopPropagationFlags[e]=t),!!this.stopPropagationFlags&&this.stopPropagationFlags[e]}}function F(e){const t={};return e.forEach((e=>{t[e]=!0})),t}const T=Y("_blazorLogicalChildren"),M=Y("_blazorLogicalParent"),j=Y("_blazorLogicalEnd");function L(e,t){if(e.childNodes.length>0&&!t)throw new Error("New logical elements must start empty, or allowExistingContents must be true");return T in e||(e[T]=[]),e}function P(e,t){const n=document.createComment("!");return x(n,e,t),n}function x(e,t,n){const r=e;if(e instanceof Comment&&z(r)&&z(r).length>0)throw new Error("Not implemented: inserting non-empty logical container");if($(r))throw new Error("Not implemented: moving existing logical children");const o=z(t);if(n0;)H(n,0)}const r=n;r.parentNode.removeChild(r)}function $(e){return e[M]||null}function J(e,t){return z(e)[t]}function U(e){var t=W(e);return"http://www.w3.org/2000/svg"===t.namespaceURI&&"foreignObject"!==t.tagName}function z(e){return e[T]}function G(e,t){const n=z(e);t.forEach((e=>{e.moveRangeStart=n[e.fromSiblingIndex],e.moveRangeEnd=X(e.moveRangeStart)})),t.forEach((t=>{const r=t.moveToBeforeMarker=document.createComment("marker"),o=n[t.toSiblingIndex+1];o?o.parentNode.insertBefore(r,o):V(r,e)})),t.forEach((e=>{const t=e.moveToBeforeMarker,n=t.parentNode,r=e.moveRangeStart,o=e.moveRangeEnd;let s=r;for(;s;){const e=s.nextSibling;if(n.insertBefore(s,t),s===o)break;s=e}n.removeChild(t)})),t.forEach((e=>{n[e.toSiblingIndex]=e.moveRangeStart}))}function W(e){if(e instanceof Element||e instanceof DocumentFragment)return e;if(e instanceof Comment)return e.parentNode;throw new Error("Not a valid logical element")}function K(e){const t=z($(e));return t[Array.prototype.indexOf.call(t,e)+1]||null}function V(e,t){if(t instanceof Element||t instanceof DocumentFragment)t.appendChild(e);else{if(!(t instanceof Comment))throw new Error(`Cannot append node because the parent is not a valid logical element. Parent: ${t}`);{const n=K(t);n?n.parentNode.insertBefore(e,n):V(e,$(t))}}}function X(e){if(e instanceof Element||e instanceof DocumentFragment)return e;const t=K(e);if(t)return t.previousSibling;{const t=$(e);return t instanceof Element||t instanceof DocumentFragment?t.lastChild:X(t)}}function Y(e){return"function"==typeof Symbol?Symbol():e}function q(e){return`_bl_${e}`}e.attachReviver(((e,t)=>t&&"object"==typeof t&&t.hasOwnProperty("__internalId")&&"string"==typeof t.__internalId?function(e){const t=`[${q(e)}]`;return document.querySelector(t)}(t.__internalId):t));const Z="_blazorDeferredValue",Q=document.createElement("template"),ee=document.createElementNS("http://www.w3.org/2000/svg","g"),te={},ne="__internal_",re="preventDefault_",oe="stopPropagation_";class se{constructor(e){this.rootComponentIds=new Set,this.childComponentLocations={},this.eventDelegator=new k(e),this.eventDelegator.notifyAfterClick((e=>{if(!he)return;if(0!==e.button||function(e){return e.ctrlKey||e.shiftKey||e.altKey||e.metaKey}(e))return;if(e.defaultPrevented)return;const t=function(e){const t=!window._blazorDisableComposedPath&&e.composedPath&&e.composedPath();if(t){for(let e=0;eve(!1))))},enableNavigationInterception:function(){he=!0},navigateTo:be,getBaseURI:()=>document.baseURI,getLocationHref:()=>location.href};function be(e,t,n=!1){const r=_e(e),o=t instanceof Object?t:{forceLoad:t,replaceHistoryEntry:n};!o.forceLoad&&Ne(r)?we(r,!1,o.replaceHistoryEntry):function(e,t){if(location.href===e){const t=e+"?";history.replaceState(null,"",t),location.replace(e)}else t?location.replace(e):location.href=e}(e,o.replaceHistoryEntry)}function we(e,t,n){fe=!0,n?history.replaceState(null,"",e):history.pushState(null,"",e),ve(t)}async function ve(e){ye&&await ye(location.href,e)}let Ee;function _e(e){return Ee=Ee||document.createElement("a"),Ee.href=e,Ee.href}function Ie(e,t){return e?e.tagName===t?e:Ie(e.parentElement,t):null}function Ne(e){const t=(n=document.baseURI).substr(0,n.lastIndexOf("/")+1);var n;return e.startsWith(t)}const Ce={focus:function(e,t){if(e instanceof HTMLElement)e.focus({preventScroll:t});else{if(!(e instanceof SVGElement))throw new Error("Unable to focus an invalid element.");if(!e.hasAttribute("tabindex"))throw new Error("Unable to focus an SVG element that does not have a tabindex.");e.focus({preventScroll:t})}},focusBySelector:function(e){const t=document.querySelector(e);t&&(t.hasAttribute("tabindex")||(t.tabIndex=-1),t.focus())}},Ae={init:function(e,t,n,r=50){const o=Re(t);(o||document.documentElement).style.overflowAnchor="none";const s=document.createRange();u(n.parentElement)&&(t.style.display="table-row",n.style.display="table-row");const a=new IntersectionObserver((function(r){r.forEach((r=>{var o;if(!r.isIntersecting)return;s.setStartAfter(t),s.setEndBefore(n);const a=s.getBoundingClientRect().height,i=null===(o=r.rootBounds)||void 0===o?void 0:o.height;r.target===t?e.invokeMethodAsync("OnSpacerBeforeVisible",r.intersectionRect.top-r.boundingClientRect.top,a,i):r.target===n&&n.offsetHeight>0&&e.invokeMethodAsync("OnSpacerAfterVisible",r.boundingClientRect.bottom-r.intersectionRect.bottom,a,i)}))}),{root:o,rootMargin:`${r}px`});a.observe(t),a.observe(n);const i=l(t),c=l(n);function l(e){const t={attributes:!0},n=new MutationObserver(((n,r)=>{u(e.parentElement)&&(r.disconnect(),e.style.display="table-row",r.observe(e,t)),a.unobserve(e),a.observe(e)}));return n.observe(e,t),n}function u(e){return null!==e&&(e instanceof HTMLTableElement&&""===e.style.display||"table"===e.style.display||e instanceof HTMLTableSectionElement&&""===e.style.display||"table-row-group"===e.style.display)}Se[e._id]={intersectionObserver:a,mutationObserverBefore:i,mutationObserverAfter:c}},dispose:function(e){const t=Se[e._id];t&&(t.intersectionObserver.disconnect(),t.mutationObserverBefore.disconnect(),t.mutationObserverAfter.disconnect(),e.dispose(),delete Se[e._id])}},Se={};function Re(e){return e?"visible"!==getComputedStyle(e).overflowY?e:Re(e.parentElement):null}const Oe={getAndRemoveExistingTitle:function(){var e;const t=document.getElementsByTagName("title");if(0===t.length)return null;let n=null;for(let r=t.length-1;r>=0;r--){const o=t[r],s=o.previousSibling;s instanceof Comment&&null!==$(s)||(null===n&&(n=o.textContent),null===(e=o.parentNode)||void 0===e||e.removeChild(o))}return n}},ke={init:function(e,t){t._blazorInputFileNextFileId=0,t.addEventListener("click",(function(){t.value=""})),t.addEventListener("change",(function(){t._blazorFilesById={};const n=Array.prototype.map.call(t.files,(function(e){const n={id:++t._blazorInputFileNextFileId,lastModified:new Date(e.lastModified).toISOString(),name:e.name,size:e.size,contentType:e.type,readPromise:void 0,arrayBuffer:void 0,blob:e};return t._blazorFilesById[n.id]=n,n}));e.invokeMethodAsync("NotifyChange",n)}))},toImageFile:async function(e,t,n,r,o){const s=De(e,t),a=await new Promise((function(e){const t=new Image;t.onload=function(){URL.revokeObjectURL(t.src),e(t)},t.onerror=function(){t.onerror=null,URL.revokeObjectURL(t.src)},t.src=URL.createObjectURL(s.blob)})),i=await new Promise((function(e){var t;const s=Math.min(1,r/a.width),i=Math.min(1,o/a.height),c=Math.min(s,i),l=document.createElement("canvas");l.width=Math.round(a.width*c),l.height=Math.round(a.height*c),null===(t=l.getContext("2d"))||void 0===t||t.drawImage(a,0,0,l.width,l.height),l.toBlob(e,n)})),c={id:++e._blazorInputFileNextFileId,lastModified:s.lastModified,name:s.name,size:(null==i?void 0:i.size)||0,contentType:n,blob:i||s.blob};return e._blazorFilesById[c.id]=c,c},readFileData:async function(e,t){return De(e,t).blob}};function De(e,t){const n=e._blazorFilesById[t];if(!n)throw new Error(`There is no file with ID ${t}. The file list may have changed.`);return n}const Be=new Map,Fe={navigateTo:be,registerCustomEventType:function(e,t){if(!t)throw new Error("The options parameter is required.");if(o.has(e))throw new Error(`The event '${e}' is already registered.`);if(t.browserEventName){const n=s.get(t.browserEventName);n?n.push(e):s.set(t.browserEventName,[e]),a.forEach((n=>n(e,t.browserEventName)))}o.set(e,t)},rootComponents:g,_internal:{navigationManager:ge,domWrapper:Ce,Virtualize:Ae,PageTitle:Oe,InputFile:ke,getJSDataStreamChunk:async function(e,t,n){return e instanceof Blob?await async function(e,t,n){const r=e.slice(t,t+n),o=await r.arrayBuffer();return new Uint8Array(o)}(e,t,n):function(e,t,n){return new Uint8Array(e.buffer,e.byteOffset+t,n)}(e,t,n)},receiveDotNetDataStream:function(t,n,r,o){let s=Be.get(t);if(!s){const n=new ReadableStream({start(e){Be.set(t,e),s=e}});e.jsCallDispatcher.supplyDotNetStream(t,n)}o?(s.error(o),Be.delete(t)):0===r?(s.close(),Be.delete(t)):s.enqueue(n.length===r?n:n.subarray(0,r))},attachWebRendererInterop:function(t,n,r,o){if(E.has(t))throw new Error(`Interop methods are already registered for renderer ${t}`);E.set(t,n),Object.keys(r).length>0&&function(t,n,r){if(h)throw new Error("Dynamic root components have already been enabled.");h=t,p=n;for(const[t,o]of Object.entries(r)){const r=e.jsCallDispatcher.findJSFunction(t,0);for(const e of o)r(e,n[e])}}(C(t),r,o),_()}}};let Te;function Me(e){return Te=e,Te}window.Blazor=Fe;const je=window.chrome&&navigator.userAgent.indexOf("Edge")<0;let Le=!1,Pe=!1;function xe(){return(Le||Pe)&&je}let He=!1;async function $e(){let e=document.querySelector("#blazor-error-ui");e&&(e.style.display="block"),He||(He=!0,document.querySelectorAll("#blazor-error-ui .reload").forEach((e=>{e.onclick=function(e){location.reload(),e.preventDefault()}})),document.querySelectorAll("#blazor-error-ui .dismiss").forEach((e=>{e.onclick=function(e){const t=document.querySelector("#blazor-error-ui");t&&(t.style.display="none"),e.preventDefault()}})))}class Je{constructor(e,t){this.bootConfig=e,this.applicationEnvironment=t}static async initAsync(e,t){const n=void 0!==e?e("manifest","blazor.boot.json","_framework/blazor.boot.json",""):a("_framework/blazor.boot.json"),r=n instanceof Promise?await n:await a(null!=n?n:"_framework/blazor.boot.json"),o=t||r.headers.get("Blazor-Environment")||"Production",s=await r.json();return s.modifiableAssemblies=r.headers.get("DOTNET-MODIFIABLE-ASSEMBLIES"),s.aspnetCoreBrowserTools=r.headers.get("ASPNETCORE-BROWSER-TOOLS"),new Je(s,o);async function a(e){return fetch(e,{method:"GET",credentials:"include",cache:"no-cache"})}}}var Ue;let ze;!function(e){e[e.Sharded=0]="Sharded",e[e.All=1]="All",e[e.Invariant=2]="Invariant"}(Ue||(Ue={}));const Ge=Math.pow(2,32),We=Math.pow(2,21)-1;let Ke=null;function Ve(e){return Module.HEAP32[e>>2]}const Xe={start:function(t){return new Promise(((n,r)=>{(function(e){Le=!!e.bootConfig.resources.pdb,Pe=e.bootConfig.debugBuild;const t=navigator.platform.match(/^Mac/i)?"Cmd":"Alt";xe()&&console.info(`Debugging hotkey: Shift+${t}+D (when application has focus)`),document.addEventListener("keydown",(e=>{e.shiftKey&&(e.metaKey||e.altKey)&&"KeyD"===e.code&&(Pe||Le?je?function(){const e=document.createElement("a");e.href=`_framework/debug?url=${encodeURIComponent(location.href)}`,e.target="_blank",e.rel="noopener noreferrer",e.click()}():console.error("Currently, only Microsoft Edge (80+), or Google Chrome, are supported for debugging."):console.error("Cannot start debugging, because the application was not compiled with debugging enabled."))}))})(t),window.Browser={init:()=>{}},function(o){const s=document.createElement("script");window.__wasmmodulecallback__=()=>{window.Module=function(t,n,r){const o=t.bootConfig.resources,s=window.Module||{},a=["DEBUGGING ENABLED"];s.print=e=>a.indexOf(e)<0&&console.log(e),s.printErr=e=>{console.error(e),$e()},s.preRun=s.preRun||[],s.postRun=s.postRun||[],s.preloadPlugins=[];const i="dotnet.wasm",c=t.loadResources(o.assembly,(e=>`_framework/${e}`),"assembly"),l=t.loadResources(o.pdb||{},(e=>`_framework/${e}`),"pdb"),u=t.loadResource(i,"_framework/dotnet.wasm",t.bootConfig.resources.runtime["dotnet.wasm"],"dotnetwasm"),d="dotnet.timezones.blat";let f,m;if(t.bootConfig.resources.runtime.hasOwnProperty(d)&&(f=t.loadResource(d,"_framework/dotnet.timezones.blat",t.bootConfig.resources.runtime["dotnet.timezones.blat"],"globalization")),t.bootConfig.icuDataMode!=Ue.Invariant){const e=t.startOptions.applicationCulture||navigator.languages&&navigator.languages[0],n=function(e,t){if(!t||e.icuDataMode===Ue.All)return"icudt.dat";const n=t.split("-")[0];return["en","fr","it","de","es"].includes(n)?"icudt_EFIGS.dat":["zh","ko","ja"].includes(n)?"icudt_CJK.dat":"icudt_no_CJK.dat"}(t.bootConfig,e);m=t.loadResource(n,`_framework/${n}`,t.bootConfig.resources.runtime[n],"globalization")}return s.instantiateWasm=(e,t)=>((async()=>{let n;try{const t=await u;n=await async function(e,t){if("function"==typeof WebAssembly.instantiateStreaming)try{return(await WebAssembly.instantiateStreaming(e.response,t)).instance}catch(e){console.info("Streaming compilation failed. Falling back to ArrayBuffer instantiation. ",e)}const n=await e.response.then((e=>e.arrayBuffer()));return(await WebAssembly.instantiate(n,t)).instance}(t,e)}catch(e){throw s.printErr(e.toString()),e}t(n)})(),[]),s.onRuntimeInitialized=()=>{m||MONO.mono_wasm_setenv("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT","1")},s.preRun.push((()=>{ze=cwrap("mono_wasm_add_assembly",null,["string","number","number"]),MONO.loaded_files=[],f&&async function(e){const t="blazor:timezonedata";addRunDependency(t);const n=await e.response,r=await n.arrayBuffer();Module.FS_createPath("/","usr",!0,!0),Module.FS_createPath("/usr/","share",!0,!0),Module.FS_createPath("/usr/share/","zoneinfo",!0,!0),MONO.mono_wasm_load_data_archive(new Uint8Array(r),"/usr/share/zoneinfo/"),removeRunDependency(t)}(f),m&&async function(e){const t="blazor:icudata";addRunDependency(t);const n=await e.response,r=new Uint8Array(await n.arrayBuffer()),o=MONO.mono_wasm_load_bytes_into_heap(r);if(!MONO.mono_wasm_load_icu_data(o))throw new Error("Error loading ICU asset.");removeRunDependency(t)}(m),c.forEach((e=>h(e,et(e.name,".dll")))),l.forEach((e=>h(e,e.name))),Fe._internal.dotNetCriticalError=e=>{s.printErr(BINDING.conv_string(e)||"(null)")},Fe._internal.getSatelliteAssemblies=e=>{const n=BINDING.mono_array_to_js_array(e),r=t.bootConfig.resources.satelliteResources;if(t.startOptions.applicationCulture||navigator.languages&&navigator.languages[0],r){const e=Promise.all(n.filter((e=>r.hasOwnProperty(e))).map((e=>t.loadResources(r[e],(e=>`_framework/${e}`),"assembly"))).reduce(((e,t)=>e.concat(t)),new Array).map((async e=>(await e.response).arrayBuffer())));return BINDING.js_to_mono_obj(e.then((e=>(e.length&&(Fe._internal.readSatelliteAssemblies=()=>{const t=BINDING.mono_obj_array_new(e.length);for(var n=0;n{const r=BINDING.mono_array_to_js_array(n),o=t.bootConfig.resources.lazyAssembly;if(!o)throw new Error("No assemblies have been marked as lazy-loadable. Use the 'BlazorWebAssemblyLazyLoad' item group in your project file to enable lazy loading an assembly.");var s=r.filter((e=>o.hasOwnProperty(e)));if(s.length!=r.length){var a=r.filter((e=>!s.includes(e)));throw new Error(`${a.join()} must be marked with 'BlazorWebAssemblyLazyLoad' item group in your project file to allow lazy-loading.`)}let i;if(xe()){const e=t.bootConfig.resources.pdb,n=s.map((e=>et(e,".pdb")));e&&(i=Promise.all(n.map((e=>o.hasOwnProperty(e)?t.loadResource(e,`_framework/${e}`,o[e],"pdb"):null)).map((async e=>e?(await e.response).arrayBuffer():null))))}const c=Promise.all(s.map((e=>t.loadResource(e,`_framework/${e}`,o[e],"assembly"))).map((async e=>(await e.response).arrayBuffer())));return BINDING.js_to_mono_obj(Promise.all([c,i]).then((t=>(e.assemblies=t[0],e.pdbs=t[1],e.assemblies.length&&(Fe._internal.readLazyAssemblies=()=>{const{assemblies:t}=e;if(!t)return BINDING.mono_obj_array_new(0);const n=BINDING.mono_obj_array_new(t.length);for(let e=0;e{const{assemblies:t,pdbs:n}=e;if(!t)return BINDING.mono_obj_array_new(0);const r=BINDING.mono_obj_array_new(t.length);for(let e=0;e{t.bootConfig.debugBuild&&t.bootConfig.cacheBootResources&&t.logToConsole(),t.purgeUnusedCacheEntriesAsync(),t.bootConfig.icuDataMode===Ue.Sharded&&(MONO.mono_wasm_setenv("__BLAZOR_SHARDED_ICU","1"),t.startOptions.applicationCulture&&MONO.mono_wasm_setenv("LANG",`${t.startOptions.applicationCulture}.UTF-8`));let r="UTC";try{r=Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}MONO.mono_wasm_setenv("TZ",r||"UTC"),t.bootConfig.modifiableAssemblies&&MONO.mono_wasm_setenv("DOTNET_MODIFIABLE_ASSEMBLIES",t.bootConfig.modifiableAssemblies),t.bootConfig.aspnetCoreBrowserTools&&MONO.mono_wasm_setenv("__ASPNETCORE_BROWSER_TOOLS",t.bootConfig.aspnetCoreBrowserTools),cwrap("mono_wasm_load_runtime",null,["string","number"])("appBinDir",xe()?-1:0),MONO.mono_wasm_runtime_ready(),function(){const t=Ze("Microsoft.AspNetCore.Components.WebAssembly","Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime","InvokeDotNet"),n=Ze("Microsoft.AspNetCore.Components.WebAssembly","Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime","BeginInvokeDotNet"),r=Ze("Microsoft.AspNetCore.Components.WebAssembly","Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime","EndInvokeJS"),o=Ze("Microsoft.AspNetCore.Components.WebAssembly","Microsoft.AspNetCore.Components.WebAssembly.Services.DefaultWebAssemblyJSRuntime","NotifyByteArrayAvailable");e.attachDispatcher({beginInvokeDotNetFromJS:(e,t,r,o,s)=>{if(tt(),!o&&!t)throw new Error("Either assemblyName or dotNetObjectId must have a non null value.");const a=o?o.toString():t;n(e?e.toString():null,a,r,s)},endInvokeJSFromDotNet:(e,t,n)=>{r(n)},sendByteArray:(e,t)=>{Qe=t,o(e)},invokeDotNetFromJS:(e,n,r,o)=>(tt(),t(e||null,n,r?r.toString():null,o))})}(),n()})),s;async function h(e,t){const n=`blazor:${e.name}`;addRunDependency(n);try{const n=await e.response.then((e=>e.arrayBuffer())),r=new Uint8Array(n),s=Module._malloc(r.length);new Uint8Array(Module.HEAPU8.buffer,s,r.length).set(r),ze(t,s,r.length),MONO.loaded_files.push((o=e.url,Ye.href=o,Ye.href))}catch(e){return void r(e)}var o;removeRunDependency(n)}}(t,n,r),function(e){if("undefined"==typeof WebAssembly||!WebAssembly.validate)throw new Error("This browser does not support WebAssembly.");const t=Object.keys(e.bootConfig.resources.runtime).filter((e=>e.startsWith("dotnet.")&&e.endsWith(".js")))[0],n=e.bootConfig.resources.runtime[t],r=document.createElement("script");if(r.src=`_framework/${t}`,r.defer=!0,e.bootConfig.cacheBootResources&&(r.integrity=n,r.crossOrigin="anonymous"),e.startOptions.loadBootResource){const o="dotnetjs",s=e.startOptions.loadBootResource(o,t,r.src,n);if("string"==typeof s)r.src=s;else if(s)throw new Error(`For a ${o} resource, custom loaders must supply a URI string.`)}document.body.appendChild(r)}(t)},s.text="var Module; window.__wasmmodulecallback__(); delete window.__wasmmodulecallback__;",document.body.appendChild(s)}()}))},callEntryPoint:async function(e){const t=[[]];try{await BINDING.call_assembly_entry_point(e,t,"m")}catch(e){console.error(e),$e()}},toUint8Array:function(e){const t=qe(e),n=Ve(t),r=new Uint8Array(n);return r.set(Module.HEAPU8.subarray(t+4,t+4+n)),r},getArrayLength:function(e){return Ve(qe(e))},getArrayEntryPtr:function(e,t,n){return qe(e)+4+t*n},getObjectFieldsBaseAddress:function(e){return e+8},readInt16Field:function(e,t){return n=e+(t||0),Module.HEAP16[n>>1];var n},readInt32Field:function(e,t){return Ve(e+(t||0))},readUint64Field:function(e,t){return function(e){const t=e>>2,n=Module.HEAPU32[t+1];if(n>We)throw new Error(`Cannot read uint64 with high order part ${n}, because the result would exceed Number.MAX_SAFE_INTEGER.`);return n*Ge+Module.HEAPU32[t]}(e+(t||0))},readFloatField:function(e,t){return n=e+(t||0),Module.HEAPF32[n>>2];var n},readObjectField:function(e,t){return Ve(e+(t||0))},readStringField:function(e,t,n){const r=Ve(e+(t||0));if(0===r)return null;if(n){const e=BINDING.unbox_mono_obj(r);return"boolean"==typeof e?e?"":null:e}let o;return Ke?(o=Ke.stringCache.get(r),void 0===o&&(o=BINDING.conv_string(r),Ke.stringCache.set(r,o))):o=BINDING.conv_string(r),o},readStructField:function(e,t){return e+(t||0)},beginHeapLock:function(){return tt(),Ke=new nt,Ke},invokeWhenHeapUnlocked:function(e){Ke?Ke.enqueuePostReleaseAction(e):e()}},Ye=document.createElement("a");function qe(e){return e+12}function Ze(e,t,n){const r=`[${e}] ${t}:${n}`;return BINDING.bind_static_method(r)}let Qe=null;function et(e,t){const n=e.lastIndexOf(".");if(n<0)throw new Error(`No extension to replace in '${e}'`);return e.substr(0,n)+t}function tt(){if(Ke)throw new Error("Assertion failed - heap is currently locked")}class nt{constructor(){this.stringCache=new Map}enqueuePostReleaseAction(e){this.postReleaseActions||(this.postReleaseActions=[]),this.postReleaseActions.push(e)}release(){var e;if(Ke!==this)throw new Error("Trying to release a lock which isn't current");for(Ke=null;null===(e=this.postReleaseActions)||void 0===e?void 0:e.length;)this.postReleaseActions.shift()(),tt()}}class rt{constructor(e){this.batchAddress=e,this.arrayRangeReader=ot,this.arrayBuilderSegmentReader=st,this.diffReader=at,this.editReader=it,this.frameReader=ct}updatedComponents(){return Te.readStructField(this.batchAddress,0)}referenceFrames(){return Te.readStructField(this.batchAddress,ot.structLength)}disposedComponentIds(){return Te.readStructField(this.batchAddress,2*ot.structLength)}disposedEventHandlerIds(){return Te.readStructField(this.batchAddress,3*ot.structLength)}updatedComponentsEntry(e,t){return lt(e,t,at.structLength)}referenceFramesEntry(e,t){return lt(e,t,ct.structLength)}disposedComponentIdsEntry(e,t){const n=lt(e,t,4);return Te.readInt32Field(n)}disposedEventHandlerIdsEntry(e,t){const n=lt(e,t,8);return Te.readUint64Field(n)}}const ot={structLength:8,values:e=>Te.readObjectField(e,0),count:e=>Te.readInt32Field(e,4)},st={structLength:12,values:e=>{const t=Te.readObjectField(e,0),n=Te.getObjectFieldsBaseAddress(t);return Te.readObjectField(n,0)},offset:e=>Te.readInt32Field(e,4),count:e=>Te.readInt32Field(e,8)},at={structLength:4+st.structLength,componentId:e=>Te.readInt32Field(e,0),edits:e=>Te.readStructField(e,4),editsEntry:(e,t)=>lt(e,t,it.structLength)},it={structLength:20,editType:e=>Te.readInt32Field(e,0),siblingIndex:e=>Te.readInt32Field(e,4),newTreeIndex:e=>Te.readInt32Field(e,8),moveToSiblingIndex:e=>Te.readInt32Field(e,8),removedAttributeName:e=>Te.readStringField(e,16)},ct={structLength:36,frameType:e=>Te.readInt16Field(e,4),subtreeLength:e=>Te.readInt32Field(e,8),elementReferenceCaptureId:e=>Te.readStringField(e,16),componentId:e=>Te.readInt32Field(e,12),elementName:e=>Te.readStringField(e,16),textContent:e=>Te.readStringField(e,16),markupContent:e=>Te.readStringField(e,16),attributeName:e=>Te.readStringField(e,16),attributeValue:e=>Te.readStringField(e,24,!0),attributeEventHandlerId:e=>Te.readUint64Field(e,8)};function lt(e,t,n){return Te.getArrayEntryPtr(e,t,n)}class ut{constructor(e,t,n){this.bootConfig=e,this.cacheIfUsed=t,this.startOptions=n,this.usedCacheKeys={},this.networkLoads={},this.cacheLoads={}}static async initAsync(e,t){const n=await async function(e){if(!e.cacheBootResources||"undefined"==typeof caches)return null;if(!1===window.isSecureContext)return null;const t=`blazor-resources-${document.baseURI.substring(document.location.origin.length)}`;try{return await caches.open(t)||null}catch{return null}}(e);return new ut(e,n,t)}loadResources(e,t,n){return Object.keys(e).map((r=>this.loadResource(r,t(r),e[r],n)))}loadResource(e,t,n,r){return{name:e,url:t,response:this.cacheIfUsed?this.loadResourceWithCaching(this.cacheIfUsed,e,t,n,r):this.loadResourceWithoutCaching(e,t,n,r)}}logToConsole(){const e=Object.values(this.cacheLoads),t=Object.values(this.networkLoads),n=dt(e),r=dt(t),o=n+r;if(0===o)return;const s=this.bootConfig.linkerEnabled?"%c":"\n%cThis application was built with linking (tree shaking) disabled. Published applications will be significantly smaller.";console.groupCollapsed(`%cblazor%c Loaded ${ft(o)} resources${s}`,"background: purple; color: white; padding: 1px 3px; border-radius: 3px;","font-weight: bold;","font-weight: normal;"),e.length&&(console.groupCollapsed(`Loaded ${ft(n)} resources from cache`),console.table(this.cacheLoads),console.groupEnd()),t.length&&(console.groupCollapsed(`Loaded ${ft(r)} resources from network`),console.table(this.networkLoads),console.groupEnd()),console.groupEnd()}async purgeUnusedCacheEntriesAsync(){const e=this.cacheIfUsed;if(e){const t=(await e.keys()).map((async t=>{t.url in this.usedCacheKeys||await e.delete(t)}));await Promise.all(t)}}async loadResourceWithCaching(e,t,n,r,o){if(!r||0===r.length)throw new Error("Content hash is required");const s=_e(`${n}.${r}`);let a;this.usedCacheKeys[s]=!0;try{a=await e.match(s)}catch{}if(a){const e=parseInt(a.headers.get("content-length")||"0");return this.cacheLoads[t]={responseBytes:e},a}{const a=await this.loadResourceWithoutCaching(t,n,r,o);return this.addToCacheAsync(e,t,s,a),a}}loadResourceWithoutCaching(e,t,n,r){if(this.startOptions.loadBootResource){const o=this.startOptions.loadBootResource(r,e,t,n);if(o instanceof Promise)return o;"string"==typeof o&&(t=o)}return fetch(t,{cache:"no-cache",integrity:this.bootConfig.cacheBootResources?n:void 0})}async addToCacheAsync(e,t,n,r){const o=await r.clone().arrayBuffer(),s=function(e){if("undefined"!=typeof performance)return performance.getEntriesByName(e)[0]}(r.url),a=s&&s.encodedBodySize||void 0;this.networkLoads[t]={responseBytes:a};const i=new Response(o,{headers:{"content-type":r.headers.get("content-type")||"","content-length":(a||r.headers.get("content-length")||"").toString()}});try{await e.put(n,i)}catch{}}}function dt(e){return e.reduce(((e,t)=>e+(t.responseBytes||0)),0)}function ft(e){return`${(e/1048576).toFixed(2)} MB`}class mt{static async initAsync(e){Fe._internal.getApplicationEnvironment=()=>BINDING.js_string_to_mono_string(e.applicationEnvironment);const t=await Promise.all((e.bootConfig.config||[]).filter((t=>"appsettings.json"===t||t===`appsettings.${e.applicationEnvironment}.json`)).map((async e=>({name:e,content:await n(e)}))));async function n(e){const t=await fetch(e,{method:"GET",credentials:"include",cache:"no-cache"});return new Uint8Array(await t.arrayBuffer())}Fe._internal.getConfig=e=>{const n=BINDING.conv_string(e),r=t.find((e=>e.name===n));return r?BINDING.js_typed_array_to_array(r.content):void 0}}}class ht{constructor(e){this.preregisteredComponents=e;const t={};for(let n=0;no.push(e))),e[M]=r,t&&(e[j]=t,L(t)),L(e)}(this.componentsById[t].start,this.componentsById[t].end)}getParameterValues(e){return this.componentsById[e].parameterValues}getParameterDefinitions(e){return this.componentsById[e].parameterDefinitions}getTypeName(e){return this.componentsById[e].typeName}getAssembly(e){return this.componentsById[e].assembly}getId(e){return this.preregisteredComponents[e].id}getCount(){return this.preregisteredComponents.length}}const pt=/^\s*Blazor-Component-State:(?[a-zA-Z0-9\+\/=]+)$/;function yt(e){var t;if(e.nodeType===Node.COMMENT_NODE){const n=e.textContent||"",r=pt.exec(n),o=r&&r.groups&&r.groups.state;return o&&(null===(t=e.parentNode)||void 0===t||t.removeChild(e)),o}if(!e.hasChildNodes())return;const n=e.childNodes;for(let e=0;e.*)$/);function wt(e,t){const n=e.currentElement;if(n&&n.nodeType===Node.COMMENT_NODE&&n.textContent){const r=bt.exec(n.textContent),o=r&&r.groups&&r.groups.descriptor;if(!o)return;try{const r=function(e){const t=JSON.parse(e),{type:n}=t;if("server"!==n&&"webassembly"!==n)throw new Error(`Invalid component type '${n}'.`);return t}(o);switch(t){case"webassembly":return function(e,t,n){const{type:r,assembly:o,typeName:s,parameterDefinitions:a,parameterValues:i,prerenderId:c}=e;if("webassembly"===r){if(!o)throw new Error("assembly must be defined when using a descriptor.");if(!s)throw new Error("typeName must be defined when using a descriptor.");if(c){const e=vt(c,n);if(!e)throw new Error(`Could not find an end component comment for '${t}'`);return{type:r,assembly:o,typeName:s,parameterDefinitions:a&&atob(a),parameterValues:i&&atob(i),start:t,prerenderId:c,end:e}}return{type:r,assembly:o,typeName:s,parameterDefinitions:a&&atob(a),parameterValues:i&&atob(i),start:t}}}(r,n,e);case"server":return function(e,t,n){const{type:r,descriptor:o,sequence:s,prerenderId:a}=e;if("server"===r){if(!o)throw new Error("descriptor must be defined when using a descriptor.");if(void 0===s)throw new Error("sequence must be defined when using a descriptor.");if(!Number.isInteger(s))throw new Error(`Error parsing the sequence '${s}' for component '${JSON.stringify(e)}'`);if(a){const e=vt(a,n);if(!e)throw new Error(`Could not find an end component comment for '${t}'`);return{type:r,sequence:s,descriptor:o,start:t,prerenderId:a,end:e}}return{type:r,sequence:s,descriptor:o,start:t}}}(r,n,e)}}catch(e){throw new Error(`Found malformed component comment at ${n.textContent}`)}}}function vt(e,t){for(;t.next()&&t.currentElement;){const n=t.currentElement;if(n.nodeType!==Node.COMMENT_NODE)continue;if(!n.textContent)continue;const r=bt.exec(n.textContent),o=r&&r[1];if(o)return Et(o,e),n}}function Et(e,t){const n=JSON.parse(e);if(1!==Object.keys(n).length)throw new Error(`Invalid end of component comment: '${e}'`);const r=n.prerenderId;if(!r)throw new Error(`End of component comment must have a value for the prerendered property: '${e}'`);if(r!==t)throw new Error(`End of component comment prerendered property must match the start comment prerender id: '${t}', '${r}'`)}class _t{constructor(e){this.childNodes=e,this.currentIndex=-1,this.length=e.length}next(){return this.currentIndex++,this.currentIndexasync function(e,n){const r=function(e){const t=document.baseURI;return t.endsWith("/")?`${t}${e}`:`${t}/${e}`}(n),o=await import(r);if(void 0===o)return;const{beforeStart:s,afterStarted:a}=o;return a&&e.afterStartedCallbacks.push(a),s?s(...t):void 0}(this,e))))}async invokeAfterStartedCallbacks(e){await I,await Promise.all(this.afterStartedCallbacks.map((t=>t(e))))}}let Ct=!1;async function At(t){if(Ct)throw new Error("Blazor has already started.");Ct=!0,function(){if(window.parent!==window&&!window.opener&&window.frameElement){const e=window.sessionStorage&&window.sessionStorage["Microsoft.AspNetCore.Components.WebAssembly.Authentication.CachedAuthSettings"],t=e&&JSON.parse(e);return t&&t.redirect_uri&&location.href.startsWith(t.redirect_uri)}return!1}()&&await new Promise((()=>{})),A=(e,t,n)=>{(function(e){return de[e]})(e).eventDelegator.getHandler(t)&&Xe.invokeWhenHeapUnlocked(n)},Fe._internal.applyHotReload=(t,n,r,o)=>{e.invokeMethod("Microsoft.AspNetCore.Components.WebAssembly","ApplyHotReloadDelta",t,n,r,o)},Fe._internal.getApplyUpdateCapabilities=()=>e.invokeMethod("Microsoft.AspNetCore.Components.WebAssembly","GetApplyUpdateCapabilities"),Fe._internal.invokeJSFromDotNet=St,Fe._internal.endInvokeDotNetFromJS=Rt,Fe._internal.receiveByteArray=Ot,Fe._internal.retrieveByteArray=kt;const n=Me(Xe);Fe.platform=n,Fe._internal.renderBatch=(e,t)=>{const n=Xe.beginHeapLock();try{!function(e,t){const n=de[e];if(!n)throw new Error(`There is no browser renderer with ID ${e}.`);const r=t.arrayRangeReader,o=t.updatedComponents(),s=r.values(o),a=r.count(o),i=t.referenceFrames(),c=r.values(i),l=t.diffReader;for(let e=0;eBINDING.js_string_to_mono_string(r()),Fe._internal.navigationManager.getUnmarshalledLocationHref=()=>BINDING.js_string_to_mono_string(o()),Fe._internal.navigationManager.listenForNavigationEvents((async(t,n)=>{await e.invokeMethodAsync("Microsoft.AspNetCore.Components.WebAssembly","NotifyLocationChanged",t,n)}));const s=null!=t?t:{},a=s.environment,i=Je.initAsync(s.loadBootResource,a),c=function(e,t){return function(e){const t=gt(e,"webassembly"),n=[];for(let e=0;ee.id-t.id))}(e)}(document),l=new ht(c);Fe._internal.registeredComponents={getRegisteredComponentsCount:()=>l.getCount(),getId:e=>l.getId(e),getAssembly:e=>BINDING.js_string_to_mono_string(l.getAssembly(e)),getTypeName:e=>BINDING.js_string_to_mono_string(l.getTypeName(e)),getParameterDefinitions:e=>BINDING.js_string_to_mono_string(l.getParameterDefinitions(e)||""),getParameterValues:e=>BINDING.js_string_to_mono_string(l.getParameterValues(e)||"")},Fe._internal.getPersistedState=()=>BINDING.js_string_to_mono_string(yt(document)||""),Fe._internal.attachRootComponentToElement=(e,t,n)=>{const r=l.resolveRegisteredElement(e);r?me(n,r,t,!1):function(e,t,n){const r="::after";let o=!1;if(e.endsWith(r))e=e.slice(0,-r.length),o=!0;else if(e.endsWith("::before"))throw new Error("The '::before' selector is not supported.");const s=function(e){const t=m.get(e);if(t)return m.delete(e),t}(e)||document.querySelector(e);if(!s)throw new Error(`Could not find any element matching selector '${e}'.`);me(n||0,L(s,!0),t,o)}(e,t,n)};const u=await i,d=await async function(e,t){const n=e.resources.libraryInitializers,r=new Nt;return n&&await r.importInitializersAsync(Object.keys(n),[t,e.resources.extensions]),r}(u.bootConfig,s),[f]=await Promise.all([ut.initAsync(u.bootConfig,s||{}),mt.initAsync(u)]);try{await n.start(f)}catch(e){throw new Error(`Failed to start platform. Reason: ${e}`)}n.callEntryPoint(f.bootConfig.entryAssembly),d.invokeAfterStartedCallbacks(Fe)}function St(t,n,r,o){const s=Xe.readStringField(t,0),a=Xe.readInt32Field(t,4),i=Xe.readStringField(t,8),c=Xe.readUint64Field(t,20);if(null!==i){const n=Xe.readUint64Field(t,12);if(0!==n)return e.jsCallDispatcher.beginInvokeJSFromDotNet(n,s,i,a,c),0;{const t=e.jsCallDispatcher.invokeJSFromDotNet(s,i,a,c);return null===t?0:BINDING.js_string_to_mono_string(t)}}{const t=e.jsCallDispatcher.findJSFunction(s,c).call(null,n,r,o);switch(a){case e.JSCallResultType.Default:return t;case e.JSCallResultType.JSObjectReference:return e.createJSObjectReference(t).__jsObjectId;case e.JSCallResultType.JSStreamReference:const n=e.createJSStreamReference(t),r=JSON.stringify(n);return BINDING.js_string_to_mono_string(r);case e.JSCallResultType.JSVoidResult:return null;default:throw new Error(`Invalid JS call result type '${a}'.`)}}}function Rt(t,n,r){const o=BINDING.conv_string(t),s=0!==n,a=BINDING.conv_string(r);e.jsCallDispatcher.endInvokeDotNetFromJS(o,s,a)}function Ot(t,n){const r=t,o=Xe.toUint8Array(n);e.jsCallDispatcher.receiveByteArray(r,o)}function kt(){if(null===Qe)throw new Error("Byte array not available for transfer");return BINDING.js_typed_array_to_array(Qe)}Fe.start=At,document&&document.currentScript&&"false"!==document.currentScript.getAttribute("autostart")&&At().catch((e=>{"undefined"!=typeof Module&&Module.printErr?Module.printErr(e):console.error(e)}))})(); \ No newline at end of file diff --git a/_framework/blazor.webassembly.js.br b/_framework/blazor.webassembly.js.br deleted file mode 100644 index 4979995..0000000 Binary files a/_framework/blazor.webassembly.js.br and /dev/null differ diff --git a/_framework/blazor.webassembly.js.gz b/_framework/blazor.webassembly.js.gz deleted file mode 100644 index b76e500..0000000 Binary files a/_framework/blazor.webassembly.js.gz and /dev/null differ diff --git a/_framework/de/RewardsPlus.BlazorWebAssembly.Client.resources.dll b/_framework/de/RewardsPlus.BlazorWebAssembly.Client.resources.dll deleted file mode 100644 index aec9b94..0000000 Binary files a/_framework/de/RewardsPlus.BlazorWebAssembly.Client.resources.dll and /dev/null differ diff --git a/_framework/de/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br b/_framework/de/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br deleted file mode 100644 index 405836d..0000000 Binary files a/_framework/de/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br and /dev/null differ diff --git a/_framework/de/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz b/_framework/de/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz deleted file mode 100644 index 50440a0..0000000 Binary files a/_framework/de/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz and /dev/null differ diff --git a/_framework/dotnet.6.0.5.5og2bxjr7p.js b/_framework/dotnet.6.0.5.5og2bxjr7p.js deleted file mode 100755 index 20e2903..0000000 --- a/_framework/dotnet.6.0.5.5og2bxjr7p.js +++ /dev/null @@ -1,319 +0,0 @@ -var Module=typeof Module!=="undefined"?Module:{};var moduleOverrides={};var key;for(key in Module){if(Module.hasOwnProperty(key)){moduleOverrides[key]=Module[key]}}var arguments_=[];var thisProgram="./this.program";var quit_=function(status,toThrow){throw toThrow};var ENVIRONMENT_IS_WEB=false;var ENVIRONMENT_IS_WORKER=false;var ENVIRONMENT_IS_NODE=false;var ENVIRONMENT_IS_SHELL=false;ENVIRONMENT_IS_WEB=typeof window==="object";ENVIRONMENT_IS_WORKER=typeof importScripts==="function";ENVIRONMENT_IS_NODE=typeof process==="object"&&typeof process.versions==="object"&&typeof process.versions.node==="string";ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;var nodeFS;var nodePath;if(ENVIRONMENT_IS_NODE){if(ENVIRONMENT_IS_WORKER){scriptDirectory=require("path").dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=function shell_read(filename,binary){if(!nodeFS)nodeFS=require("fs");if(!nodePath)nodePath=require("path");filename=nodePath["normalize"](filename);return nodeFS["readFileSync"](filename,binary?null:"utf8")};readBinary=function readBinary(filename){var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}assert(ret.buffer);return ret};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);if(typeof module!=="undefined"){module["exports"]=Module}process["on"]("uncaughtException",function(ex){if(!(ex instanceof ExitStatus)){throw ex}});process["on"]("unhandledRejection",abort);quit_=function(status){process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof read!="undefined"){read_=function shell_read(f){return read(f)}}readBinary=function readBinary(f){var data;if(typeof readbuffer==="function"){return new Uint8Array(readbuffer(f))}data=read(f,"binary");assert(typeof data==="object");return data};if(typeof scriptArgs!="undefined"){arguments_=scriptArgs}else if(typeof arguments!="undefined"){arguments_=arguments}if(typeof quit==="function"){quit_=function(status){quit(status)}}if(typeof print!=="undefined"){if(typeof console==="undefined")console={};console.log=print;console.warn=console.error=typeof printErr!=="undefined"?printErr:print}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!=="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText};if(ENVIRONMENT_IS_WORKER){readBinary=function(url){var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}}readAsync=function(url,onload,onerror){var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=function(){if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=function(title){document.title=title}}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);for(key in moduleOverrides){if(moduleOverrides.hasOwnProperty(key)){Module[key]=moduleOverrides[key]}}moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var STACK_ALIGN=16;function alignMemory(size,factor){if(!factor)factor=STACK_ALIGN;return Math.ceil(size/factor)*factor}function warnOnce(text){if(!warnOnce.shown)warnOnce.shown={};if(!warnOnce.shown[text]){warnOnce.shown[text]=1;err(text)}}function convertJsFunctionToWasm(func,sig){if(typeof WebAssembly.Function==="function"){var typeNames={"i":"i32","j":"i64","f":"f32","d":"f64"};var type={parameters:[],results:sig[0]=="v"?[]:[typeNames[sig[0]]]};for(var i=1;i>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;default:abort("invalid type for setValue: "+type)}}function getValue(ptr,type,noSafe){type=type||"i8";if(type.charAt(type.length-1)==="*")type="i32";switch(type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];default:abort("invalid type for getValue: "+type)}return null}var wasmMemory;var ABORT=false;var EXITSTATUS;function assert(condition,text){if(!condition){abort("Assertion failed: "+text)}}function getCFunc(ident){var func=Module["_"+ident];assert(func,"Cannot call unknown function "+ident+", make sure it is exported");return func}function ccall(ident,returnType,argTypes,args,opts){var toC={"string":function(str){var ret=0;if(str!==null&&str!==undefined&&str!==0){var len=(str.length<<2)+1;ret=stackAlloc(len);stringToUTF8(str,ret,len)}return ret},"array":function(arr){var ret=stackAlloc(arr.length);writeArrayToMemory(arr,ret);return ret}};function convertReturnValue(ret){if(returnType==="string")return UTF8ToString(ret);if(returnType==="boolean")return Boolean(ret);return ret}var func=getCFunc(ident);var cArgs=[];var stack=0;if(args){for(var i=0;i=endIdx))++endPtr;if(endPtr-idx>16&&heap.subarray&&UTF8Decoder){return UTF8Decoder.decode(heap.subarray(idx,endPtr))}else{var str="";while(idx>10,56320|ch&1023)}}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&u<=57343)u=65536+((u&1023)<<10)|str.charCodeAt(++i)&1023;if(u<=127)++len;else if(u<=2047)len+=2;else if(u<=65535)len+=3;else len+=4}return len}var UTF16Decoder=typeof TextDecoder!=="undefined"?new TextDecoder("utf-16le"):undefined;function stringToUTF16(str,outPtr,maxBytesToWrite){if(maxBytesToWrite===undefined){maxBytesToWrite=2147483647}if(maxBytesToWrite<2)return 0;maxBytesToWrite-=2;var startPtr=outPtr;var numCharsToWrite=maxBytesToWrite>1]=codeUnit;outPtr+=2}HEAP16[outPtr>>1]=0;return outPtr-startPtr}function allocateUTF8(str){var size=lengthBytesUTF8(str)+1;var ret=_malloc(size);if(ret)stringToUTF8Array(str,HEAP8,ret,size);return ret}function writeArrayToMemory(array,buffer){HEAP8.set(array,buffer)}function writeAsciiToMemory(str,buffer,dontAddNull){for(var i=0;i>0]=str.charCodeAt(i)}if(!dontAddNull)HEAP8[buffer>>0]=0}function alignUp(x,multiple){if(x%multiple>0){x+=multiple-x%multiple}return x}var buffer,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer=buf;Module["HEAP8"]=HEAP8=new Int8Array(buf);Module["HEAP16"]=HEAP16=new Int16Array(buf);Module["HEAP32"]=HEAP32=new Int32Array(buf);Module["HEAPU8"]=HEAPU8=new Uint8Array(buf);Module["HEAPU16"]=HEAPU16=new Uint16Array(buf);Module["HEAPU32"]=HEAPU32=new Uint32Array(buf);Module["HEAPF32"]=HEAPF32=new Float32Array(buf);Module["HEAPF64"]=HEAPF64=new Float64Array(buf)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATMAIN__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;var runtimeExited=false;function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;if(!Module["noFSInit"]&&!FS.init.initialized)FS.init();TTY.init();SOCKFS.root=FS.mount(SOCKFS,{},null);callRuntimeCallbacks(__ATINIT__)}function exitRuntime(){runtimeExited=true}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function getUniqueRunDependency(id){return id}function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}Module["preloadedImages"]={};Module["preloadedAudios"]={};function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what+="";err(what);ABORT=true;EXITSTATUS=1;what="abort("+what+"). Build with -s ASSERTIONS=1 for more info.";var e=new WebAssembly.RuntimeError(what);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile="dotnet.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}if(readBinary){return readBinary(file)}else{throw"both async and sync fetching of the wasm failed"}}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch==="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"env":asmLibraryArg,"wasi_snapshot_preview1":asmLibraryArg};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmMemory=Module["asm"]["memory"];updateGlobalBufferAndViews(wasmMemory.buffer);wasmTable=Module["asm"]["__indirect_function_table"];addOnInit(Module["asm"]["__wasm_call_ctors"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){var result=WebAssembly.instantiate(binary,info);return result}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming==="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&typeof fetch==="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);return false}}instantiateAsync();return{}}var tempDouble;var tempI64;var ASM_CONSTS={580212:function($0,$1){MONO.string_decoder.decode($0,$0+$1,true)},580263:function($0,$1,$2){var js_str=MONO.string_decoder.copy($0);try{var res=eval(js_str);setValue($2,0,"i32");if(res===null||res===undefined)return 0;else res=res.toString()}catch(e){res=e.toString();setValue($2,1,"i32");if(res===null||res===undefined)res="unknown exception";var stack=e.stack;if(stack){if(stack.startsWith(res))res=stack;else res+="\n"+stack}}var buff=Module._malloc((res.length+1)*2);stringToUTF16(res,buff,(res.length+1)*2);setValue($1,res.length,"i32");return buff},580818:function($0,$1,$2,$3,$4){var log_level=$0;var message=Module.UTF8ToString($1);var isFatal=$2;var domain=Module.UTF8ToString($3);var dataPtr=$4;if(MONO["logging"]&&MONO.logging["trace"]){MONO.logging.trace(domain,log_level,message,isFatal,dataPtr);return}if(isFatal)console.trace(message);switch(Module.UTF8ToString($0)){case"critical":case"error":console.error(message);break;case"warning":console.warn(message);break;case"message":console.log(message);break;case"info":console.info(message);break;case"debug":console.debug(message);break;default:console.log(message);break}},581442:function($0,$1){var level=$0;var message=Module.UTF8ToString($1);var namespace="Debugger.Debug";if(MONO["logging"]&&MONO.logging["debugger"]){MONO.logging.debugger(level,message);return}console.debug("%s: %s",namespace,message)},581682:function($0,$1,$2,$3){MONO.mono_wasm_add_dbg_command_received($0,$1,$2,$3)},581744:function($0,$1,$2,$3){MONO.mono_wasm_add_dbg_command_received($0,$1,$2,$3)},581806:function($0,$1,$2,$3){MONO.mono_wasm_add_dbg_command_received($0,$1,$2,$3)},581868:function($0,$1,$2,$3){MONO.mono_wasm_add_dbg_command_received($0,$1,$2,$3)},581930:function($0,$1){MONO.mono_wasm_add_dbg_command_received(1,0,$0,$1)}};function compile_function(snippet_ptr,len,is_exception){try{var data=MONO.string_decoder.decode(snippet_ptr,snippet_ptr+len);var wrapper="(function () { "+data+" })";var funcFactory=eval(wrapper);var func=funcFactory();if(typeof func!=="function"){throw new Error("Code must return an instance of a JavaScript function. "+"Please use `return` statement to return a function.")}setValue(is_exception,0,"i32");return BINDING.js_to_mono_obj(func,true)}catch(e){res=e.toString();setValue(is_exception,1,"i32");if(res===null||res===undefined)res="unknown exception";return BINDING.js_to_mono_obj(res,true)}}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){var callback=callbacks.shift();if(typeof callback=="function"){callback(Module);continue}var func=callback.func;if(typeof func==="number"){if(callback.arg===undefined){wasmTable.get(func)()}else{wasmTable.get(func)(callback.arg)}}else{func(callback.arg===undefined?null:callback.arg)}}}function demangle(func){return func}function demangleAll(text){var regex=/\b_Z[\w\d_]+/g;return text.replace(regex,function(x){var y=demangle(x);return x===y?x:y+" ["+x+"]"})}function jsStackTrace(){var error=new Error;if(!error.stack){try{throw new Error}catch(e){error=e}if(!error.stack){return"(no stack trace available)"}}return error.stack.toString()}var runtimeKeepaliveCounter=0;function keepRuntimeAlive(){return noExitRuntime||runtimeKeepaliveCounter>0}function ___assert_fail(condition,filename,line,func){abort("Assertion failed: "+UTF8ToString(condition)+", at: "+[filename?UTF8ToString(filename):"unknown filename",line,func?UTF8ToString(func):"unknown function"])}var _emscripten_get_now;if(ENVIRONMENT_IS_NODE){_emscripten_get_now=function(){var t=process["hrtime"]();return t[0]*1e3+t[1]/1e6}}else if(typeof dateNow!=="undefined"){_emscripten_get_now=dateNow}else _emscripten_get_now=function(){return performance.now()};var _emscripten_get_now_is_monotonic=true;function setErrNo(value){HEAP32[___errno_location()>>2]=value;return value}function _clock_gettime(clk_id,tp){var now;if(clk_id===0){now=Date.now()}else if((clk_id===1||clk_id===4)&&_emscripten_get_now_is_monotonic){now=_emscripten_get_now()}else{setErrNo(28);return-1}HEAP32[tp>>2]=now/1e3|0;HEAP32[tp+4>>2]=now%1e3*1e3*1e3|0;return 0}function ___clock_gettime(a0,a1){return _clock_gettime(a0,a1)}var ExceptionInfoAttrs={DESTRUCTOR_OFFSET:0,REFCOUNT_OFFSET:4,TYPE_OFFSET:8,CAUGHT_OFFSET:12,RETHROWN_OFFSET:13,SIZE:16};function ___cxa_allocate_exception(size){return _malloc(size+ExceptionInfoAttrs.SIZE)+ExceptionInfoAttrs.SIZE}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-ExceptionInfoAttrs.SIZE;this.set_type=function(type){HEAP32[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]=type};this.get_type=function(){return HEAP32[this.ptr+ExceptionInfoAttrs.TYPE_OFFSET>>2]};this.set_destructor=function(destructor){HEAP32[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]=destructor};this.get_destructor=function(){return HEAP32[this.ptr+ExceptionInfoAttrs.DESTRUCTOR_OFFSET>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+ExceptionInfoAttrs.CAUGHT_OFFSET>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+ExceptionInfoAttrs.RETHROWN_OFFSET>>0]!=0};this.init=function(type,destructor){this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2];HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2];HEAP32[this.ptr+ExceptionInfoAttrs.REFCOUNT_OFFSET>>2]=prev-1;return prev===1}}function CatchInfo(ptr){this.free=function(){_free(this.ptr);this.ptr=0};this.set_base_ptr=function(basePtr){HEAP32[this.ptr>>2]=basePtr};this.get_base_ptr=function(){return HEAP32[this.ptr>>2]};this.set_adjusted_ptr=function(adjustedPtr){var ptrSize=4;HEAP32[this.ptr+ptrSize>>2]=adjustedPtr};this.get_adjusted_ptr=function(){var ptrSize=4;return HEAP32[this.ptr+ptrSize>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_exception_info().get_type());if(isPointer){return HEAP32[this.get_base_ptr()>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.get_base_ptr()};this.get_exception_info=function(){return new ExceptionInfo(this.get_base_ptr())};if(ptr===undefined){this.ptr=_malloc(8);this.set_adjusted_ptr(0)}else{this.ptr=ptr}}var exceptionCaught=[];function exception_addRef(info){info.add_ref()}var uncaughtExceptionCount=0;function ___cxa_begin_catch(ptr){var catchInfo=new CatchInfo(ptr);var info=catchInfo.get_exception_info();if(!info.get_caught()){info.set_caught(true);uncaughtExceptionCount--}info.set_rethrown(false);exceptionCaught.push(catchInfo);exception_addRef(info);return catchInfo.get_exception_ptr()}var exceptionLast=0;function ___cxa_free_exception(ptr){return _free(new ExceptionInfo(ptr).ptr)}function exception_decRef(info){if(info.release_ref()&&!info.get_rethrown()){var destructor=info.get_destructor();if(destructor){wasmTable.get(destructor)(info.excPtr)}___cxa_free_exception(info.excPtr)}}function ___cxa_end_catch(){_setThrew(0);var catchInfo=exceptionCaught.pop();exception_decRef(catchInfo.get_exception_info());catchInfo.free();exceptionLast=0}function ___resumeException(catchInfoPtr){var catchInfo=new CatchInfo(catchInfoPtr);var ptr=catchInfo.get_base_ptr();if(!exceptionLast){exceptionLast=ptr}catchInfo.free();throw ptr}function ___cxa_find_matching_catch_3(){var thrown=exceptionLast;if(!thrown){setTempRet0(0);return 0|0}var info=new ExceptionInfo(thrown);var thrownType=info.get_type();var catchInfo=new CatchInfo;catchInfo.set_base_ptr(thrown);if(!thrownType){setTempRet0(0);return catchInfo.ptr|0}var typeArray=Array.prototype.slice.call(arguments);var stackTop=stackSave();var exceptionThrowBuf=stackAlloc(4);HEAP32[exceptionThrowBuf>>2]=thrown;for(var i=0;i>2];if(thrown!==adjusted){catchInfo.set_adjusted_ptr(adjusted)}setTempRet0(caughtType);return catchInfo.ptr|0}}stackRestore(stackTop);setTempRet0(thrownType);return catchInfo.ptr|0}function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}var PATH={splitPath:function(filename){var splitPathRe=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return splitPathRe.exec(filename).slice(1)},normalizeArray:function(parts,allowAboveRoot){var up=0;for(var i=parts.length-1;i>=0;i--){var last=parts[i];if(last==="."){parts.splice(i,1)}else if(last===".."){parts.splice(i,1);up++}else if(up){parts.splice(i,1);up--}}if(allowAboveRoot){for(;up;up--){parts.unshift("..")}}return parts},normalize:function(path){var isAbsolute=path.charAt(0)==="/",trailingSlash=path.substr(-1)==="/";path=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),!isAbsolute).join("/");if(!path&&!isAbsolute){path="."}if(path&&trailingSlash){path+="/"}return(isAbsolute?"/":"")+path},dirname:function(path){var result=PATH.splitPath(path),root=result[0],dir=result[1];if(!root&&!dir){return"."}if(dir){dir=dir.substr(0,dir.length-1)}return root+dir},basename:function(path){if(path==="/")return"/";path=PATH.normalize(path);path=path.replace(/\/$/,"");var lastSlash=path.lastIndexOf("/");if(lastSlash===-1)return path;return path.substr(lastSlash+1)},extname:function(path){return PATH.splitPath(path)[3]},join:function(){var paths=Array.prototype.slice.call(arguments,0);return PATH.normalize(paths.join("/"))},join2:function(l,r){return PATH.normalize(l+"/"+r)}};function getRandomDevice(){if(typeof crypto==="object"&&typeof crypto["getRandomValues"]==="function"){var randomBuffer=new Uint8Array(1);return function(){crypto.getRandomValues(randomBuffer);return randomBuffer[0]}}else if(ENVIRONMENT_IS_NODE){try{var crypto_module=require("crypto");return function(){return crypto_module["randomBytes"](1)[0]}}catch(e){}}return function(){abort("randomDevice")}}var PATH_FS={resolve:function(){var resolvedPath="",resolvedAbsolute=false;for(var i=arguments.length-1;i>=-1&&!resolvedAbsolute;i--){var path=i>=0?arguments[i]:FS.cwd();if(typeof path!=="string"){throw new TypeError("Arguments to path.resolve must be strings")}else if(!path){return""}resolvedPath=path+"/"+resolvedPath;resolvedAbsolute=path.charAt(0)==="/"}resolvedPath=PATH.normalizeArray(resolvedPath.split("/").filter(function(p){return!!p}),!resolvedAbsolute).join("/");return(resolvedAbsolute?"/":"")+resolvedPath||"."},relative:function(from,to){from=PATH_FS.resolve(from).substr(1);to=PATH_FS.resolve(to).substr(1);function trim(arr){var start=0;for(;start=0;end--){if(arr[end]!=="")break}if(start>end)return[];return arr.slice(start,end-start+1)}var fromParts=trim(from.split("/"));var toParts=trim(to.split("/"));var length=Math.min(fromParts.length,toParts.length);var samePartsLength=length;for(var i=0;i0){result=buf.slice(0,bytesRead).toString("utf-8")}else{result=null}}else if(typeof window!="undefined"&&typeof window.prompt=="function"){result=window.prompt("Input: ");if(result!==null){result+="\n"}}else if(typeof readline=="function"){result=readline();if(result!==null){result+="\n"}}if(!result){return null}tty.input=intArrayFromString(result,true)}return tty.input.shift()},put_char:function(tty,val){if(val===null||val===10){out(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){out(UTF8ArrayToString(tty.output,0));tty.output=[]}}},default_tty1_ops:{put_char:function(tty,val){if(val===null||val===10){err(UTF8ArrayToString(tty.output,0));tty.output=[]}else{if(val!=0)tty.output.push(val)}},flush:function(tty){if(tty.output&&tty.output.length>0){err(UTF8ArrayToString(tty.output,0));tty.output=[]}}}};function mmapAlloc(size){var alignedSize=alignMemory(size,65536);var ptr=_malloc(alignedSize);while(size=newCapacity)return;var CAPACITY_DOUBLING_MAX=1024*1024;newCapacity=Math.max(newCapacity,prevCapacity*(prevCapacity>>0);if(prevCapacity!=0)newCapacity=Math.max(newCapacity,256);var oldContents=node.contents;node.contents=new Uint8Array(newCapacity);if(node.usedBytes>0)node.contents.set(oldContents.subarray(0,node.usedBytes),0)},resizeFileStorage:function(node,newSize){if(node.usedBytes==newSize)return;if(newSize==0){node.contents=null;node.usedBytes=0}else{var oldContents=node.contents;node.contents=new Uint8Array(newSize);if(oldContents){node.contents.set(oldContents.subarray(0,Math.min(newSize,node.usedBytes)))}node.usedBytes=newSize}},node_ops:{getattr:function(node){var attr={};attr.dev=FS.isChrdev(node.mode)?node.id:1;attr.ino=node.id;attr.mode=node.mode;attr.nlink=1;attr.uid=0;attr.gid=0;attr.rdev=node.rdev;if(FS.isDir(node.mode)){attr.size=4096}else if(FS.isFile(node.mode)){attr.size=node.usedBytes}else if(FS.isLink(node.mode)){attr.size=node.link.length}else{attr.size=0}attr.atime=new Date(node.timestamp);attr.mtime=new Date(node.timestamp);attr.ctime=new Date(node.timestamp);attr.blksize=4096;attr.blocks=Math.ceil(attr.size/attr.blksize);return attr},setattr:function(node,attr){if(attr.mode!==undefined){node.mode=attr.mode}if(attr.timestamp!==undefined){node.timestamp=attr.timestamp}if(attr.size!==undefined){MEMFS.resizeFileStorage(node,attr.size)}},lookup:function(parent,name){throw FS.genericErrors[44]},mknod:function(parent,name,mode,dev){return MEMFS.createNode(parent,name,mode,dev)},rename:function(old_node,new_dir,new_name){if(FS.isDir(old_node.mode)){var new_node;try{new_node=FS.lookupNode(new_dir,new_name)}catch(e){}if(new_node){for(var i in new_node.contents){throw new FS.ErrnoError(55)}}}delete old_node.parent.contents[old_node.name];old_node.parent.timestamp=Date.now();old_node.name=new_name;new_dir.contents[new_name]=old_node;new_dir.timestamp=old_node.parent.timestamp;old_node.parent=new_dir},unlink:function(parent,name){delete parent.contents[name];parent.timestamp=Date.now()},rmdir:function(parent,name){var node=FS.lookupNode(parent,name);for(var i in node.contents){throw new FS.ErrnoError(55)}delete parent.contents[name];parent.timestamp=Date.now()},readdir:function(node){var entries=[".",".."];for(var key in node.contents){if(!node.contents.hasOwnProperty(key)){continue}entries.push(key)}return entries},symlink:function(parent,newname,oldpath){var node=MEMFS.createNode(parent,newname,511|40960,0);node.link=oldpath;return node},readlink:function(node){if(!FS.isLink(node.mode)){throw new FS.ErrnoError(28)}return node.link}},stream_ops:{read:function(stream,buffer,offset,length,position){var contents=stream.node.contents;if(position>=stream.node.usedBytes)return 0;var size=Math.min(stream.node.usedBytes-position,length);if(size>8&&contents.subarray){buffer.set(contents.subarray(position,position+size),offset)}else{for(var i=0;i0||position+length8){throw new FS.ErrnoError(32)}var parts=PATH.normalizeArray(path.split("/").filter(function(p){return!!p}),false);var current=FS.root;var current_path="/";for(var i=0;i40){throw new FS.ErrnoError(32)}}}}return{path:current_path,node:current}},getPath:function(node){var path;while(true){if(FS.isRoot(node)){var mount=node.mount.mountpoint;if(!path)return mount;return mount[mount.length-1]!=="/"?mount+"/"+path:mount+path}path=path?node.name+"/"+path:node.name;node=node.parent}},hashName:function(parentid,name){var hash=0;for(var i=0;i>>0)%FS.nameTable.length},hashAddNode:function(node){var hash=FS.hashName(node.parent.id,node.name);node.name_next=FS.nameTable[hash];FS.nameTable[hash]=node},hashRemoveNode:function(node){var hash=FS.hashName(node.parent.id,node.name);if(FS.nameTable[hash]===node){FS.nameTable[hash]=node.name_next}else{var current=FS.nameTable[hash];while(current){if(current.name_next===node){current.name_next=node.name_next;break}current=current.name_next}}},lookupNode:function(parent,name){var errCode=FS.mayLookup(parent);if(errCode){throw new FS.ErrnoError(errCode,parent)}var hash=FS.hashName(parent.id,name);for(var node=FS.nameTable[hash];node;node=node.name_next){var nodeName=node.name;if(node.parent.id===parent.id&&nodeName===name){return node}}return FS.lookup(parent,name)},createNode:function(parent,name,mode,rdev){var node=new FS.FSNode(parent,name,mode,rdev);FS.hashAddNode(node);return node},destroyNode:function(node){FS.hashRemoveNode(node)},isRoot:function(node){return node===node.parent},isMountpoint:function(node){return!!node.mounted},isFile:function(mode){return(mode&61440)===32768},isDir:function(mode){return(mode&61440)===16384},isLink:function(mode){return(mode&61440)===40960},isChrdev:function(mode){return(mode&61440)===8192},isBlkdev:function(mode){return(mode&61440)===24576},isFIFO:function(mode){return(mode&61440)===4096},isSocket:function(mode){return(mode&49152)===49152},flagModes:{"r":0,"r+":2,"w":577,"w+":578,"a":1089,"a+":1090},modeStringToFlags:function(str){var flags=FS.flagModes[str];if(typeof flags==="undefined"){throw new Error("Unknown file open mode: "+str)}return flags},flagsToPermissionString:function(flag){var perms=["r","w","rw"][flag&3];if(flag&512){perms+="w"}return perms},nodePermissions:function(node,perms){if(FS.ignorePermissions){return 0}if(perms.includes("r")&&!(node.mode&292)){return 2}else if(perms.includes("w")&&!(node.mode&146)){return 2}else if(perms.includes("x")&&!(node.mode&73)){return 2}return 0},mayLookup:function(dir){var errCode=FS.nodePermissions(dir,"x");if(errCode)return errCode;if(!dir.node_ops.lookup)return 2;return 0},mayCreate:function(dir,name){try{var node=FS.lookupNode(dir,name);return 20}catch(e){}return FS.nodePermissions(dir,"wx")},mayDelete:function(dir,name,isdir){var node;try{node=FS.lookupNode(dir,name)}catch(e){return e.errno}var errCode=FS.nodePermissions(dir,"wx");if(errCode){return errCode}if(isdir){if(!FS.isDir(node.mode)){return 54}if(FS.isRoot(node)||FS.getPath(node)===FS.cwd()){return 10}}else{if(FS.isDir(node.mode)){return 31}}return 0},mayOpen:function(node,flags){if(!node){return 44}if(FS.isLink(node.mode)){return 32}else if(FS.isDir(node.mode)){if(FS.flagsToPermissionString(flags)!=="r"||flags&512){return 31}}return FS.nodePermissions(node,FS.flagsToPermissionString(flags))},MAX_OPEN_FDS:4096,nextfd:function(fd_start,fd_end){fd_start=fd_start||0;fd_end=fd_end||FS.MAX_OPEN_FDS;for(var fd=fd_start;fd<=fd_end;fd++){if(!FS.streams[fd]){return fd}}throw new FS.ErrnoError(33)},getStream:function(fd){return FS.streams[fd]},createStream:function(stream,fd_start,fd_end){if(!FS.FSStream){FS.FSStream=function(){};FS.FSStream.prototype={object:{get:function(){return this.node},set:function(val){this.node=val}},isRead:{get:function(){return(this.flags&2097155)!==1}},isWrite:{get:function(){return(this.flags&2097155)!==0}},isAppend:{get:function(){return this.flags&1024}}}}var newStream=new FS.FSStream;for(var p in stream){newStream[p]=stream[p]}stream=newStream;var fd=FS.nextfd(fd_start,fd_end);stream.fd=fd;FS.streams[fd]=stream;return stream},closeStream:function(fd){FS.streams[fd]=null},chrdev_stream_ops:{open:function(stream){var device=FS.getDevice(stream.node.rdev);stream.stream_ops=device.stream_ops;if(stream.stream_ops.open){stream.stream_ops.open(stream)}},llseek:function(){throw new FS.ErrnoError(70)}},major:function(dev){return dev>>8},minor:function(dev){return dev&255},makedev:function(ma,mi){return ma<<8|mi},registerDevice:function(dev,ops){FS.devices[dev]={stream_ops:ops}},getDevice:function(dev){return FS.devices[dev]},getMounts:function(mount){var mounts=[];var check=[mount];while(check.length){var m=check.pop();mounts.push(m);check.push.apply(check,m.mounts)}return mounts},syncfs:function(populate,callback){if(typeof populate==="function"){callback=populate;populate=false}FS.syncFSRequests++;if(FS.syncFSRequests>1){err("warning: "+FS.syncFSRequests+" FS.syncfs operations in flight at once, probably just doing extra work")}var mounts=FS.getMounts(FS.root.mount);var completed=0;function doCallback(errCode){FS.syncFSRequests--;return callback(errCode)}function done(errCode){if(errCode){if(!done.errored){done.errored=true;return doCallback(errCode)}return}if(++completed>=mounts.length){doCallback(null)}}mounts.forEach(function(mount){if(!mount.type.syncfs){return done(null)}mount.type.syncfs(mount,populate,done)})},mount:function(type,opts,mountpoint){var root=mountpoint==="/";var pseudo=!mountpoint;var node;if(root&&FS.root){throw new FS.ErrnoError(10)}else if(!root&&!pseudo){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});mountpoint=lookup.path;node=lookup.node;if(FS.isMountpoint(node)){throw new FS.ErrnoError(10)}if(!FS.isDir(node.mode)){throw new FS.ErrnoError(54)}}var mount={type:type,opts:opts,mountpoint:mountpoint,mounts:[]};var mountRoot=type.mount(mount);mountRoot.mount=mount;mount.root=mountRoot;if(root){FS.root=mountRoot}else if(node){node.mounted=mount;if(node.mount){node.mount.mounts.push(mount)}}return mountRoot},unmount:function(mountpoint){var lookup=FS.lookupPath(mountpoint,{follow_mount:false});if(!FS.isMountpoint(lookup.node)){throw new FS.ErrnoError(28)}var node=lookup.node;var mount=node.mounted;var mounts=FS.getMounts(mount);Object.keys(FS.nameTable).forEach(function(hash){var current=FS.nameTable[hash];while(current){var next=current.name_next;if(mounts.includes(current.mount)){FS.destroyNode(current)}current=next}});node.mounted=null;var idx=node.mount.mounts.indexOf(mount);node.mount.mounts.splice(idx,1)},lookup:function(parent,name){return parent.node_ops.lookup(parent,name)},mknod:function(path,mode,dev){var lookup=FS.lookupPath(path,{parent:true});var parent=lookup.node;var name=PATH.basename(path);if(!name||name==="."||name===".."){throw new FS.ErrnoError(28)}var errCode=FS.mayCreate(parent,name);if(errCode){throw new FS.ErrnoError(errCode)}if(!parent.node_ops.mknod){throw new FS.ErrnoError(63)}return parent.node_ops.mknod(parent,name,mode,dev)},create:function(path,mode){mode=mode!==undefined?mode:438;mode&=4095;mode|=32768;return FS.mknod(path,mode,0)},mkdir:function(path,mode){mode=mode!==undefined?mode:511;mode&=511|512;mode|=16384;return FS.mknod(path,mode,0)},mkdirTree:function(path,mode){var dirs=path.split("/");var d="";for(var i=0;ithis.length-1||idx<0){return undefined}var chunkOffset=idx%this.chunkSize;var chunkNum=idx/this.chunkSize|0;return this.getter(chunkNum)[chunkOffset]};LazyUint8Array.prototype.setDataGetter=function LazyUint8Array_setDataGetter(getter){this.getter=getter};LazyUint8Array.prototype.cacheLength=function LazyUint8Array_cacheLength(){var xhr=new XMLHttpRequest;xhr.open("HEAD",url,false);xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);var datalength=Number(xhr.getResponseHeader("Content-length"));var header;var hasByteServing=(header=xhr.getResponseHeader("Accept-Ranges"))&&header==="bytes";var usesGzip=(header=xhr.getResponseHeader("Content-Encoding"))&&header==="gzip";var chunkSize=1024*1024;if(!hasByteServing)chunkSize=datalength;var doXHR=function(from,to){if(from>to)throw new Error("invalid range ("+from+", "+to+") or no bytes requested!");if(to>datalength-1)throw new Error("only "+datalength+" bytes available! programmer error!");var xhr=new XMLHttpRequest;xhr.open("GET",url,false);if(datalength!==chunkSize)xhr.setRequestHeader("Range","bytes="+from+"-"+to);if(typeof Uint8Array!="undefined")xhr.responseType="arraybuffer";if(xhr.overrideMimeType){xhr.overrideMimeType("text/plain; charset=x-user-defined")}xhr.send(null);if(!(xhr.status>=200&&xhr.status<300||xhr.status===304))throw new Error("Couldn't load "+url+". Status: "+xhr.status);if(xhr.response!==undefined){return new Uint8Array(xhr.response||[])}else{return intArrayFromString(xhr.responseText||"",true)}};var lazyArray=this;lazyArray.setDataGetter(function(chunkNum){var start=chunkNum*chunkSize;var end=(chunkNum+1)*chunkSize-1;end=Math.min(end,datalength-1);if(typeof lazyArray.chunks[chunkNum]==="undefined"){lazyArray.chunks[chunkNum]=doXHR(start,end)}if(typeof lazyArray.chunks[chunkNum]==="undefined")throw new Error("doXHR failed!");return lazyArray.chunks[chunkNum]});if(usesGzip||!datalength){chunkSize=datalength=1;datalength=this.getter(0).length;chunkSize=datalength;out("LazyFiles on gzip forces download of the whole file when length is accessed")}this._length=datalength;this._chunkSize=chunkSize;this.lengthKnown=true};if(typeof XMLHttpRequest!=="undefined"){if(!ENVIRONMENT_IS_WORKER)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var lazyArray=new LazyUint8Array;Object.defineProperties(lazyArray,{length:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._length}},chunkSize:{get:function(){if(!this.lengthKnown){this.cacheLength()}return this._chunkSize}}});var properties={isDevice:false,contents:lazyArray}}else{var properties={isDevice:false,url:url}}var node=FS.createFile(parent,name,properties,canRead,canWrite);if(properties.contents){node.contents=properties.contents}else if(properties.url){node.contents=null;node.url=properties.url}Object.defineProperties(node,{usedBytes:{get:function(){return this.contents.length}}});var stream_ops={};var keys=Object.keys(node.stream_ops);keys.forEach(function(key){var fn=node.stream_ops[key];stream_ops[key]=function forceLoadLazyFile(){FS.forceLoadFile(node);return fn.apply(null,arguments)}});stream_ops.read=function stream_ops_read(stream,buffer,offset,length,position){FS.forceLoadFile(node);var contents=stream.node.contents;if(position>=contents.length)return 0;var size=Math.min(contents.length-position,length);if(contents.slice){for(var i=0;i>2]=stat.dev;HEAP32[buf+4>>2]=0;HEAP32[buf+8>>2]=stat.ino;HEAP32[buf+12>>2]=stat.mode;HEAP32[buf+16>>2]=stat.nlink;HEAP32[buf+20>>2]=stat.uid;HEAP32[buf+24>>2]=stat.gid;HEAP32[buf+28>>2]=stat.rdev;HEAP32[buf+32>>2]=0;tempI64=[stat.size>>>0,(tempDouble=stat.size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+40>>2]=tempI64[0],HEAP32[buf+44>>2]=tempI64[1];HEAP32[buf+48>>2]=4096;HEAP32[buf+52>>2]=stat.blocks;HEAP32[buf+56>>2]=stat.atime.getTime()/1e3|0;HEAP32[buf+60>>2]=0;HEAP32[buf+64>>2]=stat.mtime.getTime()/1e3|0;HEAP32[buf+68>>2]=0;HEAP32[buf+72>>2]=stat.ctime.getTime()/1e3|0;HEAP32[buf+76>>2]=0;tempI64=[stat.ino>>>0,(tempDouble=stat.ino,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[buf+80>>2]=tempI64[0],HEAP32[buf+84>>2]=tempI64[1];return 0},doMsync:function(addr,stream,len,flags,offset){var buffer=HEAPU8.slice(addr,addr+len);FS.msync(stream,buffer,offset,len,flags)},doMkdir:function(path,mode){path=PATH.normalize(path);if(path[path.length-1]==="/")path=path.substr(0,path.length-1);FS.mkdir(path,mode,0);return 0},doMknod:function(path,mode,dev){switch(mode&61440){case 32768:case 8192:case 24576:case 4096:case 49152:break;default:return-28}FS.mknod(path,mode,dev);return 0},doReadlink:function(path,buf,bufsize){if(bufsize<=0)return-28;var ret=FS.readlink(path);var len=Math.min(bufsize,lengthBytesUTF8(ret));var endChar=HEAP8[buf+len];stringToUTF8(ret,buf,bufsize+1);HEAP8[buf+len]=endChar;return len},doAccess:function(path,amode){if(amode&~7){return-28}var node;var lookup=FS.lookupPath(path,{follow:true});node=lookup.node;if(!node){return-44}var perms="";if(amode&4)perms+="r";if(amode&2)perms+="w";if(amode&1)perms+="x";if(perms&&FS.nodePermissions(node,perms)){return-2}return 0},doDup:function(path,flags,suggestFD){var suggest=FS.getStream(suggestFD);if(suggest)FS.close(suggest);return FS.open(path,flags,0,suggestFD,suggestFD).fd},doReadv:function(stream,iov,iovcnt,offset){var ret=0;for(var i=0;i>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.read(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr;if(curr>2];var len=HEAP32[iov+(i*8+4)>>2];var curr=FS.write(stream,HEAP8,ptr,len,offset);if(curr<0)return-1;ret+=curr}return ret},varargs:undefined,get:function(){SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret},getStreamFromFD:function(fd){var stream=FS.getStream(fd);if(!stream)throw new FS.ErrnoError(8);return stream},get64:function(low,high){return low}};function ___sys_access(path,amode){try{path=SYSCALLS.getStr(path);return SYSCALLS.doAccess(path,amode)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_chdir(path){try{path=SYSCALLS.getStr(path);FS.chdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_chmod(path,mode){try{path=SYSCALLS.getStr(path);FS.chmod(path,mode);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}var ERRNO_CODES={EPERM:63,ENOENT:44,ESRCH:71,EINTR:27,EIO:29,ENXIO:60,E2BIG:1,ENOEXEC:45,EBADF:8,ECHILD:12,EAGAIN:6,EWOULDBLOCK:6,ENOMEM:48,EACCES:2,EFAULT:21,ENOTBLK:105,EBUSY:10,EEXIST:20,EXDEV:75,ENODEV:43,ENOTDIR:54,EISDIR:31,EINVAL:28,ENFILE:41,EMFILE:33,ENOTTY:59,ETXTBSY:74,EFBIG:22,ENOSPC:51,ESPIPE:70,EROFS:69,EMLINK:34,EPIPE:64,EDOM:18,ERANGE:68,ENOMSG:49,EIDRM:24,ECHRNG:106,EL2NSYNC:156,EL3HLT:107,EL3RST:108,ELNRNG:109,EUNATCH:110,ENOCSI:111,EL2HLT:112,EDEADLK:16,ENOLCK:46,EBADE:113,EBADR:114,EXFULL:115,ENOANO:104,EBADRQC:103,EBADSLT:102,EDEADLOCK:16,EBFONT:101,ENOSTR:100,ENODATA:116,ETIME:117,ENOSR:118,ENONET:119,ENOPKG:120,EREMOTE:121,ENOLINK:47,EADV:122,ESRMNT:123,ECOMM:124,EPROTO:65,EMULTIHOP:36,EDOTDOT:125,EBADMSG:9,ENOTUNIQ:126,EBADFD:127,EREMCHG:128,ELIBACC:129,ELIBBAD:130,ELIBSCN:131,ELIBMAX:132,ELIBEXEC:133,ENOSYS:52,ENOTEMPTY:55,ENAMETOOLONG:37,ELOOP:32,EOPNOTSUPP:138,EPFNOSUPPORT:139,ECONNRESET:15,ENOBUFS:42,EAFNOSUPPORT:5,EPROTOTYPE:67,ENOTSOCK:57,ENOPROTOOPT:50,ESHUTDOWN:140,ECONNREFUSED:14,EADDRINUSE:3,ECONNABORTED:13,ENETUNREACH:40,ENETDOWN:38,ETIMEDOUT:73,EHOSTDOWN:142,EHOSTUNREACH:23,EINPROGRESS:26,EALREADY:7,EDESTADDRREQ:17,EMSGSIZE:35,EPROTONOSUPPORT:66,ESOCKTNOSUPPORT:137,EADDRNOTAVAIL:4,ENETRESET:39,EISCONN:30,ENOTCONN:53,ETOOMANYREFS:141,EUSERS:136,EDQUOT:19,ESTALE:72,ENOTSUP:138,ENOMEDIUM:148,EILSEQ:25,EOVERFLOW:61,ECANCELED:11,ENOTRECOVERABLE:56,EOWNERDEAD:62,ESTRPIPE:135};var SOCKFS={mount:function(mount){Module["websocket"]=Module["websocket"]&&"object"===typeof Module["websocket"]?Module["websocket"]:{};Module["websocket"]._callbacks={};Module["websocket"]["on"]=function(event,callback){if("function"===typeof callback){this._callbacks[event]=callback}return this};Module["websocket"].emit=function(event,param){if("function"===typeof this._callbacks[event]){this._callbacks[event].call(this,param)}};return FS.createNode(null,"/",16384|511,0)},createSocket:function(family,type,protocol){type&=~526336;var streaming=type==1;if(protocol){assert(streaming==(protocol==6))}var sock={family:family,type:type,protocol:protocol,server:null,error:null,peers:{},pending:[],recv_queue:[],sock_ops:SOCKFS.websocket_sock_ops};var name=SOCKFS.nextname();var node=FS.createNode(SOCKFS.root,name,49152,0);node.sock=sock;var stream=FS.createStream({path:name,node:node,flags:2,seekable:false,stream_ops:SOCKFS.stream_ops});sock.stream=stream;return sock},getSocket:function(fd){var stream=FS.getStream(fd);if(!stream||!FS.isSocket(stream.node.mode)){return null}return stream.node.sock},stream_ops:{poll:function(stream){var sock=stream.node.sock;return sock.sock_ops.poll(sock)},ioctl:function(stream,request,varargs){var sock=stream.node.sock;return sock.sock_ops.ioctl(sock,request,varargs)},read:function(stream,buffer,offset,length,position){var sock=stream.node.sock;var msg=sock.sock_ops.recvmsg(sock,length);if(!msg){return 0}buffer.set(msg.buffer,offset);return msg.buffer.length},write:function(stream,buffer,offset,length,position){var sock=stream.node.sock;return sock.sock_ops.sendmsg(sock,buffer,offset,length)},close:function(stream){var sock=stream.node.sock;sock.sock_ops.close(sock)}},nextname:function(){if(!SOCKFS.nextname.current){SOCKFS.nextname.current=0}return"socket["+SOCKFS.nextname.current+++"]"},websocket_sock_ops:{createPeer:function(sock,addr,port){var ws;if(typeof addr==="object"){ws=addr;addr=null;port=null}if(ws){if(ws._socket){addr=ws._socket.remoteAddress;port=ws._socket.remotePort}else{var result=/ws[s]?:\/\/([^:]+):(\d+)/.exec(ws.url);if(!result){throw new Error("WebSocket URL must be in the format ws(s)://address:port")}addr=result[1];port=parseInt(result[2],10)}}else{try{var runtimeConfig=Module["websocket"]&&"object"===typeof Module["websocket"];var url="ws:#".replace("#","//");if(runtimeConfig){if("string"===typeof Module["websocket"]["url"]){url=Module["websocket"]["url"]}}if(url==="ws://"||url==="wss://"){var parts=addr.split("/");url=url+parts[0]+":"+port+"/"+parts.slice(1).join("/")}var subProtocols="binary";if(runtimeConfig){if("string"===typeof Module["websocket"]["subprotocol"]){subProtocols=Module["websocket"]["subprotocol"]}}var opts=undefined;if(subProtocols!=="null"){subProtocols=subProtocols.replace(/^ +| +$/g,"").split(/ *, */);opts=ENVIRONMENT_IS_NODE?{"protocol":subProtocols.toString()}:subProtocols}if(runtimeConfig&&null===Module["websocket"]["subprotocol"]){subProtocols="null";opts=undefined}var WebSocketConstructor;if(ENVIRONMENT_IS_NODE){WebSocketConstructor=require("ws")}else{WebSocketConstructor=WebSocket}ws=new WebSocketConstructor(url,opts);ws.binaryType="arraybuffer"}catch(e){throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH)}}var peer={addr:addr,port:port,socket:ws,dgram_send_queue:[]};SOCKFS.websocket_sock_ops.addPeer(sock,peer);SOCKFS.websocket_sock_ops.handlePeerEvents(sock,peer);if(sock.type===2&&typeof sock.sport!=="undefined"){peer.dgram_send_queue.push(new Uint8Array([255,255,255,255,"p".charCodeAt(0),"o".charCodeAt(0),"r".charCodeAt(0),"t".charCodeAt(0),(sock.sport&65280)>>8,sock.sport&255]))}return peer},getPeer:function(sock,addr,port){return sock.peers[addr+":"+port]},addPeer:function(sock,peer){sock.peers[peer.addr+":"+peer.port]=peer},removePeer:function(sock,peer){delete sock.peers[peer.addr+":"+peer.port]},handlePeerEvents:function(sock,peer){var first=true;var handleOpen=function(){Module["websocket"].emit("open",sock.stream.fd);try{var queued=peer.dgram_send_queue.shift();while(queued){peer.socket.send(queued);queued=peer.dgram_send_queue.shift()}}catch(e){peer.socket.close()}};function handleMessage(data){if(typeof data==="string"){var encoder=new TextEncoder;data=encoder.encode(data)}else{assert(data.byteLength!==undefined);if(data.byteLength==0){return}else{data=new Uint8Array(data)}}var wasfirst=first;first=false;if(wasfirst&&data.length===10&&data[0]===255&&data[1]===255&&data[2]===255&&data[3]===255&&data[4]==="p".charCodeAt(0)&&data[5]==="o".charCodeAt(0)&&data[6]==="r".charCodeAt(0)&&data[7]==="t".charCodeAt(0)){var newport=data[8]<<8|data[9];SOCKFS.websocket_sock_ops.removePeer(sock,peer);peer.port=newport;SOCKFS.websocket_sock_ops.addPeer(sock,peer);return}sock.recv_queue.push({addr:peer.addr,port:peer.port,data:data});Module["websocket"].emit("message",sock.stream.fd)}if(ENVIRONMENT_IS_NODE){peer.socket.on("open",handleOpen);peer.socket.on("message",function(data,flags){if(!flags.binary){return}handleMessage(new Uint8Array(data).buffer)});peer.socket.on("close",function(){Module["websocket"].emit("close",sock.stream.fd)});peer.socket.on("error",function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])})}else{peer.socket.onopen=handleOpen;peer.socket.onclose=function(){Module["websocket"].emit("close",sock.stream.fd)};peer.socket.onmessage=function peer_socket_onmessage(event){handleMessage(event.data)};peer.socket.onerror=function(error){sock.error=ERRNO_CODES.ECONNREFUSED;Module["websocket"].emit("error",[sock.stream.fd,sock.error,"ECONNREFUSED: Connection refused"])}}},poll:function(sock){if(sock.type===1&&sock.server){return sock.pending.length?64|1:0}var mask=0;var dest=sock.type===1?SOCKFS.websocket_sock_ops.getPeer(sock,sock.daddr,sock.dport):null;if(sock.recv_queue.length||!dest||dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=64|1}if(!dest||dest&&dest.socket.readyState===dest.socket.OPEN){mask|=4}if(dest&&dest.socket.readyState===dest.socket.CLOSING||dest&&dest.socket.readyState===dest.socket.CLOSED){mask|=16}return mask},ioctl:function(sock,request,arg){switch(request){case 21531:var bytes=0;if(sock.recv_queue.length){bytes=sock.recv_queue[0].data.length}HEAP32[arg>>2]=bytes;return 0;default:return ERRNO_CODES.EINVAL}},close:function(sock){if(sock.server){try{sock.server.close()}catch(e){}sock.server=null}var peers=Object.keys(sock.peers);for(var i=0;i>8&255)+"."+(addr>>16&255)+"."+(addr>>24&255)}function inetNtop6(ints){var str="";var word=0;var longest=0;var lastzero=0;var zstart=0;var len=0;var i=0;var parts=[ints[0]&65535,ints[0]>>16,ints[1]&65535,ints[1]>>16,ints[2]&65535,ints[2]>>16,ints[3]&65535,ints[3]>>16];var hasipv4=true;var v4part="";for(i=0;i<5;i++){if(parts[i]!==0){hasipv4=false;break}}if(hasipv4){v4part=inetNtop4(parts[6]|parts[7]<<16);if(parts[5]===-1){str="::ffff:";str+=v4part;return str}if(parts[5]===0){str="::";if(v4part==="0.0.0.0")v4part="";if(v4part==="0.0.0.1")v4part="1";str+=v4part;return str}}for(word=0;word<8;word++){if(parts[word]===0){if(word-lastzero>1){len=0}lastzero=word;len++}if(len>longest){longest=len;zstart=word-longest+1}}for(word=0;word<8;word++){if(longest>1){if(parts[word]===0&&word>=zstart&&word>1];var port=_ntohs(HEAPU16[sa+2>>1]);var addr;switch(family){case 2:if(salen!==16){return{errno:28}}addr=HEAP32[sa+4>>2];addr=inetNtop4(addr);break;case 10:if(salen!==28){return{errno:28}}addr=[HEAP32[sa+8>>2],HEAP32[sa+12>>2],HEAP32[sa+16>>2],HEAP32[sa+20>>2]];addr=inetNtop6(addr);break;default:return{errno:5}}return{family:family,addr:addr,port:port}}function getSocketAddress(addrp,addrlen,allowNull){if(allowNull&&addrp===0)return null;var info=readSockaddr(addrp,addrlen);if(info.errno)throw new FS.ErrnoError(info.errno);info.addr=DNS.lookup_addr(info.addr)||info.addr;return info}function ___sys_connect(fd,addr,addrlen){try{var sock=getSocketFromFD(fd);var info=getSocketAddress(addr,addrlen);sock.sock_ops.connect(sock,info.addr,info.port);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_fadvise64_64(fd,offset,len,advice){return 0}function ___sys_fchmod(fd,mode){try{FS.fchmod(fd,mode);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_fcntl64(fd,cmd,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(cmd){case 0:{var arg=SYSCALLS.get();if(arg<0){return-28}var newStream;newStream=FS.open(stream.path,stream.flags,0,arg);return newStream.fd}case 1:case 2:return 0;case 3:return stream.flags;case 4:{var arg=SYSCALLS.get();stream.flags|=arg;return 0}case 12:{var arg=SYSCALLS.get();var offset=0;HEAP16[arg+offset>>1]=2;return 0}case 13:case 14:return 0;case 16:case 8:return-28;case 9:setErrNo(28);return-1;default:{return-28}}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_fstat64(fd,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return SYSCALLS.doStat(FS.stat,stream.path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_fstatfs64(fd,size,buf){try{var stream=SYSCALLS.getStreamFromFD(fd);return ___sys_statfs64(0,size,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ftruncate64(fd,zero,low,high){try{var length=SYSCALLS.get64(low,high);FS.ftruncate(fd,length);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getcwd(buf,size){try{if(size===0)return-28;var cwd=FS.cwd();var cwdLengthInBytes=lengthBytesUTF8(cwd);if(size>>0,(tempDouble=id,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos>>2]=tempI64[0],HEAP32[dirp+pos+4>>2]=tempI64[1];tempI64=[(idx+1)*struct_size>>>0,(tempDouble=(idx+1)*struct_size,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[dirp+pos+8>>2]=tempI64[0],HEAP32[dirp+pos+12>>2]=tempI64[1];HEAP16[dirp+pos+16>>1]=280;HEAP8[dirp+pos+18>>0]=type;stringToUTF8(name,dirp+pos+19,256);pos+=struct_size;idx+=1}FS.llseek(stream,idx*struct_size,0);return pos}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_getpid(){return 42}function ___sys_getrusage(who,usage){try{_memset(usage,0,136);HEAP32[usage>>2]=1;HEAP32[usage+4>>2]=2;HEAP32[usage+8>>2]=3;HEAP32[usage+12>>2]=4;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_ioctl(fd,op,varargs){SYSCALLS.varargs=varargs;try{var stream=SYSCALLS.getStreamFromFD(fd);switch(op){case 21509:case 21505:{if(!stream.tty)return-59;return 0}case 21510:case 21511:case 21512:case 21506:case 21507:case 21508:{if(!stream.tty)return-59;return 0}case 21519:{if(!stream.tty)return-59;var argp=SYSCALLS.get();HEAP32[argp>>2]=0;return 0}case 21520:{if(!stream.tty)return-59;return-28}case 21531:{var argp=SYSCALLS.get();return FS.ioctl(stream,op,argp)}case 21523:{if(!stream.tty)return-59;return 0}case 21524:{if(!stream.tty)return-59;return 0}default:abort("bad ioctl syscall "+op)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_link(oldpath,newpath){return-34}function ___sys_lstat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.lstat,path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_madvise1(addr,length,advice){return 0}function ___sys_mkdir(path,mode){try{path=SYSCALLS.getStr(path);return SYSCALLS.doMkdir(path,mode)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function syscallMmap2(addr,len,prot,flags,fd,off){off<<=12;var ptr;var allocated=false;if((flags&16)!==0&&addr%65536!==0){return-28}if((flags&32)!==0){ptr=_memalign(65536,len);if(!ptr)return-48;_memset(ptr,0,len);allocated=true}else{var info=FS.getStream(fd);if(!info)return-8;var res=FS.mmap(info,addr,len,off,prot,flags);ptr=res.ptr;allocated=res.allocated}SYSCALLS.mappings[ptr]={malloc:ptr,len:len,allocated:allocated,fd:fd,prot:prot,flags:flags,offset:off};return ptr}function ___sys_mmap2(addr,len,prot,flags,fd,off){try{return syscallMmap2(addr,len,prot,flags,fd,off)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_msync(addr,len,flags){try{var info=SYSCALLS.mappings[addr];if(!info)return 0;SYSCALLS.doMsync(addr,FS.getStream(info.fd),len,info.flags,0);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function syscallMunmap(addr,len){if((addr|0)===-1||len===0){return-28}var info=SYSCALLS.mappings[addr];if(!info)return 0;if(len===info.len){var stream=FS.getStream(info.fd);if(stream){if(info.prot&2){SYSCALLS.doMsync(addr,stream,len,info.flags,info.offset)}FS.munmap(stream)}SYSCALLS.mappings[addr]=null;if(info.allocated){_free(info.malloc)}}return 0}function ___sys_munmap(addr,len){try{return syscallMunmap(addr,len)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_open(path,flags,varargs){SYSCALLS.varargs=varargs;try{var pathname=SYSCALLS.getStr(path);var mode=varargs?SYSCALLS.get():0;var stream=FS.open(pathname,flags,mode);return stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_readlink(path,buf,bufsize){try{path=SYSCALLS.getStr(path);return SYSCALLS.doReadlink(path,buf,bufsize)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function inetPton4(str){var b=str.split(".");for(var i=0;i<4;i++){var tmp=Number(b[i]);if(isNaN(tmp))return null;b[i]=tmp}return(b[0]|b[1]<<8|b[2]<<16|b[3]<<24)>>>0}function jstoi_q(str){return parseInt(str)}function inetPton6(str){var words;var w,offset,z;var valid6regx=/^((?=.*::)(?!.*::.+::)(::)?([\dA-F]{1,4}:(:|\b)|){5}|([\dA-F]{1,4}:){6})((([\dA-F]{1,4}((?!\3)::|:\b|$))|(?!\2\3)){2}|(((2[0-4]|1\d|[1-9])?\d|25[0-5])\.?\b){4})$/i;var parts=[];if(!valid6regx.test(str)){return null}if(str==="::"){return[0,0,0,0,0,0,0,0]}if(str.startsWith("::")){str=str.replace("::","Z:")}else{str=str.replace("::",":Z:")}if(str.indexOf(".")>0){str=str.replace(new RegExp("[.]","g"),":");words=str.split(":");words[words.length-4]=jstoi_q(words[words.length-4])+jstoi_q(words[words.length-3])*256;words[words.length-3]=jstoi_q(words[words.length-2])+jstoi_q(words[words.length-1])*256;words=words.slice(0,words.length-2)}else{words=str.split(":")}offset=0;z=0;for(w=0;w>2]=16}HEAP16[sa>>1]=family;HEAP32[sa+4>>2]=addr;HEAP16[sa+2>>1]=_htons(port);tempI64=[0>>>0,(tempDouble=0,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[sa+8>>2]=tempI64[0],HEAP32[sa+12>>2]=tempI64[1];break;case 10:addr=inetPton6(addr);if(addrlen){HEAP32[addrlen>>2]=28}HEAP32[sa>>2]=family;HEAP32[sa+8>>2]=addr[0];HEAP32[sa+12>>2]=addr[1];HEAP32[sa+16>>2]=addr[2];HEAP32[sa+20>>2]=addr[3];HEAP16[sa+2>>1]=_htons(port);HEAP32[sa+4>>2]=0;HEAP32[sa+24>>2]=0;break;default:return 5}return 0}var DNS={address_map:{id:1,addrs:{},names:{}},lookup_name:function(name){var res=inetPton4(name);if(res!==null){return name}res=inetPton6(name);if(res!==null){return name}var addr;if(DNS.address_map.addrs[name]){addr=DNS.address_map.addrs[name]}else{var id=DNS.address_map.id++;assert(id<65535,"exceeded max address mappings of 65535");addr="172.29."+(id&255)+"."+(id&65280);DNS.address_map.names[addr]=name;DNS.address_map.addrs[name]=addr}return addr},lookup_addr:function(addr){if(DNS.address_map.names[addr]){return DNS.address_map.names[addr]}return null}};function ___sys_recvfrom(fd,buf,len,flags,addr,addrlen){try{var sock=getSocketFromFD(fd);var msg=sock.sock_ops.recvmsg(sock,len);if(!msg)return 0;if(addr){var errno=writeSockaddr(addr,sock.family,DNS.lookup_name(msg.addr),msg.port,addrlen)}HEAPU8.set(msg.buffer,buf);return msg.buffer.byteLength}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_rename(old_path,new_path){try{old_path=SYSCALLS.getStr(old_path);new_path=SYSCALLS.getStr(new_path);FS.rename(old_path,new_path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_rmdir(path){try{path=SYSCALLS.getStr(path);FS.rmdir(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_sendto(fd,message,length,flags,addr,addr_len){try{var sock=getSocketFromFD(fd);var dest=getSocketAddress(addr,addr_len,true);if(!dest){return FS.write(sock.stream,HEAP8,message,length)}else{return sock.sock_ops.sendmsg(sock,HEAP8,message,length,dest.addr,dest.port)}}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_setsockopt(fd){try{return-50}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_shutdown(fd,how){try{getSocketFromFD(fd);return-52}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_socket(domain,type,protocol){try{var sock=SOCKFS.createSocket(domain,type,protocol);return sock.stream.fd}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_stat64(path,buf){try{path=SYSCALLS.getStr(path);return SYSCALLS.doStat(FS.stat,path,buf)}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_symlink(target,linkpath){try{target=SYSCALLS.getStr(target);linkpath=SYSCALLS.getStr(linkpath);FS.symlink(target,linkpath);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_unlink(path){try{path=SYSCALLS.getStr(path);FS.unlink(path);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function ___sys_utimensat(dirfd,path,times,flags){try{path=SYSCALLS.getStr(path);path=SYSCALLS.calculateAt(dirfd,path,true);var seconds=HEAP32[times>>2];var nanoseconds=HEAP32[times+4>>2];var atime=seconds*1e3+nanoseconds/(1e3*1e3);times+=8;seconds=HEAP32[times>>2];nanoseconds=HEAP32[times+4>>2];var mtime=seconds*1e3+nanoseconds/(1e3*1e3);FS.utime(path,atime,mtime);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return-e.errno}}function _abort(){abort()}function _emscripten_get_now_res(){if(ENVIRONMENT_IS_NODE){return 1}else if(typeof dateNow!=="undefined"){return 1e3}else return 1e3}function _clock_getres(clk_id,res){var nsec;if(clk_id===0){nsec=1e3*1e3}else if(clk_id===1&&_emscripten_get_now_is_monotonic){nsec=_emscripten_get_now_res()}else{setErrNo(28);return-1}HEAP32[res>>2]=nsec/1e9|0;HEAP32[res+4>>2]=nsec;return 0}function _difftime(time1,time0){return time1-time0}var DOTNETENTROPY={batchedQuotaMax:65536,getBatchedRandomValues:function(buffer,bufferLength){for(var i=0;i>=2;while(ch=HEAPU8[sigPtr++]){var double=ch<105;if(double&&buf&1)buf++;readAsmConstArgsArray.push(double?HEAPF64[buf++>>1]:HEAP32[buf]);++buf}return readAsmConstArgsArray}function _emscripten_asm_const_int(code,sigPtr,argbuf){var args=readAsmConstArgs(sigPtr,argbuf);return ASM_CONSTS[code].apply(null,args)}function _emscripten_get_heap_max(){return 2147483648}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function emscripten_realloc_buffer(size){try{wasmMemory.grow(size-buffer.byteLength+65535>>>16);updateGlobalBufferAndViews(wasmMemory.buffer);return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=2147483648;if(requestedSize>maxHeapSize){return false}for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function _emscripten_thread_sleep(msecs){var start=_emscripten_get_now();while(_emscripten_get_now()-start>2]=strings.length;var bufSize=0;strings.forEach(function(string){bufSize+=string.length+1});HEAP32[penviron_buf_size>>2]=bufSize;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _exit(status){exit(status)}function _fd_close(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);FS.close(stream);return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_fdstat_get(fd,pbuf){try{var stream=SYSCALLS.getStreamFromFD(fd);var type=stream.tty?2:FS.isDir(stream.mode)?3:FS.isLink(stream.mode)?7:4;HEAP8[pbuf>>0]=type;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_pread(fd,iov,iovcnt,offset_low,offset_high,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt,offset_low);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_pwrite(fd,iov,iovcnt,offset_low,offset_high,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt,offset_low);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_read(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doReadv(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){try{var stream=SYSCALLS.getStreamFromFD(fd);var HIGH_OFFSET=4294967296;var offset=offset_high*HIGH_OFFSET+(offset_low>>>0);var DOUBLE_LIMIT=9007199254740992;if(offset<=-DOUBLE_LIMIT||offset>=DOUBLE_LIMIT){return-61}FS.llseek(stream,offset,whence);tempI64=[stream.position>>>0,(tempDouble=stream.position,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[newOffset>>2]=tempI64[0],HEAP32[newOffset+4>>2]=tempI64[1];if(stream.getdents&&offset===0&&whence===0)stream.getdents=null;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_sync(fd){try{var stream=SYSCALLS.getStreamFromFD(fd);if(stream.stream_ops&&stream.stream_ops.fsync){return-stream.stream_ops.fsync(stream)}return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _fd_write(fd,iov,iovcnt,pnum){try{var stream=SYSCALLS.getStreamFromFD(fd);var num=SYSCALLS.doWritev(stream,iov,iovcnt);HEAP32[pnum>>2]=num;return 0}catch(e){if(typeof FS==="undefined"||!(e instanceof FS.ErrnoError))abort(e);return e.errno}}function _flock(fd,operation){return 0}var GAI_ERRNO_MESSAGES={};function _gai_strerror(val){var buflen=256;if(!_gai_strerror.buffer){_gai_strerror.buffer=_malloc(buflen);GAI_ERRNO_MESSAGES["0"]="Success";GAI_ERRNO_MESSAGES[""+-1]="Invalid value for 'ai_flags' field";GAI_ERRNO_MESSAGES[""+-2]="NAME or SERVICE is unknown";GAI_ERRNO_MESSAGES[""+-3]="Temporary failure in name resolution";GAI_ERRNO_MESSAGES[""+-4]="Non-recoverable failure in name res";GAI_ERRNO_MESSAGES[""+-6]="'ai_family' not supported";GAI_ERRNO_MESSAGES[""+-7]="'ai_socktype' not supported";GAI_ERRNO_MESSAGES[""+-8]="SERVICE not supported for 'ai_socktype'";GAI_ERRNO_MESSAGES[""+-10]="Memory allocation failure";GAI_ERRNO_MESSAGES[""+-11]="System error returned in 'errno'";GAI_ERRNO_MESSAGES[""+-12]="Argument buffer overflow"}var msg="Unknown error";if(val in GAI_ERRNO_MESSAGES){if(GAI_ERRNO_MESSAGES[val].length>buflen-1){msg="Message too long"}else{msg=GAI_ERRNO_MESSAGES[val]}}writeAsciiToMemory(msg,_gai_strerror.buffer);return _gai_strerror.buffer}function _getTempRet0(){return getTempRet0()}function _gettimeofday(ptr){var now=Date.now();HEAP32[ptr>>2]=now/1e3|0;HEAP32[ptr+4>>2]=now%1e3*1e3|0;return 0}function _gmtime_r(time,tmPtr){var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getUTCSeconds();HEAP32[tmPtr+4>>2]=date.getUTCMinutes();HEAP32[tmPtr+8>>2]=date.getUTCHours();HEAP32[tmPtr+12>>2]=date.getUTCDate();HEAP32[tmPtr+16>>2]=date.getUTCMonth();HEAP32[tmPtr+20>>2]=date.getUTCFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getUTCDay();HEAP32[tmPtr+36>>2]=0;HEAP32[tmPtr+32>>2]=0;var start=Date.UTC(date.getUTCFullYear(),0,1,0,0,0,0);var yday=(date.getTime()-start)/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;if(!_gmtime_r.GMTString)_gmtime_r.GMTString=allocateUTF8("GMT");HEAP32[tmPtr+40>>2]=_gmtime_r.GMTString;return tmPtr}function _llvm_eh_typeid_for(type){return type}function _tzset(){if(_tzset.called)return;_tzset.called=true;var currentYear=(new Date).getFullYear();var winter=new Date(currentYear,0,1);var summer=new Date(currentYear,6,1);var winterOffset=winter.getTimezoneOffset();var summerOffset=summer.getTimezoneOffset();var stdTimezoneOffset=Math.max(winterOffset,summerOffset);HEAP32[__get_timezone()>>2]=stdTimezoneOffset*60;HEAP32[__get_daylight()>>2]=Number(winterOffset!=summerOffset);function extractZone(date){var match=date.toTimeString().match(/\(([A-Za-z ]+)\)$/);return match?match[1]:"GMT"}var winterName=extractZone(winter);var summerName=extractZone(summer);var winterNamePtr=allocateUTF8(winterName);var summerNamePtr=allocateUTF8(summerName);if(summerOffset>2]=winterNamePtr;HEAP32[__get_tzname()+4>>2]=summerNamePtr}else{HEAP32[__get_tzname()>>2]=summerNamePtr;HEAP32[__get_tzname()+4>>2]=winterNamePtr}}function _localtime_r(time,tmPtr){_tzset();var date=new Date(HEAP32[time>>2]*1e3);HEAP32[tmPtr>>2]=date.getSeconds();HEAP32[tmPtr+4>>2]=date.getMinutes();HEAP32[tmPtr+8>>2]=date.getHours();HEAP32[tmPtr+12>>2]=date.getDate();HEAP32[tmPtr+16>>2]=date.getMonth();HEAP32[tmPtr+20>>2]=date.getFullYear()-1900;HEAP32[tmPtr+24>>2]=date.getDay();var start=new Date(date.getFullYear(),0,1);var yday=(date.getTime()-start.getTime())/(1e3*60*60*24)|0;HEAP32[tmPtr+28>>2]=yday;HEAP32[tmPtr+36>>2]=-(date.getTimezoneOffset()*60);var summerOffset=new Date(date.getFullYear(),6,1).getTimezoneOffset();var winterOffset=start.getTimezoneOffset();var dst=(summerOffset!=winterOffset&&date.getTimezoneOffset()==Math.min(winterOffset,summerOffset))|0;HEAP32[tmPtr+32>>2]=dst;var zonePtr=HEAP32[__get_tzname()+(dst?4:0)>>2];HEAP32[tmPtr+40>>2]=zonePtr;return tmPtr}var MONO={pump_count:0,timeout_queue:[],spread_timers_maximum:0,_vt_stack:[],mono_wasm_runtime_is_ready:false,mono_wasm_ignore_pdb_load_errors:true,_id_table:{},pump_message:function(){if(!this.mono_background_exec)this.mono_background_exec=Module.cwrap("mono_background_exec",null);while(MONO.timeout_queue.length>0){--MONO.pump_count;MONO.timeout_queue.shift()()}while(MONO.pump_count>0){--MONO.pump_count;this.mono_background_exec()}},export_functions:function(module){module["pump_message"]=MONO.pump_message.bind(MONO);module["prevent_timer_throttling"]=MONO.prevent_timer_throttling.bind(MONO);module["mono_wasm_set_timeout_exec"]=MONO.mono_wasm_set_timeout_exec.bind(MONO);module["mono_load_runtime_and_bcl"]=MONO.mono_load_runtime_and_bcl.bind(MONO);module["mono_load_runtime_and_bcl_args"]=MONO.mono_load_runtime_and_bcl_args.bind(MONO);module["mono_wasm_load_bytes_into_heap"]=MONO.mono_wasm_load_bytes_into_heap.bind(MONO);module["mono_wasm_load_icu_data"]=MONO.mono_wasm_load_icu_data.bind(MONO);module["mono_wasm_get_icudt_name"]=MONO.mono_wasm_get_icudt_name.bind(MONO);module["mono_wasm_globalization_init"]=MONO.mono_wasm_globalization_init.bind(MONO);module["mono_wasm_get_loaded_files"]=MONO.mono_wasm_get_loaded_files.bind(MONO);module["mono_wasm_new_root_buffer"]=MONO.mono_wasm_new_root_buffer.bind(MONO);module["mono_wasm_new_root_buffer_from_pointer"]=MONO.mono_wasm_new_root_buffer_from_pointer.bind(MONO);module["mono_wasm_new_root"]=MONO.mono_wasm_new_root.bind(MONO);module["mono_wasm_new_roots"]=MONO.mono_wasm_new_roots.bind(MONO);module["mono_wasm_release_roots"]=MONO.mono_wasm_release_roots.bind(MONO);module["mono_wasm_load_config"]=MONO.mono_wasm_load_config.bind(MONO)},_base64Converter:{_base64Table:["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","+","/"],_makeByteReader:function(bytes,index,count){var position=typeof index==="number"?index:0;var endpoint;if(typeof count==="number")endpoint=position+count;else endpoint=bytes.length-position;var result={read:function(){if(position>=endpoint)return false;var nextByte=bytes[position];position+=1;return nextByte}};Object.defineProperty(result,"eof",{get:function(){return position>=endpoint},configurable:true,enumerable:true});return result},toBase64StringImpl:function(inArray,offset,length){var reader=this._makeByteReader(inArray,offset,length);var result="";var ch1=0,ch2=0,ch3=0,bits=0,equalsCount=0,sum=0;var mask1=(1<<24)-1,mask2=(1<<18)-1,mask3=(1<<12)-1,mask4=(1<<6)-1;var shift1=18,shift2=12,shift3=6,shift4=0;while(true){ch1=reader.read();ch2=reader.read();ch3=reader.read();if(ch1===false)break;if(ch2===false){ch2=0;equalsCount+=1}if(ch3===false){ch3=0;equalsCount+=1}sum=ch1<<16|ch2<<8|ch3<<0;bits=(sum&mask1)>>shift1;result+=this._base64Table[bits];bits=(sum&mask2)>>shift2;result+=this._base64Table[bits];if(equalsCount<2){bits=(sum&mask3)>>shift3;result+=this._base64Table[bits]}if(equalsCount===2){result+="=="}else if(equalsCount===1){result+="="}else{bits=(sum&mask4)>>shift4;result+=this._base64Table[bits]}}return result}},_mono_wasm_root_buffer_prototype:{_throw_index_out_of_range:function(){throw new Error("index out of range")},_check_in_range:function(index){if(index>=this.__count||index<0)this._throw_index_out_of_range()},get_address:function(index){this._check_in_range(index);return this.__offset+index*4},get_address_32:function(index){this._check_in_range(index);return this.__offset32+index},get:function(index){this._check_in_range(index);return Module.HEAP32[this.get_address_32(index)]},set:function(index,value){Module.HEAP32[this.get_address_32(index)]=value;return value},_unsafe_get:function(index){return Module.HEAP32[this.__offset32+index]},_unsafe_set:function(index,value){Module.HEAP32[this.__offset32+index]=value},clear:function(){if(this.__offset)MONO._zero_region(this.__offset,this.__count*4)},release:function(){if(this.__offset&&this.__ownsAllocation){MONO.mono_wasm_deregister_root(this.__offset);MONO._zero_region(this.__offset,this.__count*4);Module._free(this.__offset)}this.__handle=this.__offset=this.__count=this.__offset32=0},toString:function(){return"[root buffer @"+this.get_address(0)+", size "+this.__count+"]"}},_scratch_root_buffer:null,_scratch_root_free_indices:null,_scratch_root_free_indices_count:0,_scratch_root_free_instances:[],_mono_wasm_root_prototype:{get_address:function(){return this.__buffer.get_address(this.__index)},get_address_32:function(){return this.__buffer.get_address_32(this.__index)},get:function(){var result=this.__buffer._unsafe_get(this.__index);return result},set:function(value){this.__buffer._unsafe_set(this.__index,value);return value},valueOf:function(){return this.get()},clear:function(){this.set(0)},release:function(){const maxPooledInstances=128;if(MONO._scratch_root_free_instances.length>maxPooledInstances){MONO._mono_wasm_release_scratch_index(this.__index);this.__buffer=0;this.__index=0}else{this.set(0);MONO._scratch_root_free_instances.push(this)}},toString:function(){return"[root @"+this.get_address()+"]"}},_mono_wasm_release_scratch_index:function(index){if(index===undefined)return;this._scratch_root_buffer.set(index,0);this._scratch_root_free_indices[this._scratch_root_free_indices_count]=index;this._scratch_root_free_indices_count++},_mono_wasm_claim_scratch_index:function(){if(!this._scratch_root_buffer){const maxScratchRoots=8192;this._scratch_root_buffer=this.mono_wasm_new_root_buffer(maxScratchRoots,"js roots");this._scratch_root_free_indices=new Int32Array(maxScratchRoots);this._scratch_root_free_indices_count=maxScratchRoots;for(var i=0;i= 1");capacity=capacity|0;var capacityBytes=capacity*4;var offset=Module._malloc(capacityBytes);if(offset%4!==0)throw new Error("Malloc returned an unaligned offset");this._zero_region(offset,capacityBytes);var result=Object.create(this._mono_wasm_root_buffer_prototype);result.__offset=offset;result.__offset32=offset/4|0;result.__count=capacity;result.length=capacity;result.__handle=this.mono_wasm_register_root(offset,capacityBytes,msg||0);result.__ownsAllocation=true;return result},mono_wasm_new_root_buffer_from_pointer:function(offset,capacity,msg){if(!this.mono_wasm_register_root||!this.mono_wasm_deregister_root){this.mono_wasm_register_root=Module.cwrap("mono_wasm_register_root","number",["number","number","string"]);this.mono_wasm_deregister_root=Module.cwrap("mono_wasm_deregister_root",null,["number"])}if(capacity<=0)throw new Error("capacity >= 1");capacity=capacity|0;var capacityBytes=capacity*4;if(offset%4!==0)throw new Error("Unaligned offset");this._zero_region(offset,capacityBytes);var result=Object.create(this._mono_wasm_root_buffer_prototype);result.__offset=offset;result.__offset32=offset/4|0;result.__count=capacity;result.length=capacity;result.__handle=this.mono_wasm_register_root(offset,capacityBytes,msg||0);result.__ownsAllocation=false;return result},mono_wasm_new_root:function(value){var result;if(this._scratch_root_free_instances.length>0){result=this._scratch_root_free_instances.pop()}else{var index=this._mono_wasm_claim_scratch_index();var buffer=this._scratch_root_buffer;result=Object.create(this._mono_wasm_root_prototype);result.__buffer=buffer;result.__index=index}if(value!==undefined){if(typeof value!=="number")throw new Error("value must be an address in the managed heap");result.set(value)}else{result.set(0)}return result},mono_wasm_new_roots:function(count_or_values){var result;if(Array.isArray(count_or_values)){result=new Array(count_or_values.length);for(var i=0;i0){result=new Array(count_or_values);for(var i=0;ithis._debugger_buffer_len){if(this._debugger_buffer)Module._free(this._debugger_buffer);this._debugger_buffer_len=Math.max(command_parameters.length,this._debugger_buffer_len,256);this._debugger_buffer=Module._malloc(this._debugger_buffer_len)}this._debugger_heap_bytes=new Uint8Array(Module.HEAPU8.buffer,this._debugger_buffer,this._debugger_buffer_len);this._debugger_heap_bytes.set(this._base64_to_uint8(command_parameters))},mono_wasm_send_dbg_command_with_parms:function(id,command_set,command,command_parameters,length,valtype,newvalue){this.mono_wasm_malloc_and_set_debug_buffer(command_parameters);this._c_fn_table.mono_wasm_send_dbg_command_with_parms_wrapper(id,command_set,command,this._debugger_buffer,length,valtype,newvalue.toString());let{res_ok:res_ok,res:res}=MONO.commands_received.remove(id);if(!res_ok)throw new Error(`Failed on mono_wasm_invoke_method_debugger_agent_with_parms`);return res},mono_wasm_send_dbg_command:function(id,command_set,command,command_parameters){this.mono_wasm_malloc_and_set_debug_buffer(command_parameters);this._c_fn_table.mono_wasm_send_dbg_command_wrapper(id,command_set,command,this._debugger_buffer,command_parameters.length);let{res_ok:res_ok,res:res}=MONO.commands_received.remove(id);if(!res_ok)throw new Error(`Failed on mono_wasm_send_dbg_command`);return res},mono_wasm_get_dbg_command_info:function(){let{res_ok:res_ok,res:res}=MONO.commands_received.remove(0);if(!res_ok)throw new Error(`Failed on mono_wasm_get_dbg_command_info`);return res},_get_cfo_res_details:function(objectId,args){if(!(objectId in this._call_function_res_cache))throw new Error(`Could not find any object with id ${objectId}`);const real_obj=this._call_function_res_cache[objectId];const descriptors=Object.getOwnPropertyDescriptors(real_obj);if(args.accessorPropertiesOnly){Object.keys(descriptors).forEach(k=>{if(descriptors[k].get===undefined)Reflect.deleteProperty(descriptors,k)})}let res_details=[];Object.keys(descriptors).forEach(k=>{let new_obj;let prop_desc=descriptors[k];if(typeof prop_desc.value=="object"){new_obj=Object.assign({name:k},prop_desc)}else if(prop_desc.value!==undefined){new_obj={name:k,value:Object.assign({type:typeof prop_desc.value,description:""+prop_desc.value},prop_desc)}}else if(prop_desc.get!==undefined){new_obj={name:k,get:{className:"Function",description:`get ${k} () {}`,type:"function"}}}else{new_obj={name:k,value:{type:"symbol",value:"",description:""}}}res_details.push(new_obj)});return{__value_as_json_string__:JSON.stringify(res_details)}},mono_wasm_get_details:function(objectId,args={}){return this._get_cfo_res_details(`dotnet:cfo_res:${objectId}`,args)},_cache_call_function_res:function(obj){const id=`dotnet:cfo_res:${this._next_call_function_res_id++}`;this._call_function_res_cache[id]=obj;return id},mono_wasm_release_object:function(objectId){if(objectId in this._cache_call_function_res)delete this._cache_call_function_res[objectId]},_create_proxy_from_object_id:function(objectId,details){if(objectId.startsWith("dotnet:array:")){if(details.items===undefined){const ret=details.map(p=>p.value);return ret}if(details.dimensionsDetails==undefined||details.dimensionsDetails.length==1){const ret=details.items.map(p=>p.value);return ret}}let proxy={};Object.keys(details).forEach(p=>{var prop=details[p];if(prop.get!==undefined){Object.defineProperty(proxy,prop.name,{get(){return MONO.mono_wasm_send_dbg_command(prop.get.id,prop.get.commandSet,prop.get.command,prop.get.buffer,prop.get.length)},set:function(newValue){MONO.mono_wasm_send_dbg_command_with_parms(prop.set.id,prop.set.commandSet,prop.set.command,prop.set.buffer,prop.set.length,prop.set.valtype,newValue);return true}})}else if(prop.set!==undefined){Object.defineProperty(proxy,prop.name,{get(){return prop.value},set:function(newValue){MONO.mono_wasm_send_dbg_command_with_parms(prop.set.id,prop.set.commandSet,prop.set.command,prop.set.buffer,prop.set.length,prop.set.valtype,newValue);return true}})}else{proxy[prop.name]=prop.value}});return proxy},mono_wasm_call_function_on:function(request){if(request.arguments!=undefined&&!Array.isArray(request.arguments))throw new Error(`"arguments" should be an array, but was ${request.arguments}`);const objId=request.objectId;const details=request.details;let proxy;if(objId.startsWith("dotnet:cfo_res:")){if(objId in this._call_function_res_cache)proxy=this._call_function_res_cache[objId];else throw new Error(`Unknown object id ${objId}`)}else{proxy=this._create_proxy_from_object_id(objId,details)}const fn_args=request.arguments!=undefined?request.arguments.map(a=>JSON.stringify(a.value)):[];const fn_eval_str=`var fn = ${request.functionDeclaration}; fn.call (proxy, ...[${fn_args}]);`;const fn_res=eval(fn_eval_str);if(fn_res===undefined)return{type:"undefined"};if(Object(fn_res)!==fn_res){if(typeof fn_res=="object"&&fn_res==null)return{type:typeof fn_res,subtype:`${fn_res}`,value:null};return{type:typeof fn_res,description:`${fn_res}`,value:`${fn_res}`}}if(request.returnByValue&&fn_res.subtype==undefined)return{type:"object",value:fn_res};if(Object.getPrototypeOf(fn_res)==Array.prototype){const fn_res_id=this._cache_call_function_res(fn_res);return{type:"object",subtype:"array",className:"Array",description:`Array(${fn_res.length})`,objectId:fn_res_id}}if(fn_res.value!==undefined||fn_res.subtype!==undefined){return fn_res}if(fn_res==proxy)return{type:"object",className:"Object",description:"Object",objectId:objId};const fn_res_id=this._cache_call_function_res(fn_res);return{type:"object",className:"Object",description:"Object",objectId:fn_res_id}},_clear_per_step_state:function(){this._next_id_var=0;this._id_table={}},mono_wasm_debugger_resume:function(){this._clear_per_step_state()},mono_wasm_detach_debugger:function(){if(!this.mono_wasm_set_is_debugger_attached)this.mono_wasm_set_is_debugger_attached=Module.cwrap("mono_wasm_set_is_debugger_attached","void",["bool"]);this.mono_wasm_set_is_debugger_attached(false)},_register_c_fn:function(name,...args){Object.defineProperty(this._c_fn_table,name+"_wrapper",{value:Module.cwrap(name,...args)})},_register_c_var_fn:function(name,ret_type,params){if(ret_type!=="bool")throw new Error(`Bug: Expected a C function signature that returns bool`);this._register_c_fn(name,ret_type,params);Object.defineProperty(this,name+"_info",{value:function(...args){MONO.var_info=[];const res_ok=MONO._c_fn_table[name+"_wrapper"](...args);let res=MONO.var_info;MONO.var_info=[];if(res_ok){res=this._fixup_name_value_objects(res);return{res_ok:res_ok,res:res}}return{res_ok:res_ok,res:undefined}}})},mono_wasm_runtime_ready:function(){MONO.commands_received=new Map;MONO.commands_received.remove=function(key){const value=this.get(key);this.delete(key);return value};this.mono_wasm_runtime_is_ready=true;this._clear_per_step_state();this._next_call_function_res_id=0;this._call_function_res_cache={};this._c_fn_table={};this._register_c_fn("mono_wasm_send_dbg_command","bool",["number","number","number","number","number"]);this._register_c_fn("mono_wasm_send_dbg_command_with_parms","bool",["number","number","number","number","number","number","string"]);this._debugger_buffer_len=-1;if(globalThis.dotnetDebugger)debugger;else console.debug("mono_wasm_runtime_ready","fe00e07a-5519-4dfe-b35a-f867dbaf2e28")},mono_wasm_setenv:function(name,value){if(!this.wasm_setenv)this.wasm_setenv=Module.cwrap("mono_wasm_setenv",null,["string","string"]);this.wasm_setenv(name,value)},mono_wasm_set_runtime_options:function(options){if(!this.wasm_parse_runtime_options)this.wasm_parse_runtime_options=Module.cwrap("mono_wasm_parse_runtime_options",null,["number","number"]);var argv=Module._malloc(options.length*4);var wasm_strdup=Module.cwrap("mono_wasm_strdup","number",["string"]);let aindex=0;for(var i=0;i0?virtualName.substr(0,lastSlash):null;var fileName=lastSlash>0?virtualName.substr(lastSlash+1):virtualName;if(fileName.startsWith("/"))fileName=fileName.substr(1);if(parentDirectory){if(ctx.tracing)console.log("MONO_WASM: Creating directory '"+parentDirectory+"'");var pathRet=ctx.createPath("/",parentDirectory,true,true)}else{parentDirectory="/"}if(ctx.tracing)console.log("MONO_WASM: Creating file '"+fileName+"' in directory '"+parentDirectory+"'");if(!this.mono_wasm_load_data_archive(bytes,parentDirectory)){var fileRet=ctx.createDataFile(parentDirectory,fileName,bytes,true,true,true)}break;default:throw new Error("Unrecognized asset behavior:",asset.behavior,"for asset",asset.name)}if(asset.behavior==="assembly"){var hasPpdb=ctx.mono_wasm_add_assembly(virtualName,offset,bytes.length);if(!hasPpdb){var index=ctx.loaded_files.findIndex(element=>element.file==virtualName);ctx.loaded_files.splice(index,1)}}else if(asset.behavior==="icu"){if(this.mono_wasm_load_icu_data(offset))ctx.num_icu_assets_loaded_successfully+=1;else console.error("Error loading ICU asset",asset.name)}else if(asset.behavior==="resource"){ctx.mono_wasm_add_satellite_assembly(virtualName,asset.culture,offset,bytes.length)}},mono_load_runtime_and_bcl:function(unused_vfs_prefix,deploy_prefix,debug_level,file_list,loaded_cb,fetch_file_cb){var args={fetch_file_cb:fetch_file_cb,loaded_cb:loaded_cb,debug_level:debug_level,assembly_root:deploy_prefix,assets:[]};for(var i=0;iloaded_files_with_debug_info.push(value.url));MONO.loaded_files=loaded_files_with_debug_info;if(ctx.tracing){console.log("MONO_WASM: loaded_assets: "+JSON.stringify(ctx.loaded_assets));console.log("MONO_WASM: loaded_files: "+JSON.stringify(ctx.loaded_files))}var load_runtime=Module.cwrap("mono_wasm_load_runtime",null,["string","number"]);console.debug("MONO_WASM: Initializing mono runtime");this.mono_wasm_globalization_init(args.globalization_mode);if(ENVIRONMENT_IS_SHELL||ENVIRONMENT_IS_NODE){try{load_runtime("unused",args.debug_level)}catch(ex){print("MONO_WASM: load_runtime () failed: "+ex);print("MONO_WASM: Stacktrace: \n");print(ex.stack);var wasm_exit=Module.cwrap("mono_wasm_exit",null,["number"]);wasm_exit(1)}}else{load_runtime("unused",args.debug_level)}let tz;try{tz=Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}MONO.mono_wasm_setenv("TZ",tz||"UTC");MONO.mono_wasm_runtime_ready();args.loaded_cb()},_load_assets_and_runtime:function(args){if(args.enable_debugging)args.debug_level=args.enable_debugging;if(args.assembly_list)throw new Error("Invalid args (assembly_list was replaced by assets)");if(args.runtime_assets)throw new Error("Invalid args (runtime_assets was replaced by assets)");if(args.runtime_asset_sources)throw new Error("Invalid args (runtime_asset_sources was replaced by remote_sources)");if(!args.loaded_cb)throw new Error("loaded_cb not provided");var ctx={tracing:args.diagnostic_tracing||false,pending_count:args.assets.length,mono_wasm_add_assembly:Module.cwrap("mono_wasm_add_assembly","number",["string","number","number"]),mono_wasm_add_satellite_assembly:Module.cwrap("mono_wasm_add_satellite_assembly","void",["string","string","number","number"]),loaded_assets:Object.create(null),loaded_files:[],createPath:Module["FS_createPath"],createDataFile:Module["FS_createDataFile"]};if(ctx.tracing)console.log("mono_wasm_load_runtime_with_args",JSON.stringify(args));this._apply_configuration_from_args(args);var fetch_file_cb=this._get_fetch_file_cb_from_args(args);var onPendingRequestComplete=function(){--ctx.pending_count;if(ctx.pending_count===0){try{MONO._finalize_startup(args,ctx)}catch(exc){console.error("Unhandled exception in _finalize_startup",exc);throw exc}}};var processFetchResponseBuffer=function(asset,url,blob){try{MONO._handle_loaded_asset(ctx,asset,url,blob)}catch(exc){console.error("Unhandled exception in processFetchResponseBuffer",exc);throw exc}finally{onPendingRequestComplete()}};args.assets.forEach(function(asset){var attemptNextSource;var sourceIndex=0;var sourcesList=asset.load_remote?args.remote_sources:[""];var handleFetchResponse=function(response){if(!response.ok){try{attemptNextSource();return}catch(exc){console.error("MONO_WASM: Unhandled exception in handleFetchResponse attemptNextSource for asset",asset.name,exc);throw exc}}try{var bufferPromise=response["arrayBuffer"]();bufferPromise.then(processFetchResponseBuffer.bind(this,asset,response.url))}catch(exc){console.error("MONO_WASM: Unhandled exception in handleFetchResponse for asset",asset.name,exc);attemptNextSource()}};attemptNextSource=function(){if(sourceIndex>=sourcesList.length){var msg="MONO_WASM: Failed to load "+asset.name;try{var isOk=asset.is_optional||asset.name.match(/\.pdb$/)&&MONO.mono_wasm_ignore_pdb_load_errors;if(isOk)console.debug(msg);else{console.error(msg);throw new Error(msg)}}finally{onPendingRequestComplete()}}var sourcePrefix=sourcesList[sourceIndex];sourceIndex++;if(sourcePrefix==="./")sourcePrefix="";var attemptUrl;if(sourcePrefix.trim()===""){if(asset.behavior==="assembly")attemptUrl=locateFile(args.assembly_root+"/"+asset.name);else if(asset.behavior==="resource"){var path=asset.culture!==""?`${asset.culture}/${asset.name}`:asset.name;attemptUrl=locateFile(args.assembly_root+"/"+path)}else attemptUrl=asset.name}else{attemptUrl=sourcePrefix+asset.name}try{if(asset.name===attemptUrl){if(ctx.tracing)console.log("Attempting to fetch '%s'",attemptUrl)}else{if(ctx.tracing)console.log("Attempting to fetch '%s' for '%s'",attemptUrl,asset.name)}var fetch_promise=fetch_file_cb(attemptUrl);fetch_promise.then(handleFetchResponse)}catch(exc){console.error("MONO_WASM: Error fetching '%s'\n%s",attemptUrl,exc);attemptNextSource()}};attemptNextSource()})},mono_wasm_globalization_init:function(globalization_mode){var invariantMode=false;if(globalization_mode==="invariant")invariantMode=true;if(!invariantMode){if(this.num_icu_assets_loaded_successfully>0){console.debug("MONO_WASM: ICU data archive(s) loaded, disabling invariant mode")}else if(globalization_mode!=="icu"){console.debug("MONO_WASM: ICU data archive(s) not loaded, using invariant globalization mode");invariantMode=true}else{var msg="invariant globalization mode is inactive and no ICU data archives were loaded";console.error("MONO_WASM: ERROR: "+msg);throw new Error(msg)}}if(invariantMode)this.mono_wasm_setenv("DOTNET_SYSTEM_GLOBALIZATION_INVARIANT","1");this.mono_wasm_setenv("DOTNET_SYSTEM_GLOBALIZATION_PREDEFINED_CULTURES_ONLY","1")},mono_wasm_get_loaded_files:function(){if(!this.mono_wasm_set_is_debugger_attached)this.mono_wasm_set_is_debugger_attached=Module.cwrap("mono_wasm_set_is_debugger_attached","void",["bool"]);this.mono_wasm_set_is_debugger_attached(true);return MONO.loaded_files},mono_wasm_get_loaded_asset_table:function(){return MONO.loaded_assets},_base64_to_uint8:function(base64String){const byteCharacters=atob(base64String);const byteNumbers=new Array(byteCharacters.length);for(let i=0;i{var file=m[0];var last=file.lastIndexOf("/");var directory=file.slice(0,last+1);folders.add(directory)});folders.forEach(folder=>{Module["FS_createPath"](prefix,folder,true,true)});for(row of manifest){var name=row[0];var length=row[1];var bytes=data.slice(0,length);Module["FS_createDataFile"](prefix,name,bytes,true,true);data=data.slice(length)}return true},mono_wasm_raise_debug_event:function(event,args={}){if(typeof event!=="object")throw new Error(`event must be an object, but got ${JSON.stringify(event)}`);if(event.eventName===undefined)throw new Error(`event.eventName is a required parameter, in event: ${JSON.stringify(event)}`);if(typeof args!=="object")throw new Error(`args must be an object, but got ${JSON.stringify(args)}`);console.debug("mono_wasm_debug_event_raised:aef14bca-5519-4dfe-b35a-f867abc123ae",JSON.stringify(event),JSON.stringify(args))},mono_wasm_load_config:async function(configFilePath){Module.addRunDependency(configFilePath);try{let config=null;if(ENVIRONMENT_IS_WEB){const configRaw=await fetch(configFilePath);config=await configRaw.json()}else if(ENVIRONMENT_IS_NODE){config=require(configFilePath)}else{config=JSON.parse(read(configFilePath))}Module.config=config}catch(e){Module.config={message:"failed to load config file",error:e}}finally{Module.removeRunDependency(configFilePath)}},mono_wasm_set_timeout_exec:function(id){if(!this.mono_set_timeout_exec)this.mono_set_timeout_exec=Module.cwrap("mono_set_timeout_exec",null,["number"]);this.mono_set_timeout_exec(id)},prevent_timer_throttling:function(){let now=(new Date).valueOf();const desired_reach_time=now+1e3*60*6;const next_reach_time=Math.max(now+1e3,this.spread_timers_maximum);const light_throttling_frequency=1e3;for(var schedule=next_reach_time;schedule{this.mono_wasm_set_timeout_exec(0);MONO.pump_count++;MONO.pump_message()},delay)}this.spread_timers_maximum=desired_reach_time}};function _mono_set_timeout(timeout,id){if(typeof globalThis.setTimeout==="function"){if(MONO.lastScheduleTimeoutId){globalThis.clearTimeout(MONO.lastScheduleTimeoutId);MONO.lastScheduleTimeoutId=undefined}MONO.lastScheduleTimeoutId=globalThis.setTimeout(function mono_wasm_set_timeout_exec(){MONO.mono_wasm_set_timeout_exec(id)},timeout)}else{++MONO.pump_count;MONO.timeout_queue.push(function(){MONO.mono_wasm_set_timeout_exec(id)})}}var BINDING={BINDING_ASM:"[System.Private.Runtime.InteropServices.JavaScript]System.Runtime.InteropServices.JavaScript.Runtime",_cs_owned_objects_by_js_handle:[],_js_handle_free_list:[],_next_js_handle:1,mono_wasm_marshal_enum_as_int:true,mono_bindings_init:function(binding_asm){this.BINDING_ASM=binding_asm},export_functions:function(module){module["mono_bindings_init"]=BINDING.mono_bindings_init.bind(BINDING);module["mono_bind_method"]=BINDING.bind_method.bind(BINDING);module["mono_method_invoke"]=BINDING.call_method.bind(BINDING);module["mono_method_get_call_signature"]=BINDING.mono_method_get_call_signature.bind(BINDING);module["mono_method_resolve"]=BINDING.resolve_method_fqn.bind(BINDING);module["mono_bind_static_method"]=BINDING.bind_static_method.bind(BINDING);module["mono_call_static_method"]=BINDING.call_static_method.bind(BINDING);module["mono_bind_assembly_entry_point"]=BINDING.bind_assembly_entry_point.bind(BINDING);module["mono_call_assembly_entry_point"]=BINDING.call_assembly_entry_point.bind(BINDING);module["mono_intern_string"]=BINDING.mono_intern_string.bind(BINDING)},bindings_lazy_init:function(){if(this.init)return;this.init=true;this.wasm_type_symbol=Symbol.for("wasm type");this.js_owned_gc_handle_symbol=Symbol.for("wasm js_owned_gc_handle");this.cs_owned_js_handle_symbol=Symbol.for("wasm cs_owned_js_handle");this.delegate_invoke_symbol=Symbol.for("wasm delegate_invoke");this.delegate_invoke_signature_symbol=Symbol.for("wasm delegate_invoke_signature");this.listener_registration_count_symbol=Symbol.for("wasm listener_registration_count");Object.prototype[this.wasm_type_symbol]=0;Array.prototype[this.wasm_type_symbol]=1;ArrayBuffer.prototype[this.wasm_type_symbol]=2;DataView.prototype[this.wasm_type_symbol]=3;Function.prototype[this.wasm_type_symbol]=4;Map.prototype[this.wasm_type_symbol]=5;if(typeof SharedArrayBuffer!=="undefined")SharedArrayBuffer.prototype[this.wasm_type_symbol]=6;Int8Array.prototype[this.wasm_type_symbol]=10;Uint8Array.prototype[this.wasm_type_symbol]=11;Uint8ClampedArray.prototype[this.wasm_type_symbol]=12;Int16Array.prototype[this.wasm_type_symbol]=13;Uint16Array.prototype[this.wasm_type_symbol]=14;Int32Array.prototype[this.wasm_type_symbol]=15;Uint32Array.prototype[this.wasm_type_symbol]=16;Float32Array.prototype[this.wasm_type_symbol]=17;Float64Array.prototype[this.wasm_type_symbol]=18;this.assembly_load=Module.cwrap("mono_wasm_assembly_load","number",["string"]);this.find_corlib_class=Module.cwrap("mono_wasm_find_corlib_class","number",["string","string"]);this.find_class=Module.cwrap("mono_wasm_assembly_find_class","number",["number","string","string"]);this._find_method=Module.cwrap("mono_wasm_assembly_find_method","number",["number","string","number"]);this.invoke_method=Module.cwrap("mono_wasm_invoke_method","number",["number","number","number","number"]);this.mono_string_get_utf8=Module.cwrap("mono_wasm_string_get_utf8","number",["number"]);this.mono_wasm_string_from_utf16=Module.cwrap("mono_wasm_string_from_utf16","number",["number","number"]);this.mono_get_obj_type=Module.cwrap("mono_wasm_get_obj_type","number",["number"]);this.mono_array_length=Module.cwrap("mono_wasm_array_length","number",["number"]);this.mono_array_get=Module.cwrap("mono_wasm_array_get","number",["number","number"]);this.mono_obj_array_new=Module.cwrap("mono_wasm_obj_array_new","number",["number"]);this.mono_obj_array_set=Module.cwrap("mono_wasm_obj_array_set","void",["number","number","number"]);this.mono_wasm_register_bundled_satellite_assemblies=Module.cwrap("mono_wasm_register_bundled_satellite_assemblies","void",[]);this.mono_wasm_try_unbox_primitive_and_get_type=Module.cwrap("mono_wasm_try_unbox_primitive_and_get_type","number",["number","number"]);this.mono_wasm_box_primitive=Module.cwrap("mono_wasm_box_primitive","number",["number","number","number"]);this.mono_wasm_intern_string=Module.cwrap("mono_wasm_intern_string","number",["number"]);this.assembly_get_entry_point=Module.cwrap("mono_wasm_assembly_get_entry_point","number",["number"]);this.mono_wasm_get_delegate_invoke=Module.cwrap("mono_wasm_get_delegate_invoke","number",["number"]);this.mono_wasm_string_array_new=Module.cwrap("mono_wasm_string_array_new","number",["number"]);this._box_buffer=Module._malloc(16);this._unbox_buffer=Module._malloc(16);this._class_int32=this.find_corlib_class("System","Int32");this._class_uint32=this.find_corlib_class("System","UInt32");this._class_double=this.find_corlib_class("System","Double");this._class_boolean=this.find_corlib_class("System","Boolean");this.mono_typed_array_new=Module.cwrap("mono_wasm_typed_array_new","number",["number","number","number","number"]);var binding_fqn_asm=this.BINDING_ASM.substring(this.BINDING_ASM.indexOf("[")+1,this.BINDING_ASM.indexOf("]")).trim();var binding_fqn_class=this.BINDING_ASM.substring(this.BINDING_ASM.indexOf("]")+1).trim();this.binding_module=this.assembly_load(binding_fqn_asm);if(!this.binding_module)throw"Can't find bindings module assembly: "+binding_fqn_asm;var namespace=null,classname=null;if(binding_fqn_class!==null&&typeof binding_fqn_class!=="undefined"){namespace="System.Runtime.InteropServices.JavaScript";classname=binding_fqn_class.length>0?binding_fqn_class:"Runtime";if(binding_fqn_class.indexOf(".")!=-1){var idx=binding_fqn_class.lastIndexOf(".");namespace=binding_fqn_class.substring(0,idx);classname=binding_fqn_class.substring(idx+1)}}var wasm_runtime_class=this.find_class(this.binding_module,namespace,classname);if(!wasm_runtime_class)throw"Can't find "+binding_fqn_class+" class";var get_method=function(method_name){var res=BINDING.find_method(wasm_runtime_class,method_name,-1);if(!res)throw"Can't find method "+namespace+"."+classname+":"+method_name;return res};var bind_runtime_method=function(method_name,signature){var method=get_method(method_name);return BINDING.bind_method(method,0,signature,"BINDINGS_"+method_name)};this.get_call_sig=get_method("GetCallSignature");this._get_cs_owned_object_by_js_handle=bind_runtime_method("GetCSOwnedObjectByJSHandle","ii!");this._get_cs_owned_object_js_handle=bind_runtime_method("GetCSOwnedObjectJSHandle","mi");this._try_get_cs_owned_object_js_handle=bind_runtime_method("TryGetCSOwnedObjectJSHandle","mi");this._create_cs_owned_proxy=bind_runtime_method("CreateCSOwnedProxy","iii!");this._get_js_owned_object_by_gc_handle=bind_runtime_method("GetJSOwnedObjectByGCHandle","i!");this._get_js_owned_object_gc_handle=bind_runtime_method("GetJSOwnedObjectGCHandle","m");this._release_js_owned_object_by_gc_handle=bind_runtime_method("ReleaseJSOwnedObjectByGCHandle","i");this._create_tcs=bind_runtime_method("CreateTaskSource","");this._set_tcs_result=bind_runtime_method("SetTaskSourceResult","io");this._set_tcs_failure=bind_runtime_method("SetTaskSourceFailure","is");this._get_tcs_task=bind_runtime_method("GetTaskSourceTask","i!");this._setup_js_cont=bind_runtime_method("SetupJSContinuation","mo");this._object_to_string=bind_runtime_method("ObjectToString","m");this._get_date_value=bind_runtime_method("GetDateValue","m");this._create_date_time=bind_runtime_method("CreateDateTime","d!");this._create_uri=bind_runtime_method("CreateUri","s!");this._is_simple_array=bind_runtime_method("IsSimpleArray","m");this._are_promises_supported=(typeof Promise==="object"||typeof Promise==="function")&&typeof Promise.resolve==="function";this.isThenable=(js_obj=>{return Promise.resolve(js_obj)===js_obj||(typeof js_obj==="object"||typeof js_obj==="function")&&typeof js_obj.then==="function"});this.isChromium=false;if(globalThis.navigator){var nav=globalThis.navigator;if(nav.userAgentData&&nav.userAgentData.brands){this.isChromium=nav.userAgentData.brands.some(i=>i.brand=="Chromium")}else if(globalThis.navigator.userAgent){this.isChromium=nav.userAgent.includes("Chrome")}}this._empty_string="";this._empty_string_ptr=0;this._interned_string_full_root_buffers=[];this._interned_string_current_root_buffer=null;this._interned_string_current_root_buffer_count=0;this._interned_js_string_table=new Map;this._js_owned_object_table=new Map;this._use_finalization_registry=typeof globalThis.FinalizationRegistry==="function";this._use_weak_ref=typeof globalThis.WeakRef==="function";if(this._use_finalization_registry){this._js_owned_object_registry=new globalThis.FinalizationRegistry(this._js_owned_object_finalized.bind(this))}},_js_owned_object_finalized:function(gc_handle){this._js_owned_object_table.delete(gc_handle);this._release_js_owned_object_by_gc_handle(gc_handle)},_lookup_js_owned_object:function(gc_handle){if(!gc_handle)return null;var wr=this._js_owned_object_table.get(gc_handle);if(wr){return wr.deref()}return null},_register_js_owned_object:function(gc_handle,js_obj){var wr;if(this._use_weak_ref){wr=new WeakRef(js_obj)}else{wr={deref:()=>{return js_obj}}}this._js_owned_object_table.set(gc_handle,wr)},_wrap_js_thenable_as_task:function(thenable){this.bindings_lazy_init();if(!thenable)return null;var thenable_js_handle=BINDING.mono_wasm_get_js_handle(thenable);const tcs_gc_handle=this._create_tcs();thenable.then(result=>{this._set_tcs_result(tcs_gc_handle,result);this._mono_wasm_release_js_handle(thenable_js_handle);if(!this._use_finalization_registry){this._release_js_owned_object_by_gc_handle(tcs_gc_handle)}},reason=>{this._set_tcs_failure(tcs_gc_handle,reason?reason.toString():"");this._mono_wasm_release_js_handle(thenable_js_handle);if(!this._use_finalization_registry){this._release_js_owned_object_by_gc_handle(tcs_gc_handle)}});if(this._use_finalization_registry){this._js_owned_object_registry.register(thenable,tcs_gc_handle)}return this._get_tcs_task(tcs_gc_handle)},_unbox_task_root_as_promise:function(root){this.bindings_lazy_init();const self=this;if(root.value===0)return null;if(!this._are_promises_supported)throw new Error("Promises are not supported thus 'System.Threading.Tasks.Task' can not work in this context.");const gc_handle=this._get_js_owned_object_gc_handle(root.value);var result=this._lookup_js_owned_object(gc_handle);if(!result){var cont_obj=null;var result=new Promise(function(resolve,reject){if(self._use_finalization_registry){cont_obj={resolve:resolve,reject:reject}}else{cont_obj={resolve:function(){const res=resolve.apply(null,arguments);self._js_owned_object_table.delete(gc_handle);self._release_js_owned_object_by_gc_handle(gc_handle);return res},reject:function(){const res=reject.apply(null,arguments);self._js_owned_object_table.delete(gc_handle);self._release_js_owned_object_by_gc_handle(gc_handle);return res}}}});this._setup_js_cont(root.value,cont_obj);if(this._use_finalization_registry){this._js_owned_object_registry.register(result,gc_handle)}this._register_js_owned_object(gc_handle,result)}return result},_unbox_ref_type_root_as_js_object:function(root){this.bindings_lazy_init();if(root.value===0)return null;var js_handle=this._try_get_cs_owned_object_js_handle(root.value,false);if(js_handle){if(js_handle===-1){throw new Error("Cannot access a disposed JSObject at "+root.value)}return this.mono_wasm_get_jsobj_from_js_handle(js_handle)}const gc_handle=this._get_js_owned_object_gc_handle(root.value);var result=this._lookup_js_owned_object(gc_handle);if(!result){result={};result[BINDING.js_owned_gc_handle_symbol]=gc_handle;if(this._use_finalization_registry){this._js_owned_object_registry.register(result,gc_handle)}this._register_js_owned_object(gc_handle,result)}return result},_wrap_delegate_root_as_function:function(root){this.bindings_lazy_init();if(root.value===0)return null;const gc_handle=this._get_js_owned_object_gc_handle(root.value);return this._wrap_delegate_gc_handle_as_function(gc_handle)},_wrap_delegate_gc_handle_as_function:function(gc_handle,after_listener_callback){this.bindings_lazy_init();var result=this._lookup_js_owned_object(gc_handle);if(!result){result=function(){const delegateRoot=MONO.mono_wasm_new_root(BINDING.get_js_owned_object_by_gc_handle(gc_handle));try{const res=BINDING.call_method(result[BINDING.delegate_invoke_symbol],delegateRoot.value,result[BINDING.delegate_invoke_signature_symbol],arguments);if(after_listener_callback){after_listener_callback()}return res}finally{delegateRoot.release()}};const delegateRoot=MONO.mono_wasm_new_root(BINDING.get_js_owned_object_by_gc_handle(gc_handle));try{if(typeof result[BINDING.delegate_invoke_symbol]==="undefined"){result[BINDING.delegate_invoke_symbol]=BINDING.mono_wasm_get_delegate_invoke(delegateRoot.value);if(!result[BINDING.delegate_invoke_symbol]){throw new Error("System.Delegate Invoke method can not be resolved.")}}if(typeof result[BINDING.delegate_invoke_signature_symbol]==="undefined"){result[BINDING.delegate_invoke_signature_symbol]=Module.mono_method_get_call_signature(result[BINDING.delegate_invoke_symbol],delegateRoot.value)}}finally{delegateRoot.release()}if(this._use_finalization_registry){this._js_owned_object_registry.register(result,gc_handle)}this._register_js_owned_object(gc_handle,result)}return result},mono_intern_string:function(string){if(string.length===0)return this._empty_string;var ptr=this.js_string_to_mono_string_interned(string);var result=MONO.interned_string_table.get(ptr);return result},_store_string_in_intern_table:function(string,ptr,internIt){if(!ptr)throw new Error("null pointer passed to _store_string_in_intern_table");else if(typeof ptr!=="number")throw new Error(`non-pointer passed to _store_string_in_intern_table: ${typeof ptr}`);const internBufferSize=8192;if(this._interned_string_current_root_buffer_count>=internBufferSize){this._interned_string_full_root_buffers.push(this._interned_string_current_root_buffer);this._interned_string_current_root_buffer=null}if(!this._interned_string_current_root_buffer){this._interned_string_current_root_buffer=MONO.mono_wasm_new_root_buffer(internBufferSize,"interned strings");this._interned_string_current_root_buffer_count=0}var rootBuffer=this._interned_string_current_root_buffer;var index=this._interned_string_current_root_buffer_count++;rootBuffer.set(index,ptr);if(internIt)rootBuffer.set(index,ptr=this.mono_wasm_intern_string(ptr));if(!ptr)throw new Error("mono_wasm_intern_string produced a null pointer");this._interned_js_string_table.set(string,ptr);if(!MONO.interned_string_table)MONO.interned_string_table=new Map;MONO.interned_string_table.set(ptr,string);if(string.length===0&&!this._empty_string_ptr)this._empty_string_ptr=ptr;return ptr},js_string_to_mono_string_interned:function(string){var text=typeof string==="symbol"?string.description||Symbol.keyFor(string)||"":string;if(text.length===0&&this._empty_string_ptr)return this._empty_string_ptr;var ptr=this._interned_js_string_table.get(string);if(ptr)return ptr;ptr=this.js_string_to_mono_string_new(text);ptr=this._store_string_in_intern_table(string,ptr,true);return ptr},js_string_to_mono_string:function(string){if(string===null)return null;else if(typeof string==="symbol")return this.js_string_to_mono_string_interned(string);else if(typeof string!=="string")throw new Error("Expected string argument, got "+typeof string);if(string.length===0)return this.js_string_to_mono_string_interned(string);if(string.length<=256){var interned=this._interned_js_string_table.get(string);if(interned)return interned}return this.js_string_to_mono_string_new(string)},js_string_to_mono_string_new:function(string){var buffer=Module._malloc((string.length+1)*2);var buffer16=buffer/2|0;for(var i=0;i0)return this.mono_wasm_get_jsobj_from_js_handle(js_handle);return null},_get_string_from_intern_table:function(mono_obj){if(!MONO.interned_string_table)return undefined;return MONO.interned_string_table.get(mono_obj)},conv_string:function(mono_obj){return MONO.string_decoder.copy(mono_obj)},is_nested_array:function(ele){return this._is_simple_array(ele)},mono_array_to_js_array:function(mono_array){if(mono_array===0)return null;var arrayRoot=MONO.mono_wasm_new_root(mono_array);try{return this._mono_array_root_to_js_array(arrayRoot)}finally{arrayRoot.release()}},_mono_array_root_to_js_array:function(arrayRoot){if(arrayRoot.value===0)return null;let elemRoot=MONO.mono_wasm_new_root();try{var len=this.mono_array_length(arrayRoot.value);var res=new Array(len);for(var i=0;i>>0===js_obj)result=this._box_js_uint(js_obj);else result=this._box_js_double(js_obj);if(!result)throw new Error(`Boxing failed for ${js_obj}`);return result}case typeof js_obj==="string":return this.js_string_to_mono_string(js_obj);case typeof js_obj==="symbol":return this.js_string_to_mono_string_interned(js_obj);case typeof js_obj==="boolean":return this._box_js_bool(js_obj);case this.isThenable(js_obj)===true:return this._wrap_js_thenable_as_task(js_obj);case js_obj.constructor.name==="Date":return this._create_date_time(js_obj.getTime());default:return this._extract_mono_obj(should_add_in_flight,js_obj)}},_extract_mono_obj:function(should_add_in_flight,js_obj){if(js_obj===null||typeof js_obj==="undefined")return 0;var result=null;if(js_obj[BINDING.js_owned_gc_handle_symbol]){result=this.get_js_owned_object_by_gc_handle(js_obj[BINDING.js_owned_gc_handle_symbol]);return result}if(js_obj[BINDING.cs_owned_js_handle_symbol]){result=this.get_cs_owned_object_by_js_handle(js_obj[BINDING.cs_owned_js_handle_symbol],should_add_in_flight);if(!result){delete js_obj[BINDING.cs_owned_js_handle_symbol]}}if(!result){const wasm_type=js_obj[this.wasm_type_symbol];const wasm_type_id=typeof wasm_type==="undefined"?0:wasm_type;var js_handle=BINDING.mono_wasm_get_js_handle(js_obj);result=this._create_cs_owned_proxy(js_handle,wasm_type_id,should_add_in_flight)}return result},has_backing_array_buffer:function(js_obj){return typeof SharedArrayBuffer!=="undefined"?js_obj.buffer instanceof ArrayBuffer||js_obj.buffer instanceof SharedArrayBuffer:js_obj.buffer instanceof ArrayBuffer},js_typed_array_to_array:function(js_obj){if(!!(this.has_backing_array_buffer(js_obj)&&js_obj.BYTES_PER_ELEMENT)){var arrayType=js_obj[this.wasm_type_symbol];var heapBytes=this.js_typedarray_to_heap(js_obj);var bufferArray=this.mono_typed_array_new(heapBytes.byteOffset,js_obj.length,js_obj.BYTES_PER_ELEMENT,arrayType);Module._free(heapBytes.byteOffset);return bufferArray}else{throw new Error("Object '"+js_obj+"' is not a typed array")}},typedarray_copy_to:function(typed_array,pinned_array,begin,end,bytes_per_element){if(!!(this.has_backing_array_buffer(typed_array)&&typed_array.BYTES_PER_ELEMENT)){if(bytes_per_element!==typed_array.BYTES_PER_ELEMENT)throw new Error("Inconsistent element sizes: TypedArray.BYTES_PER_ELEMENT '"+typed_array.BYTES_PER_ELEMENT+"' sizeof managed element: '"+bytes_per_element+"'");var num_of_bytes=(end-begin)*bytes_per_element;var view_bytes=typed_array.length*typed_array.BYTES_PER_ELEMENT;if(num_of_bytes>view_bytes)num_of_bytes=view_bytes;var offset=begin*bytes_per_element;var heapBytes=new Uint8Array(Module.HEAPU8.buffer,pinned_array+offset,num_of_bytes);heapBytes.set(new Uint8Array(typed_array.buffer,typed_array.byteOffset,num_of_bytes));return num_of_bytes}else{throw new Error("Object '"+typed_array+"' is not a typed array")}},typedarray_copy_from:function(typed_array,pinned_array,begin,end,bytes_per_element){if(!!(this.has_backing_array_buffer(typed_array)&&typed_array.BYTES_PER_ELEMENT)){if(bytes_per_element!==typed_array.BYTES_PER_ELEMENT)throw new Error("Inconsistent element sizes: TypedArray.BYTES_PER_ELEMENT '"+typed_array.BYTES_PER_ELEMENT+"' sizeof managed element: '"+bytes_per_element+"'");var num_of_bytes=(end-begin)*bytes_per_element;var view_bytes=typed_array.length*typed_array.BYTES_PER_ELEMENT;if(num_of_bytes>view_bytes)num_of_bytes=view_bytes;var typedarrayBytes=new Uint8Array(typed_array.buffer,0,num_of_bytes);var offset=begin*bytes_per_element;typedarrayBytes.set(Module.HEAPU8.subarray(pinned_array+offset,pinned_array+offset+num_of_bytes));return num_of_bytes}else{throw new Error("Object '"+typed_array+"' is not a typed array")}},typed_array_from:function(pinned_array,begin,end,bytes_per_element,type){var newTypedArray=0;switch(type){case 5:newTypedArray=new Int8Array(end-begin);break;case 6:newTypedArray=new Uint8Array(end-begin);break;case 7:newTypedArray=new Int16Array(end-begin);break;case 8:newTypedArray=new Uint16Array(end-begin);break;case 9:newTypedArray=new Int32Array(end-begin);break;case 10:newTypedArray=new Uint32Array(end-begin);break;case 13:newTypedArray=new Float32Array(end-begin);break;case 14:newTypedArray=new Float64Array(end-begin);break;case 15:newTypedArray=new Uint8ClampedArray(end-begin);break}this.typedarray_copy_from(newTypedArray,pinned_array,begin,end,bytes_per_element);return newTypedArray},js_to_mono_enum:function(js_obj,method,parmIdx){this.bindings_lazy_init();if(typeof js_obj!=="number")throw new Error(`Expected numeric value for enum argument, got '${js_obj}'`);return js_obj|0},get_js_owned_object_by_gc_handle:function(gc_handle){if(!gc_handle){return 0}return this._get_js_owned_object_by_gc_handle(gc_handle)},get_cs_owned_object_by_js_handle:function(js_handle,should_add_in_flight){if(!js_handle){return 0}return this._get_cs_owned_object_by_js_handle(js_handle,should_add_in_flight)},mono_method_get_call_signature:function(method,mono_obj){let instanceRoot=MONO.mono_wasm_new_root(mono_obj);try{this.bindings_lazy_init();return this.call_method(this.get_call_sig,null,"im",[method,instanceRoot.value])}finally{instanceRoot.release()}},_create_named_function:function(name,argumentNames,body,closure){var result=null,closureArgumentList=null,closureArgumentNames=null;if(closure){closureArgumentNames=Object.keys(closure);closureArgumentList=new Array(closureArgumentNames.length);for(var i=0,l=closureArgumentNames.length;i0;var has_args_marshal=typeof args_marshal==="string";if(has_args){if(!has_args_marshal)throw new Error("No signature provided for method call.");else if(args.length>args_marshal.length)throw new Error("Too many parameter values. Expected at most "+args_marshal.length+" value(s) for signature "+args_marshal)}return has_args_marshal&&has_args},_get_buffer_for_method_call:function(converter){if(!converter)return 0;var result=converter.scratchBuffer;converter.scratchBuffer=0;return result},_get_args_root_buffer_for_method_call:function(converter){if(!converter)return null;if(!converter.needs_root_buffer)return null;var result;if(converter.scratchRootBuffer){result=converter.scratchRootBuffer;converter.scratchRootBuffer=null}else{result=MONO.mono_wasm_new_root_buffer(converter.steps.length);result.converter=converter}return result},_release_args_root_buffer_from_method_call:function(converter,argsRootBuffer){if(!argsRootBuffer||!converter)return;if(!converter.scratchRootBuffer){argsRootBuffer.clear();converter.scratchRootBuffer=argsRootBuffer}else{argsRootBuffer.release()}},_release_buffer_from_method_call:function(converter,buffer){if(!converter||!buffer)return;if(!converter.scratchBuffer)converter.scratchBuffer=buffer|0;else Module._free(buffer|0)},_convert_exception_for_method_call:function(result,exception){if(exception===0)return null;var msg=this.conv_string(result);var err=new Error(msg);return err},_maybe_produce_signature_warning:function(converter){if(converter.has_warned_about_signature)return;console.warn("MONO_WASM: Deprecated raw return value signature: '"+converter.args_marshal+"'. End the signature with '!' instead of 'm'.");converter.has_warned_about_signature=true},_decide_if_result_is_marshaled:function(converter,argc){if(!converter)return true;if(converter.is_result_possibly_unmarshaled&&argc===converter.result_unmarshaled_if_argc){if(argc= ",converter.result_unmarshaled_if_argc,"argument(s) but got",argc,"for signature "+converter.args_marshal].join(" "));this._maybe_produce_signature_warning(converter);return false}else{if(argc0&&Array.isArray(args[0]))args[0]=BINDING.js_array_to_mono_array(args[0],true,false);let result=BINDING.call_method(method,null,signature,args);return Promise.resolve(result)}catch(error){return Promise.reject(error)}}},call_assembly_entry_point:function(assembly,args,signature){return this.bind_assembly_entry_point(assembly,signature)(...args)},mono_wasm_get_jsobj_from_js_handle:function(js_handle){if(js_handle>0)return this._cs_owned_objects_by_js_handle[js_handle];return null},mono_wasm_get_js_handle:function(js_obj){if(js_obj[BINDING.cs_owned_js_handle_symbol]){return js_obj[BINDING.cs_owned_js_handle_symbol]}var js_handle=this._js_handle_free_list.length?this._js_handle_free_list.pop():this._next_js_handle++;this._cs_owned_objects_by_js_handle[js_handle]=js_obj;js_obj[BINDING.cs_owned_js_handle_symbol]=js_handle;return js_handle},_mono_wasm_release_js_handle:function(js_handle){var obj=BINDING._cs_owned_objects_by_js_handle[js_handle];if(typeof obj!=="undefined"&&obj!==null){if(globalThis===obj)return obj;if(typeof obj[BINDING.cs_owned_js_handle_symbol]!=="undefined"){obj[BINDING.cs_owned_js_handle_symbol]=undefined}BINDING._cs_owned_objects_by_js_handle[js_handle]=undefined;BINDING._js_handle_free_list.push(js_handle)}return obj}};function _mono_wasm_add_event_listener(objHandle,name,listener_gc_handle,optionsHandle){var nameRoot=MONO.mono_wasm_new_root(name);try{BINDING.bindings_lazy_init();var sName=BINDING.conv_string(nameRoot.value);var obj=BINDING.mono_wasm_get_jsobj_from_js_handle(objHandle);if(!obj)throw new Error("ERR09: Invalid JS object handle for '"+sName+"'");const prevent_timer_throttling=!BINDING.isChromium||obj.constructor.name!=="WebSocket"?null:()=>MONO.prevent_timer_throttling(0);var listener=BINDING._wrap_delegate_gc_handle_as_function(listener_gc_handle,prevent_timer_throttling);if(!listener)throw new Error("ERR10: Invalid listener gc_handle");var options=optionsHandle?BINDING.mono_wasm_get_jsobj_from_js_handle(optionsHandle):null;if(!BINDING._use_finalization_registry){listener[BINDING.listener_registration_count_symbol]=listener[BINDING.listener_registration_count_symbol]?listener[BINDING.listener_registration_count_symbol]+1:1}if(options)obj.addEventListener(sName,listener,options);else obj.addEventListener(sName,listener);return 0}catch(exc){return BINDING.js_string_to_mono_string(exc.message)}finally{nameRoot.release()}}function _mono_wasm_asm_loaded(assembly_name,assembly_ptr,assembly_len,pdb_ptr,pdb_len){if(MONO.mono_wasm_runtime_is_ready!==true)return;const assembly_name_str=assembly_name!==0?Module.UTF8ToString(assembly_name).concat(".dll"):"";const assembly_data=new Uint8Array(Module.HEAPU8.buffer,assembly_ptr,assembly_len);const assembly_b64=MONO._base64Converter.toBase64StringImpl(assembly_data);let pdb_b64;if(pdb_ptr){const pdb_data=new Uint8Array(Module.HEAPU8.buffer,pdb_ptr,pdb_len);pdb_b64=MONO._base64Converter.toBase64StringImpl(pdb_data)}MONO.mono_wasm_raise_debug_event({eventName:"AssemblyLoaded",assembly_name:assembly_name_str,assembly_b64:assembly_b64,pdb_b64:pdb_b64})}function _mono_wasm_create_cs_owned_object(core_name,args,is_exception){var argsRoot=MONO.mono_wasm_new_root(args),nameRoot=MONO.mono_wasm_new_root(core_name);try{BINDING.bindings_lazy_init();var js_name=BINDING.conv_string(nameRoot.value);if(!js_name){setValue(is_exception,1,"i32");return BINDING.js_string_to_mono_string("Invalid name @"+nameRoot.value)}var coreObj=globalThis[js_name];if(coreObj===null||typeof coreObj==="undefined"){setValue(is_exception,1,"i32");return BINDING.js_string_to_mono_string("JavaScript host object '"+js_name+"' not found.")}var js_args=BINDING._mono_array_root_to_js_array(argsRoot);try{var allocator=function(constructor,js_args){var argsList=new Array;argsList[0]=constructor;if(js_args)argsList=argsList.concat(js_args);var tempCtor=constructor.bind.apply(constructor,argsList);var js_obj=new tempCtor;return js_obj};var js_obj=allocator(coreObj,js_args);var js_handle=BINDING.mono_wasm_get_js_handle(js_obj);return BINDING._js_to_mono_obj(false,js_handle)}catch(e){var res=e.toString();setValue(is_exception,1,"i32");if(res===null||res===undefined)res="Error allocating object.";return BINDING.js_string_to_mono_string(res)}}finally{argsRoot.release();nameRoot.release()}}function _mono_wasm_fire_debugger_agent_message(){debugger}function _mono_wasm_get_by_index(js_handle,property_index,is_exception){BINDING.bindings_lazy_init();var obj=BINDING.mono_wasm_get_jsobj_from_js_handle(js_handle);if(!obj){setValue(is_exception,1,"i32");return BINDING.js_string_to_mono_string("ERR03: Invalid JS object handle '"+js_handle+"' while getting ["+property_index+"]")}try{var m=obj[property_index];return BINDING._js_to_mono_obj(true,m)}catch(e){var res=e.toString();setValue(is_exception,1,"i32");if(res===null||typeof res==="undefined")res="unknown exception";return BINDING.js_string_to_mono_string(res)}}function _mono_wasm_get_global_object(global_name,is_exception){var nameRoot=MONO.mono_wasm_new_root(global_name);try{BINDING.bindings_lazy_init();var js_name=BINDING.conv_string(nameRoot.value);var globalObj;if(!js_name){globalObj=globalThis}else{globalObj=globalThis[js_name]}if(globalObj===null||typeof globalObj===undefined){setValue(is_exception,1,"i32");return BINDING.js_string_to_mono_string("Global object '"+js_name+"' not found.")}return BINDING._js_to_mono_obj(true,globalObj)}finally{nameRoot.release()}}function _mono_wasm_get_object_property(js_handle,property_name,is_exception){BINDING.bindings_lazy_init();var nameRoot=MONO.mono_wasm_new_root(property_name);try{var js_name=BINDING.conv_string(nameRoot.value);if(!js_name){setValue(is_exception,1,"i32");return BINDING.js_string_to_mono_string("Invalid property name object '"+nameRoot.value+"'")}var obj=BINDING.mono_wasm_get_jsobj_from_js_handle(js_handle);if(!obj){setValue(is_exception,1,"i32");return BINDING.js_string_to_mono_string("ERR01: Invalid JS object handle '"+js_handle+"' while geting '"+js_name+"'")}var res;try{var m=obj[js_name];return BINDING._js_to_mono_obj(true,m)}catch(e){var res=e.toString();setValue(is_exception,1,"i32");if(res===null||typeof res==="undefined")res="unknown exception";return BINDING.js_string_to_mono_string(res)}}finally{nameRoot.release()}}var DOTNET={conv_string:function(mono_obj){return MONO.string_decoder.copy(mono_obj)}};function _mono_wasm_invoke_js_blazor(exceptionMessage,callInfo,arg0,arg1,arg2){var mono_string=globalThis._mono_string_cached||(globalThis._mono_string_cached=Module.cwrap("mono_wasm_string_from_js","number",["string"]));try{var blazorExports=globalThis.Blazor;if(!blazorExports){throw new Error("The blazor.webassembly.js library is not loaded.")}return blazorExports._internal.invokeJSFromDotNet(callInfo,arg0,arg1,arg2)}catch(ex){var exceptionJsString=ex.message+"\n"+ex.stack;var exceptionSystemString=mono_string(exceptionJsString);setValue(exceptionMessage,exceptionSystemString,"i32");return 0}}function _mono_wasm_invoke_js_marshalled(exceptionMessage,asyncHandleLongPtr,functionName,argsJson,treatResultAsVoid){var mono_string=globalThis._mono_string_cached||(globalThis._mono_string_cached=Module.cwrap("mono_wasm_string_from_js","number",["string"]));try{var u32Index=asyncHandleLongPtr>>2;var asyncHandleJsNumber=Module.HEAPU32[u32Index+1]*4294967296+Module.HEAPU32[u32Index];var funcNameJsString=DOTNET.conv_string(functionName);var argsJsonJsString=argsJson&&DOTNET.conv_string(argsJson);var dotNetExports=globaThis.DotNet;if(!dotNetExports){throw new Error("The Microsoft.JSInterop.js library is not loaded.")}if(asyncHandleJsNumber){dotNetExports.jsCallDispatcher.beginInvokeJSFromDotNet(asyncHandleJsNumber,funcNameJsString,argsJsonJsString,treatResultAsVoid);return 0}else{var resultJson=dotNetExports.jsCallDispatcher.invokeJSFromDotNet(funcNameJsString,argsJsonJsString,treatResultAsVoid);return resultJson===null?0:mono_string(resultJson)}}catch(ex){var exceptionJsString=ex.message+"\n"+ex.stack;var exceptionSystemString=mono_string(exceptionJsString);setValue(exceptionMessage,exceptionSystemString,"i32");return 0}}function _mono_wasm_invoke_js_unmarshalled(exceptionMessage,funcName,arg0,arg1,arg2){try{var funcNameJsString=DOTNET.conv_string(funcName);var dotNetExports=globalThis.DotNet;if(!dotNetExports){throw new Error("The Microsoft.JSInterop.js library is not loaded.")}var funcInstance=dotNetExports.jsCallDispatcher.findJSFunction(funcNameJsString);return funcInstance.call(null,arg0,arg1,arg2)}catch(ex){var exceptionJsString=ex.message+"\n"+ex.stack;var mono_string=Module.cwrap("mono_wasm_string_from_js","number",["string"]);var exceptionSystemString=mono_string(exceptionJsString);setValue(exceptionMessage,exceptionSystemString,"i32");return 0}}function _mono_wasm_invoke_js_with_args(js_handle,method_name,args,is_exception){let argsRoot=MONO.mono_wasm_new_root(args),nameRoot=MONO.mono_wasm_new_root(method_name);try{BINDING.bindings_lazy_init();var js_name=BINDING.conv_string(nameRoot.value);if(!js_name||typeof js_name!=="string"){setValue(is_exception,1,"i32");return BINDING.js_string_to_mono_string("ERR12: Invalid method name object '"+nameRoot.value+"'")}var obj=BINDING.get_js_obj(js_handle);if(!obj){setValue(is_exception,1,"i32");return BINDING.js_string_to_mono_string("ERR13: Invalid JS object handle '"+js_handle+"' while invoking '"+js_name+"'")}var js_args=BINDING._mono_array_root_to_js_array(argsRoot);var res;try{var m=obj[js_name];if(typeof m==="undefined")throw new Error("Method: '"+js_name+"' not found for: '"+Object.prototype.toString.call(obj)+"'");var res=m.apply(obj,js_args);return BINDING._js_to_mono_obj(true,res)}catch(e){var res=e.toString();setValue(is_exception,1,"i32");if(res===null||res===undefined)res="unknown exception";return BINDING.js_string_to_mono_string(res)}}finally{argsRoot.release();nameRoot.release()}}function _mono_wasm_release_cs_owned_object(js_handle){BINDING.bindings_lazy_init();BINDING._mono_wasm_release_js_handle(js_handle)}function _mono_wasm_remove_event_listener(objHandle,name,listener_gc_handle,capture){var nameRoot=MONO.mono_wasm_new_root(name);try{BINDING.bindings_lazy_init();var obj=BINDING.mono_wasm_get_jsobj_from_js_handle(objHandle);if(!obj)throw new Error("ERR11: Invalid JS object handle");var listener=BINDING._lookup_js_owned_object(listener_gc_handle);if(!listener)return;var sName=BINDING.conv_string(nameRoot.value);obj.removeEventListener(sName,listener,!!capture);if(!BINDING._use_finalization_registry){listener[BINDING.listener_registration_count_symbol]--;if(listener[BINDING.listener_registration_count_symbol]===0){BINDING._js_owned_object_table.delete(listener_gc_handle);BINDING._release_js_owned_object_by_gc_handle(listener_gc_handle)}}return 0}catch(exc){return BINDING.js_string_to_mono_string(exc.message)}finally{nameRoot.release()}}function _mono_wasm_set_by_index(js_handle,property_index,value,is_exception){var valueRoot=MONO.mono_wasm_new_root(value);try{BINDING.bindings_lazy_init();var obj=BINDING.mono_wasm_get_jsobj_from_js_handle(js_handle);if(!obj){setValue(is_exception,1,"i32");return BINDING.js_string_to_mono_string("ERR04: Invalid JS object handle '"+js_handle+"' while setting ["+property_index+"]")}var js_value=BINDING._unbox_mono_obj_root(valueRoot);try{obj[property_index]=js_value;return true}catch(e){var res=e.toString();setValue(is_exception,1,"i32");if(res===null||typeof res==="undefined")res="unknown exception";return BINDING.js_string_to_mono_string(res)}}finally{valueRoot.release()}}function _mono_wasm_set_object_property(js_handle,property_name,value,createIfNotExist,hasOwnProperty,is_exception){var valueRoot=MONO.mono_wasm_new_root(value),nameRoot=MONO.mono_wasm_new_root(property_name);try{BINDING.bindings_lazy_init();var property=BINDING.conv_string(nameRoot.value);if(!property){setValue(is_exception,1,"i32");return BINDING.js_string_to_mono_string("Invalid property name object '"+property_name+"'")}var js_obj=BINDING.mono_wasm_get_jsobj_from_js_handle(js_handle);if(!js_obj){setValue(is_exception,1,"i32");return BINDING.js_string_to_mono_string("ERR02: Invalid JS object handle '"+js_handle+"' while setting '"+property+"'")}var result=false;var js_value=BINDING._unbox_mono_obj_root(valueRoot);if(createIfNotExist){js_obj[property]=js_value;result=true}else{result=false;if(!createIfNotExist){if(!js_obj.hasOwnProperty(property))return false}if(hasOwnProperty===true){if(js_obj.hasOwnProperty(property)){js_obj[property]=js_value;result=true}}else{js_obj[property]=js_value;result=true}}return BINDING._box_js_bool(result)}finally{nameRoot.release();valueRoot.release()}}function _mono_wasm_typed_array_copy_from(js_handle,pinned_array,begin,end,bytes_per_element,is_exception){BINDING.bindings_lazy_init();var js_obj=BINDING.mono_wasm_get_jsobj_from_js_handle(js_handle);if(!js_obj){setValue(is_exception,1,"i32");return BINDING.js_string_to_mono_string("ERR08: Invalid JS object handle '"+js_handle+"'")}var res=BINDING.typedarray_copy_from(js_obj,pinned_array,begin,end,bytes_per_element);return BINDING._js_to_mono_obj(false,res)}function _mono_wasm_typed_array_copy_to(js_handle,pinned_array,begin,end,bytes_per_element,is_exception){BINDING.bindings_lazy_init();var js_obj=BINDING.mono_wasm_get_jsobj_from_js_handle(js_handle);if(!js_obj){setValue(is_exception,1,"i32");return BINDING.js_string_to_mono_string("ERR07: Invalid JS object handle '"+js_handle+"'")}var res=BINDING.typedarray_copy_to(js_obj,pinned_array,begin,end,bytes_per_element);return BINDING._js_to_mono_obj(false,res)}function _mono_wasm_typed_array_from(pinned_array,begin,end,bytes_per_element,type,is_exception){BINDING.bindings_lazy_init();var res=BINDING.typed_array_from(pinned_array,begin,end,bytes_per_element,type);return BINDING._js_to_mono_obj(true,res)}function _mono_wasm_typed_array_to_array(js_handle,is_exception){BINDING.bindings_lazy_init();var js_obj=BINDING.mono_wasm_get_jsobj_from_js_handle(js_handle);if(!js_obj){setValue(is_exception,1,"i32");return BINDING.js_string_to_mono_string("ERR06: Invalid JS object handle '"+js_handle+"'")}return BINDING.js_typed_array_to_array(js_obj,false)}function _schedule_background_exec(){++MONO.pump_count;if(typeof globalThis.setTimeout==="function"){globalThis.setTimeout(MONO.pump_message,0)}}function _setTempRet0(val){setTempRet0(val)}function __isLeapYear(year){return year%4===0&&(year%100!==0||year%400===0)}function __arraySum(array,index){var sum=0;for(var i=0;i<=index;sum+=array[i++]){}return sum}var __MONTH_DAYS_LEAP=[31,29,31,30,31,30,31,31,30,31,30,31];var __MONTH_DAYS_REGULAR=[31,28,31,30,31,30,31,31,30,31,30,31];function __addDays(date,days){var newDate=new Date(date.getTime());while(days>0){var leap=__isLeapYear(newDate.getFullYear());var currentMonth=newDate.getMonth();var daysInCurrentMonth=(leap?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR)[currentMonth];if(days>daysInCurrentMonth-newDate.getDate()){days-=daysInCurrentMonth-newDate.getDate()+1;newDate.setDate(1);if(currentMonth<11){newDate.setMonth(currentMonth+1)}else{newDate.setMonth(0);newDate.setFullYear(newDate.getFullYear()+1)}}else{newDate.setDate(newDate.getDate()+days);return newDate}}return newDate}function _strftime(s,maxsize,format,tm){var tm_zone=HEAP32[tm+40>>2];var date={tm_sec:HEAP32[tm>>2],tm_min:HEAP32[tm+4>>2],tm_hour:HEAP32[tm+8>>2],tm_mday:HEAP32[tm+12>>2],tm_mon:HEAP32[tm+16>>2],tm_year:HEAP32[tm+20>>2],tm_wday:HEAP32[tm+24>>2],tm_yday:HEAP32[tm+28>>2],tm_isdst:HEAP32[tm+32>>2],tm_gmtoff:HEAP32[tm+36>>2],tm_zone:tm_zone?UTF8ToString(tm_zone):""};var pattern=UTF8ToString(format);var EXPANSION_RULES_1={"%c":"%a %b %d %H:%M:%S %Y","%D":"%m/%d/%y","%F":"%Y-%m-%d","%h":"%b","%r":"%I:%M:%S %p","%R":"%H:%M","%T":"%H:%M:%S","%x":"%m/%d/%y","%X":"%H:%M:%S","%Ec":"%c","%EC":"%C","%Ex":"%m/%d/%y","%EX":"%H:%M:%S","%Ey":"%y","%EY":"%Y","%Od":"%d","%Oe":"%e","%OH":"%H","%OI":"%I","%Om":"%m","%OM":"%M","%OS":"%S","%Ou":"%u","%OU":"%U","%OV":"%V","%Ow":"%w","%OW":"%W","%Oy":"%y"};for(var rule in EXPANSION_RULES_1){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_1[rule])}var WEEKDAYS=["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];var MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function leadingSomething(value,digits,character){var str=typeof value==="number"?value.toString():value||"";while(str.length0?1:0}var compare;if((compare=sgn(date1.getFullYear()-date2.getFullYear()))===0){if((compare=sgn(date1.getMonth()-date2.getMonth()))===0){compare=sgn(date1.getDate()-date2.getDate())}}return compare}function getFirstWeekStartDate(janFourth){switch(janFourth.getDay()){case 0:return new Date(janFourth.getFullYear()-1,11,29);case 1:return janFourth;case 2:return new Date(janFourth.getFullYear(),0,3);case 3:return new Date(janFourth.getFullYear(),0,2);case 4:return new Date(janFourth.getFullYear(),0,1);case 5:return new Date(janFourth.getFullYear()-1,11,31);case 6:return new Date(janFourth.getFullYear()-1,11,30)}}function getWeekBasedYear(date){var thisDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);var janFourthThisYear=new Date(thisDate.getFullYear(),0,4);var janFourthNextYear=new Date(thisDate.getFullYear()+1,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);if(compareByDay(firstWeekStartThisYear,thisDate)<=0){if(compareByDay(firstWeekStartNextYear,thisDate)<=0){return thisDate.getFullYear()+1}else{return thisDate.getFullYear()}}else{return thisDate.getFullYear()-1}}var EXPANSION_RULES_2={"%a":function(date){return WEEKDAYS[date.tm_wday].substring(0,3)},"%A":function(date){return WEEKDAYS[date.tm_wday]},"%b":function(date){return MONTHS[date.tm_mon].substring(0,3)},"%B":function(date){return MONTHS[date.tm_mon]},"%C":function(date){var year=date.tm_year+1900;return leadingNulls(year/100|0,2)},"%d":function(date){return leadingNulls(date.tm_mday,2)},"%e":function(date){return leadingSomething(date.tm_mday,2," ")},"%g":function(date){return getWeekBasedYear(date).toString().substring(2)},"%G":function(date){return getWeekBasedYear(date)},"%H":function(date){return leadingNulls(date.tm_hour,2)},"%I":function(date){var twelveHour=date.tm_hour;if(twelveHour==0)twelveHour=12;else if(twelveHour>12)twelveHour-=12;return leadingNulls(twelveHour,2)},"%j":function(date){return leadingNulls(date.tm_mday+__arraySum(__isLeapYear(date.tm_year+1900)?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,date.tm_mon-1),3)},"%m":function(date){return leadingNulls(date.tm_mon+1,2)},"%M":function(date){return leadingNulls(date.tm_min,2)},"%n":function(){return"\n"},"%p":function(date){if(date.tm_hour>=0&&date.tm_hour<12){return"AM"}else{return"PM"}},"%S":function(date){return leadingNulls(date.tm_sec,2)},"%t":function(){return"\t"},"%u":function(date){return date.tm_wday||7},"%U":function(date){var janFirst=new Date(date.tm_year+1900,0,1);var firstSunday=janFirst.getDay()===0?janFirst:__addDays(janFirst,7-janFirst.getDay());var endDate=new Date(date.tm_year+1900,date.tm_mon,date.tm_mday);if(compareByDay(firstSunday,endDate)<0){var februaryFirstUntilEndMonth=__arraySum(__isLeapYear(endDate.getFullYear())?__MONTH_DAYS_LEAP:__MONTH_DAYS_REGULAR,endDate.getMonth()-1)-31;var firstSundayUntilEndJanuary=31-firstSunday.getDate();var days=firstSundayUntilEndJanuary+februaryFirstUntilEndMonth+endDate.getDate();return leadingNulls(Math.ceil(days/7),2)}return compareByDay(firstSunday,janFirst)===0?"01":"00"},"%V":function(date){var janFourthThisYear=new Date(date.tm_year+1900,0,4);var janFourthNextYear=new Date(date.tm_year+1901,0,4);var firstWeekStartThisYear=getFirstWeekStartDate(janFourthThisYear);var firstWeekStartNextYear=getFirstWeekStartDate(janFourthNextYear);var endDate=__addDays(new Date(date.tm_year+1900,0,1),date.tm_yday);if(compareByDay(endDate,firstWeekStartThisYear)<0){return"53"}if(compareByDay(firstWeekStartNextYear,endDate)<=0){return"01"}var daysDifference;if(firstWeekStartThisYear.getFullYear()=0;off=Math.abs(off)/60;off=off/60*100+off%60;return(ahead?"+":"-")+String("0000"+off).slice(-4)},"%Z":function(date){return date.tm_zone},"%%":function(){return"%"}};for(var rule in EXPANSION_RULES_2){if(pattern.includes(rule)){pattern=pattern.replace(new RegExp(rule,"g"),EXPANSION_RULES_2[rule](date))}}var bytes=intArrayFromString(pattern,false);if(bytes.length>maxsize){return 0}writeArrayToMemory(bytes,s);return bytes.length-1}function _time(ptr){var ret=Date.now()/1e3|0;if(ptr){HEAP32[ptr>>2]=ret}return ret}var FSNode=function(parent,name,mode,rdev){if(!parent){parent=this}this.parent=parent;this.mount=parent.mount;this.mounted=null;this.id=FS.nextInode++;this.name=name;this.mode=mode;this.node_ops={};this.stream_ops={};this.rdev=rdev};var readMode=292|73;var writeMode=146;Object.defineProperties(FSNode.prototype,{read:{get:function(){return(this.mode&readMode)===readMode},set:function(val){val?this.mode|=readMode:this.mode&=~readMode}},write:{get:function(){return(this.mode&writeMode)===writeMode},set:function(val){val?this.mode|=writeMode:this.mode&=~writeMode}},isFolder:{get:function(){return FS.isDir(this.mode)}},isDevice:{get:function(){return FS.isChrdev(this.mode)}}});FS.FSNode=FSNode;FS.staticInit();Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;MONO.export_functions(Module);BINDING.export_functions(Module);var ASSERTIONS=false;function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var asmLibraryArg={"__assert_fail":___assert_fail,"__clock_gettime":___clock_gettime,"__cxa_allocate_exception":___cxa_allocate_exception,"__cxa_begin_catch":___cxa_begin_catch,"__cxa_end_catch":___cxa_end_catch,"__cxa_find_matching_catch_3":___cxa_find_matching_catch_3,"__cxa_throw":___cxa_throw,"__resumeException":___resumeException,"__sys_access":___sys_access,"__sys_chdir":___sys_chdir,"__sys_chmod":___sys_chmod,"__sys_connect":___sys_connect,"__sys_fadvise64_64":___sys_fadvise64_64,"__sys_fchmod":___sys_fchmod,"__sys_fcntl64":___sys_fcntl64,"__sys_fstat64":___sys_fstat64,"__sys_fstatfs64":___sys_fstatfs64,"__sys_ftruncate64":___sys_ftruncate64,"__sys_getcwd":___sys_getcwd,"__sys_getdents64":___sys_getdents64,"__sys_getpid":___sys_getpid,"__sys_getrusage":___sys_getrusage,"__sys_ioctl":___sys_ioctl,"__sys_link":___sys_link,"__sys_lstat64":___sys_lstat64,"__sys_madvise1":___sys_madvise1,"__sys_mkdir":___sys_mkdir,"__sys_mmap2":___sys_mmap2,"__sys_msync":___sys_msync,"__sys_munmap":___sys_munmap,"__sys_open":___sys_open,"__sys_readlink":___sys_readlink,"__sys_recvfrom":___sys_recvfrom,"__sys_rename":___sys_rename,"__sys_rmdir":___sys_rmdir,"__sys_sendto":___sys_sendto,"__sys_setsockopt":___sys_setsockopt,"__sys_shutdown":___sys_shutdown,"__sys_socket":___sys_socket,"__sys_stat64":___sys_stat64,"__sys_symlink":___sys_symlink,"__sys_unlink":___sys_unlink,"__sys_utimensat":___sys_utimensat,"abort":_abort,"clock_getres":_clock_getres,"clock_gettime":_clock_gettime,"compile_function":compile_function,"difftime":_difftime,"dotnet_browser_entropy":_dotnet_browser_entropy,"emscripten_asm_const_int":_emscripten_asm_const_int,"emscripten_get_heap_max":_emscripten_get_heap_max,"emscripten_memcpy_big":_emscripten_memcpy_big,"emscripten_resize_heap":_emscripten_resize_heap,"emscripten_thread_sleep":_emscripten_thread_sleep,"environ_get":_environ_get,"environ_sizes_get":_environ_sizes_get,"exit":_exit,"fd_close":_fd_close,"fd_fdstat_get":_fd_fdstat_get,"fd_pread":_fd_pread,"fd_pwrite":_fd_pwrite,"fd_read":_fd_read,"fd_seek":_fd_seek,"fd_sync":_fd_sync,"fd_write":_fd_write,"flock":_flock,"gai_strerror":_gai_strerror,"getTempRet0":_getTempRet0,"gettimeofday":_gettimeofday,"gmtime_r":_gmtime_r,"invoke_vi":invoke_vi,"llvm_eh_typeid_for":_llvm_eh_typeid_for,"localtime_r":_localtime_r,"mono_set_timeout":_mono_set_timeout,"mono_wasm_add_event_listener":_mono_wasm_add_event_listener,"mono_wasm_asm_loaded":_mono_wasm_asm_loaded,"mono_wasm_create_cs_owned_object":_mono_wasm_create_cs_owned_object,"mono_wasm_fire_debugger_agent_message":_mono_wasm_fire_debugger_agent_message,"mono_wasm_get_by_index":_mono_wasm_get_by_index,"mono_wasm_get_global_object":_mono_wasm_get_global_object,"mono_wasm_get_object_property":_mono_wasm_get_object_property,"mono_wasm_invoke_js_blazor":_mono_wasm_invoke_js_blazor,"mono_wasm_invoke_js_marshalled":_mono_wasm_invoke_js_marshalled,"mono_wasm_invoke_js_unmarshalled":_mono_wasm_invoke_js_unmarshalled,"mono_wasm_invoke_js_with_args":_mono_wasm_invoke_js_with_args,"mono_wasm_release_cs_owned_object":_mono_wasm_release_cs_owned_object,"mono_wasm_remove_event_listener":_mono_wasm_remove_event_listener,"mono_wasm_set_by_index":_mono_wasm_set_by_index,"mono_wasm_set_object_property":_mono_wasm_set_object_property,"mono_wasm_typed_array_copy_from":_mono_wasm_typed_array_copy_from,"mono_wasm_typed_array_copy_to":_mono_wasm_typed_array_copy_to,"mono_wasm_typed_array_from":_mono_wasm_typed_array_from,"mono_wasm_typed_array_to_array":_mono_wasm_typed_array_to_array,"schedule_background_exec":_schedule_background_exec,"setTempRet0":_setTempRet0,"strftime":_strftime,"time":_time,"tzset":_tzset};var asm=createWasm();var ___wasm_call_ctors=Module["___wasm_call_ctors"]=function(){return(___wasm_call_ctors=Module["___wasm_call_ctors"]=Module["asm"]["__wasm_call_ctors"]).apply(null,arguments)};var _mono_wasm_register_root=Module["_mono_wasm_register_root"]=function(){return(_mono_wasm_register_root=Module["_mono_wasm_register_root"]=Module["asm"]["mono_wasm_register_root"]).apply(null,arguments)};var _mono_wasm_deregister_root=Module["_mono_wasm_deregister_root"]=function(){return(_mono_wasm_deregister_root=Module["_mono_wasm_deregister_root"]=Module["asm"]["mono_wasm_deregister_root"]).apply(null,arguments)};var _mono_wasm_add_assembly=Module["_mono_wasm_add_assembly"]=function(){return(_mono_wasm_add_assembly=Module["_mono_wasm_add_assembly"]=Module["asm"]["mono_wasm_add_assembly"]).apply(null,arguments)};var _mono_wasm_add_satellite_assembly=Module["_mono_wasm_add_satellite_assembly"]=function(){return(_mono_wasm_add_satellite_assembly=Module["_mono_wasm_add_satellite_assembly"]=Module["asm"]["mono_wasm_add_satellite_assembly"]).apply(null,arguments)};var _mono_wasm_setenv=Module["_mono_wasm_setenv"]=function(){return(_mono_wasm_setenv=Module["_mono_wasm_setenv"]=Module["asm"]["mono_wasm_setenv"]).apply(null,arguments)};var _free=Module["_free"]=function(){return(_free=Module["_free"]=Module["asm"]["free"]).apply(null,arguments)};var _mono_wasm_register_bundled_satellite_assemblies=Module["_mono_wasm_register_bundled_satellite_assemblies"]=function(){return(_mono_wasm_register_bundled_satellite_assemblies=Module["_mono_wasm_register_bundled_satellite_assemblies"]=Module["asm"]["mono_wasm_register_bundled_satellite_assemblies"]).apply(null,arguments)};var _mono_wasm_load_runtime=Module["_mono_wasm_load_runtime"]=function(){return(_mono_wasm_load_runtime=Module["_mono_wasm_load_runtime"]=Module["asm"]["mono_wasm_load_runtime"]).apply(null,arguments)};var _malloc=Module["_malloc"]=function(){return(_malloc=Module["_malloc"]=Module["asm"]["malloc"]).apply(null,arguments)};var _mono_wasm_assembly_load=Module["_mono_wasm_assembly_load"]=function(){return(_mono_wasm_assembly_load=Module["_mono_wasm_assembly_load"]=Module["asm"]["mono_wasm_assembly_load"]).apply(null,arguments)};var _mono_wasm_find_corlib_class=Module["_mono_wasm_find_corlib_class"]=function(){return(_mono_wasm_find_corlib_class=Module["_mono_wasm_find_corlib_class"]=Module["asm"]["mono_wasm_find_corlib_class"]).apply(null,arguments)};var _mono_wasm_assembly_find_class=Module["_mono_wasm_assembly_find_class"]=function(){return(_mono_wasm_assembly_find_class=Module["_mono_wasm_assembly_find_class"]=Module["asm"]["mono_wasm_assembly_find_class"]).apply(null,arguments)};var _mono_wasm_assembly_find_method=Module["_mono_wasm_assembly_find_method"]=function(){return(_mono_wasm_assembly_find_method=Module["_mono_wasm_assembly_find_method"]=Module["asm"]["mono_wasm_assembly_find_method"]).apply(null,arguments)};var _mono_wasm_get_delegate_invoke=Module["_mono_wasm_get_delegate_invoke"]=function(){return(_mono_wasm_get_delegate_invoke=Module["_mono_wasm_get_delegate_invoke"]=Module["asm"]["mono_wasm_get_delegate_invoke"]).apply(null,arguments)};var _mono_wasm_box_primitive=Module["_mono_wasm_box_primitive"]=function(){return(_mono_wasm_box_primitive=Module["_mono_wasm_box_primitive"]=Module["asm"]["mono_wasm_box_primitive"]).apply(null,arguments)};var _mono_wasm_invoke_method=Module["_mono_wasm_invoke_method"]=function(){return(_mono_wasm_invoke_method=Module["_mono_wasm_invoke_method"]=Module["asm"]["mono_wasm_invoke_method"]).apply(null,arguments)};var _mono_wasm_assembly_get_entry_point=Module["_mono_wasm_assembly_get_entry_point"]=function(){return(_mono_wasm_assembly_get_entry_point=Module["_mono_wasm_assembly_get_entry_point"]=Module["asm"]["mono_wasm_assembly_get_entry_point"]).apply(null,arguments)};var _mono_wasm_string_get_utf8=Module["_mono_wasm_string_get_utf8"]=function(){return(_mono_wasm_string_get_utf8=Module["_mono_wasm_string_get_utf8"]=Module["asm"]["mono_wasm_string_get_utf8"]).apply(null,arguments)};var _mono_wasm_string_convert=Module["_mono_wasm_string_convert"]=function(){return(_mono_wasm_string_convert=Module["_mono_wasm_string_convert"]=Module["asm"]["mono_wasm_string_convert"]).apply(null,arguments)};var _mono_wasm_string_from_js=Module["_mono_wasm_string_from_js"]=function(){return(_mono_wasm_string_from_js=Module["_mono_wasm_string_from_js"]=Module["asm"]["mono_wasm_string_from_js"]).apply(null,arguments)};var _mono_wasm_string_from_utf16=Module["_mono_wasm_string_from_utf16"]=function(){return(_mono_wasm_string_from_utf16=Module["_mono_wasm_string_from_utf16"]=Module["asm"]["mono_wasm_string_from_utf16"]).apply(null,arguments)};var _mono_wasm_get_obj_type=Module["_mono_wasm_get_obj_type"]=function(){return(_mono_wasm_get_obj_type=Module["_mono_wasm_get_obj_type"]=Module["asm"]["mono_wasm_get_obj_type"]).apply(null,arguments)};var _mono_wasm_try_unbox_primitive_and_get_type=Module["_mono_wasm_try_unbox_primitive_and_get_type"]=function(){return(_mono_wasm_try_unbox_primitive_and_get_type=Module["_mono_wasm_try_unbox_primitive_and_get_type"]=Module["asm"]["mono_wasm_try_unbox_primitive_and_get_type"]).apply(null,arguments)};var _mono_unbox_int=Module["_mono_unbox_int"]=function(){return(_mono_unbox_int=Module["_mono_unbox_int"]=Module["asm"]["mono_unbox_int"]).apply(null,arguments)};var _mono_wasm_array_length=Module["_mono_wasm_array_length"]=function(){return(_mono_wasm_array_length=Module["_mono_wasm_array_length"]=Module["asm"]["mono_wasm_array_length"]).apply(null,arguments)};var _mono_wasm_array_get=Module["_mono_wasm_array_get"]=function(){return(_mono_wasm_array_get=Module["_mono_wasm_array_get"]=Module["asm"]["mono_wasm_array_get"]).apply(null,arguments)};var _mono_wasm_obj_array_new=Module["_mono_wasm_obj_array_new"]=function(){return(_mono_wasm_obj_array_new=Module["_mono_wasm_obj_array_new"]=Module["asm"]["mono_wasm_obj_array_new"]).apply(null,arguments)};var _mono_wasm_obj_array_set=Module["_mono_wasm_obj_array_set"]=function(){return(_mono_wasm_obj_array_set=Module["_mono_wasm_obj_array_set"]=Module["asm"]["mono_wasm_obj_array_set"]).apply(null,arguments)};var _mono_wasm_string_array_new=Module["_mono_wasm_string_array_new"]=function(){return(_mono_wasm_string_array_new=Module["_mono_wasm_string_array_new"]=Module["asm"]["mono_wasm_string_array_new"]).apply(null,arguments)};var _mono_wasm_exec_regression=Module["_mono_wasm_exec_regression"]=function(){return(_mono_wasm_exec_regression=Module["_mono_wasm_exec_regression"]=Module["asm"]["mono_wasm_exec_regression"]).apply(null,arguments)};var _mono_wasm_exit=Module["_mono_wasm_exit"]=function(){return(_mono_wasm_exit=Module["_mono_wasm_exit"]=Module["asm"]["mono_wasm_exit"]).apply(null,arguments)};var _mono_wasm_set_main_args=Module["_mono_wasm_set_main_args"]=function(){return(_mono_wasm_set_main_args=Module["_mono_wasm_set_main_args"]=Module["asm"]["mono_wasm_set_main_args"]).apply(null,arguments)};var _mono_wasm_strdup=Module["_mono_wasm_strdup"]=function(){return(_mono_wasm_strdup=Module["_mono_wasm_strdup"]=Module["asm"]["mono_wasm_strdup"]).apply(null,arguments)};var _mono_wasm_parse_runtime_options=Module["_mono_wasm_parse_runtime_options"]=function(){return(_mono_wasm_parse_runtime_options=Module["_mono_wasm_parse_runtime_options"]=Module["asm"]["mono_wasm_parse_runtime_options"]).apply(null,arguments)};var _mono_wasm_enable_on_demand_gc=Module["_mono_wasm_enable_on_demand_gc"]=function(){return(_mono_wasm_enable_on_demand_gc=Module["_mono_wasm_enable_on_demand_gc"]=Module["asm"]["mono_wasm_enable_on_demand_gc"]).apply(null,arguments)};var _mono_wasm_intern_string=Module["_mono_wasm_intern_string"]=function(){return(_mono_wasm_intern_string=Module["_mono_wasm_intern_string"]=Module["asm"]["mono_wasm_intern_string"]).apply(null,arguments)};var _mono_wasm_string_get_data=Module["_mono_wasm_string_get_data"]=function(){return(_mono_wasm_string_get_data=Module["_mono_wasm_string_get_data"]=Module["asm"]["mono_wasm_string_get_data"]).apply(null,arguments)};var _mono_wasm_typed_array_new=Module["_mono_wasm_typed_array_new"]=function(){return(_mono_wasm_typed_array_new=Module["_mono_wasm_typed_array_new"]=Module["asm"]["mono_wasm_typed_array_new"]).apply(null,arguments)};var _mono_wasm_unbox_enum=Module["_mono_wasm_unbox_enum"]=function(){return(_mono_wasm_unbox_enum=Module["_mono_wasm_unbox_enum"]=Module["asm"]["mono_wasm_unbox_enum"]).apply(null,arguments)};var _memset=Module["_memset"]=function(){return(_memset=Module["_memset"]=Module["asm"]["memset"]).apply(null,arguments)};var ___errno_location=Module["___errno_location"]=function(){return(___errno_location=Module["___errno_location"]=Module["asm"]["__errno_location"]).apply(null,arguments)};var _putchar=Module["_putchar"]=function(){return(_putchar=Module["_putchar"]=Module["asm"]["putchar"]).apply(null,arguments)};var _mono_background_exec=Module["_mono_background_exec"]=function(){return(_mono_background_exec=Module["_mono_background_exec"]=Module["asm"]["mono_background_exec"]).apply(null,arguments)};var _mono_wasm_get_icudt_name=Module["_mono_wasm_get_icudt_name"]=function(){return(_mono_wasm_get_icudt_name=Module["_mono_wasm_get_icudt_name"]=Module["asm"]["mono_wasm_get_icudt_name"]).apply(null,arguments)};var _mono_wasm_load_icu_data=Module["_mono_wasm_load_icu_data"]=function(){return(_mono_wasm_load_icu_data=Module["_mono_wasm_load_icu_data"]=Module["asm"]["mono_wasm_load_icu_data"]).apply(null,arguments)};var _mono_print_method_from_ip=Module["_mono_print_method_from_ip"]=function(){return(_mono_print_method_from_ip=Module["_mono_print_method_from_ip"]=Module["asm"]["mono_print_method_from_ip"]).apply(null,arguments)};var _mono_set_timeout_exec=Module["_mono_set_timeout_exec"]=function(){return(_mono_set_timeout_exec=Module["_mono_set_timeout_exec"]=Module["asm"]["mono_set_timeout_exec"]).apply(null,arguments)};var _htons=Module["_htons"]=function(){return(_htons=Module["_htons"]=Module["asm"]["htons"]).apply(null,arguments)};var _mono_wasm_set_is_debugger_attached=Module["_mono_wasm_set_is_debugger_attached"]=function(){return(_mono_wasm_set_is_debugger_attached=Module["_mono_wasm_set_is_debugger_attached"]=Module["asm"]["mono_wasm_set_is_debugger_attached"]).apply(null,arguments)};var _mono_wasm_send_dbg_command_with_parms=Module["_mono_wasm_send_dbg_command_with_parms"]=function(){return(_mono_wasm_send_dbg_command_with_parms=Module["_mono_wasm_send_dbg_command_with_parms"]=Module["asm"]["mono_wasm_send_dbg_command_with_parms"]).apply(null,arguments)};var _mono_wasm_send_dbg_command=Module["_mono_wasm_send_dbg_command"]=function(){return(_mono_wasm_send_dbg_command=Module["_mono_wasm_send_dbg_command"]=Module["asm"]["mono_wasm_send_dbg_command"]).apply(null,arguments)};var _ntohs=Module["_ntohs"]=function(){return(_ntohs=Module["_ntohs"]=Module["asm"]["ntohs"]).apply(null,arguments)};var _emscripten_main_thread_process_queued_calls=Module["_emscripten_main_thread_process_queued_calls"]=function(){return(_emscripten_main_thread_process_queued_calls=Module["_emscripten_main_thread_process_queued_calls"]=Module["asm"]["emscripten_main_thread_process_queued_calls"]).apply(null,arguments)};var _htonl=Module["_htonl"]=function(){return(_htonl=Module["_htonl"]=Module["asm"]["htonl"]).apply(null,arguments)};var __get_tzname=Module["__get_tzname"]=function(){return(__get_tzname=Module["__get_tzname"]=Module["asm"]["_get_tzname"]).apply(null,arguments)};var __get_daylight=Module["__get_daylight"]=function(){return(__get_daylight=Module["__get_daylight"]=Module["asm"]["_get_daylight"]).apply(null,arguments)};var __get_timezone=Module["__get_timezone"]=function(){return(__get_timezone=Module["__get_timezone"]=Module["asm"]["_get_timezone"]).apply(null,arguments)};var stackSave=Module["stackSave"]=function(){return(stackSave=Module["stackSave"]=Module["asm"]["stackSave"]).apply(null,arguments)};var stackRestore=Module["stackRestore"]=function(){return(stackRestore=Module["stackRestore"]=Module["asm"]["stackRestore"]).apply(null,arguments)};var stackAlloc=Module["stackAlloc"]=function(){return(stackAlloc=Module["stackAlloc"]=Module["asm"]["stackAlloc"]).apply(null,arguments)};var _setThrew=Module["_setThrew"]=function(){return(_setThrew=Module["_setThrew"]=Module["asm"]["setThrew"]).apply(null,arguments)};var ___cxa_can_catch=Module["___cxa_can_catch"]=function(){return(___cxa_can_catch=Module["___cxa_can_catch"]=Module["asm"]["__cxa_can_catch"]).apply(null,arguments)};var ___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=function(){return(___cxa_is_pointer_type=Module["___cxa_is_pointer_type"]=Module["asm"]["__cxa_is_pointer_type"]).apply(null,arguments)};var _memalign=Module["_memalign"]=function(){return(_memalign=Module["_memalign"]=Module["asm"]["memalign"]).apply(null,arguments)};var dynCall_iijj=Module["dynCall_iijj"]=function(){return(dynCall_iijj=Module["dynCall_iijj"]=Module["asm"]["dynCall_iijj"]).apply(null,arguments)};var dynCall_iij=Module["dynCall_iij"]=function(){return(dynCall_iij=Module["dynCall_iij"]=Module["asm"]["dynCall_iij"]).apply(null,arguments)};var dynCall_ji=Module["dynCall_ji"]=function(){return(dynCall_ji=Module["dynCall_ji"]=Module["asm"]["dynCall_ji"]).apply(null,arguments)};var dynCall_j=Module["dynCall_j"]=function(){return(dynCall_j=Module["dynCall_j"]=Module["asm"]["dynCall_j"]).apply(null,arguments)};var dynCall_iijji=Module["dynCall_iijji"]=function(){return(dynCall_iijji=Module["dynCall_iijji"]=Module["asm"]["dynCall_iijji"]).apply(null,arguments)};var dynCall_jiji=Module["dynCall_jiji"]=function(){return(dynCall_jiji=Module["dynCall_jiji"]=Module["asm"]["dynCall_jiji"]).apply(null,arguments)};var dynCall_iiji=Module["dynCall_iiji"]=function(){return(dynCall_iiji=Module["dynCall_iiji"]=Module["asm"]["dynCall_iiji"]).apply(null,arguments)};var dynCall_iijiiij=Module["dynCall_iijiiij"]=function(){return(dynCall_iijiiij=Module["dynCall_iijiiij"]=Module["asm"]["dynCall_iijiiij"]).apply(null,arguments)};var dynCall_iiiij=Module["dynCall_iiiij"]=function(){return(dynCall_iiiij=Module["dynCall_iiiij"]=Module["asm"]["dynCall_iiiij"]).apply(null,arguments)};var dynCall_jiiij=Module["dynCall_jiiij"]=function(){return(dynCall_jiiij=Module["dynCall_jiiij"]=Module["asm"]["dynCall_jiiij"]).apply(null,arguments)};var dynCall_viiijjii=Module["dynCall_viiijjii"]=function(){return(dynCall_viiijjii=Module["dynCall_viiijjii"]=Module["asm"]["dynCall_viiijjii"]).apply(null,arguments)};var dynCall_jd=Module["dynCall_jd"]=function(){return(dynCall_jd=Module["dynCall_jd"]=Module["asm"]["dynCall_jd"]).apply(null,arguments)};var dynCall_jf=Module["dynCall_jf"]=function(){return(dynCall_jf=Module["dynCall_jf"]=Module["asm"]["dynCall_jf"]).apply(null,arguments)};var dynCall_jiiiiiiiii=Module["dynCall_jiiiiiiiii"]=function(){return(dynCall_jiiiiiiiii=Module["dynCall_jiiiiiiiii"]=Module["asm"]["dynCall_jiiiiiiiii"]).apply(null,arguments)};var dynCall_vj=Module["dynCall_vj"]=function(){return(dynCall_vj=Module["dynCall_vj"]=Module["asm"]["dynCall_vj"]).apply(null,arguments)};var dynCall_iji=Module["dynCall_iji"]=function(){return(dynCall_iji=Module["dynCall_iji"]=Module["asm"]["dynCall_iji"]).apply(null,arguments)};var dynCall_ij=Module["dynCall_ij"]=function(){return(dynCall_ij=Module["dynCall_ij"]=Module["asm"]["dynCall_ij"]).apply(null,arguments)};var dynCall_jj=Module["dynCall_jj"]=function(){return(dynCall_jj=Module["dynCall_jj"]=Module["asm"]["dynCall_jj"]).apply(null,arguments)};var dynCall_iiijiiiii=Module["dynCall_iiijiiiii"]=function(){return(dynCall_iiijiiiii=Module["dynCall_iiijiiiii"]=Module["asm"]["dynCall_iiijiiiii"]).apply(null,arguments)};var dynCall_vijj=Module["dynCall_vijj"]=function(){return(dynCall_vijj=Module["dynCall_vijj"]=Module["asm"]["dynCall_vijj"]).apply(null,arguments)};var dynCall_iiijiiii=Module["dynCall_iiijiiii"]=function(){return(dynCall_iiijiiii=Module["dynCall_iiijiiii"]=Module["asm"]["dynCall_iiijiiii"]).apply(null,arguments)};var dynCall_jiiiii=Module["dynCall_jiiiii"]=function(){return(dynCall_jiiiii=Module["dynCall_jiiiii"]=Module["asm"]["dynCall_jiiiii"]).apply(null,arguments)};var dynCall_jij=Module["dynCall_jij"]=function(){return(dynCall_jij=Module["dynCall_jij"]=Module["asm"]["dynCall_jij"]).apply(null,arguments)};var dynCall_jijj=Module["dynCall_jijj"]=function(){return(dynCall_jijj=Module["dynCall_jijj"]=Module["asm"]["dynCall_jijj"]).apply(null,arguments)};var dynCall_iijjiii=Module["dynCall_iijjiii"]=function(){return(dynCall_iijjiii=Module["dynCall_iijjiii"]=Module["asm"]["dynCall_iijjiii"]).apply(null,arguments)};var dynCall_vijjjii=Module["dynCall_vijjjii"]=function(){return(dynCall_vijjjii=Module["dynCall_vijjjii"]=Module["asm"]["dynCall_vijjjii"]).apply(null,arguments)};var dynCall_iijii=Module["dynCall_iijii"]=function(){return(dynCall_iijii=Module["dynCall_iijii"]=Module["asm"]["dynCall_iijii"]).apply(null,arguments)};var dynCall_iijiii=Module["dynCall_iijiii"]=function(){return(dynCall_iijiii=Module["dynCall_iijiii"]=Module["asm"]["dynCall_iijiii"]).apply(null,arguments)};var dynCall_vijiiii=Module["dynCall_vijiiii"]=function(){return(dynCall_vijiiii=Module["dynCall_vijiiii"]=Module["asm"]["dynCall_vijiiii"]).apply(null,arguments)};var dynCall_iijiiii=Module["dynCall_iijiiii"]=function(){return(dynCall_iijiiii=Module["dynCall_iijiiii"]=Module["asm"]["dynCall_iijiiii"]).apply(null,arguments)};var dynCall_vij=Module["dynCall_vij"]=function(){return(dynCall_vij=Module["dynCall_vij"]=Module["asm"]["dynCall_vij"]).apply(null,arguments)};var dynCall_jii=Module["dynCall_jii"]=function(){return(dynCall_jii=Module["dynCall_jii"]=Module["asm"]["dynCall_jii"]).apply(null,arguments)};function invoke_vi(index,a1){var sp=stackSave();try{wasmTable.get(index)(a1)}catch(e){stackRestore(sp);if(e!==e+0&&e!=="longjmp")throw e;_setThrew(1,0)}}Module["ccall"]=ccall;Module["cwrap"]=cwrap;Module["setValue"]=setValue;Module["getValue"]=getValue;Module["UTF8ArrayToString"]=UTF8ArrayToString;Module["UTF8ToString"]=UTF8ToString;Module["addRunDependency"]=addRunDependency;Module["removeRunDependency"]=removeRunDependency;Module["FS_createPath"]=FS.createPath;Module["FS_createDataFile"]=FS.createDataFile;Module["FS_createPreloadedFile"]=FS.createPreloadedFile;Module["FS_createLazyFile"]=FS.createLazyFile;Module["FS_createDevice"]=FS.createDevice;Module["FS_unlink"]=FS.unlink;Module["addFunction"]=addFunction;var calledRun;function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}dependenciesFulfilled=function runCaller(){if(!calledRun)run();if(!calledRun)dependenciesFulfilled=runCaller};function run(args){args=args||arguments_;if(runDependencies>0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}Module["run"]=run;function exit(status,implicit){EXITSTATUS=status;if(implicit&&keepRuntimeAlive()&&status===0){return}if(keepRuntimeAlive()){}else{exitRuntime();if(Module["onExit"])Module["onExit"](status);ABORT=true}quit_(status,new ExitStatus(status))}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run(); - -// SIG // Begin signature block -// SIG // MIIojgYJKoZIhvcNAQcCoIIofzCCKHsCAQExDzANBglg -// SIG // hkgBZQMEAgEFADB3BgorBgEEAYI3AgEEoGkwZzAyBgor -// SIG // BgEEAYI3AgEeMCQCAQEEEBDgyQbOONQRoqMAEEvTUJAC -// SIG // AQACAQACAQACAQACAQAwMTANBglghkgBZQMEAgEFAAQg -// SIG // ZJeJxKO1VGCjHxrshb3IZcwkUCKnrImdcVQvXM4kEEyg -// SIG // gg3wMIIGbjCCBFagAwIBAgITMwAAAo1+R8OCfgUaKgAA -// SIG // AAACjTANBgkqhkiG9w0BAQwFADB+MQswCQYDVQQGEwJV -// SIG // UzETMBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMH -// SIG // UmVkbW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBv -// SIG // cmF0aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBT -// SIG // aWduaW5nIFBDQSAyMDExMB4XDTIxMTAxNDE4NDUxNFoX -// SIG // DTIyMTAxMzE4NDUxNFowYzELMAkGA1UEBhMCVVMxEzAR -// SIG // BgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1v -// SIG // bmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlv -// SIG // bjENMAsGA1UEAxMELk5FVDCCAaIwDQYJKoZIhvcNAQEB -// SIG // BQADggGPADCCAYoCggGBAM+nYwbxkHhF3CQTxhfbfq0y -// SIG // Y9iNmf+vpsXyHr+W14sNKW2VmN48wwUttFgkElZWXDR7 -// SIG // /LVrKRjN1wUWy/bzsFToydMsiIzNT1HUivMfeT/cykpT -// SIG // N/cVL/ZvvGrnhJeXQEn1xrnGNqW3ps0NjQQLPd2fvIy1 -// SIG // Y/YAIh9r2+dHkYj+VjmEtv9v7r2jbtklWw6OFgOwkB8f -// SIG // GA+15Qiny+1dE5WvItLj/DGrPmCWz4MVgfG42ntE481F -// SIG // Ly4U74rBEDtaNahOtPUSS8yTjUeNIgi3eTkznStetnjg -// SIG // r+Bn0Io4KhMqkwA7cav5wxlORTU/OTdM6PVJrw6NKC6I -// SIG // ztKqeOjlFs26h1c5eBY6ZKIbBwNkDQuSq/P52gOjsTzh -// SIG // /s+9JPwbXzr/plrAXIXZh178HTrsr5gP9iaPXWIMDvlM -// SIG // Fw54saZB68Hh+D1XiAKmOvct4etdk8v8wlJ96O3j8S2o -// SIG // omSdqcALeycc7hVnpJ8j6hFVW9hXFRqSb9VYn18cMu5u -// SIG // 3WvIkQIDAQABo4IBfjCCAXowHwYDVR0lBBgwFgYKKwYB -// SIG // BAGCN0wIAQYIKwYBBQUHAwMwHQYDVR0OBBYEFB4HrzFI -// SIG // RagJ4H8x6Jocx6igXl7OMFAGA1UdEQRJMEekRTBDMSkw -// SIG // JwYDVQQLEyBNaWNyb3NvZnQgT3BlcmF0aW9ucyBQdWVy -// SIG // dG8gUmljbzEWMBQGA1UEBRMNNDY0MjIzKzQ2ODYyNjAf -// SIG // BgNVHSMEGDAWgBRIbmTlUAXTgqoXNzcitW2oynUClTBU -// SIG // BgNVHR8ETTBLMEmgR6BFhkNodHRwOi8vd3d3Lm1pY3Jv -// SIG // c29mdC5jb20vcGtpb3BzL2NybC9NaWNDb2RTaWdQQ0Ey -// SIG // MDExXzIwMTEtMDctMDguY3JsMGEGCCsGAQUFBwEBBFUw -// SIG // UzBRBggrBgEFBQcwAoZFaHR0cDovL3d3dy5taWNyb3Nv -// SIG // ZnQuY29tL3BraW9wcy9jZXJ0cy9NaWNDb2RTaWdQQ0Ey -// SIG // MDExXzIwMTEtMDctMDguY3J0MAwGA1UdEwEB/wQCMAAw -// SIG // DQYJKoZIhvcNAQEMBQADggIBAB4qmkYG7kKK3A6/oZNe -// SIG // IP9JhNg7SX+VnacQGuwIHW2TxICObVUVh7Pq8m+xG9Ec -// SIG // o4Wl8AoArhOWnp3IMWFiF+vxGD7zaJpG77kxFXDewsA8 -// SIG // PnehwnMfHq6TliI5/65+FZB4Kf5Ey16s2Qk6nTSq/bsg -// SIG // T572aCkU9hPd5WXukhRfuQOnWn6lRWREhcqAReuFmik5 -// SIG // YD+hgJZgo3sCDc01hVEgOIdwgjXMENALrAgaQlp/QFRX -// SIG // +DMRpW96eyFoKFRWiRudBhtSqf9I+WmTgzK9QStgT8mn -// SIG // njaY70f8/dcqs0nv4wrWb438wT1xddyIrQXMnObYZCqb -// SIG // 7JDNTPfRpKpfAykwhRmAJDDvDn/zNmlz/vcaU4+WLtBV -// SIG // 2zpyk4oVcZzJgMWgGl3gdg8+fNAcLoQwfRqk+wYJccu+ -// SIG // IX8lR0h+CygomPKALmxSb2ShJsU3BXXd6E135PgCkPsv -// SIG // x3ntyeorbcAshUOIaqJamTOdWkNf5X97QoTDEuPsS2tI -// SIG // zI3munvtDZ14nykyYjf4eX8NR6pAwOEgMrWQ14taSKq6 -// SIG // MaXNucGaqCzFw/L+4p115iZbOo69+OuOhbVNB2tIZjeK -// SIG // YE7QKKU+lAdzgZUacya+Mg1Ku3ndGdvDB8IT735c3nU3 -// SIG // 8LV8Ytut5jxvaiA1om3DNumfVNAITHgnJF8p7x1DzIA5 -// SIG // Nax2MIIHejCCBWKgAwIBAgIKYQ6Q0gAAAAAAAzANBgkq -// SIG // hkiG9w0BAQsFADCBiDELMAkGA1UEBhMCVVMxEzARBgNV -// SIG // BAgTCldhc2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQx -// SIG // HjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEy -// SIG // MDAGA1UEAxMpTWljcm9zb2Z0IFJvb3QgQ2VydGlmaWNh -// SIG // dGUgQXV0aG9yaXR5IDIwMTEwHhcNMTEwNzA4MjA1OTA5 -// SIG // WhcNMjYwNzA4MjEwOTA5WjB+MQswCQYDVQQGEwJVUzET -// SIG // MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk -// SIG // bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 -// SIG // aW9uMSgwJgYDVQQDEx9NaWNyb3NvZnQgQ29kZSBTaWdu -// SIG // aW5nIFBDQSAyMDExMIICIjANBgkqhkiG9w0BAQEFAAOC -// SIG // Ag8AMIICCgKCAgEAq/D6chAcLq3YbqqCEE00uvK2WCGf -// SIG // Qhsqa+laUKq4BjgaBEm6f8MMHt03a8YS2AvwOMKZBrDI -// SIG // OdUBFDFC04kNeWSHfpRgJGyvnkmc6Whe0t+bU7IKLMOv -// SIG // 2akrrnoJr9eWWcpgGgXpZnboMlImEi/nqwhQz7NEt13Y -// SIG // xC4Ddato88tt8zpcoRb0RrrgOGSsbmQ1eKagYw8t00CT -// SIG // +OPeBw3VXHmlSSnnDb6gE3e+lD3v++MrWhAfTVYoonpy -// SIG // 4BI6t0le2O3tQ5GD2Xuye4Yb2T6xjF3oiU+EGvKhL1nk -// SIG // kDstrjNYxbc+/jLTswM9sbKvkjh+0p2ALPVOVpEhNSXD -// SIG // OW5kf1O6nA+tGSOEy/S6A4aN91/w0FK/jJSHvMAhdCVf -// SIG // GCi2zCcoOCWYOUo2z3yxkq4cI6epZuxhH2rhKEmdX4ji -// SIG // JV3TIUs+UsS1Vz8kA/DRelsv1SPjcF0PUUZ3s/gA4bys -// SIG // AoJf28AVs70b1FVL5zmhD+kjSbwYuER8ReTBw3J64HLn -// SIG // JN+/RpnF78IcV9uDjexNSTCnq47f7Fufr/zdsGbiwZeB -// SIG // e+3W7UvnSSmnEyimp31ngOaKYnhfsi+E11ecXL93KCjx -// SIG // 7W3DKI8sj0A3T8HhhUSJxAlMxdSlQy90lfdu+HggWCwT -// SIG // XWCVmj5PM4TasIgX3p5O9JawvEagbJjS4NaIjAsCAwEA -// SIG // AaOCAe0wggHpMBAGCSsGAQQBgjcVAQQDAgEAMB0GA1Ud -// SIG // DgQWBBRIbmTlUAXTgqoXNzcitW2oynUClTAZBgkrBgEE -// SIG // AYI3FAIEDB4KAFMAdQBiAEMAQTALBgNVHQ8EBAMCAYYw -// SIG // DwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBRyLToC -// SIG // MZBDuRQFTuHqp8cx0SOJNDBaBgNVHR8EUzBRME+gTaBL -// SIG // hklodHRwOi8vY3JsLm1pY3Jvc29mdC5jb20vcGtpL2Ny -// SIG // bC9wcm9kdWN0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFf -// SIG // MDNfMjIuY3JsMF4GCCsGAQUFBwEBBFIwUDBOBggrBgEF -// SIG // BQcwAoZCaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL3Br -// SIG // aS9jZXJ0cy9NaWNSb29DZXJBdXQyMDExXzIwMTFfMDNf -// SIG // MjIuY3J0MIGfBgNVHSAEgZcwgZQwgZEGCSsGAQQBgjcu -// SIG // AzCBgzA/BggrBgEFBQcCARYzaHR0cDovL3d3dy5taWNy -// SIG // b3NvZnQuY29tL3BraW9wcy9kb2NzL3ByaW1hcnljcHMu -// SIG // aHRtMEAGCCsGAQUFBwICMDQeMiAdAEwAZQBnAGEAbABf -// SIG // AHAAbwBsAGkAYwB5AF8AcwB0AGEAdABlAG0AZQBuAHQA -// SIG // LiAdMA0GCSqGSIb3DQEBCwUAA4ICAQBn8oalmOBUeRou -// SIG // 09h0ZyKbC5YR4WOSmUKWfdJ5DJDBZV8uLD74w3LRbYP+ -// SIG // vj/oCso7v0epo/Np22O/IjWll11lhJB9i0ZQVdgMknzS -// SIG // Gksc8zxCi1LQsP1r4z4HLimb5j0bpdS1HXeUOeLpZMlE -// SIG // PXh6I/MTfaaQdION9MsmAkYqwooQu6SpBQyb7Wj6aC6V -// SIG // oCo/KmtYSWMfCWluWpiW5IP0wI/zRive/DvQvTXvbiWu -// SIG // 5a8n7dDd8w6vmSiXmE0OPQvyCInWH8MyGOLwxS3OW560 -// SIG // STkKxgrCxq2u5bLZ2xWIUUVYODJxJxp/sfQn+N4sOiBp -// SIG // mLJZiWhub6e3dMNABQamASooPoI/E01mC8CzTfXhj38c -// SIG // bxV9Rad25UAqZaPDXVJihsMdYzaXht/a8/jyFqGaJ+HN -// SIG // pZfQ7l1jQeNbB5yHPgZ3BtEGsXUfFL5hYbXw3MYbBL7f -// SIG // QccOKO7eZS/sl/ahXJbYANahRr1Z85elCUtIEJmAH9AA -// SIG // KcWxm6U/RXceNcbSoqKfenoi+kiVH6v7RyOA9Z74v2u3 -// SIG // S5fi63V4GuzqN5l5GEv/1rMjaHXmr/r8i+sLgOppO6/8 -// SIG // MO0ETI7f33VtY5E90Z1WTk+/gFcioXgRMiF670EKsT/7 -// SIG // qMykXcGhiJtXcVZOSEXAQsmbdlsKgEhr/Xmfwb1tbWrJ -// SIG // UnMTDXpQzTGCGfYwghnyAgEBMIGVMH4xCzAJBgNVBAYT -// SIG // AlVTMRMwEQYDVQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQH -// SIG // EwdSZWRtb25kMR4wHAYDVQQKExVNaWNyb3NvZnQgQ29y -// SIG // cG9yYXRpb24xKDAmBgNVBAMTH01pY3Jvc29mdCBDb2Rl -// SIG // IFNpZ25pbmcgUENBIDIwMTECEzMAAAKNfkfDgn4FGioA -// SIG // AAAAAo0wDQYJYIZIAWUDBAIBBQCgga4wGQYJKoZIhvcN -// SIG // AQkDMQwGCisGAQQBgjcCAQQwHAYKKwYBBAGCNwIBCzEO -// SIG // MAwGCisGAQQBgjcCARUwLwYJKoZIhvcNAQkEMSIEIEhp -// SIG // rCziQU4IuN/UpdN1WZ8lu+b8VAfV7hu4H/l2/6YEMEIG -// SIG // CisGAQQBgjcCAQwxNDAyoBSAEgBNAGkAYwByAG8AcwBv -// SIG // AGYAdKEagBhodHRwOi8vd3d3Lm1pY3Jvc29mdC5jb20w -// SIG // DQYJKoZIhvcNAQEBBQAEggGAaOCjFpl1SPh7gqxkDj3r -// SIG // BTkqTrW/qLx/c3KI1VxDxf/r5z6xiPgxlLZ4Rexz+ln5 -// SIG // vbVf8n+62sbi0muePCSMuE5ihLOYmiTYLmyPHaA8zSEX -// SIG // Xr0ADyOUPV9JVezur8DqdmrwMAq1N/LUPcnggwhXCAzE -// SIG // BuQaZRYnNq63uODtaVPNfTXOAf8JY3bHVqj7j8twyyZK -// SIG // rzTuIM16MmcT8jqchfupCaam7nII0gZqx22h6y1JX75e -// SIG // vu7vgEbq+1+f9miG/AHvd4f1t1FpAv9ZopK2pRdVTum6 -// SIG // sS4qzfvCLWUDCDxx/K+lbwymBelganz57y7EIpquZoXm -// SIG // jnN5ZqvTnhkpBw4pEfw/cIP1zb1J+MGmXzk2SqEr2wFi -// SIG // S8DhG1eqdO3c+9G/rjtHrfh0H5m50G/Ihxd+g1p8a2y8 -// SIG // IBg/ItoII6tdiMcXZVCQLlwGAEVmpV1uLmkB2US+doz0 -// SIG // lhnr6SzpQpQp7XDf0XuAp7rOAW7ecJ3rQ5CWL1sIg5LL -// SIG // Kv4BrBP6oYIXADCCFvwGCisGAQQBgjcDAwExghbsMIIW -// SIG // 6AYJKoZIhvcNAQcCoIIW2TCCFtUCAQMxDzANBglghkgB -// SIG // ZQMEAgEFADCCAVEGCyqGSIb3DQEJEAEEoIIBQASCATww -// SIG // ggE4AgEBBgorBgEEAYRZCgMBMDEwDQYJYIZIAWUDBAIB -// SIG // BQAEIFJJ0NDJXfQkK1ZEtvO09LZGuwaEcyimOnaZ5MqP -// SIG // K9O9AgZiYZCL+nsYEzIwMjIwNDI1MTkxNzE4LjU0OVow -// SIG // BIACAfSggdCkgc0wgcoxCzAJBgNVBAYTAlVTMRMwEQYD -// SIG // VQQIEwpXYXNoaW5ndG9uMRAwDgYDVQQHEwdSZWRtb25k -// SIG // MR4wHAYDVQQKExVNaWNyb3NvZnQgQ29ycG9yYXRpb24x -// SIG // JTAjBgNVBAsTHE1pY3Jvc29mdCBBbWVyaWNhIE9wZXJh -// SIG // dGlvbnMxJjAkBgNVBAsTHVRoYWxlcyBUU1MgRVNOOkRE -// SIG // OEMtRTMzNy0yRkFFMSUwIwYDVQQDExxNaWNyb3NvZnQg -// SIG // VGltZS1TdGFtcCBTZXJ2aWNloIIRVzCCBwwwggT0oAMC -// SIG // AQICEzMAAAGcD6ZNYdKeSygAAQAAAZwwDQYJKoZIhvcN -// SIG // AQELBQAwfDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldh -// SIG // c2hpbmd0b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNV -// SIG // BAoTFU1pY3Jvc29mdCBDb3Jwb3JhdGlvbjEmMCQGA1UE -// SIG // AxMdTWljcm9zb2Z0IFRpbWUtU3RhbXAgUENBIDIwMTAw -// SIG // HhcNMjExMjAyMTkwNTE5WhcNMjMwMjI4MTkwNTE5WjCB -// SIG // yjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0 -// SIG // b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p -// SIG // Y3Jvc29mdCBDb3Jwb3JhdGlvbjElMCMGA1UECxMcTWlj -// SIG // cm9zb2Z0IEFtZXJpY2EgT3BlcmF0aW9uczEmMCQGA1UE -// SIG // CxMdVGhhbGVzIFRTUyBFU046REQ4Qy1FMzM3LTJGQUUx -// SIG // JTAjBgNVBAMTHE1pY3Jvc29mdCBUaW1lLVN0YW1wIFNl -// SIG // cnZpY2UwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK -// SIG // AoICAQDbUioMGV1JFj+s612s02mKu23KPUNs71OjDeJG -// SIG // txkTF9rSWTiuA8XgYkAAi/5+2Ff7Ck7JcKQ9H/XD1OKw -// SIG // g1/bH3E1qO1z8XRy0PlpGhmyilgE7KsOvW8PIZCf243K -// SIG // dldgOrxrL8HKiQodOwStyT5lLWYpMsuT2fH8k8oihje4 -// SIG // TlpWiFPaCKLnFDaAB0Ccy6vIdtHjYB1Ie3iOZPisquL+ -// SIG // vNdCx7gOhB8iiTmTdsU8OSUpC8tBTeTIYPzmhaxQZd4m -// SIG // oNk6qeCJyi7fiW4fyXdHrZ3otmgxxa5pXz5pUUr+cEjV -// SIG // +cwIYBMkaY5kHM9c6dEGkgHn0ZDJvdt/54FOdSG61WwH -// SIG // h4+evUhwvXaB4LCMZIdCt5acOfNvtDjV3CHyFOp5AU/q -// SIG // gAwGftHU9brv4EUwcuteEAKH46NufE20l/WjlNUh7gAv -// SIG // t2zKMjO4zXRxCUTh/prBQwXJiUZeFSrEXiOfkuvSlBni -// SIG // yAYYZp5kOnaxfCKdGYjvr4QLA93vQJ6p2Ox3IHvOdCPa -// SIG // Cr8LsKVcFpyp8MEhhJTM+1LwqHJqFDF5O1Z9mjbYvm3R -// SIG // 9vPhkG+RDLKoTpr7mTgkaTljd9xvm94Obp8BD9Hk4mPi -// SIG // 51mtgLiuN8/6aZVESVZXtvSuNkD5DnIJQerIy5jaRKW/ -// SIG // W2rCe9ngNDJadS7R96GGRl7IIE37lwIDAQABo4IBNjCC -// SIG // ATIwHQYDVR0OBBYEFLtpCWdTXY5dtddkspy+oxjCA/qy -// SIG // MB8GA1UdIwQYMBaAFJ+nFV0AXmJdg/Tl0mWnG1M1Gely -// SIG // MF8GA1UdHwRYMFYwVKBSoFCGTmh0dHA6Ly93d3cubWlj -// SIG // cm9zb2Z0LmNvbS9wa2lvcHMvY3JsL01pY3Jvc29mdCUy -// SIG // MFRpbWUtU3RhbXAlMjBQQ0ElMjAyMDEwKDEpLmNybDBs -// SIG // BggrBgEFBQcBAQRgMF4wXAYIKwYBBQUHMAKGUGh0dHA6 -// SIG // Ly93d3cubWljcm9zb2Z0LmNvbS9wa2lvcHMvY2VydHMv -// SIG // TWljcm9zb2Z0JTIwVGltZS1TdGFtcCUyMFBDQSUyMDIw -// SIG // MTAoMSkuY3J0MAwGA1UdEwEB/wQCMAAwEwYDVR0lBAww -// SIG // CgYIKwYBBQUHAwgwDQYJKoZIhvcNAQELBQADggIBAKcA -// SIG // KqYjGEczTWMs9z0m7Yo23sgqVF3LyK6gOMz7TCHAJN+F -// SIG // vbvZkQ53VkvrZUd1sE6a9ToGldcJnOmBc6iuhBlpvdN1 -// SIG // BLBRO8QSTD1433VTj4XCQd737wND1+eqKG3BdjrzbDks -// SIG // EwfG4v57PgrN/T7s7PkEjUGXfIgFQQkr8TQi+/HZZ9kR -// SIG // lNccgeACqlfb4uGPxn5sdhQPoxdMvmC3qG9DONJ5UsS9 -// SIG // KtO+bey+ohUTDa9LvEToc4Qzy5fuHj2H1JsmCaKG78nX -// SIG // pfWpwBLBxZYSpfml29onN8jcG7KD8nGSS/76PDlb2GMQ -// SIG // svv+Ra0JgL6FtGRGgYmHCpM6zVrf4V/a+SoHcC+tcdGY -// SIG // k2aKU5KOlv+fFE3n024V+z54tDAKR9z78rejdCBWqfvy -// SIG // 5cBUQ9c5+3unHD08BEp7qP2rgpoD856vNDgEwO77n7EW -// SIG // T76nl/IyrbK2kjbHLzUMphFpXKnV1fYWJI2+E/0LHvXF -// SIG // GGqF4OvMBRxbrJVn03T2Dy5db6s5TzJzSaQvCrXYqA4H -// SIG // KvstQWkqkpvBHTX8M09+/vyRbVXNxrPdeXw6oD2Q4Dks -// SIG // ykCFfn8N2j2LdixE9wG5iilv69dzsvHIN/g9A9+thkAQ -// SIG // CVb9DUSOTaMIGgsOqDYFjhT6ze9lkhHHGv/EEIkxj9l6 -// SIG // S4hqUQyWerFkaUWDXcnZMIIHcTCCBVmgAwIBAgITMwAA -// SIG // ABXF52ueAptJmQAAAAAAFTANBgkqhkiG9w0BAQsFADCB -// SIG // iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCldhc2hpbmd0 -// SIG // b24xEDAOBgNVBAcTB1JlZG1vbmQxHjAcBgNVBAoTFU1p -// SIG // Y3Jvc29mdCBDb3Jwb3JhdGlvbjEyMDAGA1UEAxMpTWlj -// SIG // cm9zb2Z0IFJvb3QgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 -// SIG // IDIwMTAwHhcNMjEwOTMwMTgyMjI1WhcNMzAwOTMwMTgz -// SIG // MjI1WjB8MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2Fz -// SIG // aGluZ3RvbjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UE -// SIG // ChMVTWljcm9zb2Z0IENvcnBvcmF0aW9uMSYwJAYDVQQD -// SIG // Ex1NaWNyb3NvZnQgVGltZS1TdGFtcCBQQ0EgMjAxMDCC -// SIG // AiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAOTh -// SIG // pkzntHIhC3miy9ckeb0O1YLT/e6cBwfSqWxOdcjKNVf2 -// SIG // AX9sSuDivbk+F2Az/1xPx2b3lVNxWuJ+Slr+uDZnhUYj -// SIG // DLWNE893MsAQGOhgfWpSg0S3po5GawcU88V29YZQ3MFE -// SIG // yHFcUTE3oAo4bo3t1w/YJlN8OWECesSq/XJprx2rrPY2 -// SIG // vjUmZNqYO7oaezOtgFt+jBAcnVL+tuhiJdxqD89d9P6O -// SIG // U8/W7IVWTe/dvI2k45GPsjksUZzpcGkNyjYtcI4xyDUo -// SIG // veO0hyTD4MmPfrVUj9z6BVWYbWg7mka97aSueik3rMvr -// SIG // g0XnRm7KMtXAhjBcTyziYrLNueKNiOSWrAFKu75xqRdb -// SIG // Z2De+JKRHh09/SDPc31BmkZ1zcRfNN0Sidb9pSB9fvzZ -// SIG // nkXftnIv231fgLrbqn427DZM9ituqBJR6L8FA6PRc6ZN -// SIG // N3SUHDSCD/AQ8rdHGO2n6Jl8P0zbr17C89XYcz1DTsEz -// SIG // OUyOArxCaC4Q6oRRRuLRvWoYWmEBc8pnol7XKHYC4jMY -// SIG // ctenIPDC+hIK12NvDMk2ZItboKaDIV1fMHSRlJTYuVD5 -// SIG // C4lh8zYGNRiER9vcG9H9stQcxWv2XFJRXRLbJbqvUAV6 -// SIG // bMURHXLvjflSxIUXk8A8FdsaN8cIFRg/eKtFtvUeh17a -// SIG // j54WcmnGrnu3tz5q4i6tAgMBAAGjggHdMIIB2TASBgkr -// SIG // BgEEAYI3FQEEBQIDAQABMCMGCSsGAQQBgjcVAgQWBBQq -// SIG // p1L+ZMSavoKRPEY1Kc8Q/y8E7jAdBgNVHQ4EFgQUn6cV -// SIG // XQBeYl2D9OXSZacbUzUZ6XIwXAYDVR0gBFUwUzBRBgwr -// SIG // BgEEAYI3TIN9AQEwQTA/BggrBgEFBQcCARYzaHR0cDov -// SIG // L3d3dy5taWNyb3NvZnQuY29tL3BraW9wcy9Eb2NzL1Jl -// SIG // cG9zaXRvcnkuaHRtMBMGA1UdJQQMMAoGCCsGAQUFBwMI -// SIG // MBkGCSsGAQQBgjcUAgQMHgoAUwB1AGIAQwBBMAsGA1Ud -// SIG // DwQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQY -// SIG // MBaAFNX2VsuP6KJcYmjRPZSQW9fOmhjEMFYGA1UdHwRP -// SIG // ME0wS6BJoEeGRWh0dHA6Ly9jcmwubWljcm9zb2Z0LmNv -// SIG // bS9wa2kvY3JsL3Byb2R1Y3RzL01pY1Jvb0NlckF1dF8y -// SIG // MDEwLTA2LTIzLmNybDBaBggrBgEFBQcBAQROMEwwSgYI -// SIG // KwYBBQUHMAKGPmh0dHA6Ly93d3cubWljcm9zb2Z0LmNv -// SIG // bS9wa2kvY2VydHMvTWljUm9vQ2VyQXV0XzIwMTAtMDYt -// SIG // MjMuY3J0MA0GCSqGSIb3DQEBCwUAA4ICAQCdVX38Kq3h -// SIG // LB9nATEkW+Geckv8qW/qXBS2Pk5HZHixBpOXPTEztTnX -// SIG // wnE2P9pkbHzQdTltuw8x5MKP+2zRoZQYIu7pZmc6U03d -// SIG // mLq2HnjYNi6cqYJWAAOwBb6J6Gngugnue99qb74py27Y -// SIG // P0h1AdkY3m2CDPVtI1TkeFN1JFe53Z/zjj3G82jfZfak -// SIG // Vqr3lbYoVSfQJL1AoL8ZthISEV09J+BAljis9/kpicO8 -// SIG // F7BUhUKz/AyeixmJ5/ALaoHCgRlCGVJ1ijbCHcNhcy4s -// SIG // a3tuPywJeBTpkbKpW99Jo3QMvOyRgNI95ko+ZjtPu4b6 -// SIG // MhrZlvSP9pEB9s7GdP32THJvEKt1MMU0sHrYUP4KWN1A -// SIG // PMdUbZ1jdEgssU5HLcEUBHG/ZPkkvnNtyo4JvbMBV0lU -// SIG // ZNlz138eW0QBjloZkWsNn6Qo3GcZKCS6OEuabvshVGtq -// SIG // RRFHqfG3rsjoiV5PndLQTHa1V1QJsWkBRH58oWFsc/4K -// SIG // u+xBZj1p/cvBQUl+fpO+y/g75LcVv7TOPqUxUYS8vwLB -// SIG // gqJ7Fx0ViY1w/ue10CgaiQuPNtq6TPmb/wrpNPgkNWcr -// SIG // 4A245oyZ1uEi6vAnQj0llOZ0dFtq0Z4+7X6gMTN9vMvp -// SIG // e784cETRkPHIqzqKOghif9lwY1NNje6CbaUFEMFxBmoQ -// SIG // tB1VM1izoXBm8qGCAs4wggI3AgEBMIH4oYHQpIHNMIHK -// SIG // MQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv -// SIG // bjEQMA4GA1UEBxMHUmVkbW9uZDEeMBwGA1UEChMVTWlj -// SIG // cm9zb2Z0IENvcnBvcmF0aW9uMSUwIwYDVQQLExxNaWNy -// SIG // b3NvZnQgQW1lcmljYSBPcGVyYXRpb25zMSYwJAYDVQQL -// SIG // Ex1UaGFsZXMgVFNTIEVTTjpERDhDLUUzMzctMkZBRTEl -// SIG // MCMGA1UEAxMcTWljcm9zb2Z0IFRpbWUtU3RhbXAgU2Vy -// SIG // dmljZaIjCgEBMAcGBSsOAwIaAxUAzdlp6t3ws/bnErbm -// SIG // 9c0M+9dvU0CggYMwgYCkfjB8MQswCQYDVQQGEwJVUzET -// SIG // MBEGA1UECBMKV2FzaGluZ3RvbjEQMA4GA1UEBxMHUmVk -// SIG // bW9uZDEeMBwGA1UEChMVTWljcm9zb2Z0IENvcnBvcmF0 -// SIG // aW9uMSYwJAYDVQQDEx1NaWNyb3NvZnQgVGltZS1TdGFt -// SIG // cCBQQ0EgMjAxMDANBgkqhkiG9w0BAQUFAAIFAOYRVOAw -// SIG // IhgPMjAyMjA0MjYwMTEyMDBaGA8yMDIyMDQyNzAxMTIw -// SIG // MFowdzA9BgorBgEEAYRZCgQBMS8wLTAKAgUA5hFU4AIB -// SIG // ADAKAgEAAgITSAIB/zAHAgEAAgIRUjAKAgUA5hKmYAIB -// SIG // ADA2BgorBgEEAYRZCgQCMSgwJjAMBgorBgEEAYRZCgMC -// SIG // oAowCAIBAAIDB6EgoQowCAIBAAIDAYagMA0GCSqGSIb3 -// SIG // DQEBBQUAA4GBADgVbFCwnF2yj5NTpTayy+XeR+dPrPl5 -// SIG // 12DqhiA9y7cEHwVIHAfYQkgZ1UD0uV8AgxJ9oPA1/5Bw -// SIG // 89O7K7mOpj+bSuDHcruAWwJcUVNT4g1FcUjvRA2SikS9 -// SIG // QTdHL7HcCnA6rcXEsD9gqgqaB32jFKpCQLH5qwItoaJl -// SIG // aRYni0laMYIEDTCCBAkCAQEwgZMwfDELMAkGA1UEBhMC -// SIG // VVMxEzARBgNVBAgTCldhc2hpbmd0b24xEDAOBgNVBAcT -// SIG // B1JlZG1vbmQxHjAcBgNVBAoTFU1pY3Jvc29mdCBDb3Jw -// SIG // b3JhdGlvbjEmMCQGA1UEAxMdTWljcm9zb2Z0IFRpbWUt -// SIG // U3RhbXAgUENBIDIwMTACEzMAAAGcD6ZNYdKeSygAAQAA -// SIG // AZwwDQYJYIZIAWUDBAIBBQCgggFKMBoGCSqGSIb3DQEJ -// SIG // AzENBgsqhkiG9w0BCRABBDAvBgkqhkiG9w0BCQQxIgQg -// SIG // HX2cxgpG6dnRsP6iEOEiEMsPP1TvUWdgFxlXQc6gCxww -// SIG // gfoGCyqGSIb3DQEJEAIvMYHqMIHnMIHkMIG9BCA3D0WF -// SIG // II0syjoRd/XeEIG0WUIKzzuy6P6hORrb0nqmvDCBmDCB -// SIG // gKR+MHwxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpXYXNo -// SIG // aW5ndG9uMRAwDgYDVQQHEwdSZWRtb25kMR4wHAYDVQQK -// SIG // ExVNaWNyb3NvZnQgQ29ycG9yYXRpb24xJjAkBgNVBAMT -// SIG // HU1pY3Jvc29mdCBUaW1lLVN0YW1wIFBDQSAyMDEwAhMz -// SIG // AAABnA+mTWHSnksoAAEAAAGcMCIEINcVaStvj3CXQ5RB -// SIG // MGd0e4MVoi1rC25eETTzU195RDkkMA0GCSqGSIb3DQEB -// SIG // CwUABIICAEbbml544bbIKbZ50rjN8+Ys0aS9C+azZqJm -// SIG // KXohrikJVcV89O4U6h/zCAXh1pBGo9k+X549sWcJLBvv -// SIG // LINOvhQhy39Oj18rw/u4AUFJ8Pk1BuLVLW+zc55+Ru2q -// SIG // ETbMpiHevc9e58DHSySpr/rS8ylwcBJVtO+AzuQsVJZn -// SIG // yGjfVjWQd858IVAEkJWZLZwDrxJRsdKPY1u6fWmPOp7O -// SIG // k/LSoKpN3q6H7fobXIFCpxXWFGePlZ6LF4Y+UExFu/2U -// SIG // A1ivEaHNgqrIh6USzkblgeGT6gtc9V/MTybgM3GfbDVM -// SIG // eE1zSeu41B7bWVbBQ7Rou6OkszVxBBySpLXWhXdc+wuC -// SIG // E+LV1//UfS2QD5cz0gQvc89M/UW7BOrZrA0IFOWimWnc -// SIG // q4Ci64lfV2Eoa37kCT5cjIfKqQpJZGjwyE/yJHcyqaLw -// SIG // 4u/PMgpkjVlgGyUhOGw1e9R/DMi01p6h2C8PbMsvy2fi -// SIG // t+PttlTg5A7oU2DVuQ+M67Dx1q+AuoHfu/wwpnjlfsc4 -// SIG // AZFVd7KknRcDDshY+oJ1orZHVxxwjG9mIwnDlSASz1u3 -// SIG // 6xXzUzVNoFzmTE6bDBOFpjDOA+IezkDST08BsJ2Af50d -// SIG // /Y1CMxoRvlSNneVXB28jlW3VDqS/bS3/4ovUCTpaYk9T -// SIG // 01X/SqSkiqrT+yMncZTdvq8ET8KFdU5q -// SIG // End signature block diff --git a/_framework/dotnet.6.0.5.5og2bxjr7p.js.br b/_framework/dotnet.6.0.5.5og2bxjr7p.js.br deleted file mode 100644 index 7a99c16..0000000 Binary files a/_framework/dotnet.6.0.5.5og2bxjr7p.js.br and /dev/null differ diff --git a/_framework/dotnet.6.0.5.5og2bxjr7p.js.gz b/_framework/dotnet.6.0.5.5og2bxjr7p.js.gz deleted file mode 100644 index a6bd093..0000000 Binary files a/_framework/dotnet.6.0.5.5og2bxjr7p.js.gz and /dev/null differ diff --git a/_framework/dotnet.timezones.blat b/_framework/dotnet.timezones.blat deleted file mode 100755 index aaf85d8..0000000 Binary files a/_framework/dotnet.timezones.blat and /dev/null differ diff --git a/_framework/dotnet.timezones.blat.br b/_framework/dotnet.timezones.blat.br deleted file mode 100644 index 019ea79..0000000 Binary files a/_framework/dotnet.timezones.blat.br and /dev/null differ diff --git a/_framework/dotnet.timezones.blat.gz b/_framework/dotnet.timezones.blat.gz deleted file mode 100644 index 8324125..0000000 Binary files a/_framework/dotnet.timezones.blat.gz and /dev/null differ diff --git a/_framework/dotnet.wasm b/_framework/dotnet.wasm deleted file mode 100755 index 07a560f..0000000 Binary files a/_framework/dotnet.wasm and /dev/null differ diff --git a/_framework/dotnet.wasm.br b/_framework/dotnet.wasm.br deleted file mode 100644 index 190902f..0000000 Binary files a/_framework/dotnet.wasm.br and /dev/null differ diff --git a/_framework/dotnet.wasm.gz b/_framework/dotnet.wasm.gz deleted file mode 100644 index 89c2445..0000000 Binary files a/_framework/dotnet.wasm.gz and /dev/null differ diff --git a/_framework/en/RewardsPlus.BlazorWebAssembly.Client.resources.dll b/_framework/en/RewardsPlus.BlazorWebAssembly.Client.resources.dll deleted file mode 100644 index e416414..0000000 Binary files a/_framework/en/RewardsPlus.BlazorWebAssembly.Client.resources.dll and /dev/null differ diff --git a/_framework/en/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br b/_framework/en/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br deleted file mode 100644 index 8ded394..0000000 Binary files a/_framework/en/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br and /dev/null differ diff --git a/_framework/en/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz b/_framework/en/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz deleted file mode 100644 index 7b1cf81..0000000 Binary files a/_framework/en/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz and /dev/null differ diff --git a/_framework/es/RewardsPlus.BlazorWebAssembly.Client.resources.dll b/_framework/es/RewardsPlus.BlazorWebAssembly.Client.resources.dll deleted file mode 100644 index c1372e8..0000000 Binary files a/_framework/es/RewardsPlus.BlazorWebAssembly.Client.resources.dll and /dev/null differ diff --git a/_framework/es/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br b/_framework/es/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br deleted file mode 100644 index 957fc67..0000000 Binary files a/_framework/es/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br and /dev/null differ diff --git a/_framework/es/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz b/_framework/es/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz deleted file mode 100644 index dd29171..0000000 Binary files a/_framework/es/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz and /dev/null differ diff --git a/_framework/fr/RewardsPlus.BlazorWebAssembly.Client.resources.dll b/_framework/fr/RewardsPlus.BlazorWebAssembly.Client.resources.dll deleted file mode 100644 index 38c524c..0000000 Binary files a/_framework/fr/RewardsPlus.BlazorWebAssembly.Client.resources.dll and /dev/null differ diff --git a/_framework/fr/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br b/_framework/fr/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br deleted file mode 100644 index 18d4cf2..0000000 Binary files a/_framework/fr/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br and /dev/null differ diff --git a/_framework/fr/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz b/_framework/fr/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz deleted file mode 100644 index 166cbcd..0000000 Binary files a/_framework/fr/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz and /dev/null differ diff --git a/_framework/icudt.dat b/_framework/icudt.dat deleted file mode 100755 index 7281a27..0000000 Binary files a/_framework/icudt.dat and /dev/null differ diff --git a/_framework/icudt.dat.br b/_framework/icudt.dat.br deleted file mode 100644 index d368e66..0000000 Binary files a/_framework/icudt.dat.br and /dev/null differ diff --git a/_framework/icudt.dat.gz b/_framework/icudt.dat.gz deleted file mode 100644 index 2d4250a..0000000 Binary files a/_framework/icudt.dat.gz and /dev/null differ diff --git a/_framework/icudt_CJK.dat b/_framework/icudt_CJK.dat deleted file mode 100755 index a4ef6d7..0000000 Binary files a/_framework/icudt_CJK.dat and /dev/null differ diff --git a/_framework/icudt_CJK.dat.br b/_framework/icudt_CJK.dat.br deleted file mode 100644 index 17fb998..0000000 Binary files a/_framework/icudt_CJK.dat.br and /dev/null differ diff --git a/_framework/icudt_CJK.dat.gz b/_framework/icudt_CJK.dat.gz deleted file mode 100644 index b89cc63..0000000 Binary files a/_framework/icudt_CJK.dat.gz and /dev/null differ diff --git a/_framework/icudt_EFIGS.dat b/_framework/icudt_EFIGS.dat deleted file mode 100755 index 4b39b3f..0000000 Binary files a/_framework/icudt_EFIGS.dat and /dev/null differ diff --git a/_framework/icudt_EFIGS.dat.br b/_framework/icudt_EFIGS.dat.br deleted file mode 100644 index 17f581d..0000000 Binary files a/_framework/icudt_EFIGS.dat.br and /dev/null differ diff --git a/_framework/icudt_EFIGS.dat.gz b/_framework/icudt_EFIGS.dat.gz deleted file mode 100644 index a41ca6b..0000000 Binary files a/_framework/icudt_EFIGS.dat.gz and /dev/null differ diff --git a/_framework/icudt_no_CJK.dat b/_framework/icudt_no_CJK.dat deleted file mode 100755 index bab52e7..0000000 Binary files a/_framework/icudt_no_CJK.dat and /dev/null differ diff --git a/_framework/icudt_no_CJK.dat.br b/_framework/icudt_no_CJK.dat.br deleted file mode 100644 index ad84d3d..0000000 Binary files a/_framework/icudt_no_CJK.dat.br and /dev/null differ diff --git a/_framework/icudt_no_CJK.dat.gz b/_framework/icudt_no_CJK.dat.gz deleted file mode 100644 index 4b18247..0000000 Binary files a/_framework/icudt_no_CJK.dat.gz and /dev/null differ diff --git a/_framework/id/RewardsPlus.BlazorWebAssembly.Client.resources.dll b/_framework/id/RewardsPlus.BlazorWebAssembly.Client.resources.dll deleted file mode 100644 index 6b9d070..0000000 Binary files a/_framework/id/RewardsPlus.BlazorWebAssembly.Client.resources.dll and /dev/null differ diff --git a/_framework/id/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br b/_framework/id/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br deleted file mode 100644 index 78ea2f4..0000000 Binary files a/_framework/id/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br and /dev/null differ diff --git a/_framework/id/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz b/_framework/id/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz deleted file mode 100644 index 411a462..0000000 Binary files a/_framework/id/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz and /dev/null differ diff --git a/_framework/it/RewardsPlus.BlazorWebAssembly.Client.resources.dll b/_framework/it/RewardsPlus.BlazorWebAssembly.Client.resources.dll deleted file mode 100644 index 3289c63..0000000 Binary files a/_framework/it/RewardsPlus.BlazorWebAssembly.Client.resources.dll and /dev/null differ diff --git a/_framework/it/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br b/_framework/it/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br deleted file mode 100644 index a92dc23..0000000 Binary files a/_framework/it/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br and /dev/null differ diff --git a/_framework/it/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz b/_framework/it/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz deleted file mode 100644 index f6a9859..0000000 Binary files a/_framework/it/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz and /dev/null differ diff --git a/_framework/km/RewardsPlus.BlazorWebAssembly.Client.resources.dll b/_framework/km/RewardsPlus.BlazorWebAssembly.Client.resources.dll deleted file mode 100644 index 9b2ba25..0000000 Binary files a/_framework/km/RewardsPlus.BlazorWebAssembly.Client.resources.dll and /dev/null differ diff --git a/_framework/km/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br b/_framework/km/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br deleted file mode 100644 index 6dc91d5..0000000 Binary files a/_framework/km/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br and /dev/null differ diff --git a/_framework/km/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz b/_framework/km/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz deleted file mode 100644 index 92d567e..0000000 Binary files a/_framework/km/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz and /dev/null differ diff --git a/_framework/netstandard.dll b/_framework/netstandard.dll deleted file mode 100644 index 91e0bb2..0000000 Binary files a/_framework/netstandard.dll and /dev/null differ diff --git a/_framework/netstandard.dll.br b/_framework/netstandard.dll.br deleted file mode 100644 index ee165e5..0000000 Binary files a/_framework/netstandard.dll.br and /dev/null differ diff --git a/_framework/netstandard.dll.gz b/_framework/netstandard.dll.gz deleted file mode 100644 index 8e735a3..0000000 Binary files a/_framework/netstandard.dll.gz and /dev/null differ diff --git a/_framework/nl/RewardsPlus.BlazorWebAssembly.Client.resources.dll b/_framework/nl/RewardsPlus.BlazorWebAssembly.Client.resources.dll deleted file mode 100644 index e1cd28c..0000000 Binary files a/_framework/nl/RewardsPlus.BlazorWebAssembly.Client.resources.dll and /dev/null differ diff --git a/_framework/nl/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br b/_framework/nl/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br deleted file mode 100644 index 47bf8ab..0000000 Binary files a/_framework/nl/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br and /dev/null differ diff --git a/_framework/nl/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz b/_framework/nl/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz deleted file mode 100644 index 90cd6e5..0000000 Binary files a/_framework/nl/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz and /dev/null differ diff --git a/_framework/ru/RewardsPlus.BlazorWebAssembly.Client.resources.dll b/_framework/ru/RewardsPlus.BlazorWebAssembly.Client.resources.dll deleted file mode 100644 index dbc4ee0..0000000 Binary files a/_framework/ru/RewardsPlus.BlazorWebAssembly.Client.resources.dll and /dev/null differ diff --git a/_framework/ru/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br b/_framework/ru/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br deleted file mode 100644 index 7fd482b..0000000 Binary files a/_framework/ru/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br and /dev/null differ diff --git a/_framework/ru/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz b/_framework/ru/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz deleted file mode 100644 index a3bf7a0..0000000 Binary files a/_framework/ru/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz and /dev/null differ diff --git a/_framework/sv/RewardsPlus.BlazorWebAssembly.Client.resources.dll b/_framework/sv/RewardsPlus.BlazorWebAssembly.Client.resources.dll deleted file mode 100644 index 69e323a..0000000 Binary files a/_framework/sv/RewardsPlus.BlazorWebAssembly.Client.resources.dll and /dev/null differ diff --git a/_framework/sv/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br b/_framework/sv/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br deleted file mode 100644 index 1ff8b1a..0000000 Binary files a/_framework/sv/RewardsPlus.BlazorWebAssembly.Client.resources.dll.br and /dev/null differ diff --git a/_framework/sv/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz b/_framework/sv/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz deleted file mode 100644 index c565008..0000000 Binary files a/_framework/sv/RewardsPlus.BlazorWebAssembly.Client.resources.dll.gz and /dev/null differ diff --git a/appsettings.Development.json.br b/appsettings.Development.json.br deleted file mode 100644 index d2ed9c0..0000000 Binary files a/appsettings.Development.json.br and /dev/null differ diff --git a/appsettings.Development.json.gz b/appsettings.Development.json.gz deleted file mode 100644 index e9e5a38..0000000 Binary files a/appsettings.Development.json.gz and /dev/null differ diff --git a/appsettings.json.br b/appsettings.json.br deleted file mode 100644 index c63b152..0000000 Binary files a/appsettings.json.br and /dev/null differ diff --git a/appsettings.json.gz b/appsettings.json.gz deleted file mode 100644 index 17eda6a..0000000 Binary files a/appsettings.json.gz and /dev/null differ diff --git a/dotnet.ruleset b/dotnet.ruleset new file mode 100644 index 0000000..3010e47 --- /dev/null +++ b/dotnet.ruleset @@ -0,0 +1,164 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/global.json b/global.json new file mode 100644 index 0000000..f443bd4 --- /dev/null +++ b/global.json @@ -0,0 +1,7 @@ +{ + "sdk": { + "version": "6.0", + "rollForward": "latestMajor", + "allowPrerelease": true + } +} \ No newline at end of file diff --git a/icon.png b/icon.png new file mode 100644 index 0000000..fd9fa41 Binary files /dev/null and b/icon.png differ diff --git a/scripts/nswag-regen.ps1 b/scripts/nswag-regen.ps1 new file mode 100644 index 0000000..98ccbc4 --- /dev/null +++ b/scripts/nswag-regen.ps1 @@ -0,0 +1,20 @@ +# This script is cross-platform, supporting all OSes that PowerShell Core/7 runs on. + +$currentDirectory = Get-Location +$rootDirectory = git rev-parse --show-toplevel +$hostDirectory = Join-Path -Path $rootDirectory -ChildPath 'src/Host' +$infrastructurePrj = Join-Path -Path $rootDirectory -ChildPath 'src/Client.Infrastructure/Client.Infrastructure.csproj' + +Write-Host "Make sure you have run the RewardsPlus.WebApi project. `n" +Write-Host "Press any key to continue... `n" +$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown'); + +Set-Location -Path $hostDirectory +Write-Host "Host Directory is $hostDirectory `n" + +<# Run command #> +dotnet build -t:NSwag $infrastructurePrj + +Set-Location -Path $currentDirectory +Write-Host -NoNewLine 'NSwag Regenerated. Press any key to continue...'; +$null = $Host.UI.RawUI.ReadKey('NoEcho,IncludeKeyDown'); diff --git a/scripts/pull-shared-from-webapi.ps1 b/scripts/pull-shared-from-webapi.ps1 new file mode 100644 index 0000000..35dd0ab --- /dev/null +++ b/scripts/pull-shared-from-webapi.ps1 @@ -0,0 +1,40 @@ +# This script is cross-platform, supporting all OSes that PowerShell Core/7 runs on. + +$rootDirectory = git rev-parse --show-toplevel +$sourcePath = Join-Path -Path $rootDirectory -ChildPath '..\dotnet-webapi-boilerplate\src\Core\Shared' +$destinationPath = Join-Path -Path $rootDirectory -ChildPath 'src\Shared' + +$excludes = @('bin', 'obj') + +Write-Host "Pull changes from the Fullstackhero WebApi Shared Project" +write-Host "---------------------------------------------------------" +Write-Host + +If ($null -eq $sourcePath) { + Write-Error "Error! The expected path of WebApi Shared Project does not exist: $sourcePath" + Exit 1 +} + +if ($null -eq (Resolve-Path $destinationPath)) { + # Ensure the destination exists + try + { + New-Item -Path $destinationPath -ItemType Directory -ErrorAction Stop | Out-Null + } + catch + { + Write-Error "Error! Unable to create output path \"$destinationPath\"" + Exit 1 + } +} + +Write-Host "WARNING! This will delete everything in the shared project ($($destinationPath | Resolve-Path))" +Write-Host "and then copy over the whole project from the webapi repository ($($sourcePath | Resolve-Path))" +Write-Host +Read-Host -Prompt "Press ENTER to continue" + +Remove-Item -Path "$destinationPath" -Recurse -Force +Copy-Item -Path (Get-Item -Path "$sourcePath" -Exclude $excludes).FullName -Destination "$destinationPath" -Recurse -Force + +Write-Host "Changes have been pulled." +Write-Host \ No newline at end of file diff --git a/service-worker-assets.js b/service-worker-assets.js deleted file mode 100644 index b5afdaa..0000000 --- a/service-worker-assets.js +++ /dev/null @@ -1,557 +0,0 @@ -self.assetsManifest = { - "assets": [ - { - "hash": "sha256-N7uIVnQSdM5kR0zTFbD\/FMZS94P7vDaWIXKOQcDQeYg=", - "url": "css\/fsh.css" - }, - { - "hash": "sha256-Z8FtDGYRGhshQsLGSJnoyjTxwExKRaP0RU67JZ5V6BE=", - "url": "favicon.ico" - }, - { - "hash": "sha256-zLvbkOKLdR8SBO\/VOOI+69fY0q0HCEAvUgvJKpe42m4=", - "url": "index.html" - }, - { - "hash": "sha256-rOCdef8v\/ibgie3hI5P2DobVT3FIZr4JhWalxaoJQxM=", - "url": "manifest.json" - }, - { - "hash": "sha256-BvDSbNTsqKemjdNUXXGRSiNhsLcQsGWOQu1Q5i6Pamw=", - "url": "rp-logo.png" - }, - { - "hash": "sha256-vEcQowYWPCjNJ8ULOIfskgYEjoB+mZCmvBGEhJ2vejw=", - "url": "_framework\/ar\/RewardsPlus.BlazorWebAssembly.Client.resources.dll" - }, - { - "hash": "sha256-37kSSeqjNREvZqeSI9mo0hYFggI+CFl\/75z4TKX8NUc=", - "url": "_framework\/de\/RewardsPlus.BlazorWebAssembly.Client.resources.dll" - }, - { - "hash": "sha256-qiLPFWAWNC5FsAZWBrdHB7+1iiTvm49S30yMIgx7vuc=", - "url": "_framework\/en\/RewardsPlus.BlazorWebAssembly.Client.resources.dll" - }, - { - "hash": "sha256-S3UIT\/4NbSg5P8DBe6davGSZDggLnjMVI1umDQAJ3jA=", - "url": "_framework\/es\/RewardsPlus.BlazorWebAssembly.Client.resources.dll" - }, - { - "hash": "sha256-qyH6yQcvRToBAFU3sXjPA4kTzi6F1aYvJr8BCjKvP1M=", - "url": "_framework\/fr\/RewardsPlus.BlazorWebAssembly.Client.resources.dll" - }, - { - "hash": "sha256-RYFUC7FtwxjLhrOS0SEmLTKnP1tbzNSmQUSpWMS\/h88=", - "url": "_framework\/id\/RewardsPlus.BlazorWebAssembly.Client.resources.dll" - }, - { - "hash": "sha256-rYLHjev6d5E8l3rO5GTvUxTEPqVCTaJB4VOh2NZJRtQ=", - "url": "_framework\/it\/RewardsPlus.BlazorWebAssembly.Client.resources.dll" - }, - { - "hash": "sha256-inwzcBzxAv7hb5uwgTX6zsloq5J6+xpSRHmLHSPEbQ0=", - "url": "_framework\/km\/RewardsPlus.BlazorWebAssembly.Client.resources.dll" - }, - { - "hash": "sha256-TDkYZITkrwz69vQbe80xA\/ZVvrWrNk0Puj+xuVcRsR4=", - "url": "_framework\/nl\/RewardsPlus.BlazorWebAssembly.Client.resources.dll" - }, - { - "hash": "sha256-gUPITw50n1NFZZVurcrb0IH+1zxqT5eXPGbs5hZA9JQ=", - "url": "_framework\/ru\/RewardsPlus.BlazorWebAssembly.Client.resources.dll" - }, - { - "hash": "sha256-m30HkGcTRi+KO3PBA3\/iYUfxMhnPsumf83idNGV8L18=", - "url": "_framework\/sv\/RewardsPlus.BlazorWebAssembly.Client.resources.dll" - }, - { - "hash": "sha256-wC+zAyYHVTNzevCw3SFvHI4jG51pV1+b5sQ3Rj11QGI=", - "url": "_framework\/blazor.webassembly.js" - }, - { - "hash": "sha256-783uOt0jgblQfP6Yz5TJeuW2xxtl6UHZQPngZtCz79U=", - "url": "_framework\/dotnet.6.0.5.5og2bxjr7p.js" - }, - { - "hash": "sha256-vRU6+wGzQ3FJ0JtyPJtipblPe9MvJf+qKY20xZhuyKQ=", - "url": "_framework\/dotnet.timezones.blat" - }, - { - "hash": "sha256-vmRDDmubs49Hwffzas8p5i8FwcPcYxb33H6g5\/2UyYk=", - "url": "_framework\/dotnet.wasm" - }, - { - "hash": "sha256-WPyI4hWDPnOw62Nr27FkzGjdbucZnQD+Ph+GOPhAedw=", - "url": "_framework\/icudt_CJK.dat" - }, - { - "hash": "sha256-4RwaPx87Z4dvn77ie\/ro3\/QzyS+\/gGmO3Y\/0CSAXw4k=", - "url": "_framework\/icudt_EFIGS.dat" - }, - { - "hash": "sha256-OxylFgLJlFqixsj+nLxYVsv5iZLvfIKMpLf9hrWaChA=", - "url": "_framework\/icudt_no_CJK.dat" - }, - { - "hash": "sha256-Zuq0dWAsBm6\/2lSOsz7+H9PvFaRn61KIXHMMwXDfvyE=", - "url": "_framework\/icudt.dat" - }, - { - "hash": "sha256-yVSi1NDfQND4\/vLoXIhFBQ9TfWQMB51GWoyeN5jdaaM=", - "url": "_framework\/blazor.boot.json" - }, - { - "hash": "sha256-6RRoYeDP3d0xabXmcCMF66wXeJlXVPem28Trs8sQiis=", - "url": "_framework\/Blazored.LocalStorage.dll" - }, - { - "hash": "sha256-LpITyYg0FAmK3TQE30Q4uB8j5OtDjNlXQMOYbghvoTI=", - "url": "_framework\/FSH.WebApi.Shared.dll" - }, - { - "hash": "sha256-t4scC57orK9Pzk+stzDyapVp1P7RjVmaEkumPBlVL5c=", - "url": "_framework\/Mapster.Core.dll" - }, - { - "hash": "sha256-ru7A\/3AB6xrsWcoz+YngxJVJl5vCMYweQzhp7gIfuqA=", - "url": "_framework\/Mapster.dll" - }, - { - "hash": "sha256-jbWZnge7bolAMw8ppWQLC7bKPAY6DjkJn2ezN9OXafU=", - "url": "_framework\/MediatR.Contracts.dll" - }, - { - "hash": "sha256-aj58N38ZtFF7HlXezBRNE\/T3uyoUkRe3F3kIMV8G2X0=", - "url": "_framework\/MediatR.Courier.DependencyInjection.dll" - }, - { - "hash": "sha256-rVeAbDm\/i5fYooVWYC\/BLq2hHXfR6596ZqecBLhr8Ng=", - "url": "_framework\/MediatR.Courier.dll" - }, - { - "hash": "sha256-5JP3MguhkAHQ+bz8WyGxc8bqkRX2InbWKVplJEsFzGQ=", - "url": "_framework\/MediatR.dll" - }, - { - "hash": "sha256-blkFqVBGqO7GrdhrAXsMHPTRmzPouRK2+2BV\/23QKbc=", - "url": "_framework\/MediatR.Extensions.Microsoft.DependencyInjection.dll" - }, - { - "hash": "sha256-dP2eW5JTtUsshiKoU69sg6FuHYepmgEqCgwad5\/HMQs=", - "url": "_framework\/Microsoft.AspNetCore.Authorization.dll" - }, - { - "hash": "sha256-d9L1ipZCPXWKh9nSVZXz41zRuHBVM8fhZuKplZq1ckw=", - "url": "_framework\/Microsoft.AspNetCore.Components.Authorization.dll" - }, - { - "hash": "sha256-+H0ZdqdRQgDRU1XzoQF3DAf5IJVKUUR8UTd0ITWX2pE=", - "url": "_framework\/Microsoft.AspNetCore.Components.dll" - }, - { - "hash": "sha256-YnKbDjkWyjrZlEJLAxz2jUx4Fg\/\/YGJfLzxbXE3zTi4=", - "url": "_framework\/Microsoft.AspNetCore.Components.Forms.dll" - }, - { - "hash": "sha256-+HT3hrYBD1lWi5m14OWWsaoMPDZXce5tz8TXL1w5AzU=", - "url": "_framework\/Microsoft.AspNetCore.Components.Web.dll" - }, - { - "hash": "sha256-ckwbaERYVRqKqGhJHS5gA1KPsZxhX0Fe70E4AfAc2Og=", - "url": "_framework\/Microsoft.AspNetCore.Components.WebAssembly.Authentication.dll" - }, - { - "hash": "sha256-NYCse3eafShatS2zkl\/0HW8UnikEQHWB5+uxvtuHJxc=", - "url": "_framework\/Microsoft.AspNetCore.Components.WebAssembly.dll" - }, - { - "hash": "sha256-vzq9rpJDxzu9JRcHe0ed2MVZoh+olL\/xkfZyLqxCGRk=", - "url": "_framework\/Microsoft.AspNetCore.Connections.Abstractions.dll" - }, - { - "hash": "sha256-qFKmKNr9iAZiZxOVvLJBfMhkKfDy1GvY81fHh1hiphU=", - "url": "_framework\/Microsoft.AspNetCore.Http.Abstractions.dll" - }, - { - "hash": "sha256-Fr\/4x5eYPqozkIAva\/QrqSY3nhnx6goWDl0nAUNsOvo=", - "url": "_framework\/Microsoft.AspNetCore.Http.Connections.Client.dll" - }, - { - "hash": "sha256-gdYxGkDYzqsGu2qh6O2BeOwZiW72IHs37zgSaEfdzmI=", - "url": "_framework\/Microsoft.AspNetCore.Http.Connections.Common.dll" - }, - { - "hash": "sha256-dsGZ+sGJdrYngMg72CIF31THFtl6ovcKTjtGtj9orn8=", - "url": "_framework\/Microsoft.AspNetCore.Http.Extensions.dll" - }, - { - "hash": "sha256-J2xQUZ4BD6tsrQkvGS5HDQfkTGMzmaS76TA9nJrtCpg=", - "url": "_framework\/Microsoft.AspNetCore.Http.Features.dll" - }, - { - "hash": "sha256-syddeSMQNcZ\/gP0LTGrOj2PUlA2ml5rjdJjeO9cI2Dw=", - "url": "_framework\/Microsoft.AspNetCore.Localization.dll" - }, - { - "hash": "sha256-v+gwghA7MejDF7Ed9XQielmvM0gFZ6wQSitmfQWBeHg=", - "url": "_framework\/Microsoft.AspNetCore.Metadata.dll" - }, - { - "hash": "sha256-7w1e3DfS\/8\/MuJ3yqeZRA2SqCI\/4RODeRvtXzKKuIlw=", - "url": "_framework\/Microsoft.AspNetCore.SignalR.Client.Core.dll" - }, - { - "hash": "sha256-FHvjWu2H1JhR1nVdjB9w6leRwFOo1czrcd8kZJB+kPE=", - "url": "_framework\/Microsoft.AspNetCore.SignalR.Client.dll" - }, - { - "hash": "sha256-Y5qVjSqbGNerRoGQjHSQu4bb8LYmcCJkeZYHxq4y+LM=", - "url": "_framework\/Microsoft.AspNetCore.SignalR.Common.dll" - }, - { - "hash": "sha256-cMpnORhL8CdUpCiESMqMKS+PnKHwYtDXgvSbuADPDDI=", - "url": "_framework\/Microsoft.AspNetCore.SignalR.Protocols.Json.dll" - }, - { - "hash": "sha256-D5akJeBd7NNITuzAXxlX7zl2jfsc4uTKyeEKwwNhqoo=", - "url": "_framework\/Microsoft.AspNetCore.WebUtilities.dll" - }, - { - "hash": "sha256-aGYDQ5L00KvQW5BRm6wqXFbLWI09QTaRRo\/w3+zK4rQ=", - "url": "_framework\/Microsoft.Authentication.WebAssembly.Msal.dll" - }, - { - "hash": "sha256-CT31ZWU5wycX0Ci\/DFuFMqb03kSO9tcnwDqXkwur1CE=", - "url": "_framework\/Microsoft.CSharp.dll" - }, - { - "hash": "sha256-C7yvnYV7TlPnFYkL43g+hDNDjzhfAEibiTtXZxV3YuE=", - "url": "_framework\/Microsoft.Extensions.Configuration.Abstractions.dll" - }, - { - "hash": "sha256-C9t25y7nwznCCJYXMcdZrhg1MOn5+1\/y+f0N\/42fdlc=", - "url": "_framework\/Microsoft.Extensions.Configuration.Binder.dll" - }, - { - "hash": "sha256-dvb9kX75WyJbp6q7S359zKdmkcU5f7q9b38Kpv9auQM=", - "url": "_framework\/Microsoft.Extensions.Configuration.dll" - }, - { - "hash": "sha256-fF3xaP+hT6R3GYUctLIY1ixaXQ8mrHzwWHHf2dKfueU=", - "url": "_framework\/Microsoft.Extensions.Configuration.Json.dll" - }, - { - "hash": "sha256-KtbP8\/87azocKpwHAL8EcjHffcFC+Tfnuk\/h8gmSlnQ=", - "url": "_framework\/Microsoft.Extensions.DependencyInjection.Abstractions.dll" - }, - { - "hash": "sha256-gO4lKLg3HYGVeknndsz8D4LF3DQ4yjRJhdQQ4lE2Kp0=", - "url": "_framework\/Microsoft.Extensions.DependencyInjection.dll" - }, - { - "hash": "sha256-Pe7BwDw8uSilWqbuIoD8cOynbHKP8GrxCZoSBmNmHNY=", - "url": "_framework\/Microsoft.Extensions.Features.dll" - }, - { - "hash": "sha256-1gbiZuENOGeoFVqaEOGrAdQ2ex3+SXDhJeii8VOgMAM=", - "url": "_framework\/Microsoft.Extensions.FileProviders.Abstractions.dll" - }, - { - "hash": "sha256-9Xyd2IMf6dFjeIDN9EMSn+213iU28MJjK2sjvGSO8L0=", - "url": "_framework\/Microsoft.Extensions.Http.dll" - }, - { - "hash": "sha256-iWyiOMgRvXZUch\/8rknDGbCc9444R3mFKIPQPE84TXU=", - "url": "_framework\/Microsoft.Extensions.Localization.Abstractions.dll" - }, - { - "hash": "sha256-8\/yYB4eK92AuRM3jaqjYHYlJJ+uvNNJyOV4VnXAVWnU=", - "url": "_framework\/Microsoft.Extensions.Localization.dll" - }, - { - "hash": "sha256-i427vyIolYbbkpfUZkJfNzprDAxRAkM9Wf+iaZKTSbA=", - "url": "_framework\/Microsoft.Extensions.Logging.Abstractions.dll" - }, - { - "hash": "sha256-CA\/IKQawCKkcbE+m\/VMo6jI8l00LeZK4qKZG5CD8y0E=", - "url": "_framework\/Microsoft.Extensions.Logging.dll" - }, - { - "hash": "sha256-ZMqrRybn4TAjymQuTCdgMzETZr9w9Ccnu8n2cnJzbHE=", - "url": "_framework\/Microsoft.Extensions.Options.dll" - }, - { - "hash": "sha256-F48vl9cZ1\/TyJDLp2\/Vb9LwJ2cBNsD4X9ZJrTl1q2Yw=", - "url": "_framework\/Microsoft.Extensions.Primitives.dll" - }, - { - "hash": "sha256-EqN8YJV3WzpbUQg8dQbQ0l8Zk9m6OHSujBVUliVJlIw=", - "url": "_framework\/Microsoft.JSInterop.dll" - }, - { - "hash": "sha256-lGzGmghWC2n88jfdnt\/ZlgOBbU9tjhYhdRO8P4zXTXo=", - "url": "_framework\/Microsoft.JSInterop.WebAssembly.dll" - }, - { - "hash": "sha256-P66ftDrXwc6ayND8uYzIk0CPQy1GjNZAPHx9RMhi3V4=", - "url": "_framework\/Microsoft.Net.Http.Headers.dll" - }, - { - "hash": "sha256-Pf7bNBgcv9Mhe+wyoKj4Kdk9vvMaTwlkvXSupkU9FYk=", - "url": "_framework\/Microsoft.Win32.Primitives.dll" - }, - { - "hash": "sha256-N8OntIImtRTymxWAyRXmiqLo\/izwqpytlMhP6Z1Qfdw=", - "url": "_framework\/MudBlazor.dll" - }, - { - "hash": "sha256-xXSP3iMRpTmOtciiWJl0qGJqJrNdPk0v1KflGOB3QzM=", - "url": "_framework\/netstandard.dll" - }, - { - "hash": "sha256-cs8pHUurDt0IqbB8YXPh560au3q3J\/1wRL9jBddRVmE=", - "url": "_framework\/Newtonsoft.Json.dll" - }, - { - "hash": "sha256-h7QwzV7ePC80ze8wNlEthpx24UjLMUadRxTfrX3\/YuE=", - "url": "_framework\/RewardsPlus.BlazorWebAssembly.Client.dll" - }, - { - "hash": "sha256-Pi7lptt7Fm55aV0Q2pekM7ECCssRpa1eDnSrshyrm0M=", - "url": "_framework\/RewardsPlus.BlazorWebAssembly.Client.Infrastructure.dll" - }, - { - "hash": "sha256-WDgcaUbBz5uavvGK8utWdhV5TwHfqExTpMXU6tJizEE=", - "url": "_framework\/System.Buffers.dll" - }, - { - "hash": "sha256-WZ0eGDhYt5XwJH8ZNB\/OHzndq\/tHC+IkfFBC8Po2++g=", - "url": "_framework\/System.Collections.Concurrent.dll" - }, - { - "hash": "sha256-nlua9vPbpL\/Zfcx5eWGUsmZW58G1m804aWSdLkrmN14=", - "url": "_framework\/System.Collections.dll" - }, - { - "hash": "sha256-tRrWecYE6\/0T8vA3MvRQj8chHDwcqCvB117Jm4mStj8=", - "url": "_framework\/System.Collections.NonGeneric.dll" - }, - { - "hash": "sha256-Z1T\/IBH2yi+aU7Orj32zKObMt3knvYStCaoI\/YMls9E=", - "url": "_framework\/System.Collections.Specialized.dll" - }, - { - "hash": "sha256-3A6gQzfQm\/\/fBnIxakm0CjH35guCh50v3vqK3aLuDoI=", - "url": "_framework\/System.ComponentModel.Annotations.dll" - }, - { - "hash": "sha256-E8qPRhkPyz9\/wS+89BDUyylG4kiMEom3axbH7iHPxbQ=", - "url": "_framework\/System.ComponentModel.dll" - }, - { - "hash": "sha256-bUCvVVblSWDASp1M9k3pQhBD9ol9eDS0G7mEWdzUiyk=", - "url": "_framework\/System.ComponentModel.Primitives.dll" - }, - { - "hash": "sha256-gsm3URp0JbAPt3pr76xjSWeOBp2\/TN+czfhlopq6E+k=", - "url": "_framework\/System.ComponentModel.TypeConverter.dll" - }, - { - "hash": "sha256-g66cymcOw3j\/zsIev3FpMujYnFiApeD7TLr49CeAivE=", - "url": "_framework\/System.Console.dll" - }, - { - "hash": "sha256-w9BbzDUpgHNPd0pClo3Uv2+nzWvSEb1o7YaAxyGvNgw=", - "url": "_framework\/System.Data.Common.dll" - }, - { - "hash": "sha256-5QSPFGh30Vo0L8S9EuAfZkUTrdQb6524AMMVenHNdk0=", - "url": "_framework\/System.Diagnostics.TraceSource.dll" - }, - { - "hash": "sha256-qFt7Sn46LEHHeD8406OAazAmy0nu+cf36x6xFLQgpbA=", - "url": "_framework\/System.dll" - }, - { - "hash": "sha256-GEq16b1QpGf9nRMjNYFZBJRePNySgsN3TVyQquf7JT4=", - "url": "_framework\/System.Drawing.dll" - }, - { - "hash": "sha256-TFGPMHLIqS5pw4wp4sjkCgIPzx8wIpuC5XROvd8HIt0=", - "url": "_framework\/System.Drawing.Primitives.dll" - }, - { - "hash": "sha256-8hGtQTRku4431biMSG4pVrXaTMGJgqHJhkeV+PqLSIQ=", - "url": "_framework\/System.IO.Pipelines.dll" - }, - { - "hash": "sha256-pRiURsxOxEyF11U1kGRaqynBca01EXG+AqdtW5RrG\/E=", - "url": "_framework\/System.Linq.dll" - }, - { - "hash": "sha256-jhDKadGMz9vl81FeC0ey8kxTcVTotBV\/0era9D1\/M7w=", - "url": "_framework\/System.Linq.Expressions.dll" - }, - { - "hash": "sha256-4wyltQm7dr3by5ZZoReRzSLppAnh18WmJIWCMHL6FF4=", - "url": "_framework\/System.Linq.Queryable.dll" - }, - { - "hash": "sha256-f\/alvK4QgiRZfkguXIyXn9+0JAT5\/gx4qTL23r4ezYU=", - "url": "_framework\/System.Memory.dll" - }, - { - "hash": "sha256-f1yMv89aLxhs0mXEaNbppTnWOqrP5eS0GBQiqOeMe+E=", - "url": "_framework\/System.Net.Http.dll" - }, - { - "hash": "sha256-uArWsO5FbW++mpzi2\/kWQQ5aVmcKhGX+UpGJdZ2fXJE=", - "url": "_framework\/System.Net.Primitives.dll" - }, - { - "hash": "sha256-xnYMnQG\/3DcWv7xyGxSR9BH7Ror7EKZQgw9R3YL28cc=", - "url": "_framework\/System.Net.Requests.dll" - }, - { - "hash": "sha256-Zvv7BonSOo7coK329x+E+bnyaA+JKmpYYDQPwwooUtc=", - "url": "_framework\/System.Net.Security.dll" - }, - { - "hash": "sha256-bgnKA8OrQY2ovfTYBDBan6RKi9tuT2XA1lADCEUrIIw=", - "url": "_framework\/System.Net.Sockets.dll" - }, - { - "hash": "sha256-rpV3zGrSoiKW7JVvCIr6PrQklhS\/9MHdCXinCKUktxU=", - "url": "_framework\/System.Net.WebSockets.Client.dll" - }, - { - "hash": "sha256-hWVi53s9f3skjIvuTdSFk9kQ1UjJexOUgN7eHbNwYMg=", - "url": "_framework\/System.Net.WebSockets.dll" - }, - { - "hash": "sha256-IJocdzh4mDYcmUrPv6egwjvBqmNK4GG3kqA0yjXMtSU=", - "url": "_framework\/System.ObjectModel.dll" - }, - { - "hash": "sha256-V4jnRGdfDvFVm6L7n2N5h81QelsSi72x0yGxWeLd+CE=", - "url": "_framework\/System.Private.CoreLib.dll" - }, - { - "hash": "sha256-Ddf5NDTqVM710oMpU2zfDQLPMRNNYE0anj\/Qqvyw4nM=", - "url": "_framework\/System.Private.Runtime.InteropServices.JavaScript.dll" - }, - { - "hash": "sha256-WvOEFqFuCVLBr3ZbHf2vbwZOp9+SNK0O2Ni83fTWb5A=", - "url": "_framework\/System.Private.Uri.dll" - }, - { - "hash": "sha256-4eb4LRqquZShXu43jMjmar72evfvZdD+hkvmfNdL9uM=", - "url": "_framework\/System.Private.Xml.dll" - }, - { - "hash": "sha256-RYIvYPR9u4UJag4iBc3OAYklnmhmd5BRJBeahiPHZIY=", - "url": "_framework\/System.Private.Xml.Linq.dll" - }, - { - "hash": "sha256-UMapKSFJrvfna7rnIdKzREU37OmVsmVmcMcAQDA++Zo=", - "url": "_framework\/System.Reflection.Emit.dll" - }, - { - "hash": "sha256-fx93wBc1IK9Czcstp2284uZyqdul0NGxMPidnWCjkEU=", - "url": "_framework\/System.Reflection.Emit.ILGeneration.dll" - }, - { - "hash": "sha256-t3dZ32qJS4oN6lt3r0sfZkJrqIl+9cY5Yd0klBWkkB8=", - "url": "_framework\/System.Runtime.CompilerServices.Unsafe.dll" - }, - { - "hash": "sha256-cmN3h\/Jm\/UYaYI6iG2ba\/o3dLpUPGCk9xUfVZiDYQ2c=", - "url": "_framework\/System.Runtime.dll" - }, - { - "hash": "sha256-D+W3YL\/nWGv6Gnz7sUWVNc926kkQF0gp\/2w9wu\/97qs=", - "url": "_framework\/System.Runtime.InteropServices.RuntimeInformation.dll" - }, - { - "hash": "sha256-ygbJP1TiLhUhwTnvwy1ZOlhVrA8Y1DYtB5YBA14f8DU=", - "url": "_framework\/System.Runtime.Numerics.dll" - }, - { - "hash": "sha256-22W91rnPKMALks9tIPDk3FYnsvFgRP3\/bqgyw+lrIGA=", - "url": "_framework\/System.Runtime.Serialization.Formatters.dll" - }, - { - "hash": "sha256-CY4c0JAerTeuSFGAiA1TD8\/7ZnIHDIrZs4HVLNg0kvI=", - "url": "_framework\/System.Runtime.Serialization.Primitives.dll" - }, - { - "hash": "sha256-OwJpfoXDQ5Ew2zkqYl2fOr+ikbpnpk\/yDAZ3Ajegg6I=", - "url": "_framework\/System.Security.Claims.dll" - }, - { - "hash": "sha256-KhQvpT2gja30fGp2VN37zcgZxuq7hcmzkp\/98d9o2gg=", - "url": "_framework\/System.Security.Cryptography.Algorithms.dll" - }, - { - "hash": "sha256-WtYQjxrbl+MvFyl42D+OrjM4Pd+SWJ8PhJfqrZmgWoI=", - "url": "_framework\/System.Security.Cryptography.Primitives.dll" - }, - { - "hash": "sha256-MLvjhritGZ9tHJORaPGRiUhtJUwuWmtNGa5AL1tDaqA=", - "url": "_framework\/System.Security.Cryptography.X509Certificates.dll" - }, - { - "hash": "sha256-i3OuSu4w8AgZd1euiZNYowGWfvFtd0sItt\/J16HgNAI=", - "url": "_framework\/System.Text.Encoding.Extensions.dll" - }, - { - "hash": "sha256-pbguTG9zJbB0Si8npSkT3CR6JGkyQcIoaeAnLvPEbWY=", - "url": "_framework\/System.Text.Encodings.Web.dll" - }, - { - "hash": "sha256-ij1sGeS9v\/scXkHthrbwDoqGdpeKMUUjcaPyVmJ65zk=", - "url": "_framework\/System.Text.Json.dll" - }, - { - "hash": "sha256-kI+fdBA8ks7wKIw9a3B7s7eprLkX6ZXwu7Tbf5oyaRU=", - "url": "_framework\/System.Text.RegularExpressions.dll" - }, - { - "hash": "sha256-lRUzrPQvAVaUgQLo0OUOuLurUDXeuugcrCWoVOb6SSI=", - "url": "_framework\/System.Threading.Channels.dll" - }, - { - "hash": "sha256-bqgS8QZTAi0k9NKuoBOKGHoZWDcvIgQ1fMmMbAAmSCc=", - "url": "_framework\/System.Threading.dll" - }, - { - "hash": "sha256-zDFd8He\/wEfpV1dW051QwkqfiM5xqqVudlplpCknDc8=", - "url": "_framework\/System.Threading.ThreadPool.dll" - }, - { - "hash": "sha256-RBNvo1WzZ4oRRq0W9+hknpT7T8If536DEMBg9hyq\/4o=", - "url": "appsettings.Development.json" - }, - { - "hash": "sha256-XbiO81golcgjifcFkX6raF8sdMlc9jQAXMYlRpyh5Ms=", - "url": "appsettings.json" - }, - { - "hash": "sha256-Wn02IHGVHYWQvpPDhVA\/vA\/ICx8Xfh4I6vjapn2Wbxk=", - "url": "_content\/Microsoft.AspNetCore.Components.WebAssembly.Authentication\/AuthenticationService.js" - }, - { - "hash": "sha256-muR3FFfb7RPGVYlHiZVn0JiPethd6Tu7VIrTE5hmKJA=", - "url": "_content\/Microsoft.Authentication.WebAssembly.Msal\/AuthenticationService.js" - }, - { - "hash": "sha256-ybHKSgBBBRWcVB6v8mENCj\/QzDeglrAm6T6nQYEI5mk=", - "url": "_content\/MudBlazor\/MudBlazor.min.css" - }, - { - "hash": "sha256-cgPb7yky7NWb7YK8uNCmcG8oAFfmhN54qlpGneIHJ0A=", - "url": "_content\/MudBlazor\/MudBlazor.min.js" - } - ], - "version": "Tayvr9nX" -}; diff --git a/service-worker.js b/service-worker.js deleted file mode 100644 index 760c68a..0000000 --- a/service-worker.js +++ /dev/null @@ -1,48 +0,0 @@ -// Caution! Be sure you understand the caveats before publishing an application with -// offline support. See https://aka.ms/blazor-offline-considerations - -self.importScripts('./service-worker-assets.js'); -self.addEventListener('install', event => event.waitUntil(onInstall(event))); -self.addEventListener('activate', event => event.waitUntil(onActivate(event))); -self.addEventListener('fetch', event => event.respondWith(onFetch(event))); - -const cacheNamePrefix = 'offline-cache-'; -const cacheName = `${cacheNamePrefix}${self.assetsManifest.version}`; -const offlineAssetsInclude = [/\.dll$/, /\.pdb$/, /\.wasm/, /\.html/, /\.js$/, /\.json$/, /\.css$/, /\.woff$/, /\.png$/, /\.jpe?g$/, /\.gif$/, /\.ico$/, /\.blat$/, /\.dat$/]; -const offlineAssetsExclude = [/^service-worker\.js$/]; - -async function onInstall(event) { - console.info('Service worker: Install'); - - // Fetch and cache all matching items from the assets manifest - const assetsRequests = self.assetsManifest.assets - .filter(asset => offlineAssetsInclude.some(pattern => pattern.test(asset.url))) - .filter(asset => !offlineAssetsExclude.some(pattern => pattern.test(asset.url))) - .map(asset => new Request(asset.url, { integrity: asset.hash, cache: 'no-cache' })); - await caches.open(cacheName).then(cache => cache.addAll(assetsRequests)); -} - -async function onActivate(event) { - console.info('Service worker: Activate'); - - // Delete unused caches - const cacheKeys = await caches.keys(); - await Promise.all(cacheKeys - .filter(key => key.startsWith(cacheNamePrefix) && key !== cacheName) - .map(key => caches.delete(key))); -} - -async function onFetch(event) { - let cachedResponse = null; - if (event.request.method === 'GET') { - // For all navigation requests, try to serve index.html from cache - // If you need some URLs to be server-rendered, edit the following check to exclude those URLs - const shouldServeIndexHtml = event.request.mode === 'navigate'; - - const request = shouldServeIndexHtml ? 'index.html' : event.request; - const cache = await caches.open(cacheName); - cachedResponse = await cache.match(request); - } - - return cachedResponse || fetch(event.request); -}/* Manifest version: Tayvr9nX */ diff --git a/src/Client.Infrastructure/ApiClient/FSHApi.cs b/src/Client.Infrastructure/ApiClient/FSHApi.cs new file mode 100644 index 0000000..f86a7f4 --- /dev/null +++ b/src/Client.Infrastructure/ApiClient/FSHApi.cs @@ -0,0 +1,8165 @@ +//---------------------- +// +// Generated using the NSwag toolchain v13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) +// +//---------------------- + +#nullable enable + +#pragma warning disable 108 // Disable "CS0108 '{derivedDto}.ToJson()' hides inherited member '{dtoBase}.ToJson()'. Use the new keyword if hiding was intended." +#pragma warning disable 114 // Disable "CS0114 '{derivedDto}.RaisePropertyChanged(String)' hides inherited member 'dtoBase.RaisePropertyChanged(String)'. To make the current member override that implementation, add the override keyword. Otherwise add the new keyword." +#pragma warning disable 472 // Disable "CS0472 The result of the expression is always 'false' since a value of type 'Int32' is never equal to 'null' of type 'Int32?' +#pragma warning disable 1573 // Disable "CS1573 Parameter '...' has no matching param tag in the XML comment for ... +#pragma warning disable 1591 // Disable "CS1591 Missing XML comment for publicly visible type or member ..." +#pragma warning disable 8073 // Disable "CS8073 The result of the expression is always 'false' since a value of type 'T' is never equal to 'null' of type 'T?'" +#pragma warning disable 3016 // Disable "CS3016 Arrays as attribute arguments is not CLS-compliant" +#pragma warning disable 8603 // Disable "CS8603 Possible null reference return" + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient +{ + using System = global::System; + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial interface IRolesClient : IApiService + { + /// + /// Get a list of all roles. + /// + /// A server side error occurred. + System.Threading.Tasks.Task> GetListAsync(); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get a list of all roles. + /// + /// A server side error occurred. + System.Threading.Tasks.Task> GetListAsync(System.Threading.CancellationToken cancellationToken); + + /// + /// Create or update a role. + /// + /// A server side error occurred. + System.Threading.Tasks.Task RegisterRoleAsync(CreateOrUpdateRoleRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Create or update a role. + /// + /// A server side error occurred. + System.Threading.Tasks.Task RegisterRoleAsync(CreateOrUpdateRoleRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Get role details. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetByIdAsync(string? id); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get role details. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetByIdAsync(string? id, System.Threading.CancellationToken cancellationToken); + + /// + /// Delete a role. + /// + /// A server side error occurred. + System.Threading.Tasks.Task DeleteAsync(string? id); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Delete a role. + /// + /// A server side error occurred. + System.Threading.Tasks.Task DeleteAsync(string? id, System.Threading.CancellationToken cancellationToken); + + /// + /// Get role details with its permissions. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetByIdWithPermissionsAsync(string? id); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get role details with its permissions. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetByIdWithPermissionsAsync(string? id, System.Threading.CancellationToken cancellationToken); + + /// + /// Update a role's permissions. + /// + /// A server side error occurred. + System.Threading.Tasks.Task UpdatePermissionsAsync(string? id, UpdateRolePermissionsRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Update a role's permissions. + /// + /// A server side error occurred. + System.Threading.Tasks.Task UpdatePermissionsAsync(string? id, UpdateRolePermissionsRequest request, System.Threading.CancellationToken cancellationToken); + + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class RolesClient : IRolesClient + { + private System.Net.Http.HttpClient _httpClient; + private System.Lazy _settings; + + public RolesClient(System.Net.Http.HttpClient httpClient) + { + _httpClient = httpClient; + _settings = new System.Lazy(CreateSerializerSettings); + } + + private Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } } + + partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Get a list of all roles. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task> GetListAsync() + { + return GetListAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get a list of all roles. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task> GetListAsync(System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/roles"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync>(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Create or update a role. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task RegisterRoleAsync(CreateOrUpdateRoleRequest request) + { + return RegisterRoleAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Create or update a role. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task RegisterRoleAsync(CreateOrUpdateRoleRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/roles"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Get role details. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetByIdAsync(string? id) + { + return GetByIdAsync(id, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get role details. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetByIdAsync(string? id, System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/roles/{id}"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Delete a role. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task DeleteAsync(string? id) + { + return DeleteAsync(id, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Delete a role. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task DeleteAsync(string? id, System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/roles/{id}"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("DELETE"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Get role details with its permissions. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetByIdWithPermissionsAsync(string? id) + { + return GetByIdWithPermissionsAsync(id, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get role details with its permissions. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetByIdWithPermissionsAsync(string? id, System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/roles/{id}/permissions"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Update a role's permissions. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task UpdatePermissionsAsync(string? id, UpdateRolePermissionsRequest request) + { + return UpdatePermissionsAsync(id, request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Update a role's permissions. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task UpdatePermissionsAsync(string? id, UpdateRolePermissionsRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/roles/{id}/permissions"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("PUT"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T)!, string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody!, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody!, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object? value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value.GetType().IsArray) + { + var array = System.Linq.Enumerable.OfType((System.Array) value); + return string.Join(",", System.Linq.Enumerable.Select(array, o => ConvertToString(o, cultureInfo))); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial interface ITokensClient : IApiService + { + /// + /// Request an access token using credentials. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + System.Threading.Tasks.Task GetTokenAsync(string tenant, TokenRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Request an access token using credentials. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + System.Threading.Tasks.Task GetTokenAsync(string tenant, TokenRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Request an access token using a refresh token. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + System.Threading.Tasks.Task RefreshAsync(string tenant, RefreshTokenRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Request an access token using a refresh token. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + System.Threading.Tasks.Task RefreshAsync(string tenant, RefreshTokenRequest request, System.Threading.CancellationToken cancellationToken); + + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class TokensClient : ITokensClient + { + private System.Net.Http.HttpClient _httpClient; + private System.Lazy _settings; + + public TokensClient(System.Net.Http.HttpClient httpClient) + { + _httpClient = httpClient; + _settings = new System.Lazy(CreateSerializerSettings); + } + + private Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } } + + partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Request an access token using credentials. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetTokenAsync(string tenant, TokenRequest request) + { + return GetTokenAsync(tenant, request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Request an access token using credentials. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetTokenAsync(string tenant, TokenRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/tokens"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + + if (tenant == null) + throw new System.ArgumentNullException("tenant"); + request_.Headers.TryAddWithoutValidation("tenant", ConvertToString(tenant, System.Globalization.CultureInfo.InvariantCulture)); + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Request an access token using a refresh token. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + public virtual System.Threading.Tasks.Task RefreshAsync(string tenant, RefreshTokenRequest request) + { + return RefreshAsync(tenant, request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Request an access token using a refresh token. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task RefreshAsync(string tenant, RefreshTokenRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/tokens/refresh"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + + if (tenant == null) + throw new System.ArgumentNullException("tenant"); + request_.Headers.TryAddWithoutValidation("tenant", ConvertToString(tenant, System.Globalization.CultureInfo.InvariantCulture)); + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T)!, string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody!, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody!, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object? value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value.GetType().IsArray) + { + var array = System.Linq.Enumerable.OfType((System.Array) value); + return string.Join(",", System.Linq.Enumerable.Select(array, o => ConvertToString(o, cultureInfo))); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial interface IUsersClient : IApiService + { + /// + /// Get list of all users. + /// + /// A server side error occurred. + System.Threading.Tasks.Task> GetListAsync(); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get list of all users. + /// + /// A server side error occurred. + System.Threading.Tasks.Task> GetListAsync(System.Threading.CancellationToken cancellationToken); + + /// + /// Creates a new user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task CreateAsync(CreateUserRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Creates a new user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task CreateAsync(CreateUserRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Get a user's details. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetByIdAsync(string? id); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get a user's details. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetByIdAsync(string? id, System.Threading.CancellationToken cancellationToken); + + /// + /// Get a user's roles. + /// + /// A server side error occurred. + System.Threading.Tasks.Task> GetRolesAsync(string? id); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get a user's roles. + /// + /// A server side error occurred. + System.Threading.Tasks.Task> GetRolesAsync(string? id, System.Threading.CancellationToken cancellationToken); + + /// + /// Update a user's assigned roles. + /// + /// A server side error occurred. + System.Threading.Tasks.Task AssignRolesAsync(string? id, UserRolesRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Update a user's assigned roles. + /// + /// A server side error occurred. + System.Threading.Tasks.Task AssignRolesAsync(string? id, UserRolesRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Anonymous user creates a user. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + System.Threading.Tasks.Task SelfRegisterAsync(string tenant, CreateUserRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Anonymous user creates a user. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + System.Threading.Tasks.Task SelfRegisterAsync(string tenant, CreateUserRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Toggle a user's active status. + /// + /// A server side error occurred. + System.Threading.Tasks.Task ToggleStatusAsync(string? id, ToggleUserStatusRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Toggle a user's active status. + /// + /// A server side error occurred. + System.Threading.Tasks.Task ToggleStatusAsync(string? id, ToggleUserStatusRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Confirm email address for a user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task ConfirmEmailAsync(string? tenant, string? userId, string? code); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Confirm email address for a user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task ConfirmEmailAsync(string? tenant, string? userId, string? code, System.Threading.CancellationToken cancellationToken); + + /// + /// Confirm phone number for a user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task ConfirmPhoneNumberAsync(string? userId, string? code); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Confirm phone number for a user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task ConfirmPhoneNumberAsync(string? userId, string? code, System.Threading.CancellationToken cancellationToken); + + /// + /// Request a pasword reset email for a user. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + System.Threading.Tasks.Task ForgotPasswordAsync(string tenant, ForgotPasswordRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Request a pasword reset email for a user. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + System.Threading.Tasks.Task ForgotPasswordAsync(string tenant, ForgotPasswordRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Reset a user's password. + /// + /// A server side error occurred. + System.Threading.Tasks.Task ResetPasswordAsync(ResetPasswordRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Reset a user's password. + /// + /// A server side error occurred. + System.Threading.Tasks.Task ResetPasswordAsync(ResetPasswordRequest request, System.Threading.CancellationToken cancellationToken); + + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class UsersClient : IUsersClient + { + private System.Net.Http.HttpClient _httpClient; + private System.Lazy _settings; + + public UsersClient(System.Net.Http.HttpClient httpClient) + { + _httpClient = httpClient; + _settings = new System.Lazy(CreateSerializerSettings); + } + + private Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } } + + partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Get list of all users. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task> GetListAsync() + { + return GetListAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get list of all users. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task> GetListAsync(System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/users"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync>(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Creates a new user. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task CreateAsync(CreateUserRequest request) + { + return CreateAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Creates a new user. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task CreateAsync(CreateUserRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/users"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Get a user's details. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetByIdAsync(string? id) + { + return GetByIdAsync(id, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get a user's details. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetByIdAsync(string? id, System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/users/{id}"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Get a user's roles. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task> GetRolesAsync(string? id) + { + return GetRolesAsync(id, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get a user's roles. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task> GetRolesAsync(string? id, System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/users/{id}/roles"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync>(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Update a user's assigned roles. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task AssignRolesAsync(string? id, UserRolesRequest request) + { + return AssignRolesAsync(id, request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Update a user's assigned roles. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task AssignRolesAsync(string? id, UserRolesRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/users/{id}/roles"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Anonymous user creates a user. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + public virtual System.Threading.Tasks.Task SelfRegisterAsync(string tenant, CreateUserRequest request) + { + return SelfRegisterAsync(tenant, request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Anonymous user creates a user. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task SelfRegisterAsync(string tenant, CreateUserRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/users/self-register"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + + if (tenant == null) + throw new System.ArgumentNullException("tenant"); + request_.Headers.TryAddWithoutValidation("tenant", ConvertToString(tenant, System.Globalization.CultureInfo.InvariantCulture)); + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Toggle a user's active status. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task ToggleStatusAsync(string? id, ToggleUserStatusRequest request) + { + return ToggleStatusAsync(id, request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Toggle a user's active status. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task ToggleStatusAsync(string? id, ToggleUserStatusRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/users/{id}/toggle-status"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + return; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Confirm email address for a user. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task ConfirmEmailAsync(string? tenant, string? userId, string? code) + { + return ConfirmEmailAsync(tenant, userId, code, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Confirm email address for a user. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task ConfirmEmailAsync(string? tenant, string? userId, string? code, System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/users/confirm-email?"); + if (tenant != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("tenant") + "=").Append(System.Uri.EscapeDataString(ConvertToString(tenant, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); + } + if (userId != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("userId") + "=").Append(System.Uri.EscapeDataString(ConvertToString(userId, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); + } + if (code != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("code") + "=").Append(System.Uri.EscapeDataString(ConvertToString(code, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); + } + urlBuilder_.Length--; + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Confirm phone number for a user. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task ConfirmPhoneNumberAsync(string? userId, string? code) + { + return ConfirmPhoneNumberAsync(userId, code, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Confirm phone number for a user. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task ConfirmPhoneNumberAsync(string? userId, string? code, System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/users/confirm-phone-number?"); + if (userId != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("userId") + "=").Append(System.Uri.EscapeDataString(ConvertToString(userId, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); + } + if (code != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("code") + "=").Append(System.Uri.EscapeDataString(ConvertToString(code, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); + } + urlBuilder_.Length--; + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Request a pasword reset email for a user. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + public virtual System.Threading.Tasks.Task ForgotPasswordAsync(string tenant, ForgotPasswordRequest request) + { + return ForgotPasswordAsync(tenant, request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Request a pasword reset email for a user. + /// + /// Input your tenant Id to access this API + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task ForgotPasswordAsync(string tenant, ForgotPasswordRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/users/forgot-password"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + + if (tenant == null) + throw new System.ArgumentNullException("tenant"); + request_.Headers.TryAddWithoutValidation("tenant", ConvertToString(tenant, System.Globalization.CultureInfo.InvariantCulture)); + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Reset a user's password. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task ResetPasswordAsync(ResetPasswordRequest request) + { + return ResetPasswordAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Reset a user's password. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task ResetPasswordAsync(ResetPasswordRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/users/reset-password"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T)!, string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody!, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody!, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object? value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value.GetType().IsArray) + { + var array = System.Linq.Enumerable.OfType((System.Array) value); + return string.Join(",", System.Linq.Enumerable.Select(array, o => ConvertToString(o, cultureInfo))); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial interface IPersonalClient : IApiService + { + /// + /// Get profile details of currently logged in user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetProfileAsync(); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get profile details of currently logged in user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetProfileAsync(System.Threading.CancellationToken cancellationToken); + + /// + /// Update profile details of currently logged in user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task UpdateProfileAsync(UpdateUserRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Update profile details of currently logged in user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task UpdateProfileAsync(UpdateUserRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Change password of currently logged in user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task ChangePasswordAsync(ChangePasswordRequest model); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Change password of currently logged in user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task ChangePasswordAsync(ChangePasswordRequest model, System.Threading.CancellationToken cancellationToken); + + /// + /// Get permissions of currently logged in user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task> GetPermissionsAsync(); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get permissions of currently logged in user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task> GetPermissionsAsync(System.Threading.CancellationToken cancellationToken); + + /// + /// Get audit logs of currently logged in user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task> GetLogsAsync(); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get audit logs of currently logged in user. + /// + /// A server side error occurred. + System.Threading.Tasks.Task> GetLogsAsync(System.Threading.CancellationToken cancellationToken); + + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class PersonalClient : IPersonalClient + { + private System.Net.Http.HttpClient _httpClient; + private System.Lazy _settings; + + public PersonalClient(System.Net.Http.HttpClient httpClient) + { + _httpClient = httpClient; + _settings = new System.Lazy(CreateSerializerSettings); + } + + private Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } } + + partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Get profile details of currently logged in user. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetProfileAsync() + { + return GetProfileAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get profile details of currently logged in user. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetProfileAsync(System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/personal/profile"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Update profile details of currently logged in user. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task UpdateProfileAsync(UpdateUserRequest request) + { + return UpdateProfileAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Update profile details of currently logged in user. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task UpdateProfileAsync(UpdateUserRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/personal/profile"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("PUT"); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + return; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Change password of currently logged in user. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task ChangePasswordAsync(ChangePasswordRequest model) + { + return ChangePasswordAsync(model, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Change password of currently logged in user. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task ChangePasswordAsync(ChangePasswordRequest model, System.Threading.CancellationToken cancellationToken) + { + if (model == null) + throw new System.ArgumentNullException("model"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/personal/change-password"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(model, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("PUT"); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + return; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Get permissions of currently logged in user. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task> GetPermissionsAsync() + { + return GetPermissionsAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get permissions of currently logged in user. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task> GetPermissionsAsync(System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/personal/permissions"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync>(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Get audit logs of currently logged in user. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task> GetLogsAsync() + { + return GetLogsAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get audit logs of currently logged in user. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task> GetLogsAsync(System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/personal/logs"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync>(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T)!, string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody!, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody!, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object? value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value.GetType().IsArray) + { + var array = System.Linq.Enumerable.OfType((System.Array) value); + return string.Join(",", System.Linq.Enumerable.Select(array, o => ConvertToString(o, cultureInfo))); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial interface IDashboardClient : IApiService + { + /// + /// Get statistics for the dashboard. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetAsync(); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get statistics for the dashboard. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetAsync(System.Threading.CancellationToken cancellationToken); + + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class DashboardClient : IDashboardClient + { + private System.Net.Http.HttpClient _httpClient; + private System.Lazy _settings; + + public DashboardClient(System.Net.Http.HttpClient httpClient) + { + _httpClient = httpClient; + _settings = new System.Lazy(CreateSerializerSettings); + } + + private Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } } + + partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Get statistics for the dashboard. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetAsync() + { + return GetAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get statistics for the dashboard. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetAsync(System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/dashboard"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T)!, string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody!, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody!, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object? value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value.GetType().IsArray) + { + var array = System.Linq.Enumerable.OfType((System.Array) value); + return string.Join(",", System.Linq.Enumerable.Select(array, o => ConvertToString(o, cultureInfo))); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial interface IBrandsClient : IApiService + { + /// + /// Search brands using available filters. + /// + /// A server side error occurred. + System.Threading.Tasks.Task SearchAsync(SearchBrandsRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Search brands using available filters. + /// + /// A server side error occurred. + System.Threading.Tasks.Task SearchAsync(SearchBrandsRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Get brand details. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetAsync(System.Guid id); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get brand details. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetAsync(System.Guid id, System.Threading.CancellationToken cancellationToken); + + /// + /// Update a brand. + /// + /// A server side error occurred. + System.Threading.Tasks.Task UpdateAsync(System.Guid id, UpdateBrandRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Update a brand. + /// + /// A server side error occurred. + System.Threading.Tasks.Task UpdateAsync(System.Guid id, UpdateBrandRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Delete a brand. + /// + /// A server side error occurred. + System.Threading.Tasks.Task DeleteAsync(System.Guid id); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Delete a brand. + /// + /// A server side error occurred. + System.Threading.Tasks.Task DeleteAsync(System.Guid id, System.Threading.CancellationToken cancellationToken); + + /// + /// Create a new brand. + /// + /// A server side error occurred. + System.Threading.Tasks.Task CreateAsync(CreateBrandRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Create a new brand. + /// + /// A server side error occurred. + System.Threading.Tasks.Task CreateAsync(CreateBrandRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Generate a number of random brands. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GenerateRandomAsync(GenerateRandomBrandRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Generate a number of random brands. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GenerateRandomAsync(GenerateRandomBrandRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Delete the brands generated with the generate-random call. + /// + /// A server side error occurred. + System.Threading.Tasks.Task DeleteRandomAsync(); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Delete the brands generated with the generate-random call. + /// + /// A server side error occurred. + System.Threading.Tasks.Task DeleteRandomAsync(System.Threading.CancellationToken cancellationToken); + + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BrandsClient : IBrandsClient + { + private System.Net.Http.HttpClient _httpClient; + private System.Lazy _settings; + + public BrandsClient(System.Net.Http.HttpClient httpClient) + { + _httpClient = httpClient; + _settings = new System.Lazy(CreateSerializerSettings); + } + + private Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } } + + partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Search brands using available filters. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task SearchAsync(SearchBrandsRequest request) + { + return SearchAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Search brands using available filters. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task SearchAsync(SearchBrandsRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/brands/search"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + { + var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); + throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Get brand details. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetAsync(System.Guid id) + { + return GetAsync(id, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get brand details. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetAsync(System.Guid id, System.Threading.CancellationToken cancellationToken) + { + if (id == null) + throw new System.ArgumentNullException("id"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/brands/{id}"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Update a brand. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task UpdateAsync(System.Guid id, UpdateBrandRequest request) + { + return UpdateAsync(id, request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Update a brand. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task UpdateAsync(System.Guid id, UpdateBrandRequest request, System.Threading.CancellationToken cancellationToken) + { + if (id == null) + throw new System.ArgumentNullException("id"); + + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/brands/{id}"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("PUT"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Delete a brand. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task DeleteAsync(System.Guid id) + { + return DeleteAsync(id, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Delete a brand. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task DeleteAsync(System.Guid id, System.Threading.CancellationToken cancellationToken) + { + if (id == null) + throw new System.ArgumentNullException("id"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/brands/{id}"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("DELETE"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Create a new brand. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task CreateAsync(CreateBrandRequest request) + { + return CreateAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Create a new brand. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task CreateAsync(CreateBrandRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/brands"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + { + var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); + throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Generate a number of random brands. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GenerateRandomAsync(GenerateRandomBrandRequest request) + { + return GenerateRandomAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Generate a number of random brands. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GenerateRandomAsync(GenerateRandomBrandRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/brands/generate-random"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + { + var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); + throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Delete the brands generated with the generate-random call. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task DeleteRandomAsync() + { + return DeleteRandomAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Delete the brands generated with the generate-random call. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task DeleteRandomAsync(System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/brands/delete-random"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("DELETE"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T)!, string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody!, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody!, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object? value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value.GetType().IsArray) + { + var array = System.Linq.Enumerable.OfType((System.Array) value); + return string.Join(",", System.Linq.Enumerable.Select(array, o => ConvertToString(o, cultureInfo))); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial interface IProductsClient : IApiService + { + /// + /// Search products using available filters. + /// + /// A server side error occurred. + System.Threading.Tasks.Task SearchAsync(SearchProductsRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Search products using available filters. + /// + /// A server side error occurred. + System.Threading.Tasks.Task SearchAsync(SearchProductsRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Get product details. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetAsync(System.Guid id); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get product details. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetAsync(System.Guid id, System.Threading.CancellationToken cancellationToken); + + /// + /// Update a product. + /// + /// A server side error occurred. + System.Threading.Tasks.Task UpdateAsync(System.Guid id, UpdateProductRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Update a product. + /// + /// A server side error occurred. + System.Threading.Tasks.Task UpdateAsync(System.Guid id, UpdateProductRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Delete a product. + /// + /// A server side error occurred. + System.Threading.Tasks.Task DeleteAsync(System.Guid id); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Delete a product. + /// + /// A server side error occurred. + System.Threading.Tasks.Task DeleteAsync(System.Guid id, System.Threading.CancellationToken cancellationToken); + + /// + /// Get product details via dapper. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetDapperAsync(System.Guid? id); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get product details via dapper. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetDapperAsync(System.Guid? id, System.Threading.CancellationToken cancellationToken); + + /// + /// Create a new product. + /// + /// A server side error occurred. + System.Threading.Tasks.Task CreateAsync(CreateProductRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Create a new product. + /// + /// A server side error occurred. + System.Threading.Tasks.Task CreateAsync(CreateProductRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Export a products. + /// + /// A server side error occurred. + System.Threading.Tasks.Task ExportAsync(ExportProductsRequest filter); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Export a products. + /// + /// A server side error occurred. + System.Threading.Tasks.Task ExportAsync(ExportProductsRequest filter, System.Threading.CancellationToken cancellationToken); + + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ProductsClient : IProductsClient + { + private System.Net.Http.HttpClient _httpClient; + private System.Lazy _settings; + + public ProductsClient(System.Net.Http.HttpClient httpClient) + { + _httpClient = httpClient; + _settings = new System.Lazy(CreateSerializerSettings); + } + + private Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } } + + partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Search products using available filters. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task SearchAsync(SearchProductsRequest request) + { + return SearchAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Search products using available filters. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task SearchAsync(SearchProductsRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/products/search"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + { + var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); + throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Get product details. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetAsync(System.Guid id) + { + return GetAsync(id, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get product details. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetAsync(System.Guid id, System.Threading.CancellationToken cancellationToken) + { + if (id == null) + throw new System.ArgumentNullException("id"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/products/{id}"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Update a product. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task UpdateAsync(System.Guid id, UpdateProductRequest request) + { + return UpdateAsync(id, request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Update a product. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task UpdateAsync(System.Guid id, UpdateProductRequest request, System.Threading.CancellationToken cancellationToken) + { + if (id == null) + throw new System.ArgumentNullException("id"); + + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/products/{id}"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("PUT"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Delete a product. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task DeleteAsync(System.Guid id) + { + return DeleteAsync(id, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Delete a product. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task DeleteAsync(System.Guid id, System.Threading.CancellationToken cancellationToken) + { + if (id == null) + throw new System.ArgumentNullException("id"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/products/{id}"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("DELETE"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Get product details via dapper. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetDapperAsync(System.Guid? id) + { + return GetDapperAsync(id, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get product details via dapper. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetDapperAsync(System.Guid? id, System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/products/dapper?"); + if (id != null) + { + urlBuilder_.Append(System.Uri.EscapeDataString("id") + "=").Append(System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))).Append("&"); + } + urlBuilder_.Length--; + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Create a new product. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task CreateAsync(CreateProductRequest request) + { + return CreateAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Create a new product. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task CreateAsync(CreateProductRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/products"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + { + var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); + throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Export a products. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task ExportAsync(ExportProductsRequest filter) + { + return ExportAsync(filter, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Export a products. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task ExportAsync(ExportProductsRequest filter, System.Threading.CancellationToken cancellationToken) + { + if (filter == null) + throw new System.ArgumentNullException("filter"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/products/export"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(filter, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/octet-stream")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200 || status_ == 206) + { + var responseStream_ = response_.Content == null ? System.IO.Stream.Null : await response_.Content.ReadAsStreamAsync().ConfigureAwait(false); + var fileResponse_ = new FileResponse(status_, headers_, responseStream_, null, response_); + disposeClient_ = false; disposeResponse_ = false; // response and client are disposed by FileResponse + return fileResponse_; + } + else + { + var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); + throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T)!, string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody!, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody!, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object? value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value.GetType().IsArray) + { + var array = System.Linq.Enumerable.OfType((System.Array) value); + return string.Join(",", System.Linq.Enumerable.Select(array, o => ConvertToString(o, cultureInfo))); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial interface ICashierClient : IApiService + { + /// + /// Search tokens. + /// + /// A server side error occurred. + System.Threading.Tasks.Task> GetListAsync(); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Search tokens. + /// + /// A server side error occurred. + System.Threading.Tasks.Task> GetListAsync(System.Threading.CancellationToken cancellationToken); + + /// + /// GiftToken to other users. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GiftCashAsync(GiftCashRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// GiftToken to other users. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GiftCashAsync(GiftCashRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// View current balance + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetCurrentBalanceAsync(); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// View current balance + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetCurrentBalanceAsync(System.Threading.CancellationToken cancellationToken); + + /// + /// GiftToken to other users. + /// + /// A server side error occurred. + System.Threading.Tasks.Task BuyCashAsync(BuyCashRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// GiftToken to other users. + /// + /// A server side error occurred. + System.Threading.Tasks.Task BuyCashAsync(BuyCashRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// View list of gift info. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetMyGiftingInfoAsync(); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// View list of gift info. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetMyGiftingInfoAsync(System.Threading.CancellationToken cancellationToken); + + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CashierClient : ICashierClient + { + private System.Net.Http.HttpClient _httpClient; + private System.Lazy _settings; + + public CashierClient(System.Net.Http.HttpClient httpClient) + { + _httpClient = httpClient; + _settings = new System.Lazy(CreateSerializerSettings); + } + + private Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } } + + partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Search tokens. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task> GetListAsync() + { + return GetListAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Search tokens. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task> GetListAsync(System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/cashier/getallbalance"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync>(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// GiftToken to other users. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GiftCashAsync(GiftCashRequest request) + { + return GiftCashAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// GiftToken to other users. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GiftCashAsync(GiftCashRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/cashier/gift"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + { + var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); + throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// View current balance + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetCurrentBalanceAsync() + { + return GetCurrentBalanceAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// View current balance + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetCurrentBalanceAsync(System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/cashier/balance"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// GiftToken to other users. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task BuyCashAsync(BuyCashRequest request) + { + return BuyCashAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// GiftToken to other users. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task BuyCashAsync(BuyCashRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/cashier/buy"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + { + var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); + throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// View list of gift info. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetMyGiftingInfoAsync() + { + return GetMyGiftingInfoAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// View list of gift info. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetMyGiftingInfoAsync(System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/cashier/history"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Content = new System.Net.Http.StringContent(string.Empty, System.Text.Encoding.UTF8, "application/json"); + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T)!, string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody!, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody!, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object? value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value.GetType().IsArray) + { + var array = System.Linq.Enumerable.OfType((System.Array) value); + return string.Join(",", System.Linq.Enumerable.Select(array, o => ConvertToString(o, cultureInfo))); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial interface ITenantsClient : IApiService + { + /// + /// Get a list of all tenants. + /// + /// A server side error occurred. + System.Threading.Tasks.Task> GetListAsync(); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get a list of all tenants. + /// + /// A server side error occurred. + System.Threading.Tasks.Task> GetListAsync(System.Threading.CancellationToken cancellationToken); + + /// + /// Create a new tenant. + /// + /// A server side error occurred. + System.Threading.Tasks.Task CreateAsync(CreateTenantRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Create a new tenant. + /// + /// A server side error occurred. + System.Threading.Tasks.Task CreateAsync(CreateTenantRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Get tenant details. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetAsync(string? id); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get tenant details. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetAsync(string? id, System.Threading.CancellationToken cancellationToken); + + /// + /// Activate a tenant. + /// + /// A server side error occurred. + System.Threading.Tasks.Task ActivateAsync(string? id); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Activate a tenant. + /// + /// A server side error occurred. + System.Threading.Tasks.Task ActivateAsync(string? id, System.Threading.CancellationToken cancellationToken); + + /// + /// Deactivate a tenant. + /// + /// A server side error occurred. + System.Threading.Tasks.Task DeactivateAsync(string? id); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Deactivate a tenant. + /// + /// A server side error occurred. + System.Threading.Tasks.Task DeactivateAsync(string? id, System.Threading.CancellationToken cancellationToken); + + /// + /// Upgrade a tenant's subscription. + /// + /// A server side error occurred. + System.Threading.Tasks.Task UpgradeSubscriptionAsync(string? id, UpgradeSubscriptionRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Upgrade a tenant's subscription. + /// + /// A server side error occurred. + System.Threading.Tasks.Task UpgradeSubscriptionAsync(string? id, UpgradeSubscriptionRequest request, System.Threading.CancellationToken cancellationToken); + + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class TenantsClient : ITenantsClient + { + private System.Net.Http.HttpClient _httpClient; + private System.Lazy _settings; + + public TenantsClient(System.Net.Http.HttpClient httpClient) + { + _httpClient = httpClient; + _settings = new System.Lazy(CreateSerializerSettings); + } + + private Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } } + + partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Get a list of all tenants. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task> GetListAsync() + { + return GetListAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get a list of all tenants. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task> GetListAsync(System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/tenants"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync>(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Create a new tenant. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task CreateAsync(CreateTenantRequest request) + { + return CreateAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Create a new tenant. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task CreateAsync(CreateTenantRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/tenants"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + { + var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); + throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Get tenant details. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetAsync(string? id) + { + return GetAsync(id, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get tenant details. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetAsync(string? id, System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/tenants/{id}"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Activate a tenant. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task ActivateAsync(string? id) + { + return ActivateAsync(id, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Activate a tenant. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task ActivateAsync(string? id, System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/tenants/{id}/activate"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Content = new System.Net.Http.StringContent(string.Empty, System.Text.Encoding.UTF8, "application/json"); + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Deactivate a tenant. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task DeactivateAsync(string? id) + { + return DeactivateAsync(id, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Deactivate a tenant. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task DeactivateAsync(string? id, System.Threading.CancellationToken cancellationToken) + { + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/tenants/{id}/deactivate"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Content = new System.Net.Http.StringContent(string.Empty, System.Text.Encoding.UTF8, "application/json"); + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Upgrade a tenant's subscription. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task UpgradeSubscriptionAsync(string? id, UpgradeSubscriptionRequest request) + { + return UpgradeSubscriptionAsync(id, request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Upgrade a tenant's subscription. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task UpgradeSubscriptionAsync(string? id, UpgradeSubscriptionRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/tenants/{id}/upgrade"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T)!, string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody!, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody!, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object? value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value.GetType().IsArray) + { + var array = System.Linq.Enumerable.OfType((System.Array) value); + return string.Join(",", System.Linq.Enumerable.Select(array, o => ConvertToString(o, cultureInfo))); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial interface IOrderClient : IApiService + { + /// + /// Use Order Service . + /// + /// A server side error occurred. + System.Threading.Tasks.Task OrderProductAsync(BuyProductRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Use Order Service . + /// + /// A server side error occurred. + System.Threading.Tasks.Task OrderProductAsync(BuyProductRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Search orders using available filters. + /// + /// A server side error occurred. + System.Threading.Tasks.Task SearchAsync(SearchOrdersRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Search orders using available filters. + /// + /// A server side error occurred. + System.Threading.Tasks.Task SearchAsync(SearchOrdersRequest request, System.Threading.CancellationToken cancellationToken); + + /// + /// Get order details. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetAsync(System.Guid id); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get order details. + /// + /// A server side error occurred. + System.Threading.Tasks.Task GetAsync(System.Guid id, System.Threading.CancellationToken cancellationToken); + + /// + /// Update orders only by super admin token. + /// + /// A server side error occurred. + System.Threading.Tasks.Task UpdateStatusAsync(UpdateOrderRequest request); + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Update orders only by super admin token. + /// + /// A server side error occurred. + System.Threading.Tasks.Task UpdateStatusAsync(UpdateOrderRequest request, System.Threading.CancellationToken cancellationToken); + + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class OrderClient : IOrderClient + { + private System.Net.Http.HttpClient _httpClient; + private System.Lazy _settings; + + public OrderClient(System.Net.Http.HttpClient httpClient) + { + _httpClient = httpClient; + _settings = new System.Lazy(CreateSerializerSettings); + } + + private Newtonsoft.Json.JsonSerializerSettings CreateSerializerSettings() + { + var settings = new Newtonsoft.Json.JsonSerializerSettings(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + protected Newtonsoft.Json.JsonSerializerSettings JsonSerializerSettings { get { return _settings.Value; } } + + partial void UpdateJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings); + + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, string url); + partial void PrepareRequest(System.Net.Http.HttpClient client, System.Net.Http.HttpRequestMessage request, System.Text.StringBuilder urlBuilder); + partial void ProcessResponse(System.Net.Http.HttpClient client, System.Net.Http.HttpResponseMessage response); + + /// + /// Use Order Service . + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task OrderProductAsync(BuyProductRequest request) + { + return OrderProductAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Use Order Service . + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task OrderProductAsync(BuyProductRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/order/place-order"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + { + var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); + throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Search orders using available filters. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task SearchAsync(SearchOrdersRequest request) + { + return SearchAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Search orders using available filters. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task SearchAsync(SearchOrdersRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/order/search"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("POST"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + { + var responseData_ = response_.Content == null ? null : await response_.Content.ReadAsStringAsync().ConfigureAwait(false); + throw new ApiException("The HTTP status code of the response was not expected (" + status_ + ").", status_, responseData_, headers_, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Get order details. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetAsync(System.Guid id) + { + return GetAsync(id, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get order details. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetAsync(System.Guid id, System.Threading.CancellationToken cancellationToken) + { + if (id == null) + throw new System.ArgumentNullException("id"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/order/{id}"); + urlBuilder_.Replace("{id}", System.Uri.EscapeDataString(ConvertToString(id, System.Globalization.CultureInfo.InvariantCulture))); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + request_.Method = new System.Net.Http.HttpMethod("GET"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + /// + /// Update orders only by super admin token. + /// + /// A server side error occurred. + public virtual System.Threading.Tasks.Task UpdateStatusAsync(UpdateOrderRequest request) + { + return UpdateStatusAsync(request, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Update orders only by super admin token. + /// + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task UpdateStatusAsync(UpdateOrderRequest request, System.Threading.CancellationToken cancellationToken) + { + if (request == null) + throw new System.ArgumentNullException("request"); + + var urlBuilder_ = new System.Text.StringBuilder(); + urlBuilder_.Append("api/v1/order/update-status"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var content_ = new System.Net.Http.StringContent(Newtonsoft.Json.JsonConvert.SerializeObject(request, _settings.Value)); + content_.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("application/json"); + request_.Content = content_; + request_.Method = new System.Net.Http.HttpMethod("PUT"); + request_.Headers.Accept.Add(System.Net.Http.Headers.MediaTypeWithQualityHeaderValue.Parse("application/json")); + + PrepareRequest(client_, request_, urlBuilder_); + + var url_ = urlBuilder_.ToString(); + request_.RequestUri = new System.Uri(url_, System.UriKind.RelativeOrAbsolute); + + PrepareRequest(client_, request_, url_); + + var response_ = await client_.SendAsync(request_, System.Net.Http.HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false); + var disposeResponse_ = true; + try + { + var headers_ = System.Linq.Enumerable.ToDictionary(response_.Headers, h_ => h_.Key, h_ => h_.Value); + if (response_.Content != null && response_.Content.Headers != null) + { + foreach (var item_ in response_.Content.Headers) + headers_[item_.Key] = item_.Value; + } + + ProcessResponse(client_, response_); + + var status_ = (int)response_.StatusCode; + if (status_ == 200) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + return objectResponse_.Object; + } + else + if (status_ == 400) + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + else + { + var objectResponse_ = await ReadObjectResponseAsync(response_, headers_, cancellationToken).ConfigureAwait(false); + if (objectResponse_.Object == null) + { + throw new ApiException("Response was null which was not expected.", status_, objectResponse_.Text, headers_, null); + } + throw new ApiException("A server side error occurred.", status_, objectResponse_.Text, headers_, objectResponse_.Object, null); + } + } + finally + { + if (disposeResponse_) + response_.Dispose(); + } + } + } + finally + { + if (disposeClient_) + client_.Dispose(); + } + } + + protected struct ObjectResponseResult + { + public ObjectResponseResult(T responseObject, string responseText) + { + this.Object = responseObject; + this.Text = responseText; + } + + public T Object { get; } + + public string Text { get; } + } + + public bool ReadResponseAsString { get; set; } + + protected virtual async System.Threading.Tasks.Task> ReadObjectResponseAsync(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Threading.CancellationToken cancellationToken) + { + if (response == null || response.Content == null) + { + return new ObjectResponseResult(default(T)!, string.Empty); + } + + if (ReadResponseAsString) + { + var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); + try + { + var typedBody = Newtonsoft.Json.JsonConvert.DeserializeObject(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody!, responseText); + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body string as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, responseText, headers, exception); + } + } + else + { + try + { + using (var responseStream = await response.Content.ReadAsStreamAsync().ConfigureAwait(false)) + using (var streamReader = new System.IO.StreamReader(responseStream)) + using (var jsonTextReader = new Newtonsoft.Json.JsonTextReader(streamReader)) + { + var serializer = Newtonsoft.Json.JsonSerializer.Create(JsonSerializerSettings); + var typedBody = serializer.Deserialize(jsonTextReader); + return new ObjectResponseResult(typedBody!, string.Empty); + } + } + catch (Newtonsoft.Json.JsonException exception) + { + var message = "Could not deserialize the response body stream as " + typeof(T).FullName + "."; + throw new ApiException(message, (int)response.StatusCode, string.Empty, headers, exception); + } + } + } + + private string ConvertToString(object? value, System.Globalization.CultureInfo cultureInfo) + { + if (value == null) + { + return ""; + } + + if (value is System.Enum) + { + var name = System.Enum.GetName(value.GetType(), value); + if (name != null) + { + var field = System.Reflection.IntrospectionExtensions.GetTypeInfo(value.GetType()).GetDeclaredField(name); + if (field != null) + { + var attribute = System.Reflection.CustomAttributeExtensions.GetCustomAttribute(field, typeof(System.Runtime.Serialization.EnumMemberAttribute)) + as System.Runtime.Serialization.EnumMemberAttribute; + if (attribute != null) + { + return attribute.Value != null ? attribute.Value : name; + } + } + + var converted = System.Convert.ToString(System.Convert.ChangeType(value, System.Enum.GetUnderlyingType(value.GetType()), cultureInfo)); + return converted == null ? string.Empty : converted; + } + } + else if (value is bool) + { + return System.Convert.ToString((bool)value, cultureInfo).ToLowerInvariant(); + } + else if (value is byte[]) + { + return System.Convert.ToBase64String((byte[]) value); + } + else if (value.GetType().IsArray) + { + var array = System.Linq.Enumerable.OfType((System.Array) value); + return string.Join(",", System.Linq.Enumerable.Select(array, o => ConvertToString(o, cultureInfo))); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class RoleDto + { + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Id { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Name { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("description", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Description { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("permissions", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection? Permissions { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class HttpValidationProblemDetails : ProblemDetails + { + [Newtonsoft.Json.JsonProperty("errors", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.IDictionary> Errors { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ProblemDetails + { + [Newtonsoft.Json.JsonProperty("type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Type { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("title", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Title { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("status", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int? Status { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("detail", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Detail { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("instance", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Instance { get; set; } = default!; + + private System.Collections.Generic.IDictionary _additionalProperties = new System.Collections.Generic.Dictionary(); + + [Newtonsoft.Json.JsonExtensionData] + public System.Collections.Generic.IDictionary AdditionalProperties + { + get { return _additionalProperties; } + set { _additionalProperties = value; } + } + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ErrorResult + { + [Newtonsoft.Json.JsonProperty("messages", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection? Messages { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("source", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Source { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("exception", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Exception { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("errorId", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? ErrorId { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("supportMessage", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? SupportMessage { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("statusCode", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int StatusCode { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class UpdateRolePermissionsRequest + { + [Newtonsoft.Json.JsonProperty("roleId", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public string RoleId { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("permissions", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Collections.Generic.ICollection Permissions { get; set; } = new System.Collections.ObjectModel.Collection(); + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CreateOrUpdateRoleRequest + { + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Id { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public string Name { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("description", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Description { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class TokenResponse + { + [Newtonsoft.Json.JsonProperty("token", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Token { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("refreshToken", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string RefreshToken { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("refreshTokenExpiryTime", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.DateTime RefreshTokenExpiryTime { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class TokenRequest + { + [Newtonsoft.Json.JsonProperty("email", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.RegularExpression(@"^[^@]+@[^@]+$")] + public string Email { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("password", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public string Password { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class RefreshTokenRequest + { + [Newtonsoft.Json.JsonProperty("token", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Token { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("refreshToken", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string RefreshToken { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class UserDetailsDto + { + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid Id { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("userName", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? UserName { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("firstName", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? FirstName { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("lastName", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? LastName { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("email", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Email { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("isActive", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool IsActive { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("emailConfirmed", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool EmailConfirmed { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("phoneNumber", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? PhoneNumber { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("imageUrl", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? ImageUrl { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class UserRoleDto + { + [Newtonsoft.Json.JsonProperty("roleId", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? RoleId { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("roleName", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? RoleName { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("description", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Description { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("enabled", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool Enabled { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class UserRolesRequest + { + [Newtonsoft.Json.JsonProperty("userRoles", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection UserRoles { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CreateUserRequest + { + [Newtonsoft.Json.JsonProperty("email", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.RegularExpression(@"^[^@]+@[^@]+$")] + public string Email { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("userName", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public string UserName { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("password", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public string Password { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("confirmPassword", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public string ConfirmPassword { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("phoneNumber", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? PhoneNumber { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ToggleUserStatusRequest + { + [Newtonsoft.Json.JsonProperty("activateUser", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool ActivateUser { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("userId", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? UserId { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ForgotPasswordRequest + { + [Newtonsoft.Json.JsonProperty("email", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.RegularExpression(@"^[^@]+@[^@]+$")] + public string Email { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ResetPasswordRequest + { + [Newtonsoft.Json.JsonProperty("email", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Email { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("password", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Password { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("token", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Token { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class UpdateUserRequest + { + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public string Id { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("userName", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(75, MinimumLength = 1)] + public string UserName { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("phoneNumber", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? PhoneNumber { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("email", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.RegularExpression(@"^[^@]+@[^@]+$")] + public string Email { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("image", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public FileUploadRequest? Image { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("deleteCurrentImage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool DeleteCurrentImage { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class FileUploadRequest + { + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(150, MinimumLength = 1)] + public string Name { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("extension", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(5, MinimumLength = 1)] + public string Extension { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("data", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public string Data { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ChangePasswordRequest + { + [Newtonsoft.Json.JsonProperty("password", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public string Password { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("newPassword", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public string NewPassword { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("confirmNewPassword", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string ConfirmNewPassword { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class AuditDto + { + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid Id { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("userId", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid UserId { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("type", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Type { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("tableName", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? TableName { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("dateTime", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.DateTime DateTime { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("oldValues", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? OldValues { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("newValues", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? NewValues { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("affectedColumns", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? AffectedColumns { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("primaryKey", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? PrimaryKey { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class StatsDto + { + [Newtonsoft.Json.JsonProperty("productCount", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int ProductCount { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("brandCount", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int BrandCount { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("userCount", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int UserCount { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("roleCount", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int RoleCount { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("dataEnterBarChart", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection DataEnterBarChart { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("productByBrandTypePieChart", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.IDictionary? ProductByBrandTypePieChart { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ChartSeries + { + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Name { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("data", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection? Data { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class PaginationResponseOfBrandDto + { + [Newtonsoft.Json.JsonProperty("data", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Data { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("currentPage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int CurrentPage { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("totalPages", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int TotalPages { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("totalCount", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int TotalCount { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("pageSize", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int PageSize { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("hasPreviousPage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool HasPreviousPage { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("hasNextPage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool HasNextPage { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BrandDto + { + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid Id { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Name { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("description", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Description { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class SearchBrandsRequest : PaginationFilter + { + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class PaginationFilter : BaseFilter + { + [Newtonsoft.Json.JsonProperty("pageNumber", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int PageNumber { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("pageSize", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int PageSize { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("orderBy", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection? OrderBy { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BaseFilter + { + /// + /// Column Wise Search is Supported. + /// + [Newtonsoft.Json.JsonProperty("advancedSearch", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public Search? AdvancedSearch { get; set; } = default!; + + /// + /// Keyword to Search in All the available columns of the Resource. + /// + [Newtonsoft.Json.JsonProperty("keyword", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Keyword { get; set; } = default!; + + /// + /// Advanced column filtering with logical operators and query operators is supported. + /// + [Newtonsoft.Json.JsonProperty("advancedFilter", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public Filter? AdvancedFilter { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class Search + { + [Newtonsoft.Json.JsonProperty("fields", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Fields { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("keyword", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Keyword { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class Filter + { + [Newtonsoft.Json.JsonProperty("logic", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Logic { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("filters", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection? Filters { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("field", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Field { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("operator", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Operator { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("value", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public object? Value { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CreateBrandRequest + { + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(75, MinimumLength = 1)] + public string Name { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("description", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Description { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class UpdateBrandRequest + { + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid Id { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(75, MinimumLength = 1)] + public string Name { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("description", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Description { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class GenerateRandomBrandRequest + { + [Newtonsoft.Json.JsonProperty("nSeed", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int NSeed { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class PaginationResponseOfProductDto + { + [Newtonsoft.Json.JsonProperty("data", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Data { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("currentPage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int CurrentPage { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("totalPages", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int TotalPages { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("totalCount", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int TotalCount { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("pageSize", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int PageSize { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("hasPreviousPage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool HasPreviousPage { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("hasNextPage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool HasNextPage { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ProductDto + { + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid Id { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Name { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("description", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Description { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("rate", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public decimal Rate { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("imagePath", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? ImagePath { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("brandId", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid BrandId { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("brandName", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string BrandName { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class SearchProductsRequest : PaginationFilter + { + [Newtonsoft.Json.JsonProperty("brandId", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid? BrandId { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("minimumRate", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public decimal? MinimumRate { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("maximumRate", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public decimal? MaximumRate { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ProductDetailsDto + { + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid Id { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Name { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("description", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Description { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("rate", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public decimal Rate { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("imagePath", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? ImagePath { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("brand", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public BrandDto Brand { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CreateProductRequest + { + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(75, MinimumLength = 1)] + public string Name { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("description", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Description { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("rate", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1.0D, double.MaxValue)] + public decimal Rate { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("brandId", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Guid BrandId { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("image", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public FileUploadRequest? Image { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class UpdateProductRequest + { + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid Id { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.StringLength(75, MinimumLength = 1)] + public string Name { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("description", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Description { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("rate", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + [System.ComponentModel.DataAnnotations.Range(1.0D, double.MaxValue)] + public decimal Rate { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("brandId", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public System.Guid BrandId { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("deleteCurrentImage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool DeleteCurrentImage { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("image", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public FileUploadRequest? Image { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ExportProductsRequest : BaseFilter + { + [Newtonsoft.Json.JsonProperty("brandId", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid? BrandId { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("minimumRate", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public decimal? MinimumRate { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("maximumRate", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public decimal? MaximumRate { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CashDto + { + [Newtonsoft.Json.JsonProperty("balance", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public decimal Balance { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("userId", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? UserId { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("userEmail", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? UserEmail { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class GiftCashRequest + { + [Newtonsoft.Json.JsonProperty("fromUserEmail", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? FromUserEmail { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("toUserEmail", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string ToUserEmail { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("giftMessage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string GiftMessage { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("giftImage", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? GiftImage { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("isViewed", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool IsViewed { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("amount", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public decimal Amount { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BuyCashRequest + { + [Newtonsoft.Json.JsonProperty("mode", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public BuyMode Mode { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("amount", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public decimal Amount { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public enum BuyMode + { + + Demo = 0, + + Cash = 1, + + Card = 2, + + Stripe = 3, + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class PaginationResponseOfGiftingInfoDto + { + [Newtonsoft.Json.JsonProperty("data", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Data { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("currentPage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int CurrentPage { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("totalPages", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int TotalPages { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("totalCount", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int TotalCount { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("pageSize", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int PageSize { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("hasPreviousPage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool HasPreviousPage { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("hasNextPage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool HasNextPage { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class GiftingInfoDto + { + [Newtonsoft.Json.JsonProperty("fromUserEmail", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string FromUserEmail { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("giftMessage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string GiftMessage { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("giftImage", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? GiftImage { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("amount", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public decimal Amount { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("createdOn", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.DateTime CreatedOn { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class TenantDto + { + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Id { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string Name { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("connectionString", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? ConnectionString { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("adminEmail", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string AdminEmail { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("isActive", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool IsActive { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("validUpto", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.DateTime ValidUpto { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("issuer", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Issuer { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class CreateTenantRequest + { + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public string Id { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("name", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public string Name { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("connectionString", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? ConnectionString { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("adminEmail", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + [System.ComponentModel.DataAnnotations.RegularExpression(@"^[^@]+@[^@]+$")] + public string AdminEmail { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("issuer", Required = Newtonsoft.Json.Required.Default, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string? Issuer { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class UpgradeSubscriptionRequest + { + [Newtonsoft.Json.JsonProperty("tenantId", Required = Newtonsoft.Json.Required.Always)] + [System.ComponentModel.DataAnnotations.Required] + public string TenantId { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("extendedExpiryDate", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.DateTime ExtendedExpiryDate { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class BuyProductRequest + { + [Newtonsoft.Json.JsonProperty("productId", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid ProductId { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class PaginationResponseOfOrderDto + { + [Newtonsoft.Json.JsonProperty("data", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Collections.Generic.ICollection Data { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("currentPage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int CurrentPage { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("totalPages", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int TotalPages { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("totalCount", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int TotalCount { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("pageSize", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public int PageSize { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("hasPreviousPage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool HasPreviousPage { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("hasNextPage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public bool HasNextPage { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class OrderDto + { + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid Id { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("productId", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid ProductId { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("userEmail", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string UserEmail { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("status", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public OrderStatus Status { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("statusMessage", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public string StatusMessage { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public enum OrderStatus + { + + Ordered = 0, + + Delivered = 1, + + OutOfStock = 2, + + Cancelled = 3, + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class SearchOrdersRequest : PaginationFilter + { + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class UpdateOrderRequest + { + [Newtonsoft.Json.JsonProperty("id", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public System.Guid Id { get; set; } = default!; + + [Newtonsoft.Json.JsonProperty("status", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)] + public OrderStatus Status { get; set; } = default!; + + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class FileResponse : System.IDisposable + { + private System.IDisposable? _client; + private System.IDisposable? _response; + + public int StatusCode { get; private set; } + + public System.Collections.Generic.IReadOnlyDictionary> Headers { get; private set; } + + public System.IO.Stream Stream { get; private set; } + + public bool IsPartial + { + get { return StatusCode == 206; } + } + + public FileResponse(int statusCode, System.Collections.Generic.IReadOnlyDictionary> headers, System.IO.Stream stream, System.IDisposable? client, System.IDisposable? response) + { + StatusCode = statusCode; + Headers = headers; + Stream = stream; + _client = client; + _response = response; + } + + public void Dispose() + { + Stream.Dispose(); + if (_response != null) + _response.Dispose(); + if (_client != null) + _client.Dispose(); + } + } + + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ApiException : System.Exception + { + public int StatusCode { get; private set; } + + public string? Response { get; private set; } + + public System.Collections.Generic.IReadOnlyDictionary> Headers { get; private set; } + + public ApiException(string message, int statusCode, string? response, System.Collections.Generic.IReadOnlyDictionary> headers, System.Exception? innerException) + : base(message + "\n\nStatus: " + statusCode + "\nResponse: \n" + ((response == null) ? "(null)" : response.Substring(0, response.Length >= 512 ? 512 : response.Length)), innerException) + { + StatusCode = statusCode; + Response = response; + Headers = headers; + } + + public override string ToString() + { + return string.Format("HTTP Response: \n\n{0}\n\n{1}", Response, base.ToString()); + } + } + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "13.15.10.0 (NJsonSchema v10.6.10.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ApiException : ApiException + { + public TResult Result { get; private set; } + + public ApiException(string message, int statusCode, string? response, System.Collections.Generic.IReadOnlyDictionary> headers, TResult result, System.Exception? innerException) + : base(message, statusCode, response, headers, innerException) + { + Result = result; + } + } + +} + +#pragma warning restore 1591 +#pragma warning restore 1573 +#pragma warning restore 472 +#pragma warning restore 114 +#pragma warning restore 108 +#pragma warning restore 3016 +#pragma warning restore 8603 \ No newline at end of file diff --git a/src/Client.Infrastructure/ApiClient/IApiService.cs b/src/Client.Infrastructure/ApiClient/IApiService.cs new file mode 100644 index 0000000..4bbe1b4 --- /dev/null +++ b/src/Client.Infrastructure/ApiClient/IApiService.cs @@ -0,0 +1,5 @@ +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; + +public interface IApiService +{ +} \ No newline at end of file diff --git a/src/Client.Infrastructure/ApiClient/nswag.json b/src/Client.Infrastructure/ApiClient/nswag.json new file mode 100644 index 0000000..4f3f722 --- /dev/null +++ b/src/Client.Infrastructure/ApiClient/nswag.json @@ -0,0 +1,100 @@ +{ + "runtime": "Net60", + "defaultVariables": null, + "documentGenerator": { + "fromDocument": { + "json": "", + "url": "https://localhost:5001/swagger/v1/swagger.json", + "output": null, + "newLineBehavior": "Auto" + } + }, + "codeGenerators": { + "openApiToCSharpClient": { + "clientBaseClass": null, + "configurationClass": null, + "generateClientClasses": true, + "generateClientInterfaces": true, + "clientBaseInterface": "IApiService", + "injectHttpClient": true, + "disposeHttpClient": false, + "protectedMethods": [], + "generateExceptionClasses": true, + "exceptionClass": "ApiException", + "wrapDtoExceptions": true, + "useHttpClientCreationMethod": false, + "httpClientType": "System.Net.Http.HttpClient", + "useHttpRequestMessageCreationMethod": false, + "useBaseUrl": false, + "generateBaseUrlProperty": true, + "generateSyncMethods": false, + "generatePrepareRequestAndProcessResponseAsAsyncMethods": false, + "exposeJsonSerializerSettings": false, + "clientClassAccessModifier": "public", + "typeAccessModifier": "public", + "generateContractsOutput": false, + "contractsNamespace": null, + "contractsOutputFilePath": null, + "parameterDateTimeFormat": "s", + "parameterDateFormat": "yyyy-MM-dd", + "generateUpdateJsonSerializerSettingsMethod": true, + "useRequestAndResponseSerializationSettings": false, + "serializeTypeInformation": false, + "queryNullValue": "", + "className": "{controller}Client", + "operationGenerationMode": "MultipleClientsFromOperationId", + "additionalNamespaceUsages": [], + "additionalContractNamespaceUsages": [], + "generateOptionalParameters": false, + "generateJsonMethods": false, + "enforceFlagEnums": false, + "parameterArrayType": "System.Collections.Generic.IEnumerable", + "parameterDictionaryType": "System.Collections.Generic.IDictionary", + "responseArrayType": "System.Collections.Generic.ICollection", + "responseDictionaryType": "System.Collections.Generic.IDictionary", + "wrapResponses": false, + "wrapResponseMethods": [], + "generateResponseClasses": true, + "responseClass": "SwaggerResponse", + "namespace": "RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient", + "requiredPropertiesMustBeDefined": true, + "dateType": "System.DateTimeOffset", + "jsonConverters": null, + "anyType": "object", + "dateTimeType": "System.DateTime", + "timeType": "System.TimeSpan", + "timeSpanType": "System.TimeSpan", + "arrayType": "System.Collections.Generic.ICollection", + "arrayInstanceType": "System.Collections.ObjectModel.Collection", + "dictionaryType": "System.Collections.Generic.IDictionary", + "dictionaryInstanceType": "System.Collections.Generic.Dictionary", + "arrayBaseType": "System.Collections.ObjectModel.Collection", + "dictionaryBaseType": "System.Collections.Generic.Dictionary", + "classStyle": "Poco", + "jsonLibrary": "NewtonsoftJson", + "generateDefaultValues": true, + "generateDataAnnotations": true, + "excludedTypeNames": [], + "excludedParameterNames": [], + "handleReferences": false, + "generateImmutableArrayProperties": false, + "generateImmutableDictionaryProperties": false, + "jsonSerializerSettingsTransformationMethod": null, + "inlineNamedArrays": false, + "inlineNamedDictionaries": false, + "inlineNamedTuples": true, + "inlineNamedAny": false, + "generateDtoTypes": true, + "generateOptionalPropertiesAsNullable": false, + "generateNullableReferenceTypes": true, + "templateDirectory": null, + "typeNameGeneratorType": null, + "propertyNameGeneratorType": null, + "enumNameGeneratorType": null, + "serviceHost": null, + "serviceSchemes": null, + "output": "FSHApi.cs", + "newLineBehavior": "Auto" + } + } +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Auth/AuthProvider.cs b/src/Client.Infrastructure/Auth/AuthProvider.cs new file mode 100644 index 0000000..fb956cf --- /dev/null +++ b/src/Client.Infrastructure/Auth/AuthProvider.cs @@ -0,0 +1,7 @@ +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; + +public enum AuthProvider +{ + Jwt, + AzureAd +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Auth/AuthorizationServiceExtensions.cs b/src/Client.Infrastructure/Auth/AuthorizationServiceExtensions.cs new file mode 100644 index 0000000..8b2e42d --- /dev/null +++ b/src/Client.Infrastructure/Auth/AuthorizationServiceExtensions.cs @@ -0,0 +1,10 @@ +using RewardsPlus.WebApi.Shared.Authorization; +using Microsoft.AspNetCore.Authorization; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; + +public static class AuthorizationServiceExtensions +{ + public static async Task HasPermissionAsync(this IAuthorizationService service, ClaimsPrincipal user, string action, string resource) => + (await service.AuthorizeAsync(user, null, FSHPermission.NameFor(action, resource))).Succeeded; +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Auth/AzureAd/AzureAdAuthenticationService.cs b/src/Client.Infrastructure/Auth/AzureAd/AzureAdAuthenticationService.cs new file mode 100644 index 0000000..821b041 --- /dev/null +++ b/src/Client.Infrastructure/Auth/AzureAd/AzureAdAuthenticationService.cs @@ -0,0 +1,34 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.WebAssembly.Authentication; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth.AzureAd; + +internal class AzureAdAuthenticationService : IAuthenticationService +{ + private readonly SignOutSessionStateManager _signOut; + private readonly NavigationManager _navigation; + + public AzureAdAuthenticationService(SignOutSessionStateManager signOut, NavigationManager navigation) => + (_signOut, _navigation) = (signOut, navigation); + + public AuthProvider ProviderType => AuthProvider.AzureAd; + + public void NavigateToExternalLogin(string returnUrl) => + _navigation.NavigateTo($"authentication/login?returnUrl={Uri.EscapeDataString(returnUrl)}"); + + public Task LoginAsync(string tenantId, TokenRequest request) => + throw new NotImplementedException(); + + public async Task LogoutAsync() + { + await _signOut.SetSignOutState(); + _navigation.NavigateTo("authentication/logout"); + } + + public Task ReLoginAsync(string returnUrl) + { + NavigateToExternalLogin(returnUrl); + return Task.CompletedTask; + } +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Auth/AzureAd/AzureAdAuthorizationMessageHandler.cs b/src/Client.Infrastructure/Auth/AzureAd/AzureAdAuthorizationMessageHandler.cs new file mode 100644 index 0000000..53d607e --- /dev/null +++ b/src/Client.Infrastructure/Auth/AzureAd/AzureAdAuthorizationMessageHandler.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.WebAssembly.Authentication; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth.AzureAd; + +public class AzureAdAuthorizationMessageHandler : AuthorizationMessageHandler +{ + public AzureAdAuthorizationMessageHandler(IAccessTokenProvider provider, NavigationManager navigation, IConfiguration config) + : base(provider, navigation) => ConfigureHandler( + new[] { config[ConfigNames.ApiBaseUrl] }, + new[] { config[$"{nameof(AuthProvider.AzureAd)}:{ConfigNames.ApiScope}"] }); +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Auth/AzureAd/AzureAdClaimsPrincipalFactory.cs b/src/Client.Infrastructure/Auth/AzureAd/AzureAdClaimsPrincipalFactory.cs new file mode 100644 index 0000000..f678ab3 --- /dev/null +++ b/src/Client.Infrastructure/Auth/AzureAd/AzureAdClaimsPrincipalFactory.cs @@ -0,0 +1,73 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.WebApi.Shared.Authorization; +using Microsoft.AspNetCore.Components.WebAssembly.Authentication; +using Microsoft.AspNetCore.Components.WebAssembly.Authentication.Internal; +using Microsoft.Extensions.DependencyInjection; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth.AzureAd; + +internal class AzureAdClaimsPrincipalFactory : AccountClaimsPrincipalFactory +{ + // Can't work with actual services in the constructor here, have to + // use IServiceProvider, otherwise the app hangs at startup. + // The culprit is probably HttpClient, as this class is instantiated + // at startup while the HttpClient is being (or not even) created. + private readonly IServiceProvider _services; + + public AzureAdClaimsPrincipalFactory(IAccessTokenProviderAccessor accessor, IServiceProvider services) + : base(accessor) => + _services = services; + + public override async ValueTask CreateUserAsync(RemoteUserAccount account, RemoteAuthenticationUserOptions options) + { + var principal = await base.CreateUserAsync(account, options); + + if (principal.Identity?.IsAuthenticated is true) + { + var userDetails = await _services.GetRequiredService().GetProfileAsync(); + + var userIdentity = (ClaimsIdentity)principal.Identity; + + if (!string.IsNullOrWhiteSpace(userDetails.Email) && !userIdentity.HasClaim(c => c.Type == ClaimTypes.Email)) + { + userIdentity.AddClaim(new Claim(ClaimTypes.Email, userDetails.Email)); + } + + if (!string.IsNullOrWhiteSpace(userDetails.PhoneNumber) && !userIdentity.HasClaim(c => c.Type == ClaimTypes.MobilePhone)) + { + userIdentity.AddClaim(new Claim(ClaimTypes.MobilePhone, userDetails.PhoneNumber)); + } + + if (!string.IsNullOrWhiteSpace(userDetails.FirstName) && !userIdentity.HasClaim(c => c.Type == ClaimTypes.Name)) + { + userIdentity.AddClaim(new Claim(ClaimTypes.Name, userDetails.FirstName)); + } + + if (!string.IsNullOrWhiteSpace(userDetails.LastName) && !userIdentity.HasClaim(c => c.Type == ClaimTypes.Surname)) + { + userIdentity.AddClaim(new Claim(ClaimTypes.Surname, userDetails.LastName)); + } + + if (!userIdentity.HasClaim(c => c.Type == FSHClaims.Fullname)) + { + userIdentity.AddClaim(new Claim(FSHClaims.Fullname, $"{userDetails.FirstName} {userDetails.LastName}")); + } + + if (!userIdentity.HasClaim(c => c.Type == ClaimTypes.NameIdentifier)) + { + userIdentity.AddClaim(new Claim(ClaimTypes.NameIdentifier, userDetails.Id.ToString())); + } + + if (!string.IsNullOrWhiteSpace(userDetails.ImageUrl) && !userIdentity.HasClaim(c => c.Type == FSHClaims.ImageUrl) && userDetails.ImageUrl is not null) + { + userIdentity.AddClaim(new Claim(FSHClaims.ImageUrl, userDetails.ImageUrl)); + } + + var permissions = await _services.GetRequiredService().GetPermissionsAsync(); + + userIdentity.AddClaims(permissions.Select(permission => new Claim(FSHClaims.Permission, permission))); + } + + return principal; + } +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Auth/IAuthenticationService.cs b/src/Client.Infrastructure/Auth/IAuthenticationService.cs new file mode 100644 index 0000000..685d53a --- /dev/null +++ b/src/Client.Infrastructure/Auth/IAuthenticationService.cs @@ -0,0 +1,16 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; + +public interface IAuthenticationService +{ + AuthProvider ProviderType { get; } + + void NavigateToExternalLogin(string returnUrl); + + Task LoginAsync(string tenantId, TokenRequest request); + + Task LogoutAsync(); + + Task ReLoginAsync(string returnUrl); +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Auth/Jwt/AccessTokenProviderAccessor.cs b/src/Client.Infrastructure/Auth/Jwt/AccessTokenProviderAccessor.cs new file mode 100644 index 0000000..a9b1ecd --- /dev/null +++ b/src/Client.Infrastructure/Auth/Jwt/AccessTokenProviderAccessor.cs @@ -0,0 +1,17 @@ +using Microsoft.AspNetCore.Components.WebAssembly.Authentication; +using Microsoft.AspNetCore.Components.WebAssembly.Authentication.Internal; +using Microsoft.Extensions.DependencyInjection; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth.Jwt; + +internal class AccessTokenProviderAccessor : IAccessTokenProviderAccessor +{ + private readonly IServiceProvider _provider; + private IAccessTokenProvider? _tokenProvider; + + public AccessTokenProviderAccessor(IServiceProvider provider) => + _provider = provider; + + public IAccessTokenProvider TokenProvider => + _tokenProvider ??= _provider.GetRequiredService(); +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Auth/Jwt/JwtAuthenticationHeaderHandler.cs b/src/Client.Infrastructure/Auth/Jwt/JwtAuthenticationHeaderHandler.cs new file mode 100644 index 0000000..59b6ff3 --- /dev/null +++ b/src/Client.Infrastructure/Auth/Jwt/JwtAuthenticationHeaderHandler.cs @@ -0,0 +1,34 @@ +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.WebAssembly.Authentication.Internal; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth.Jwt; + +public class JwtAuthenticationHeaderHandler : DelegatingHandler +{ + private readonly IAccessTokenProviderAccessor _tokenProviderAccessor; + private readonly NavigationManager _navigation; + + public JwtAuthenticationHeaderHandler(IAccessTokenProviderAccessor tokenProviderAccessor, NavigationManager navigation) + { + _tokenProviderAccessor = tokenProviderAccessor; + _navigation = navigation; + } + + protected override async Task SendAsync(HttpRequestMessage request, CancellationToken cancellationToken) + { + // skip token endpoints + if (request.RequestUri?.AbsolutePath.Contains("/tokens") is not true) + { + if (await _tokenProviderAccessor.TokenProvider.GetAccessTokenAsync() is string token) + { + request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", token); + } + else + { + _navigation.NavigateTo("/login"); + } + } + + return await base.SendAsync(request, cancellationToken); + } +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Auth/Jwt/JwtAuthenticationService.cs b/src/Client.Infrastructure/Auth/Jwt/JwtAuthenticationService.cs new file mode 100644 index 0000000..061019d --- /dev/null +++ b/src/Client.Infrastructure/Auth/Jwt/JwtAuthenticationService.cs @@ -0,0 +1,222 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.WebApi.Shared.Authorization; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.WebAssembly.Authentication; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth.Jwt; + +public class JwtAuthenticationService : AuthenticationStateProvider, IAuthenticationService, IAccessTokenProvider +{ + private readonly SemaphoreSlim _semaphore = new(1, 1); + + private readonly ILocalStorageService _localStorage; + private readonly ITokensClient _tokensClient; + private readonly IPersonalClient _personalClient; + private readonly NavigationManager _navigation; + + public AuthProvider ProviderType => AuthProvider.Jwt; + + public JwtAuthenticationService(ILocalStorageService localStorage, IPersonalClient personalClient, ITokensClient tokensClient, NavigationManager navigation) + { + _localStorage = localStorage; + _personalClient = personalClient; + _tokensClient = tokensClient; + _navigation = navigation; + } + + public override async Task GetAuthenticationStateAsync() + { + string cachedToken = await GetCachedAuthTokenAsync(); + if (string.IsNullOrWhiteSpace(cachedToken)) + { + return new AuthenticationState(new ClaimsPrincipal(new ClaimsIdentity())); + } + + // Generate claimsIdentity from cached token + var claimsIdentity = new ClaimsIdentity(GetClaimsFromJwt(cachedToken), "jwt"); + + // Add cached permissions as claims + if (await GetCachedPermissionsAsync() is List cachedPermissions) + { + claimsIdentity.AddClaims(cachedPermissions.Select(p => new Claim(FSHClaims.Permission, p))); + } + + return new AuthenticationState(new ClaimsPrincipal(claimsIdentity)); + } + + public void NavigateToExternalLogin(string returnUrl) => + throw new NotImplementedException(); + + public async Task LoginAsync(string tenantId, TokenRequest request) + { + var tokenResponse = await _tokensClient.GetTokenAsync(tenantId, request); + + string? token = tokenResponse.Token; + string? refreshToken = tokenResponse.RefreshToken; + + if (string.IsNullOrWhiteSpace(token) || string.IsNullOrWhiteSpace(refreshToken)) + { + return false; + } + + await CacheAuthTokens(token, refreshToken); + + // Get permissions for the current user and add them to the cache + var permissions = await _personalClient.GetPermissionsAsync(); + await CachePermissions(permissions); + + NotifyAuthenticationStateChanged(GetAuthenticationStateAsync()); + + return true; + } + + public async Task LogoutAsync() + { + await ClearCacheAsync(); + + NotifyAuthenticationStateChanged(GetAuthenticationStateAsync()); + + _navigation.NavigateTo("/login"); + } + + public async Task ReLoginAsync(string returnUrl) + { + await LogoutAsync(); + _navigation.NavigateTo(returnUrl); + } + + public async ValueTask RequestAccessToken() + { + var authState = await GetAuthenticationStateAsync(); + if (authState.User.Identity?.IsAuthenticated is not true) + { + return new AccessTokenResult(AccessTokenResultStatus.RequiresRedirect, null, "/login"); + } + + // We make sure the access token is only refreshed by one thread at a time. The other ones have to wait. + await _semaphore.WaitAsync(); + try + { + string? token = await GetCachedAuthTokenAsync(); + + // Check if token needs to be refreshed (when its expiration time is less than 1 minute away) + var expTime = authState.User.GetExpiration(); + var diff = expTime - DateTime.UtcNow; + if (diff.TotalMinutes <= 1) + { + string? refreshToken = await GetCachedRefreshTokenAsync(); + (bool succeeded, var response) = await TryRefreshTokenAsync(new RefreshTokenRequest { Token = token, RefreshToken = refreshToken }); + if (!succeeded) + { + return new AccessTokenResult(AccessTokenResultStatus.RequiresRedirect, null, "/login"); + } + + token = response?.Token; + } + + return new AccessTokenResult(AccessTokenResultStatus.Success, new AccessToken() { Value = token }, string.Empty); + } + finally + { + _semaphore.Release(); + } + } + + public ValueTask RequestAccessToken(AccessTokenRequestOptions options) => + RequestAccessToken(); + + private async Task<(bool Succeeded, TokenResponse? Token)> TryRefreshTokenAsync(RefreshTokenRequest request) + { + var authState = await GetAuthenticationStateAsync(); + string? tenantKey = authState.User.GetTenant(); + if (string.IsNullOrWhiteSpace(tenantKey)) + { + throw new InvalidOperationException("Can't refresh token when user is not logged in!"); + } + + try + { + var tokenResponse = await _tokensClient.RefreshAsync(tenantKey, request); + + await CacheAuthTokens(tokenResponse.Token, tokenResponse.RefreshToken); + + return (true, tokenResponse); + } + catch (ApiException) + { + return (false, null); + } + } + + private async ValueTask CacheAuthTokens(string? token, string? refreshToken) + { + await _localStorage.SetItemAsync(StorageConstants.Local.AuthToken, token); + await _localStorage.SetItemAsync(StorageConstants.Local.RefreshToken, refreshToken); + } + + private ValueTask CachePermissions(ICollection permissions) => + _localStorage.SetItemAsync(StorageConstants.Local.Permissions, permissions); + + private async Task ClearCacheAsync() + { + await _localStorage.RemoveItemAsync(StorageConstants.Local.AuthToken); + await _localStorage.RemoveItemAsync(StorageConstants.Local.RefreshToken); + await _localStorage.RemoveItemAsync(StorageConstants.Local.Permissions); + } + + private ValueTask GetCachedAuthTokenAsync() => + _localStorage.GetItemAsync(StorageConstants.Local.AuthToken); + + private ValueTask GetCachedRefreshTokenAsync() => + _localStorage.GetItemAsync(StorageConstants.Local.RefreshToken); + + private ValueTask> GetCachedPermissionsAsync() => + _localStorage.GetItemAsync>(StorageConstants.Local.Permissions); + + private IEnumerable GetClaimsFromJwt(string jwt) + { + var claims = new List(); + string payload = jwt.Split('.')[1]; + byte[] jsonBytes = ParseBase64WithoutPadding(payload); + var keyValuePairs = JsonSerializer.Deserialize>(jsonBytes); + + if (keyValuePairs is not null) + { + keyValuePairs.TryGetValue(ClaimTypes.Role, out object? roles); + + if (roles is not null) + { + string? rolesString = roles.ToString(); + if (!string.IsNullOrEmpty(rolesString)) + { + if (rolesString.Trim().StartsWith("[")) + { + string[]? parsedRoles = JsonSerializer.Deserialize(rolesString); + + if (parsedRoles is not null) + { + claims.AddRange(parsedRoles.Select(role => new Claim(ClaimTypes.Role, role))); + } + } + else + { + claims.Add(new Claim(ClaimTypes.Role, rolesString)); + } + } + + keyValuePairs.Remove(ClaimTypes.Role); + } + + claims.AddRange(keyValuePairs.Select(kvp => new Claim(kvp.Key, kvp.Value.ToString() ?? string.Empty))); + } + + return claims; + } + + private byte[] ParseBase64WithoutPadding(string payload) + { + payload = payload.Trim().Replace('-', '+').Replace('_', '/'); + string base64 = payload.PadRight(payload.Length + ((4 - (payload.Length % 4)) % 4), '='); + return Convert.FromBase64String(base64); + } +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Auth/MustHavePermissionAttribute.cs b/src/Client.Infrastructure/Auth/MustHavePermissionAttribute.cs new file mode 100644 index 0000000..3618e7e --- /dev/null +++ b/src/Client.Infrastructure/Auth/MustHavePermissionAttribute.cs @@ -0,0 +1,10 @@ +using RewardsPlus.WebApi.Shared.Authorization; +using Microsoft.AspNetCore.Authorization; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; + +public class MustHavePermissionAttribute : AuthorizeAttribute +{ + public MustHavePermissionAttribute(string action, string resource) => + Policy = FSHPermission.NameFor(action, resource); +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Auth/Startup.cs b/src/Client.Infrastructure/Auth/Startup.cs new file mode 100644 index 0000000..f692474 --- /dev/null +++ b/src/Client.Infrastructure/Auth/Startup.cs @@ -0,0 +1,47 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth.AzureAd; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth.Jwt; +using Microsoft.AspNetCore.Components.WebAssembly.Authentication; +using Microsoft.AspNetCore.Components.WebAssembly.Authentication.Internal; +using Microsoft.Extensions.DependencyInjection; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; + +internal static class Startup +{ + public static IServiceCollection AddAuthentication(this IServiceCollection services, IConfiguration config) => + config[nameof(AuthProvider)] switch + { + // AzureAd + nameof(AuthProvider.AzureAd) => services + .AddScoped() + .AddScoped() + .AddMsalAuthentication(options => + { + config.Bind(nameof(AuthProvider.AzureAd), options.ProviderOptions.Authentication); + options.ProviderOptions.DefaultAccessTokenScopes.Add( + config[$"{nameof(AuthProvider.AzureAd)}:{ConfigNames.ApiScope}"]); + options.ProviderOptions.LoginMode = "redirect"; + }) + .AddAccountClaimsPrincipalFactory() + .Services, + + // Jwt + _ => services + .AddScoped() + .AddScoped(sp => (IAuthenticationService)sp.GetRequiredService()) + .AddScoped(sp => (IAccessTokenProvider)sp.GetRequiredService()) + .AddScoped() + .AddScoped() + }; + + public static IHttpClientBuilder AddAuthenticationHandler(this IHttpClientBuilder builder, IConfiguration config) => + config[nameof(AuthProvider)] switch + { + // AzureAd + nameof(AuthProvider.AzureAd) => + builder.AddHttpMessageHandler(), + + // Jwt + _ => builder.AddHttpMessageHandler() + }; +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Client.Infrastructure.csproj b/src/Client.Infrastructure/Client.Infrastructure.csproj new file mode 100644 index 0000000..42f248b --- /dev/null +++ b/src/Client.Infrastructure/Client.Infrastructure.csproj @@ -0,0 +1,39 @@ + + + + net6.0 + RewardsPlus.BlazorWebAssembly.Client.Infrastructure + RewardsPlus.BlazorWebAssembly.Client.Infrastructure + + + + + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Client.Infrastructure/Common/AccessTokenProviderExtensions.cs b/src/Client.Infrastructure/Common/AccessTokenProviderExtensions.cs new file mode 100644 index 0000000..3b12abc --- /dev/null +++ b/src/Client.Infrastructure/Common/AccessTokenProviderExtensions.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Components.WebAssembly.Authentication; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common; + +public static class AccessTokenProviderExtensions +{ + public static async Task GetAccessTokenAsync(this IAccessTokenProvider tokenProvider) => + (await tokenProvider.RequestAccessToken()) + .TryGetToken(out var token) + ? token.Value + : null; +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Common/ApplicationConstants.cs b/src/Client.Infrastructure/Common/ApplicationConstants.cs new file mode 100644 index 0000000..02c94e9 --- /dev/null +++ b/src/Client.Infrastructure/Common/ApplicationConstants.cs @@ -0,0 +1,15 @@ +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common; + +public static class ApplicationConstants +{ + public static readonly List SupportedImageFormats = new() + { + ".jpeg", + ".jpg", + ".png" + }; + public static readonly string StandardImageFormat = "image/jpeg"; + public static readonly int MaxImageWidth = 1500; + public static readonly int MaxImageHeight = 1500; + public static readonly long MaxAllowedSize = 1000000; // Allows Max File Size of 1 Mb. +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Common/ConfigNames.cs b/src/Client.Infrastructure/Common/ConfigNames.cs new file mode 100644 index 0000000..b2a0133 --- /dev/null +++ b/src/Client.Infrastructure/Common/ConfigNames.cs @@ -0,0 +1,7 @@ +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common; + +public static class ConfigNames +{ + public const string ApiBaseUrl = "ApiBaseUrl"; + public const string ApiScope = "ApiScope"; +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Common/IAppService.cs b/src/Client.Infrastructure/Common/IAppService.cs new file mode 100644 index 0000000..c23b0b1 --- /dev/null +++ b/src/Client.Infrastructure/Common/IAppService.cs @@ -0,0 +1,5 @@ +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common; + +public interface IAppService +{ +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Common/LocalizationConstants.cs b/src/Client.Infrastructure/Common/LocalizationConstants.cs new file mode 100644 index 0000000..4d7e7cf --- /dev/null +++ b/src/Client.Infrastructure/Common/LocalizationConstants.cs @@ -0,0 +1,21 @@ +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common; + +public record LanguageCode(string Code, string DisplayName, bool IsRTL = false); + +public static class LocalizationConstants +{ + public static readonly LanguageCode[] SupportedLanguages = + { + new("en-US", "English"), + new("fr-FR", "French"), + new("km_KH", "Khmer"), + new("de-DE", "German"), + new("nl-NL", "Dutch - Netherlands"), + new("es-ES", "Spanish"), + new("ru-RU", "Russian"), + new("sv-SE", "Swedish"), + new("id-ID", "Indonesia"), + new("it-IT", "Italian"), + new("ar", "عربي", true) + }; +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Common/StorageConstants.cs b/src/Client.Infrastructure/Common/StorageConstants.cs new file mode 100644 index 0000000..f044cac --- /dev/null +++ b/src/Client.Infrastructure/Common/StorageConstants.cs @@ -0,0 +1,14 @@ +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common; + +public static class StorageConstants +{ + public static class Local + { + public static string Preference = "clientPreference"; + + public static string AuthToken = "authToken"; + public static string RefreshToken = "refreshToken"; + public static string ImageUri = "userImageURL"; + public static string Permissions = "permissions"; + } +} \ No newline at end of file diff --git a/src/Client.Infrastructure/GlobalUsings.cs b/src/Client.Infrastructure/GlobalUsings.cs new file mode 100644 index 0000000..563b3e0 --- /dev/null +++ b/src/Client.Infrastructure/GlobalUsings.cs @@ -0,0 +1,7 @@ +global using System.Net.Http.Headers; +global using System.Security.Claims; +global using System.Text.Json; +global using Blazored.LocalStorage; +global using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common; +global using Microsoft.AspNetCore.Components.Authorization; +global using Microsoft.Extensions.Configuration; diff --git a/src/Client.Infrastructure/Notifications/ConnectionState.cs b/src/Client.Infrastructure/Notifications/ConnectionState.cs new file mode 100644 index 0000000..6dbfc01 --- /dev/null +++ b/src/Client.Infrastructure/Notifications/ConnectionState.cs @@ -0,0 +1,8 @@ +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Notifications; + +public enum ConnectionState +{ + Connected, + Connecting, + Disconnected +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Notifications/ConnectionStateChanged.cs b/src/Client.Infrastructure/Notifications/ConnectionStateChanged.cs new file mode 100644 index 0000000..2987586 --- /dev/null +++ b/src/Client.Infrastructure/Notifications/ConnectionStateChanged.cs @@ -0,0 +1,5 @@ +using RewardsPlus.WebApi.Shared.Notifications; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Notifications; + +public record ConnectionStateChanged(ConnectionState State, string? Message) : INotificationMessage; \ No newline at end of file diff --git a/src/Client.Infrastructure/Notifications/INotificationPublisher.cs b/src/Client.Infrastructure/Notifications/INotificationPublisher.cs new file mode 100644 index 0000000..1a7b0df --- /dev/null +++ b/src/Client.Infrastructure/Notifications/INotificationPublisher.cs @@ -0,0 +1,8 @@ +using RewardsPlus.WebApi.Shared.Notifications; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Notifications; + +public interface INotificationPublisher +{ + Task PublishAsync(INotificationMessage notification); +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Notifications/NotificationPublisher.cs b/src/Client.Infrastructure/Notifications/NotificationPublisher.cs new file mode 100644 index 0000000..0ae62d2 --- /dev/null +++ b/src/Client.Infrastructure/Notifications/NotificationPublisher.cs @@ -0,0 +1,24 @@ +using RewardsPlus.WebApi.Shared.Notifications; +using MediatR; +using Microsoft.Extensions.Logging; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Notifications; + +public class NotificationPublisher : INotificationPublisher +{ + private readonly ILogger _logger; + private readonly IPublisher _mediator; + + public NotificationPublisher(ILogger logger, IPublisher mediator) => + (_logger, _mediator) = (logger, mediator); + + public Task PublishAsync(INotificationMessage notification) + { + _logger.LogInformation("Publishing Notification : {notification}", notification.GetType().Name); + return _mediator.Publish(CreateNotificationWrapper(notification)); + } + + private INotification CreateNotificationWrapper(INotificationMessage notification) => + (INotification)Activator.CreateInstance( + typeof(NotificationWrapper<>).MakeGenericType(notification.GetType()), notification)!; +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Notifications/NotificationWrapper.cs b/src/Client.Infrastructure/Notifications/NotificationWrapper.cs new file mode 100644 index 0000000..40c0f11 --- /dev/null +++ b/src/Client.Infrastructure/Notifications/NotificationWrapper.cs @@ -0,0 +1,12 @@ +using RewardsPlus.WebApi.Shared.Notifications; +using MediatR; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Notifications; + +public class NotificationWrapper : INotification + where TNotificationMessage : INotificationMessage +{ + public NotificationWrapper(TNotificationMessage notification) => Notification = notification; + + public TNotificationMessage Notification { get; } +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Notifications/Startup.cs b/src/Client.Infrastructure/Notifications/Startup.cs new file mode 100644 index 0000000..df712d2 --- /dev/null +++ b/src/Client.Infrastructure/Notifications/Startup.cs @@ -0,0 +1,34 @@ +using RewardsPlus.WebApi.Shared.Notifications; +using MediatR; +using MediatR.Courier; +using MediatR.Courier.DependencyInjection; +using Microsoft.Extensions.DependencyInjection; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Notifications; + +internal static class Startup +{ + public static IServiceCollection AddNotifications(this IServiceCollection services) + { + // Add mediator processing of notifications + var assemblies = AppDomain.CurrentDomain.GetAssemblies(); + + services + .AddMediatR(assemblies) + .AddCourier(assemblies) + .AddTransient(); + + // Register handlers for all INotificationMessages + foreach (var eventType in assemblies + .SelectMany(a => a.GetTypes()) + .Where(t => t.GetInterfaces().Any(i => i == typeof(INotificationMessage)))) + { + services.AddSingleton( + typeof(INotificationHandler<>).MakeGenericType( + typeof(NotificationWrapper<>).MakeGenericType(eventType)), + serviceProvider => serviceProvider.GetRequiredService(typeof(MediatRCourier))); + } + + return services; + } +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Preferences/ClientPreference.cs b/src/Client.Infrastructure/Preferences/ClientPreference.cs new file mode 100644 index 0000000..407a8f4 --- /dev/null +++ b/src/Client.Infrastructure/Preferences/ClientPreference.cs @@ -0,0 +1,15 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Theme; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; + +public class ClientPreference : IPreference +{ + public bool IsDarkMode { get; set; } + public bool IsRTL { get; set; } + public bool IsDrawerOpen { get; set; } + public string PrimaryColor { get; set; } = CustomColors.Light.Primary; + public string SecondaryColor { get; set; } = CustomColors.Light.Secondary; + public double BorderRadius { get; set; } = 11; + public string LanguageCode { get; set; } = LocalizationConstants.SupportedLanguages.FirstOrDefault()?.Code ?? "en-US"; + public FshTablePreference TablePreference { get; set; } = new FshTablePreference(); +} diff --git a/src/Client.Infrastructure/Preferences/ClientPreferenceManager.cs b/src/Client.Infrastructure/Preferences/ClientPreferenceManager.cs new file mode 100644 index 0000000..d1842b4 --- /dev/null +++ b/src/Client.Infrastructure/Preferences/ClientPreferenceManager.cs @@ -0,0 +1,137 @@ +using System.Text.RegularExpressions; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Theme; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; + +public class ClientPreferenceManager : IClientPreferenceManager +{ + private readonly ILocalStorageService _localStorageService; + + public ClientPreferenceManager( + ILocalStorageService localStorageService) + { + _localStorageService = localStorageService; + } + + public async Task ToggleDarkModeAsync() + { + if (await GetPreference() is ClientPreference preference) + { + preference.IsDarkMode = !preference.IsDarkMode; + await SetPreference(preference); + return !preference.IsDarkMode; + } + + return false; + } + + public async Task ToggleDrawerAsync() + { + if (await GetPreference() is ClientPreference preference) + { + preference.IsDrawerOpen = !preference.IsDrawerOpen; + await SetPreference(preference); + return preference.IsDrawerOpen; + } + + return false; + } + + public async Task ToggleLayoutDirectionAsync() + { + if (await GetPreference() is ClientPreference preference) + { + preference.IsRTL = !preference.IsRTL; + await SetPreference(preference); + return preference.IsRTL; + } + + return false; + } + + public async Task ChangeLanguageAsync(string languageCode) + { + if (await GetPreference() is ClientPreference preference) + { + var language = Array.Find(LocalizationConstants.SupportedLanguages, a => a.Code == languageCode); + if (language?.Code is not null) + { + preference.LanguageCode = language.Code; + preference.IsRTL = language.IsRTL; + } + else + { + preference.LanguageCode = "en-EN"; + preference.IsRTL = false; + } + + await SetPreference(preference); + return true; + } + + return false; + } + + public async Task GetCurrentThemeAsync() + { + if (await GetPreference() is ClientPreference preference) + { + if (preference.IsDarkMode) return new DarkTheme(); + } + + return new LightTheme(); + } + + public async Task GetPrimaryColorAsync() + { + if (await GetPreference() is ClientPreference preference) + { + string colorCode = preference.PrimaryColor; + if (Regex.Match(colorCode, "^#(?:[0-9a-fA-F]{3,4}){1,2}$").Success) + { + return colorCode; + } + else + { + preference.PrimaryColor = CustomColors.Light.Primary; + await SetPreference(preference); + return preference.PrimaryColor; + } + } + + return CustomColors.Light.Primary; + } + + public async Task IsRTL() + { + if (await GetPreference() is ClientPreference preference) + { + return preference.IsRTL; + } + + return false; + } + + public async Task IsDrawerOpen() + { + if (await GetPreference() is ClientPreference preference) + { + return preference.IsDrawerOpen; + } + + return false; + } + + public static string Preference = "clientPreference"; + + public async Task GetPreference() + { + return await _localStorageService.GetItemAsync(Preference) ?? new ClientPreference(); + } + + public async Task SetPreference(IPreference preference) + { + await _localStorageService.SetItemAsync(Preference, preference as ClientPreference); + } +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Preferences/FshTablePreference.cs b/src/Client.Infrastructure/Preferences/FshTablePreference.cs new file mode 100644 index 0000000..33e5a49 --- /dev/null +++ b/src/Client.Infrastructure/Preferences/FshTablePreference.cs @@ -0,0 +1,11 @@ +using RewardsPlus.WebApi.Shared.Notifications; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; + +public class FshTablePreference : INotificationMessage +{ + public bool IsDense { get; set; } + public bool IsStriped { get; set; } + public bool HasBorder { get; set; } + public bool IsHoverable { get; set; } +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Preferences/IClientPreferenceManager.cs b/src/Client.Infrastructure/Preferences/IClientPreferenceManager.cs new file mode 100644 index 0000000..cbaf767 --- /dev/null +++ b/src/Client.Infrastructure/Preferences/IClientPreferenceManager.cs @@ -0,0 +1,14 @@ +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; + +public interface IClientPreferenceManager : IPreferenceManager +{ + Task GetCurrentThemeAsync(); + + Task ToggleDarkModeAsync(); + + Task ToggleDrawerAsync(); + + Task ToggleLayoutDirectionAsync(); +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Preferences/IPreference.cs b/src/Client.Infrastructure/Preferences/IPreference.cs new file mode 100644 index 0000000..3092e42 --- /dev/null +++ b/src/Client.Infrastructure/Preferences/IPreference.cs @@ -0,0 +1,6 @@ +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; + +public interface IPreference +{ + // public string LanguageCode { get; set; } +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Preferences/IPreferenceManager.cs b/src/Client.Infrastructure/Preferences/IPreferenceManager.cs new file mode 100644 index 0000000..c0644b4 --- /dev/null +++ b/src/Client.Infrastructure/Preferences/IPreferenceManager.cs @@ -0,0 +1,10 @@ +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; + +public interface IPreferenceManager : IAppService +{ + Task SetPreference(IPreference preference); + + Task GetPreference(); + + Task ChangeLanguageAsync(string languageCode); +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Startup.cs b/src/Client.Infrastructure/Startup.cs new file mode 100644 index 0000000..d025c6c --- /dev/null +++ b/src/Client.Infrastructure/Startup.cs @@ -0,0 +1,81 @@ +using System.Globalization; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Notifications; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; +using RewardsPlus.WebApi.Shared.Authorization; +using Microsoft.AspNetCore.Authorization; +using Microsoft.Extensions.DependencyInjection; +using MudBlazor; +using MudBlazor.Services; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure; + +public static class Startup +{ + private const string ClientName = "RewardsPlus"; + + public static IServiceCollection AddClientServices(this IServiceCollection services, IConfiguration config) => + services + .AddLocalization(options => options.ResourcesPath = "Resources") + .AddBlazoredLocalStorage() + .AddMudServices(configuration => + { + configuration.SnackbarConfiguration.PositionClass = Defaults.Classes.Position.BottomRight; + configuration.SnackbarConfiguration.HideTransitionDuration = 100; + configuration.SnackbarConfiguration.ShowTransitionDuration = 100; + configuration.SnackbarConfiguration.VisibleStateDuration = 3000; + configuration.SnackbarConfiguration.ShowCloseIcon = false; + }) + .AddScoped() + .AutoRegisterInterfaces() + .AutoRegisterInterfaces() + .AddNotifications() + .AddAuthentication(config) + .AddAuthorizationCore(RegisterPermissionClaims) + + // Add Api Http Client. + .AddHttpClient(ClientName, client => + { + client.DefaultRequestHeaders.AcceptLanguage.Clear(); + client.DefaultRequestHeaders.AcceptLanguage.ParseAdd(CultureInfo.DefaultThreadCurrentCulture?.TwoLetterISOLanguageName); + client.BaseAddress = new Uri(config[ConfigNames.ApiBaseUrl]); + }) + .AddAuthenticationHandler(config) + .Services + .AddScoped(sp => sp.GetRequiredService().CreateClient(ClientName)); + + private static void RegisterPermissionClaims(AuthorizationOptions options) + { + foreach (var permission in FSHPermissions.All) + { + options.AddPolicy(permission.Name, policy => policy.RequireClaim(FSHClaims.Permission, permission.Name)); + } + } + + public static IServiceCollection AutoRegisterInterfaces(this IServiceCollection services) + { + var @interface = typeof(T); + + var types = @interface + .Assembly + .GetExportedTypes() + .Where(t => t.IsClass && !t.IsAbstract) + .Select(t => new + { + Service = t.GetInterface($"I{t.Name}"), + Implementation = t + }) + .Where(t => t.Service != null); + + foreach (var type in types) + { + if (@interface.IsAssignableFrom(type.Service)) + { + services.AddTransient(type.Service, type.Implementation); + } + } + + return services; + } +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Theme/CustomColors.cs b/src/Client.Infrastructure/Theme/CustomColors.cs new file mode 100644 index 0000000..5eb5470 --- /dev/null +++ b/src/Client.Infrastructure/Theme/CustomColors.cs @@ -0,0 +1,42 @@ +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Theme; + +public static class CustomColors +{ + public static readonly List ThemeColors = new() + { + Light.Primary, + Colors.Blue.Default, + Colors.BlueGrey.Default, + Colors.Purple.Default, + Colors.Orange.Default, + Colors.Red.Default, + Colors.Amber.Default, + Colors.DeepPurple.Default, + Colors.Pink.Default, + Colors.Indigo.Default, + Colors.LightBlue.Default, + Colors.Cyan.Default, + }; + + public static class Light + { + public const string Primary = "#3eaf7c"; + public const string Secondary = "#2196f3"; + public const string Background = "#FFF"; + public const string AppbarBackground = "#FFF"; + public const string AppbarText = "#6e6e6e"; + } + + public static class Dark + { + public const string Primary = "#F44336"; + public const string Secondary = "#2196F3"; + public const string Background = "#1b1f22"; + public const string AppbarBackground = "#1b1f22"; + public const string DrawerBackground = "#121212"; + public const string Surface = "#202528"; + public const string Disabled = "#545454"; + } +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Theme/CustomTypography.cs b/src/Client.Infrastructure/Theme/CustomTypography.cs new file mode 100644 index 0000000..52dcf64 --- /dev/null +++ b/src/Client.Infrastructure/Theme/CustomTypography.cs @@ -0,0 +1,114 @@ +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Theme; + +public static class CustomTypography +{ + public static Typography RPTypography => new Typography() + { + Default = new Default() + { + FontFamily = new[] { "Jost", "Helvetica", "Arial", "sans-serif" }, + FontSize = ".875rem", + FontWeight = 200, + LineHeight = 1.43, + LetterSpacing = ".01071em" + }, + H1 = new H1() + { + FontFamily = new[] { "Jost", "Helvetica", "Arial", "sans-serif" }, + FontSize = "6rem", + FontWeight = 300, + LineHeight = 1.167, + LetterSpacing = "-.01562em" + }, + H2 = new H2() + { + FontFamily = new[] { "Jost", "Helvetica", "Arial", "sans-serif" }, + FontSize = "3.75rem", + FontWeight = 300, + LineHeight = 1.2, + LetterSpacing = "-.00833em" + }, + H3 = new H3() + { + FontFamily = new[] { "Jost", "Helvetica", "Arial", "sans-serif" }, + FontSize = "3rem", + FontWeight = 400, + LineHeight = 1.167, + LetterSpacing = "0" + }, + H4 = new H4() + { + FontFamily = new[] { "Jost", "Helvetica", "Arial", "sans-serif" }, + FontSize = "2.125rem", + FontWeight = 400, + LineHeight = 1.235, + LetterSpacing = ".00735em" + }, + H5 = new H5() + { + FontFamily = new[] { "Jost", "Helvetica", "Arial", "sans-serif" }, + FontSize = "1.5rem", + FontWeight = 400, + LineHeight = 1.334, + LetterSpacing = "0" + }, + H6 = new H6() + { + FontFamily = new[] { "Jost", "Helvetica", "Arial", "sans-serif" }, + FontSize = "1.25rem", + FontWeight = 400, + LineHeight = 1.6, + LetterSpacing = ".0075em" + }, + Button = new Button() + { + FontFamily = new[] { "Jost", "Helvetica", "Arial", "sans-serif" }, + FontSize = ".875rem", + FontWeight = 400, + LineHeight = 1.75, + LetterSpacing = ".02857em" + }, + Body1 = new Body1() + { + FontFamily = new[] { "Jost", "Helvetica", "Arial", "sans-serif" }, + FontSize = "1rem", + FontWeight = 400, + LineHeight = 1.5, + LetterSpacing = ".00938em" + }, + Body2 = new Body2() + { + FontFamily = new[] { "Jost", "Helvetica", "Arial", "sans-serif" }, + FontSize = ".875rem", + FontWeight = 400, + LineHeight = 1.43, + LetterSpacing = ".01071em" + }, + Caption = new Caption() + { + FontFamily = new[] { "Jost", "Helvetica", "Arial", "sans-serif" }, + FontSize = ".75rem", + FontWeight = 200, + LineHeight = 1.66, + LetterSpacing = ".03333em" + }, + Subtitle1 = new Subtitle1() + { + FontFamily = new[] { "Jost", "Helvetica", "Arial", "sans-serif" }, + FontSize = "1rem", + FontWeight = 400, + LineHeight = 1.57, + LetterSpacing = ".00714em" + }, + Subtitle2 = new Subtitle2() + { + FontFamily = new[] { "Jost", "Helvetica", "Arial", "sans-serif" }, + FontSize = ".875rem", + FontWeight = 400, + LineHeight = 1.57, + LetterSpacing = ".00714em" + } + }; +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Theme/DarkTheme.cs b/src/Client.Infrastructure/Theme/DarkTheme.cs new file mode 100644 index 0000000..fe2abcd --- /dev/null +++ b/src/Client.Infrastructure/Theme/DarkTheme.cs @@ -0,0 +1,44 @@ +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Theme; + +public class DarkTheme : MudTheme +{ + public DarkTheme() + { + Palette = new Palette() + { + Primary = CustomColors.Dark.Primary, + Secondary = CustomColors.Dark.Secondary, + Success = CustomColors.Dark.Primary, + Black = "#27272f", + Background = CustomColors.Dark.Background, + BackgroundGrey = "#27272f", + Surface = CustomColors.Dark.Surface, + DrawerBackground = CustomColors.Dark.DrawerBackground, + DrawerText = "rgba(255,255,255, 0.50)", + AppbarBackground = CustomColors.Dark.AppbarBackground, + AppbarText = "rgba(255,255,255, 0.70)", + TextPrimary = "rgba(255,255,255, 0.70)", + TextSecondary = "rgba(255,255,255, 0.50)", + ActionDefault = "#adadb1", + ActionDisabled = "rgba(255,255,255, 0.26)", + ActionDisabledBackground = "rgba(255,255,255, 0.12)", + DrawerIcon = "rgba(255,255,255, 0.50)", + TableLines = "#e0e0e036", + Dark = CustomColors.Dark.DrawerBackground, + Divider = "#e0e0e036", + OverlayDark = "hsl(0deg 0% 0% / 75%)", + TextDisabled = CustomColors.Dark.Disabled + }; + + LayoutProperties = new LayoutProperties() + { + DefaultBorderRadius = "5px", + }; + + Typography = CustomTypography.RPTypography; + Shadows = new Shadow(); + ZIndex = new ZIndex() { Drawer = 1300 }; + } +} \ No newline at end of file diff --git a/src/Client.Infrastructure/Theme/LightTheme.cs b/src/Client.Infrastructure/Theme/LightTheme.cs new file mode 100644 index 0000000..8ba65ad --- /dev/null +++ b/src/Client.Infrastructure/Theme/LightTheme.cs @@ -0,0 +1,31 @@ +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Theme; + +public class LightTheme : MudTheme +{ + public LightTheme() + { + Palette = new Palette() + { + Primary = CustomColors.Light.Primary, + Secondary = CustomColors.Light.Secondary, + Background = CustomColors.Light.Background, + AppbarBackground = CustomColors.Light.AppbarBackground, + AppbarText = CustomColors.Light.AppbarText, + DrawerBackground = CustomColors.Light.Background, + DrawerText = "rgba(0,0,0, 0.7)", + Success = CustomColors.Light.Primary, + TableLines = "#e0e0e029", + OverlayDark = "hsl(0deg 0% 0% / 75%)" + }; + LayoutProperties = new LayoutProperties() + { + DefaultBorderRadius = "5px" + }; + + Typography = CustomTypography.RPTypography; + Shadows = new Shadow(); + ZIndex = new ZIndex() { Drawer = 1300 }; + } +} \ No newline at end of file diff --git a/src/Client/App.razor b/src/Client/App.razor new file mode 100644 index 0000000..8fd8903 --- /dev/null +++ b/src/Client/App.razor @@ -0,0 +1,23 @@ + + + + + + @if (@context.User.Identity?.IsAuthenticated is true) + { +

You are not authorized to be here.

+ } + else + { + + } +
+
+
+ + +

Sorry, there's nothing at this address.

+
+
+
+
\ No newline at end of file diff --git a/src/Client/Client.csproj b/src/Client/Client.csproj new file mode 100644 index 0000000..86d1d66 --- /dev/null +++ b/src/Client/Client.csproj @@ -0,0 +1,35 @@ + + + + net6.0 + RewardsPlus.BlazorWebAssembly.Client + RewardsPlus.BlazorWebAssembly.Client + service-worker-assets.js + true + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Client/Components/Common/CustomValidation.cs b/src/Client/Components/Common/CustomValidation.cs new file mode 100644 index 0000000..c0d47e8 --- /dev/null +++ b/src/Client/Components/Common/CustomValidation.cs @@ -0,0 +1,51 @@ +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Forms; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.Common; + +// See https://docs.microsoft.com/en-us/aspnet/core/blazor/forms-validation?view=aspnetcore-6.0#server-validation-with-a-validator-component +public class CustomValidation : ComponentBase +{ + private ValidationMessageStore? _messageStore; + + [CascadingParameter] + private EditContext? CurrentEditContext { get; set; } + + protected override void OnInitialized() + { + if (CurrentEditContext is null) + { + throw new InvalidOperationException( + $"{nameof(CustomValidation)} requires a cascading " + + $"parameter of type {nameof(EditContext)}. " + + $"For example, you can use {nameof(CustomValidation)} " + + $"inside an {nameof(EditForm)}."); + } + + _messageStore = new(CurrentEditContext); + + CurrentEditContext.OnValidationRequested += (s, e) => + _messageStore?.Clear(); + CurrentEditContext.OnFieldChanged += (s, e) => + _messageStore?.Clear(e.FieldIdentifier); + } + + public void DisplayErrors(IDictionary> errors) + { + if (CurrentEditContext is not null && errors is not null) + { + foreach (var err in errors) + { + _messageStore?.Add(CurrentEditContext.Field(err.Key), err.Value); + } + + CurrentEditContext.NotifyValidationStateChanged(); + } + } + + public void ClearErrors() + { + _messageStore?.Clear(); + CurrentEditContext?.NotifyValidationStateChanged(); + } +} \ No newline at end of file diff --git a/src/Client/Components/Common/ErrorHandler.razor b/src/Client/Components/Common/ErrorHandler.razor new file mode 100644 index 0000000..9467791 --- /dev/null +++ b/src/Client/Components/Common/ErrorHandler.razor @@ -0,0 +1,2 @@ +@inherits ErrorBoundary +@ChildContent \ No newline at end of file diff --git a/src/Client/Components/Common/ErrorHandler.razor.cs b/src/Client/Components/Common/ErrorHandler.razor.cs new file mode 100644 index 0000000..4c8ad99 --- /dev/null +++ b/src/Client/Components/Common/ErrorHandler.razor.cs @@ -0,0 +1,31 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.Common; + +public partial class ErrorHandler +{ + [Inject] + public IAuthenticationService AuthService { get; set; } = default!; + + public List _receivedExceptions = new(); + + protected override async Task OnErrorAsync(Exception exception) + { + _receivedExceptions.Add(exception); + switch (exception) + { + case UnauthorizedAccessException: + await AuthService.LogoutAsync(); + Snackbar.Add("Authentication Failed", Severity.Error); + break; + } + } + + public new void Recover() + { + _receivedExceptions.Clear(); + base.Recover(); + } +} \ No newline at end of file diff --git a/src/Client/Components/Common/FshCustomError.razor b/src/Client/Components/Common/FshCustomError.razor new file mode 100644 index 0000000..827318b --- /dev/null +++ b/src/Client/Components/Common/FshCustomError.razor @@ -0,0 +1 @@ +Oopsie !! 😔 \ No newline at end of file diff --git a/src/Client/Components/Common/FshTable.cs b/src/Client/Components/Common/FshTable.cs new file mode 100644 index 0000000..29f7983 --- /dev/null +++ b/src/Client/Components/Common/FshTable.cs @@ -0,0 +1,39 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Notifications; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; +using MediatR.Courier; +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.Common; + +public class FshTable : MudTable +{ + [Inject] + private IClientPreferenceManager ClientPreferences { get; set; } = default!; + [Inject] + protected ICourier Courier { get; set; } = default!; + + protected override async Task OnInitializedAsync() + { + if (await ClientPreferences.GetPreference() is ClientPreference clientPreference) + { + SetTablePreference(clientPreference.TablePreference); + } + + Courier.SubscribeWeak>(wrapper => + { + SetTablePreference(wrapper.Notification); + StateHasChanged(); + }); + + await base.OnInitializedAsync(); + } + + private void SetTablePreference(FshTablePreference tablePreference) + { + Dense = tablePreference.IsDense; + Striped = tablePreference.IsStriped; + Bordered = tablePreference.HasBorder; + Hover = tablePreference.IsHoverable; + } +} \ No newline at end of file diff --git a/src/Client/Components/Common/FshTitle.razor b/src/Client/Components/Common/FshTitle.razor new file mode 100644 index 0000000..e696be9 --- /dev/null +++ b/src/Client/Components/Common/FshTitle.razor @@ -0,0 +1,8 @@ +@Title +@Description + +@code +{ + [Parameter] public string? Title { get; set; } + [Parameter] public string? Description { get; set; } +} \ No newline at end of file diff --git a/src/Client/Components/Common/PersonCard.razor b/src/Client/Components/Common/PersonCard.razor new file mode 100644 index 0000000..d17630e --- /dev/null +++ b/src/Client/Components/Common/PersonCard.razor @@ -0,0 +1,19 @@ + + + + @if (string.IsNullOrEmpty(this.ImageUri)) + { + @FullName?.ToUpper().FirstOrDefault() + + } + else + { + + } + + + @FullName + @Email + + + diff --git a/src/Client/Components/Common/PersonCard.razor.cs b/src/Client/Components/Common/PersonCard.razor.cs new file mode 100644 index 0000000..c0db50e --- /dev/null +++ b/src/Client/Components/Common/PersonCard.razor.cs @@ -0,0 +1,46 @@ +using System.Security.Claims; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Authorization; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.Common; + +public partial class PersonCard +{ + [Parameter] + public string? Class { get; set; } + [Parameter] + public string? Style { get; set; } + + [CascadingParameter] + protected Task AuthState { get; set; } = default!; + + private string? UserId { get; set; } + private string? Email { get; set; } + private string? FullName { get; set; } + private string? ImageUri { get; set; } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender) + { + await LoadUserData(); + } + } + + private async Task LoadUserData() + { + var user = (await AuthState).User; + if (user.Identity?.IsAuthenticated == true) + { + if (string.IsNullOrEmpty(UserId)) + { + FullName = user.GetFullName(); + UserId = user.GetUserId(); + Email = user.GetEmail(); + ImageUri = string.IsNullOrEmpty(user?.GetImageUrl()) ? string.Empty : (Config[ConfigNames.ApiBaseUrl] + user?.GetImageUrl()); + StateHasChanged(); + } + } + } +} \ No newline at end of file diff --git a/src/Client/Components/Common/TablePager.razor b/src/Client/Components/Common/TablePager.razor new file mode 100644 index 0000000..c5fdc78 --- /dev/null +++ b/src/Client/Components/Common/TablePager.razor @@ -0,0 +1,3 @@ +@inject IStringLocalizer L + + \ No newline at end of file diff --git a/src/Client/Components/Dialogs/DeleteConfirmation.razor b/src/Client/Components/Dialogs/DeleteConfirmation.razor new file mode 100644 index 0000000..f08d440 --- /dev/null +++ b/src/Client/Components/Dialogs/DeleteConfirmation.razor @@ -0,0 +1,31 @@ +@inject IStringLocalizer L + + + + + + @L["Delete Confirmation"] + + + + @ContentText + + + @L["Cancel"] + @L["Confirm"] + + + +@code { + [CascadingParameter] + MudDialogInstance MudDialog { get; set; } = default!; + + [Parameter] + public string? ContentText { get; set; } + + void Submit() + { + MudDialog.Close(DialogResult.Ok(true)); + } + void Cancel() => MudDialog.Cancel(); +} \ No newline at end of file diff --git a/src/Client/Components/Dialogs/Logout.razor b/src/Client/Components/Dialogs/Logout.razor new file mode 100644 index 0000000..490049c --- /dev/null +++ b/src/Client/Components/Dialogs/Logout.razor @@ -0,0 +1,40 @@ +@namespace RewardsPlus.BlazorWebAssembly.Client.Shared.Dialogs + +@inject IStringLocalizer L +@inject IAuthenticationService AuthService + + + + + + @L["Logout Confirmation"] + + + + @ContentText + + + @L["Cancel"] + @ButtonText + + + +@code { + [Parameter] public string? ContentText { get; set; } + + [Parameter] public string? ButtonText { get; set; } + + [Parameter] public Color Color { get; set; } + + [CascadingParameter] MudDialogInstance MudDialog { get; set; } = default!; + + async Task Submit() + { + await AuthService.LogoutAsync(); + Snackbar.Add(@L["Logged out"], Severity.Info); + MudDialog.Close(DialogResult.Ok(true)); + } + + void Cancel() => + MudDialog.Cancel(); +} \ No newline at end of file diff --git a/src/Client/Components/EntityTable/AddEditModal.razor b/src/Client/Components/EntityTable/AddEditModal.razor new file mode 100644 index 0000000..ea086f5 --- /dev/null +++ b/src/Client/Components/EntityTable/AddEditModal.razor @@ -0,0 +1,51 @@ +@typeparam TRequest + +@inject IStringLocalizer L + + + + + + + @if (IsCreate) + { + + } + else + { + + } + @Title + + + + + + + + + @ChildContent(RequestModel) + + + + + + + @L["Cancel"] + + @if (IsCreate) + { + + @L["Save"] + + } + else + { + + @L["Update"] + + } + + + + \ No newline at end of file diff --git a/src/Client/Components/EntityTable/AddEditModal.razor.cs b/src/Client/Components/EntityTable/AddEditModal.razor.cs new file mode 100644 index 0000000..22514dc --- /dev/null +++ b/src/Client/Components/EntityTable/AddEditModal.razor.cs @@ -0,0 +1,49 @@ +using RewardsPlus.BlazorWebAssembly.Client.Components.Common; +using RewardsPlus.BlazorWebAssembly.Client.Shared; +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.EntityTable; + +public partial class AddEditModal : IAddEditModal +{ + [Parameter] + [EditorRequired] + public RenderFragment ChildContent { get; set; } = default!; + [Parameter] + [EditorRequired] + public TRequest RequestModel { get; set; } = default!; + [Parameter] + [EditorRequired] + public Func SaveFunc { get; set; } = default!; + [Parameter] + public Func? OnInitializedFunc { get; set; } + [Parameter] + [EditorRequired] + public string Title { get; set; } = default!; + [Parameter] + public bool IsCreate { get; set; } + [Parameter] + public string? SuccessMessage { get; set; } + + [CascadingParameter] + private MudDialogInstance MudDialog { get; set; } = default!; + + private CustomValidation? _customValidation; + + public void ForceRender() => StateHasChanged(); + + protected override Task OnInitializedAsync() => + OnInitializedFunc is not null + ? OnInitializedFunc() + : Task.CompletedTask; + + private async Task SaveAsync() + { + if (await ApiHelper.ExecuteCallGuardedAsync( + () => SaveFunc(RequestModel), Snackbar, _customValidation, SuccessMessage)) + { + MudDialog.Close(); + } + } +} \ No newline at end of file diff --git a/src/Client/Components/EntityTable/EntityClientTableContext.cs b/src/Client/Components/EntityTable/EntityClientTableContext.cs new file mode 100644 index 0000000..d15d735 --- /dev/null +++ b/src/Client/Components/EntityTable/EntityClientTableContext.cs @@ -0,0 +1,67 @@ +namespace RewardsPlus.BlazorWebAssembly.Client.Components.EntityTable; + +/// +/// Initialization Context for the EntityTable Component. +/// Use this one if you want to use Client Paging, Sorting and Filtering. +/// +public class EntityClientTableContext + : EntityTableContext +{ + /// + /// A function that loads all the data for the table from the api and returns a ListResult of TEntity. + /// + public Func?>> LoadDataFunc { get; } + + /// + /// A function that returns a boolean which indicates whether the supplied entity meets the search criteria + /// (the supplied string is the search string entered). + /// + public Func SearchFunc { get; } + + public EntityClientTableContext( + List> fields, + Func?>> loadDataFunc, + Func searchFunc, + Func? idFunc = null, + Func>? getDefaultsFunc = null, + Func? createFunc = null, + Func>? getDetailsFunc = null, + Func? updateFunc = null, + Func? deleteFunc = null, + string? entityName = null, + string? entityNamePlural = null, + string? entityResource = null, + string? searchAction = null, + string? createAction = null, + string? updateAction = null, + string? deleteAction = null, + string? exportAction = null, + Func? editFormInitializedFunc = null, + Func? hasExtraActionsFunc = null, + Func? canUpdateEntityFunc = null, + Func? canDeleteEntityFunc = null) + : base( + fields, + idFunc, + getDefaultsFunc, + createFunc, + getDetailsFunc, + updateFunc, + deleteFunc, + entityName, + entityNamePlural, + entityResource, + searchAction, + createAction, + updateAction, + deleteAction, + exportAction, + editFormInitializedFunc, + hasExtraActionsFunc, + canUpdateEntityFunc, + canDeleteEntityFunc) + { + LoadDataFunc = loadDataFunc; + SearchFunc = searchFunc; + } +} \ No newline at end of file diff --git a/src/Client/Components/EntityTable/EntityField.cs b/src/Client/Components/EntityTable/EntityField.cs new file mode 100644 index 0000000..13797c3 --- /dev/null +++ b/src/Client/Components/EntityTable/EntityField.cs @@ -0,0 +1,35 @@ +using Microsoft.AspNetCore.Components; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.EntityTable; + +public record EntityField(Func ValueFunc, string DisplayName, string SortLabel = "", Type? Type = null, RenderFragment? Template = null) +{ + /// + /// A function that returns the actual value of this field from the supplied entity. + /// + public Func ValueFunc { get; init; } = ValueFunc; + + /// + /// The string that's shown on the UI for this field. + /// + public string DisplayName { get; init; } = DisplayName; + + /// + /// The string that's sent to the api as property to sort on for this field. + /// This is only relevant when using server side sorting. + /// + public string SortLabel { get; init; } = SortLabel; + + /// + /// The type of the field. Default is string, but when boolean, it shows as a checkbox. + /// + public Type? Type { get; init; } = Type; + + /// + /// When supplied this template will be used for this field in stead of the default template. + /// For an example on how to do this, see . + /// + public RenderFragment? Template { get; init; } = Template; + + public bool CheckedForSearch { get; set; } = true; +} \ No newline at end of file diff --git a/src/Client/Components/EntityTable/EntityServerTableContext.cs b/src/Client/Components/EntityTable/EntityServerTableContext.cs new file mode 100644 index 0000000..8ce3fbe --- /dev/null +++ b/src/Client/Components/EntityTable/EntityServerTableContext.cs @@ -0,0 +1,73 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.EntityTable; + +/// +/// Initialization Context for the EntityTable Component. +/// Use this one if you want to use Server Paging, Sorting and Filtering. +/// +public class EntityServerTableContext + : EntityTableContext +{ + /// + /// A function that loads the specified page from the api with the specified search criteria + /// and returns a PaginatedResult of TEntity. + /// + public Func>> SearchFunc { get; } + + /// + /// A function that exports the specified data from the API. + /// + public Func>? ExportFunc { get; } + + public bool EnableAdvancedSearch { get; } + + public EntityServerTableContext( + List> fields, + Func>> searchFunc, + Func>? exportFunc = null, + bool enableAdvancedSearch = false, + Func? idFunc = null, + Func>? getDefaultsFunc = null, + Func? createFunc = null, + Func>? getDetailsFunc = null, + Func? updateFunc = null, + Func? deleteFunc = null, + string? entityName = null, + string? entityNamePlural = null, + string? entityResource = null, + string? searchAction = null, + string? createAction = null, + string? updateAction = null, + string? deleteAction = null, + string? exportAction = null, + Func? editFormInitializedFunc = null, + Func? hasExtraActionsFunc = null, + Func? canUpdateEntityFunc = null, + Func? canDeleteEntityFunc = null) + : base( + fields, + idFunc, + getDefaultsFunc, + createFunc, + getDetailsFunc, + updateFunc, + deleteFunc, + entityName, + entityNamePlural, + entityResource, + searchAction, + createAction, + updateAction, + deleteAction, + exportAction, + editFormInitializedFunc, + hasExtraActionsFunc, + canUpdateEntityFunc, + canDeleteEntityFunc) + { + SearchFunc = searchFunc; + ExportFunc = exportFunc; + EnableAdvancedSearch = enableAdvancedSearch; + } +} \ No newline at end of file diff --git a/src/Client/Components/EntityTable/EntityTable.razor b/src/Client/Components/EntityTable/EntityTable.razor new file mode 100644 index 0000000..68221bd --- /dev/null +++ b/src/Client/Components/EntityTable/EntityTable.razor @@ -0,0 +1,158 @@ +@typeparam TEntity +@typeparam TId +@typeparam TRequest + +@inject IJSRuntime JS +@inject IStringLocalizer L + + + + + + + @if (_canSearch && (Context.AdvancedSearchEnabled || AdvancedSearchContent is not null)) + { + + + + @if (Context.AdvancedSearchEnabled) + { +
+ + @foreach (var field in Context.Fields) + { + + } +
+ } + @AdvancedSearchContent + +
+ } + + + + +
+ @if (_canCreate) + { + @L["Create"] + } + @if (_canExport) + { + @L["Export"] + } + @L["Reload"] +
+ + @if (_canSearch && !_advancedSearchExpanded) + { + + + } +
+ + + @if (Context.Fields is not null) + { + foreach (var field in Context.Fields) + { + + @if (Context.IsClientContext) + { + @field.DisplayName + } + else + { + @field.DisplayName + } + + } + } + @L["Actions"] + + + + @foreach (var field in Context.Fields) + { + + @if (field.Template is not null) + { + @field.Template(context) + } + else if (field.Type == typeof(bool)) + { + + } + else + { + + } + + } + + @if (ActionsContent is not null) + { + @ActionsContent(context) + } + else if (HasActions) + { + + @if (CanUpdateEntity(context)) + { + @L["Edit"] + } + @if (CanDeleteEntity(context)) + { + @L["Delete"] + } + @if (ExtraActions is not null) + { + @ExtraActions(context) + } + + } + else + { + + @L["No Allowed Actions"] + + } + + + + + + + +
+ +
+ + + +
\ No newline at end of file diff --git a/src/Client/Components/EntityTable/EntityTable.razor.cs b/src/Client/Components/EntityTable/EntityTable.razor.cs new file mode 100644 index 0000000..3e87773 --- /dev/null +++ b/src/Client/Components/EntityTable/EntityTable.razor.cs @@ -0,0 +1,321 @@ +using RewardsPlus.BlazorWebAssembly.Client.Components.Dialogs; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; +using RewardsPlus.BlazorWebAssembly.Client.Shared; +using Mapster; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Authorization; +using Microsoft.JSInterop; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.EntityTable; + +public partial class EntityTable + where TRequest : new() +{ + [Parameter] + [EditorRequired] + public EntityTableContext Context { get; set; } = default!; + + [Parameter] + public bool Loading { get; set; } + + [Parameter] + public string? SearchString { get; set; } + [Parameter] + public EventCallback SearchStringChanged { get; set; } + + [Parameter] + public RenderFragment? AdvancedSearchContent { get; set; } + + [Parameter] + public RenderFragment? ActionsContent { get; set; } + [Parameter] + public RenderFragment? ExtraActions { get; set; } + [Parameter] + public RenderFragment? ChildRowContent { get; set; } + + [Parameter] + public RenderFragment? EditFormContent { get; set; } + + [CascadingParameter] + protected Task AuthState { get; set; } = default!; + [Inject] + protected IAuthorizationService AuthService { get; set; } = default!; + + private bool _canSearch; + private bool _canCreate; + private bool _canUpdate; + private bool _canDelete; + private bool _canExport; + + private bool _advancedSearchExpanded; + + private MudTable _table = default!; + private IEnumerable? _entityList; + private int _totalItems; + + protected override async Task OnInitializedAsync() + { + var state = await AuthState; + _canSearch = await CanDoActionAsync(Context.SearchAction, state); + _canCreate = await CanDoActionAsync(Context.CreateAction, state); + _canUpdate = await CanDoActionAsync(Context.UpdateAction, state); + _canDelete = await CanDoActionAsync(Context.DeleteAction, state); + _canExport = await CanDoActionAsync(Context.ExportAction, state); + + await LocalLoadDataAsync(); + } + + public Task ReloadDataAsync() => + Context.IsClientContext + ? LocalLoadDataAsync() + : ServerLoadDataAsync(); + + private async Task CanDoActionAsync(string? action, AuthenticationState state) => + !string.IsNullOrWhiteSpace(action) && + ((bool.TryParse(action, out bool isTrue) && isTrue) || // check if action equals "True", then it's allowed + (Context.EntityResource is { } resource && await AuthService.HasPermissionAsync(state.User, action, resource))); + + private bool HasActions => _canUpdate || _canDelete || (Context.HasExtraActionsFunc is not null && Context.HasExtraActionsFunc()); + private bool CanUpdateEntity(TEntity entity) => _canUpdate && (Context.CanUpdateEntityFunc is null || Context.CanUpdateEntityFunc(entity)); + private bool CanDeleteEntity(TEntity entity) => _canDelete && (Context.CanDeleteEntityFunc is null || Context.CanDeleteEntityFunc(entity)); + + // Client side paging/filtering + private bool LocalSearch(TEntity entity) => + Context.ClientContext?.SearchFunc is { } searchFunc + ? searchFunc(SearchString, entity) + : string.IsNullOrWhiteSpace(SearchString); + + private async Task LocalLoadDataAsync() + { + if (Loading || Context.ClientContext is null) + { + return; + } + + Loading = true; + + if (await ApiHelper.ExecuteCallGuardedAsync( + () => Context.ClientContext.LoadDataFunc(), Snackbar) + is List result) + { + _entityList = result; + } + + Loading = false; + } + + // Server Side paging/filtering + + private async Task OnSearchStringChanged(string? text = null) + { + await SearchStringChanged.InvokeAsync(SearchString); + + await ServerLoadDataAsync(); + } + + private async Task ServerLoadDataAsync() + { + if (Context.IsServerContext) + { + await _table.ReloadServerData(); + } + } + + private Func>>? ServerReloadFunc => + Context.IsServerContext ? ServerReload : null; + + private async Task> ServerReload(TableState state) + { + if (!Loading && Context.ServerContext is not null) + { + Loading = true; + + var filter = GetPaginationFilter(state); + + if (await ApiHelper.ExecuteCallGuardedAsync( + () => Context.ServerContext.SearchFunc(filter), Snackbar) + is { } result) + { + _totalItems = result.TotalCount; + _entityList = result.Data; + } + + Loading = false; + } + + return new TableData { TotalItems = _totalItems, Items = _entityList }; + } + + private async Task ExportAsync() + { + if (!Loading && Context.ServerContext is not null) + { + if (Context.ServerContext.ExportFunc is not null) + { + Loading = true; + + var filter = GetBaseFilter(); + + if (await ApiHelper.ExecuteCallGuardedAsync( + () => Context.ServerContext.ExportFunc(filter), Snackbar) + is { } result) + { + using var streamRef = new DotNetStreamReference(result.Stream); + await JS.InvokeVoidAsync("downloadFileFromStream", $"{Context.EntityNamePlural}.xlsx", streamRef); + } + + Loading = false; + } + } + } + + private PaginationFilter GetPaginationFilter(TableState state) + { + string[]? orderings = null; + if (!string.IsNullOrEmpty(state.SortLabel)) + { + orderings = state.SortDirection == SortDirection.None + ? new[] { $"{state.SortLabel}" } + : new[] { $"{state.SortLabel} {state.SortDirection}" }; + } + + var filter = new PaginationFilter + { + PageSize = state.PageSize, + PageNumber = state.Page + 1, + Keyword = SearchString, + OrderBy = orderings ?? Array.Empty() + }; + + if (!Context.AllColumnsChecked) + { + filter.AdvancedSearch = new() + { + Fields = Context.SearchFields, + Keyword = filter.Keyword + }; + filter.Keyword = null; + } + + return filter; + } + + private BaseFilter GetBaseFilter() + { + var filter = new BaseFilter + { + Keyword = SearchString, + }; + + if (!Context.AllColumnsChecked) + { + filter.AdvancedSearch = new() + { + Fields = Context.SearchFields, + Keyword = filter.Keyword + }; + filter.Keyword = null; + } + + return filter; + } + + private async Task InvokeModal(TEntity? entity = default) + { + bool isCreate = entity is null; + + var parameters = new DialogParameters() + { + { nameof(AddEditModal.ChildContent), EditFormContent }, + { nameof(AddEditModal.OnInitializedFunc), Context.EditFormInitializedFunc }, + { nameof(AddEditModal.IsCreate), isCreate } + }; + + Func saveFunc; + TRequest requestModel; + string title, successMessage; + + if (isCreate) + { + _ = Context.CreateFunc ?? throw new InvalidOperationException("CreateFunc can't be null!"); + + saveFunc = Context.CreateFunc; + + requestModel = + Context.GetDefaultsFunc is not null + && await ApiHelper.ExecuteCallGuardedAsync( + () => Context.GetDefaultsFunc(), Snackbar) + is { } defaultsResult + ? defaultsResult + : new TRequest(); + + title = $"{L["Create"]} {Context.EntityName}"; + successMessage = $"{Context.EntityName} {L["Created"]}"; + } + else + { + _ = Context.IdFunc ?? throw new InvalidOperationException("IdFunc can't be null!"); + _ = Context.UpdateFunc ?? throw new InvalidOperationException("UpdateFunc can't be null!"); + + var id = Context.IdFunc(entity!); + + saveFunc = request => Context.UpdateFunc(id, request); + + requestModel = + Context.GetDetailsFunc is not null + && await ApiHelper.ExecuteCallGuardedAsync( + () => Context.GetDetailsFunc(id!), + Snackbar) + is { } detailsResult + ? detailsResult + : entity!.Adapt(); + + title = $"{L["Edit"]} {Context.EntityName}"; + successMessage = $"{Context.EntityName} {L["Updated"]}"; + } + + parameters.Add(nameof(AddEditModal.SaveFunc), saveFunc); + parameters.Add(nameof(AddEditModal.RequestModel), requestModel); + parameters.Add(nameof(AddEditModal.Title), title); + parameters.Add(nameof(AddEditModal.SuccessMessage), successMessage); + + var dialog = DialogService.ShowModal>(parameters); + + Context.SetAddEditModalRef(dialog); + + var result = await dialog.Result; + + if (!result.Cancelled) + { + await ReloadDataAsync(); + } + } + + private async Task Delete(TEntity entity) + { + _ = Context.IdFunc ?? throw new InvalidOperationException("IdFunc can't be null!"); + TId id = Context.IdFunc(entity); + + string deleteContent = L["You're sure you want to delete {0} with id '{1}'?"]; + var parameters = new DialogParameters + { + { nameof(DeleteConfirmation.ContentText), string.Format(deleteContent, Context.EntityName, id) } + }; + var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.Small, FullWidth = true, DisableBackdropClick = true }; + var dialog = DialogService.Show(L["Delete"], parameters, options); + var result = await dialog.Result; + if (!result.Cancelled) + { + _ = Context.DeleteFunc ?? throw new InvalidOperationException("DeleteFunc can't be null!"); + + await ApiHelper.ExecuteCallGuardedAsync( + () => Context.DeleteFunc(id), + Snackbar); + + await ReloadDataAsync(); + } + } +} \ No newline at end of file diff --git a/src/Client/Components/EntityTable/EntityTableContext.cs b/src/Client/Components/EntityTable/EntityTableContext.cs new file mode 100644 index 0000000..6ff1033 --- /dev/null +++ b/src/Client/Components/EntityTable/EntityTableContext.cs @@ -0,0 +1,197 @@ +using RewardsPlus.WebApi.Shared.Authorization; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.EntityTable; + +/// +/// Abstract base class for the initialization Context of the EntityTable Component. +/// +/// The type of the entity. +/// The type of the id of the entity. +/// The type of the Request which is used on the AddEditModal and which is sent with the CreateFunc and UpdateFunc. +public abstract class EntityTableContext +{ + /// + /// The columns you want to display on the table. + /// + public List> Fields { get; } + + /// + /// A function that returns the Id of the entity. This is only needed when using the CRUD functionality. + /// + public Func? IdFunc { get; } + + /// + /// A function that executes the GetDefaults method on the api (or supplies defaults locally) and returns + /// a Task of Result of TRequest. When not supplied, a TRequest is simply newed up. + /// No need to check for error messages or api exceptions. These are automatically handled by the component. + /// + public Func>? GetDefaultsFunc { get; } + + /// + /// A function that executes the Create method on the api with the supplied entity and returns a Task of Result. + /// No need to check for error messages or api exceptions. These are automatically handled by the component. + /// + public Func? CreateFunc { get; } + + /// + /// A function that executes the GetDetails method on the api with the supplied Id and returns a Task of Result of TRequest. + /// No need to check for error messages or api exceptions. These are automatically handled by the component. + /// When not supplied, the TEntity out of the _entityList is supplied using the IdFunc and converted using mapster. + /// + public Func>? GetDetailsFunc { get; } + + /// + /// A function that executes the Update method on the api with the supplied entity and returns a Task of Result. + /// When not supplied, the TEntity from the list is mapped to TCreateRequest using mapster. + /// No need to check for error messages or api exceptions. These are automatically handled by the component. + /// + public Func? UpdateFunc { get; } + + /// + /// A function that executes the Delete method on the api with the supplied entity id and returns a Task of Result. + /// No need to check for error messages or api exceptions. These are automatically handled by the component. + /// + public Func? DeleteFunc { get; } + + /// + /// The name of the entity. This is used in the title of the add/edit modal and delete confirmation. + /// + public string? EntityName { get; } + + /// + /// The plural name of the entity. This is used in the "Search for ..." placeholder. + /// + public string? EntityNamePlural { get; } + + /// + /// The FSHResource that is representing this entity. This is used in combination with the xxActions to check for permissions. + /// + public string? EntityResource { get; } + + /// + /// The FSHAction name of the search permission. This is FSHAction.Search by default. + /// When empty, no search functionality will be available. + /// When the string is "true", search funtionality will be enabled, + /// otherwise it will only be enabled if the user has permission for this action on the EntityResource. + /// + public string SearchAction { get; } + + /// + /// The permission name of the create permission. This is FSHAction.Create by default. + /// When empty, no create functionality will be available. + /// When the string "true", create funtionality will be enabled, + /// otherwise it will only be enabled if the user has permission for this action on the EntityResource. + /// + public string CreateAction { get; } + + /// + /// The permission name of the update permission. This is FSHAction.Update by default. + /// When empty, no update functionality will be available. + /// When the string is "true", update funtionality will be enabled, + /// otherwise it will only be enabled if the user has permission for this action on the EntityResource. + /// + public string UpdateAction { get; } + + /// + /// The permission name of the delete permission. This is FSHAction.Delete by default. + /// When empty, no delete functionality will be available. + /// When the string is "true", delete funtionality will be enabled, + /// otherwise it will only be enabled if the user has permission for this action on the EntityResource. + /// + public string DeleteAction { get; } + + /// + /// The permission name of the export permission. This is FSHAction.Export by default. + /// + public string ExportAction { get; } + + /// + /// Use this if you want to run initialization during OnInitialized of the AddEdit form. + /// + public Func? EditFormInitializedFunc { get; } + + /// + /// Use this if you want to check for permissions of content in the ExtraActions RenderFragment. + /// The extra actions won't be available when this returns false. + /// + public Func? HasExtraActionsFunc { get; set; } + + /// + /// Use this if you want to disable the update functionality for specific entities in the table. + /// + public Func? CanUpdateEntityFunc { get; set; } + + /// + /// Use this if you want to disable the delete functionality for specific entities in the table. + /// + public Func? CanDeleteEntityFunc { get; set; } + + public EntityTableContext( + List> fields, + Func? idFunc, + Func>? getDefaultsFunc, + Func? createFunc, + Func>? getDetailsFunc, + Func? updateFunc, + Func? deleteFunc, + string? entityName, + string? entityNamePlural, + string? entityResource, + string? searchAction, + string? createAction, + string? updateAction, + string? deleteAction, + string? exportAction, + Func? editFormInitializedFunc, + Func? hasExtraActionsFunc, + Func? canUpdateEntityFunc, + Func? canDeleteEntityFunc) + { + EntityResource = entityResource; + Fields = fields; + EntityName = entityName; + EntityNamePlural = entityNamePlural; + IdFunc = idFunc; + GetDefaultsFunc = getDefaultsFunc; + CreateFunc = createFunc; + GetDetailsFunc = getDetailsFunc; + UpdateFunc = updateFunc; + DeleteFunc = deleteFunc; + SearchAction = searchAction ?? FSHAction.Search; + CreateAction = createAction ?? FSHAction.Create; + UpdateAction = updateAction ?? FSHAction.Update; + DeleteAction = deleteAction ?? FSHAction.Delete; + ExportAction = exportAction ?? FSHAction.Export; + EditFormInitializedFunc = editFormInitializedFunc; + HasExtraActionsFunc = hasExtraActionsFunc; + CanUpdateEntityFunc = canUpdateEntityFunc; + CanDeleteEntityFunc = canDeleteEntityFunc; + } + + // AddEdit modal + private IDialogReference? _addEditModalRef; + + internal void SetAddEditModalRef(IDialogReference dialog) => + _addEditModalRef = dialog; + + public IAddEditModal AddEditModal => + _addEditModalRef?.Dialog as IAddEditModal + ?? throw new InvalidOperationException("AddEditModal is only available when the modal is shown."); + + // Shortcuts + public EntityClientTableContext? ClientContext => this as EntityClientTableContext; + public EntityServerTableContext? ServerContext => this as EntityServerTableContext; + public bool IsClientContext => ClientContext is not null; + public bool IsServerContext => ServerContext is not null; + + // Advanced Search + public bool AllColumnsChecked => + Fields.All(f => f.CheckedForSearch); + public void AllColumnsCheckChanged(bool checkAll) => + Fields.ForEach(f => f.CheckedForSearch = checkAll); + public bool AdvancedSearchEnabled => + ServerContext?.EnableAdvancedSearch is true; + public List SearchFields => + Fields.Where(f => f.CheckedForSearch).Select(f => f.SortLabel).ToList(); +} \ No newline at end of file diff --git a/src/Client/Components/EntityTable/IAddEditModal.cs b/src/Client/Components/EntityTable/IAddEditModal.cs new file mode 100644 index 0000000..eb7d43f --- /dev/null +++ b/src/Client/Components/EntityTable/IAddEditModal.cs @@ -0,0 +1,8 @@ +namespace RewardsPlus.BlazorWebAssembly.Client.Components.EntityTable; + +public interface IAddEditModal +{ + TRequest RequestModel { get; } + bool IsCreate { get; } + void ForceRender(); +} \ No newline at end of file diff --git a/src/Client/Components/EntityTable/PaginationResponse.cs b/src/Client/Components/EntityTable/PaginationResponse.cs new file mode 100644 index 0000000..b78f37b --- /dev/null +++ b/src/Client/Components/EntityTable/PaginationResponse.cs @@ -0,0 +1,9 @@ +namespace RewardsPlus.BlazorWebAssembly.Client.Components.EntityTable; + +public class PaginationResponse +{ + public List Data { get; set; } = default!; + public int TotalCount { get; set; } + public int CurrentPage { get; set; } = 1; + public int PageSize { get; set; } = 10; +} diff --git a/src/Client/Components/Localization/LanguageSelector.razor b/src/Client/Components/Localization/LanguageSelector.razor new file mode 100644 index 0000000..0305761 --- /dev/null +++ b/src/Client/Components/Localization/LanguageSelector.razor @@ -0,0 +1,41 @@ +@inject IStringLocalizer L + + + + @foreach (var language in LocalizationConstants.SupportedLanguages) + { + if (language.Code == CurrentLanguage) + { + @L[language.DisplayName] + } + else + { + @L[language.DisplayName] + } + } + + + +@code { + public string? CurrentLanguage { get; set; } = "en-US"; + + protected override async Task OnInitializedAsync() + { + var currentPreference = await ClientPreferences.GetPreference() as ClientPreference; + if (currentPreference != null) + { + CurrentLanguage = currentPreference.LanguageCode; + } + else + { + CurrentLanguage = "en-US"; + } + + } + private async Task ChangeLanguageAsync(string languageCode) + { + var result = await ClientPreferences.ChangeLanguageAsync(languageCode); + Navigation.NavigateTo(Navigation.Uri, forceLoad: true); + } +} \ No newline at end of file diff --git a/src/Client/Components/Notifications/NotificationConnection.razor b/src/Client/Components/Notifications/NotificationConnection.razor new file mode 100644 index 0000000..6d04cdf --- /dev/null +++ b/src/Client/Components/Notifications/NotificationConnection.razor @@ -0,0 +1,3 @@ + + @ChildContent + \ No newline at end of file diff --git a/src/Client/Components/Notifications/NotificationConnection.razor.cs b/src/Client/Components/Notifications/NotificationConnection.razor.cs new file mode 100644 index 0000000..b7e79d4 --- /dev/null +++ b/src/Client/Components/Notifications/NotificationConnection.razor.cs @@ -0,0 +1,153 @@ +using System.Net; +using System.Reflection; +using System.Text.Json; +using System.Text.Json.Nodes; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Notifications; +using RewardsPlus.WebApi.Shared.Notifications; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.WebAssembly.Authentication; +using Microsoft.AspNetCore.SignalR.Client; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.Notifications; + +public partial class NotificationConnection : IDisposable, IAsyncDisposable +{ + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + [Inject] + private IAccessTokenProvider TokenProvider { get; set; } = default!; + [Inject] + private INotificationPublisher Publisher { get; set; } = default!; + [Inject] + private IAuthenticationService AuthService { get; set; } = default!; + [Inject] + private ILogger Logger { get; set; } = default!; + + private readonly CancellationTokenSource _cts = new(); + private IDisposable? _subscription; + private HubConnection? _hubConnection; + + public ConnectionState ConnectionState => + _hubConnection?.State switch + { + HubConnectionState.Connected => ConnectionState.Connected, + HubConnectionState.Disconnected => ConnectionState.Disconnected, + _ => ConnectionState.Connecting + }; + + public string? ConnectionId => _hubConnection?.ConnectionId; + + protected override Task OnInitializedAsync() + { + _hubConnection = new HubConnectionBuilder() + .WithUrl($"{Config[ConfigNames.ApiBaseUrl]}notifications", options => + options.AccessTokenProvider = + () => TokenProvider.GetAccessTokenAsync()) + .WithAutomaticReconnect(new IndefiniteRetryPolicy()) + .Build(); + + _hubConnection.Reconnecting += ex => + OnConnectionStateChangedAsync(ConnectionState.Connecting, ex?.Message); + + _hubConnection.Reconnected += id => + OnConnectionStateChangedAsync(ConnectionState.Connected, id); + + _hubConnection.Closed += async ex => + { + await OnConnectionStateChangedAsync(ConnectionState.Disconnected, ex?.Message); + + // This shouldn't happen with the IndefiniteRetryPolicy configured above, + // but just in case it does, we wait a bit and restart the connection again. + await Task.Delay(5000, _cts.Token); + await ConnectWithRetryAsync(_cts.Token); + }; + + _subscription = _hubConnection.On(NotificationConstants.NotificationFromServer, (notificationTypeName, notificationJson) => + { + if (Assembly.GetAssembly(typeof(INotificationMessage))!.GetType(notificationTypeName) + is { } notificationType + && notificationJson.Deserialize( + notificationType, + new JsonSerializerOptions { PropertyNamingPolicy = JsonNamingPolicy.CamelCase }) + is INotificationMessage notification) + { + return Publisher.PublishAsync(notification); + } + + Logger.LogError("Invalid Notification Received ({name}).", notificationTypeName); + + return Task.CompletedTask; + }); + + // launch the signalR connection in the background. + // see https://www.dotnetcurry.com/aspnet-core/realtime-app-using-blazor-webassembly-signalr-csharp9 + _ = ConnectWithRetryAsync(_cts.Token); + + return base.OnInitializedAsync(); + } + + protected virtual Task OnConnectionStateChangedAsync(ConnectionState state, string? message) + { + return Publisher.PublishAsync(new ConnectionStateChanged(state, message)); + } + + private async Task ConnectWithRetryAsync(CancellationToken cancellationToken) + { + _ = _hubConnection ?? throw new InvalidOperationException("HubConnection can't be null."); + + // Keep trying to until we can start or the token is canceled. + while (true) + { + try + { + await _hubConnection.StartAsync(cancellationToken); + await OnConnectionStateChangedAsync(ConnectionState.Connected, _hubConnection.ConnectionId); + return; + } + catch when (cancellationToken.IsCancellationRequested) + { + return; + } + catch (HttpRequestException requestException) when (requestException.StatusCode == HttpStatusCode.Unauthorized) + { + // This shouldn't happen, but just in case, redirect to logout. + await AuthService.LogoutAsync(); + return; + } + catch + { + // Try again in a few seconds. This could be an incremental interval + await Task.Delay(5000, cancellationToken); + } + } + } + + public void Dispose() + { + _cts.Cancel(); + _cts.Dispose(); + _subscription?.Dispose(); + } + + public async ValueTask DisposeAsync() + { + if (_hubConnection is not null) + { + await _hubConnection.DisposeAsync(); + } + } +} + +internal class IndefiniteRetryPolicy : IRetryPolicy +{ + public TimeSpan? NextRetryDelay(RetryContext retryContext) => + retryContext.PreviousRetryCount switch + { + 0 => TimeSpan.Zero, + 1 => TimeSpan.FromSeconds(2), + 2 => TimeSpan.FromSeconds(5), + _ => TimeSpan.FromSeconds(10) + }; +} \ No newline at end of file diff --git a/src/Client/Components/Notifications/NotificationConnectionStatus.razor b/src/Client/Components/Notifications/NotificationConnectionStatus.razor new file mode 100644 index 0000000..78bea4a --- /dev/null +++ b/src/Client/Components/Notifications/NotificationConnectionStatus.razor @@ -0,0 +1,49 @@ +@inject ICourier Courier + + + + + +@code { + public string TooltipText { get; set; } = "No Connection"; + public string Icon { get; set; } = Icons.Filled.SignalWifi0Bar; + public Color IconColor { get; set; } = Color.Error; + + [CascadingParameter] private NotificationConnection _notifications { get; set; } = default!; + + protected override void OnInitialized() + { + SetConnectionState(_notifications.ConnectionState, _notifications.ConnectionId); + + Courier.SubscribeWeak>(wrapper => + { + SetConnectionState(wrapper.Notification.State, wrapper.Notification.Message); + StateHasChanged(); + }); + } + + private void SetConnectionState(ConnectionState state, string? message) + { + switch (state) + { + case ConnectionState.Connected: + TooltipText = $"Connected to Server with ConnectionId {message}"; + Icon = @Icons.Filled.SignalWifiStatusbar4Bar; + IconColor = Color.Success; + break; + + case ConnectionState.Connecting: + TooltipText = $"(Re)connecting... ({message})."; + Icon = @Icons.Filled.SignalWifiStatusbarConnectedNoInternet4; + IconColor = Color.Warning; + break; + + case ConnectionState.Disconnected: + TooltipText = $"Connection Closed ({message})."; + Icon = @Icons.Filled.SignalWifiOff; + IconColor = Color.Error; + break; + } + StateHasChanged(); + } +} \ No newline at end of file diff --git a/src/Client/Components/ThemeManager/ColorPanel.razor b/src/Client/Components/ThemeManager/ColorPanel.razor new file mode 100644 index 0000000..2b90017 --- /dev/null +++ b/src/Client/Components/ThemeManager/ColorPanel.razor @@ -0,0 +1,27 @@ + + +
+ @ColorType + + +
+
+ + + + + @foreach (var color in Colors) + { + + +
+
+
+
+ } +
+
+
+
+
\ No newline at end of file diff --git a/src/Client/Components/ThemeManager/ColorPanel.razor.cs b/src/Client/Components/ThemeManager/ColorPanel.razor.cs new file mode 100644 index 0000000..3c899cc --- /dev/null +++ b/src/Client/Components/ThemeManager/ColorPanel.razor.cs @@ -0,0 +1,24 @@ +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.ThemeManager; + +public partial class ColorPanel +{ + [Parameter] + public List Colors { get; set; } = new(); + + [Parameter] + public string ColorType { get; set; } = string.Empty; + + [Parameter] + public Color CurrentColor { get; set; } + + [Parameter] + public EventCallback OnColorClicked { get; set; } + + protected async Task ColorClicked(string color) + { + await OnColorClicked.InvokeAsync(color); + } +} \ No newline at end of file diff --git a/src/Client/Components/ThemeManager/DarkModePanel.razor b/src/Client/Components/ThemeManager/DarkModePanel.razor new file mode 100644 index 0000000..1f983fc --- /dev/null +++ b/src/Client/Components/ThemeManager/DarkModePanel.razor @@ -0,0 +1,17 @@ + + +
+ @if (_isDarkMode) + { + Light Mode + } + else + { + Dark Mode + } + +
+
+
\ No newline at end of file diff --git a/src/Client/Components/ThemeManager/DarkModePanel.razor.cs b/src/Client/Components/ThemeManager/DarkModePanel.razor.cs new file mode 100644 index 0000000..70ae348 --- /dev/null +++ b/src/Client/Components/ThemeManager/DarkModePanel.razor.cs @@ -0,0 +1,24 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; +using Microsoft.AspNetCore.Components; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.ThemeManager; + +public partial class DarkModePanel +{ + private bool _isDarkMode; + + protected override async Task OnInitializedAsync() + { + if (await ClientPreferences.GetPreference() is not ClientPreference themePreference) themePreference = new ClientPreference(); + _isDarkMode = themePreference.IsDarkMode; + } + + [Parameter] + public EventCallback OnIconClicked { get; set; } + + private async Task ToggleDarkMode() + { + _isDarkMode = !_isDarkMode; + await OnIconClicked.InvokeAsync(_isDarkMode); + } +} \ No newline at end of file diff --git a/src/Client/Components/ThemeManager/RadiusPanel.razor b/src/Client/Components/ThemeManager/RadiusPanel.razor new file mode 100644 index 0000000..56e42f2 --- /dev/null +++ b/src/Client/Components/ThemeManager/RadiusPanel.razor @@ -0,0 +1,15 @@ + + +
+ Border Radius + @Radius.ToString() + +
+
+ + + @Radius.ToString() + +
\ No newline at end of file diff --git a/src/Client/Components/ThemeManager/RadiusPanel.razor.cs b/src/Client/Components/ThemeManager/RadiusPanel.razor.cs new file mode 100644 index 0000000..5ad40bd --- /dev/null +++ b/src/Client/Components/ThemeManager/RadiusPanel.razor.cs @@ -0,0 +1,28 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; +using Microsoft.AspNetCore.Components; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.ThemeManager; + +public partial class RadiusPanel +{ + [Parameter] + public double Radius { get; set; } + + [Parameter] + public double MaxValue { get; set; } = 30; + + [Parameter] + public EventCallback OnSliderChanged { get; set; } + + protected override async Task OnInitializedAsync() + { + if (await ClientPreferences.GetPreference() is not ClientPreference themePreference) themePreference = new ClientPreference(); + Radius = themePreference.BorderRadius; + } + + private async Task ChangedSelection(ChangeEventArgs args) + { + Radius = int.Parse(args?.Value?.ToString() ?? "0"); + await OnSliderChanged.InvokeAsync(Radius); + } +} \ No newline at end of file diff --git a/src/Client/Components/ThemeManager/TableCustomizationPanel.razor b/src/Client/Components/ThemeManager/TableCustomizationPanel.razor new file mode 100644 index 0000000..e10ea10 --- /dev/null +++ b/src/Client/Components/ThemeManager/TableCustomizationPanel.razor @@ -0,0 +1,19 @@ + + +
+ Table Customization + T + +
+
+ + + + + + +
\ No newline at end of file diff --git a/src/Client/Components/ThemeManager/TableCustomizationPanel.razor.cs b/src/Client/Components/ThemeManager/TableCustomizationPanel.razor.cs new file mode 100644 index 0000000..6f00648 --- /dev/null +++ b/src/Client/Components/ThemeManager/TableCustomizationPanel.razor.cs @@ -0,0 +1,74 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Notifications; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; +using Microsoft.AspNetCore.Components; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.ThemeManager; + +public partial class TableCustomizationPanel +{ + [Parameter] + public bool IsDense { get; set; } + [Parameter] + public bool IsStriped { get; set; } + [Parameter] + public bool HasBorder { get; set; } + [Parameter] + public bool IsHoverable { get; set; } + [Inject] + protected INotificationPublisher Notifications { get; set; } = default!; + + private FshTablePreference _tablePreference = new(); + + protected override async Task OnInitializedAsync() + { + if (await ClientPreferences.GetPreference() is ClientPreference clientPreference) + { + _tablePreference = clientPreference.TablePreference; + } + + IsDense = _tablePreference.IsDense; + IsStriped = _tablePreference.IsStriped; + HasBorder = _tablePreference.HasBorder; + IsHoverable = _tablePreference.IsHoverable; + } + + [Parameter] + public EventCallback OnDenseSwitchToggled { get; set; } + + [Parameter] + public EventCallback OnStripedSwitchToggled { get; set; } + + [Parameter] + public EventCallback OnBorderdedSwitchToggled { get; set; } + + [Parameter] + public EventCallback OnHoverableSwitchToggled { get; set; } + + private async Task ToggleDenseSwitch() + { + _tablePreference.IsDense = !_tablePreference.IsDense; + await OnDenseSwitchToggled.InvokeAsync(_tablePreference.IsDense); + await Notifications.PublishAsync(_tablePreference); + } + + private async Task ToggleStripedSwitch() + { + _tablePreference.IsStriped = !_tablePreference.IsStriped; + await OnStripedSwitchToggled.InvokeAsync(_tablePreference.IsStriped); + await Notifications.PublishAsync(_tablePreference); + } + + private async Task ToggleBorderedSwitch() + { + _tablePreference.HasBorder = !_tablePreference.HasBorder; + await OnBorderdedSwitchToggled.InvokeAsync(_tablePreference.HasBorder); + await Notifications.PublishAsync(_tablePreference); + } + + private async Task ToggleHoverableSwitch() + { + _tablePreference.IsHoverable = !_tablePreference.IsHoverable; + await OnHoverableSwitchToggled.InvokeAsync(_tablePreference.IsHoverable); + await Notifications.PublishAsync(_tablePreference); + } +} \ No newline at end of file diff --git a/src/Client/Components/ThemeManager/ThemeButton.razor b/src/Client/Components/ThemeManager/ThemeButton.razor new file mode 100644 index 0000000..364ecc5 --- /dev/null +++ b/src/Client/Components/ThemeManager/ThemeButton.razor @@ -0,0 +1,16 @@ +
+ + + +
+ + \ No newline at end of file diff --git a/src/Client/Components/ThemeManager/ThemeButton.razor.cs b/src/Client/Components/ThemeManager/ThemeButton.razor.cs new file mode 100644 index 0000000..a88d4f2 --- /dev/null +++ b/src/Client/Components/ThemeManager/ThemeButton.razor.cs @@ -0,0 +1,10 @@ +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Web; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.ThemeManager; + +public partial class ThemeButton +{ + [Parameter] + public EventCallback OnClick { get; set; } +} \ No newline at end of file diff --git a/src/Client/Components/ThemeManager/ThemeDrawer.razor b/src/Client/Components/ThemeManager/ThemeDrawer.razor new file mode 100644 index 0000000..1ee685d --- /dev/null +++ b/src/Client/Components/ThemeManager/ThemeDrawer.razor @@ -0,0 +1,28 @@ + + + + Theme Manager + + + + + +
+ + + + + + + +
+
+ \ No newline at end of file diff --git a/src/Client/Components/ThemeManager/ThemeDrawer.razor.cs b/src/Client/Components/ThemeManager/ThemeDrawer.razor.cs new file mode 100644 index 0000000..afef574 --- /dev/null +++ b/src/Client/Components/ThemeManager/ThemeDrawer.razor.cs @@ -0,0 +1,96 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Theme; +using Microsoft.AspNetCore.Components; + +namespace RewardsPlus.BlazorWebAssembly.Client.Components.ThemeManager; + +public partial class ThemeDrawer +{ + [Parameter] + public bool ThemeDrawerOpen { get; set; } + + [Parameter] + public EventCallback ThemeDrawerOpenChanged { get; set; } + + [EditorRequired] + [Parameter] + public ClientPreference ThemePreference { get; set; } = default!; + + [EditorRequired] + [Parameter] + public EventCallback ThemePreferenceChanged { get; set; } + + private readonly List _colors = CustomColors.ThemeColors; + + private async Task UpdateThemePrimaryColor(string color) + { + if (ThemePreference is not null) + { + ThemePreference.PrimaryColor = color; + await ThemePreferenceChanged.InvokeAsync(ThemePreference); + } + } + + private async Task UpdateThemeSecondaryColor(string color) + { + if (ThemePreference is not null) + { + ThemePreference.SecondaryColor = color; + await ThemePreferenceChanged.InvokeAsync(ThemePreference); + } + } + + private async Task UpdateBorderRadius(double radius) + { + if (ThemePreference is not null) + { + ThemePreference.BorderRadius = radius; + await ThemePreferenceChanged.InvokeAsync(ThemePreference); + } + } + + private async Task ToggleDarkLightMode(bool isDarkMode) + { + if (ThemePreference is not null) + { + ThemePreference.IsDarkMode = isDarkMode; + await ThemePreferenceChanged.InvokeAsync(ThemePreference); + } + } + + private async Task ToggleEntityTableDense(bool isDense) + { + if (ThemePreference is not null) + { + ThemePreference.TablePreference.IsDense = isDense; + await ThemePreferenceChanged.InvokeAsync(ThemePreference); + } + } + + private async Task ToggleEntityTableStriped(bool isStriped) + { + if (ThemePreference is not null) + { + ThemePreference.TablePreference.IsStriped = isStriped; + await ThemePreferenceChanged.InvokeAsync(ThemePreference); + } + } + + private async Task ToggleEntityTableBorder(bool hasBorder) + { + if (ThemePreference is not null) + { + ThemePreference.TablePreference.HasBorder = hasBorder; + await ThemePreferenceChanged.InvokeAsync(ThemePreference); + } + } + + private async Task ToggleEntityTableHoverable(bool isHoverable) + { + if (ThemePreference is not null) + { + ThemePreference.TablePreference.IsHoverable = isHoverable; + await ThemePreferenceChanged.InvokeAsync(ThemePreference); + } + } +} \ No newline at end of file diff --git a/src/Client/Pages/Authentication/Authentication.razor b/src/Client/Pages/Authentication/Authentication.razor new file mode 100644 index 0000000..08b90bc --- /dev/null +++ b/src/Client/Pages/Authentication/Authentication.razor @@ -0,0 +1,74 @@ +@page "/authentication/{action}" +@attribute [AllowAnonymous] + +@inject IStringLocalizer L + + + @* Override the different child items to adapt them to our own style + I've done this for LogOutSucceeded now, already added the rest but with the defaults (and localization). *@ + + + + @L["You were successfully logged out."] + + + + + @L["Click here to log back in"]. + + + + + @L["Logging you in..."] + + + @L["Checking permissions..."] + + + + + @L["Sorry, your login failed. Please try again or contact support."] + + + @if (GetMessage() is string message && !string.IsNullOrWhiteSpace(message)) + { + + @message + + } + + + @L["Logging you out..."] + + + @L["Logging you out..."] + + + @L["Sorry, log out operation failed. Please try again or contact support."] + + + @L["Retrieving profile..."] + + + @L["Registering account..."] + + + +@code { + [Parameter] public string? Action { get; set; } + + private void GoHome() => Navigation.NavigateTo("/"); + + private string? GetMessage() + { + var query = Navigation.ToAbsoluteUri(Navigation.Uri).Query; + + if (!string.IsNullOrWhiteSpace(query) + && QueryHelpers.ParseQuery(query).TryGetValue("message", out var message)) + { + return message.ToString(); + } + + return null; + } +} \ No newline at end of file diff --git a/src/Client/Pages/Authentication/ForgotPassword.razor b/src/Client/Pages/Authentication/ForgotPassword.razor new file mode 100644 index 0000000..ab48846 --- /dev/null +++ b/src/Client/Pages/Authentication/ForgotPassword.razor @@ -0,0 +1,45 @@ +@page "/account/forgot-password" +@attribute [AllowAnonymous] +@inject IStringLocalizer L +@inject IStringLocalizer LS + + + + + + + + +
+ +
+
+ @L["Forgot Password?"] + + @L["We can help you by resetting your password."] +
+
+
+
+ + + + + + + + + + + + + + + @L["Forgot Password"] + +
+
\ No newline at end of file diff --git a/src/Client/Pages/Authentication/ForgotPassword.razor.cs b/src/Client/Pages/Authentication/ForgotPassword.razor.cs new file mode 100644 index 0000000..a3eaaae --- /dev/null +++ b/src/Client/Pages/Authentication/ForgotPassword.razor.cs @@ -0,0 +1,31 @@ +using RewardsPlus.BlazorWebAssembly.Client.Components.Common; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Shared; +using RewardsPlus.WebApi.Shared.Multitenancy; +using Microsoft.AspNetCore.Components; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Authentication; + +public partial class ForgotPassword +{ + private readonly ForgotPasswordRequest _forgotPasswordRequest = new(); + private CustomValidation? _customValidation; + private bool BusySubmitting { get; set; } + + [Inject] + private IUsersClient UsersClient { get; set; } = default!; + + private string Tenant { get; set; } = MultitenancyConstants.Root.Id; + + private async Task SubmitAsync() + { + BusySubmitting = true; + + await ApiHelper.ExecuteCallGuardedAsync( + () => UsersClient.ForgotPasswordAsync(Tenant, _forgotPasswordRequest), + Snackbar, + _customValidation); + + BusySubmitting = false; + } +} \ No newline at end of file diff --git a/src/Client/Pages/Authentication/Login.razor b/src/Client/Pages/Authentication/Login.razor new file mode 100644 index 0000000..b09d537 --- /dev/null +++ b/src/Client/Pages/Authentication/Login.razor @@ -0,0 +1,47 @@ +@page "/login" +@attribute [AllowAnonymous] +@inject IStringLocalizer L +@inject IStringLocalizer LS + +
+ +
+
+ Sign In + @L["Enter your credentials to get started."] + +
+
+ + + + + + + + + + + + + + + + @L["Register?"] + + + @L["Forgot password?"] + + + @L["Sign In"] + + + @L["Fill Administrator Credentials"] + + + \ No newline at end of file diff --git a/src/Client/Pages/Authentication/Login.razor.cs b/src/Client/Pages/Authentication/Login.razor.cs new file mode 100644 index 0000000..2019629 --- /dev/null +++ b/src/Client/Pages/Authentication/Login.razor.cs @@ -0,0 +1,81 @@ +using RewardsPlus.BlazorWebAssembly.Client.Components.Common; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; +using RewardsPlus.BlazorWebAssembly.Client.Shared; +using RewardsPlus.WebApi.Shared.Multitenancy; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Authorization; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Authentication; + +public partial class Login +{ + [CascadingParameter] + public Task AuthState { get; set; } = default!; + [Inject] + public IAuthenticationService AuthService { get; set; } = default!; + + private CustomValidation? _customValidation; + + public bool BusySubmitting { get; set; } + + private readonly TokenRequest _tokenRequest = new(); + private string TenantId { get; set; } = string.Empty; + private bool _passwordVisibility; + private InputType _passwordInput = InputType.Password; + private string _passwordInputIcon = Icons.Material.Filled.VisibilityOff; + + protected override async Task OnInitializedAsync() + { + if (AuthService.ProviderType == AuthProvider.AzureAd) + { + AuthService.NavigateToExternalLogin(Navigation.Uri); + return; + } + + var authState = await AuthState; + if (authState.User.Identity?.IsAuthenticated is true) + { + Navigation.NavigateTo("/"); + } + } + + private void TogglePasswordVisibility() + { + if (_passwordVisibility) + { + _passwordVisibility = false; + _passwordInputIcon = Icons.Material.Filled.VisibilityOff; + _passwordInput = InputType.Password; + } + else + { + _passwordVisibility = true; + _passwordInputIcon = Icons.Material.Filled.Visibility; + _passwordInput = InputType.Text; + } + } + + private void FillAdministratorCredentials() + { + _tokenRequest.Email = MultitenancyConstants.Root.EmailAddress; + _tokenRequest.Password = MultitenancyConstants.DefaultPassword; + TenantId = MultitenancyConstants.Root.Id; + } + + private async Task SubmitAsync() + { + BusySubmitting = true; + + if (await ApiHelper.ExecuteCallGuardedAsync( + () => AuthService.LoginAsync(TenantId, _tokenRequest), + Snackbar, + _customValidation)) + { + Snackbar.Add($"Logged in as {_tokenRequest.Email}", Severity.Info); + } + + BusySubmitting = false; + } +} \ No newline at end of file diff --git a/src/Client/Pages/Authentication/SelfRegister.razor b/src/Client/Pages/Authentication/SelfRegister.razor new file mode 100644 index 0000000..14ad57f --- /dev/null +++ b/src/Client/Pages/Authentication/SelfRegister.razor @@ -0,0 +1,63 @@ +@page "/users/self-register" +@attribute [AllowAnonymous] +@inject IStringLocalizer L +@inject IStringLocalizer LS + + + + + + + + +
+ +
+
+ + @L["New User Registration"] + + @L["Enter your details below to set up your new account"] +
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + @L["Register"] + + +
+
\ No newline at end of file diff --git a/src/Client/Pages/Authentication/SelfRegister.razor.cs b/src/Client/Pages/Authentication/SelfRegister.razor.cs new file mode 100644 index 0000000..965951c --- /dev/null +++ b/src/Client/Pages/Authentication/SelfRegister.razor.cs @@ -0,0 +1,58 @@ +using RewardsPlus.BlazorWebAssembly.Client.Components.Common; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Shared; +using RewardsPlus.WebApi.Shared.Multitenancy; +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Authentication; + +public partial class SelfRegister +{ + private readonly CreateUserRequest _createUserRequest = new(); + private CustomValidation? _customValidation; + private bool BusySubmitting { get; set; } + + [Inject] + private IUsersClient UsersClient { get; set; } = default!; + + private string Tenant { get; set; } = MultitenancyConstants.Root.Id; + + private bool _passwordVisibility; + private InputType _passwordInput = InputType.Password; + private string _passwordInputIcon = Icons.Material.Filled.VisibilityOff; + + private async Task SubmitAsync() + { + BusySubmitting = true; + + string? sucessMessage = await ApiHelper.ExecuteCallGuardedAsync( + () => UsersClient.SelfRegisterAsync(Tenant, _createUserRequest), + Snackbar, + _customValidation); + + if (sucessMessage != null) + { + Snackbar.Add(sucessMessage, Severity.Info); + Navigation.NavigateTo("/login"); + } + + BusySubmitting = false; + } + + private void TogglePasswordVisibility() + { + if (_passwordVisibility) + { + _passwordVisibility = false; + _passwordInputIcon = Icons.Material.Filled.VisibilityOff; + _passwordInput = InputType.Password; + } + else + { + _passwordVisibility = true; + _passwordInputIcon = Icons.Material.Filled.Visibility; + _passwordInput = InputType.Text; + } + } +} \ No newline at end of file diff --git a/src/Client/Pages/Catalog/BrandAutocomplete.cs b/src/Client/Pages/Catalog/BrandAutocomplete.cs new file mode 100644 index 0000000..e2e3ec0 --- /dev/null +++ b/src/Client/Pages/Catalog/BrandAutocomplete.cs @@ -0,0 +1,68 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Shared; +using Microsoft.AspNetCore.Components; +using Microsoft.Extensions.Localization; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Catalog; + +public class BrandAutocomplete : MudAutocomplete +{ + [Inject] + private IStringLocalizer L { get; set; } = default!; + [Inject] + private IBrandsClient BrandsClient { get; set; } = default!; + [Inject] + private ISnackbar Snackbar { get; set; } = default!; + + private List _brands = new(); + + // supply default parameters, but leave the possibility to override them + public override Task SetParametersAsync(ParameterView parameters) + { + Label = L["Brand"]; + Variant = Variant.Filled; + Dense = true; + Margin = Margin.Dense; + ResetValueOnEmptyText = true; + SearchFunc = SearchBrands; + ToStringFunc = GetBrandName; + Clearable = true; + return base.SetParametersAsync(parameters); + } + + // when the value parameter is set, we have to load that one brand to be able to show the name + // we can't do that in OnInitialized because of a strange bug (https://github.com/MudBlazor/MudBlazor/issues/3818) + protected override async Task OnAfterRenderAsync(bool firstRender) + { + if (firstRender && + _value != default && + await ApiHelper.ExecuteCallGuardedAsync( + () => BrandsClient.GetAsync(_value), Snackbar) is { } brand) + { + _brands.Add(brand); + ForceRender(true); + } + } + + private async Task> SearchBrands(string value) + { + var filter = new SearchBrandsRequest + { + PageSize = 10, + AdvancedSearch = new() { Fields = new[] { "name" }, Keyword = value } + }; + + if (await ApiHelper.ExecuteCallGuardedAsync( + () => BrandsClient.SearchAsync(filter), Snackbar) + is PaginationResponseOfBrandDto response) + { + _brands = response.Data.ToList(); + } + + return _brands.Select(x => x.Id); + } + + private string GetBrandName(Guid id) => + _brands.Find(b => b.Id == id)?.Name ?? string.Empty; +} \ No newline at end of file diff --git a/src/Client/Pages/Catalog/Brands.razor b/src/Client/Pages/Catalog/Brands.razor new file mode 100644 index 0000000..fe23833 --- /dev/null +++ b/src/Client/Pages/Catalog/Brands.razor @@ -0,0 +1,52 @@ +@page "/catalog/brands" +@attribute [MustHavePermission(FSHAction.View, FSHResource.Brands)] + +@inject IStringLocalizer L +@inject IBrandsClient BrandsClient + + + + + + + @if (!Context.AddEditModal.IsCreate) + { + + + + } + + + + + + + + + + +@code +{ + protected EntityServerTableContext Context { get; set; } = default!; + + protected override void OnInitialized() => + Context = new( + entityName: L["Brand"], + entityNamePlural: L["Brands"], + entityResource: FSHResource.Brands, + fields: new() + { + new(brand => brand.Id, L["Id"], "Id"), + new(brand => brand.Name, L["Name"], "Name"), + new(brand => brand.Description, L["Description"], "Description"), + }, + idFunc: brand => brand.Id, + searchFunc: async filter => (await BrandsClient + .SearchAsync(filter.Adapt())) + .Adapt>(), + createFunc: async brand => await BrandsClient.CreateAsync(brand.Adapt()), + updateFunc: async (id, brand) => await BrandsClient.UpdateAsync(id, brand), + deleteFunc: async id => await BrandsClient.DeleteAsync(id), + exportAction: string.Empty); +} \ No newline at end of file diff --git a/src/Client/Pages/Catalog/Products.razor b/src/Client/Pages/Catalog/Products.razor new file mode 100644 index 0000000..89b083e --- /dev/null +++ b/src/Client/Pages/Catalog/Products.razor @@ -0,0 +1,78 @@ +@page "/catalog/products" +@attribute [MustHavePermission(FSHAction.View, FSHResource.Products)] + +@inject IStringLocalizer L + + + + + + + + @L["Minimum Rate"]: @_searchMinimumRate.ToString() + @L["Maximum Rate"]: @_searchMaximumRate.ToString() + + + + @if (!Context.AddEditModal.IsCreate) + { + + + + } + + + + + + + + + + + + + + + @if(!string.IsNullOrEmpty(context.ImageInBytes)) + { + + } + else + { + + } + + +
+ + @L["Upload"] + + @if(!Context.AddEditModal.IsCreate && !string.IsNullOrEmpty(context.ImagePath) && string.IsNullOrEmpty(context.ImageInBytes)) + { + + @L["View"] + + + + @L["Delete"] + + } + @if(!string.IsNullOrEmpty(context.ImageInBytes)) + { + + @L["Clear"] + + } +
+
+
+
+ +
\ No newline at end of file diff --git a/src/Client/Pages/Catalog/Products.razor.cs b/src/Client/Pages/Catalog/Products.razor.cs new file mode 100644 index 0000000..2995de4 --- /dev/null +++ b/src/Client/Pages/Catalog/Products.razor.cs @@ -0,0 +1,159 @@ +using RewardsPlus.BlazorWebAssembly.Client.Components.EntityTable; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common; +using RewardsPlus.WebApi.Shared.Authorization; +using Mapster; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Forms; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Catalog; + +public partial class Products +{ + [Inject] + protected IProductsClient ProductsClient { get; set; } = default!; + [Inject] + protected IBrandsClient BrandsClient { get; set; } = default!; + + protected EntityServerTableContext Context { get; set; } = default!; + + private EntityTable _table = default!; + + protected override void OnInitialized() => + Context = new( + entityName: L["Product"], + entityNamePlural: L["Products"], + entityResource: FSHResource.Products, + fields: new() + { + new(prod => prod.Id, L["Id"], "Id"), + new(prod => prod.Name, L["Name"], "Name"), + new(prod => prod.BrandName, L["Brand"], "Brand.Name"), + new(prod => prod.Description, L["Description"], "Description"), + new(prod => prod.Rate, L["Rate"], "Rate") + }, + enableAdvancedSearch: true, + idFunc: prod => prod.Id, + searchFunc: async filter => + { + var productFilter = filter.Adapt(); + + productFilter.BrandId = SearchBrandId == default ? null : SearchBrandId; + productFilter.MinimumRate = SearchMinimumRate; + productFilter.MaximumRate = SearchMaximumRate; + + var result = await ProductsClient.SearchAsync(productFilter); + return result.Adapt>(); + }, + createFunc: async prod => + { + if (!string.IsNullOrEmpty(prod.ImageInBytes)) + { + prod.Image = new FileUploadRequest() { Data = prod.ImageInBytes, Extension = prod.ImageExtension ?? string.Empty, Name = $"{prod.Name}_{Guid.NewGuid():N}" }; + } + + await ProductsClient.CreateAsync(prod.Adapt()); + prod.ImageInBytes = string.Empty; + }, + updateFunc: async (id, prod) => + { + if (!string.IsNullOrEmpty(prod.ImageInBytes)) + { + prod.DeleteCurrentImage = true; + prod.Image = new FileUploadRequest() { Data = prod.ImageInBytes, Extension = prod.ImageExtension ?? string.Empty, Name = $"{prod.Name}_{Guid.NewGuid():N}" }; + } + + await ProductsClient.UpdateAsync(id, prod.Adapt()); + prod.ImageInBytes = string.Empty; + }, + exportFunc: async filter => + { + var exportFilter = filter.Adapt(); + + exportFilter.BrandId = SearchBrandId == default ? null : SearchBrandId; + exportFilter.MinimumRate = SearchMinimumRate; + exportFilter.MaximumRate = SearchMaximumRate; + + return await ProductsClient.ExportAsync(exportFilter); + }, + deleteFunc: async id => await ProductsClient.DeleteAsync(id)); + + // Advanced Search + + private Guid _searchBrandId; + private Guid SearchBrandId + { + get => _searchBrandId; + set + { + _searchBrandId = value; + _ = _table.ReloadDataAsync(); + } + } + + private decimal _searchMinimumRate; + private decimal SearchMinimumRate + { + get => _searchMinimumRate; + set + { + _searchMinimumRate = value; + _ = _table.ReloadDataAsync(); + } + } + + private decimal _searchMaximumRate = 9999; + private decimal SearchMaximumRate + { + get => _searchMaximumRate; + set + { + _searchMaximumRate = value; + _ = _table.ReloadDataAsync(); + } + } + + // TODO : Make this as a shared service or something? Since it's used by Profile Component also for now, and literally any other component that will have image upload. + // The new service should ideally return $"data:{ApplicationConstants.StandardImageFormat};base64,{Convert.ToBase64String(buffer)}" + private async Task UploadFiles(InputFileChangeEventArgs e) + { + if (e.File != null) + { + string? extension = Path.GetExtension(e.File.Name); + if (!ApplicationConstants.SupportedImageFormats.Contains(extension.ToLower())) + { + Snackbar.Add("Image Format Not Supported.", Severity.Error); + return; + } + + Context.AddEditModal.RequestModel.ImageExtension = extension; + var imageFile = await e.File.RequestImageFileAsync(ApplicationConstants.StandardImageFormat, ApplicationConstants.MaxImageWidth, ApplicationConstants.MaxImageHeight); + byte[]? buffer = new byte[imageFile.Size]; + await imageFile.OpenReadStream(ApplicationConstants.MaxAllowedSize).ReadAsync(buffer); + Context.AddEditModal.RequestModel.ImageInBytes = $"data:{ApplicationConstants.StandardImageFormat};base64,{Convert.ToBase64String(buffer)}"; + Context.AddEditModal.ForceRender(); + } + } + + public void ClearImageInBytes() + { + Context.AddEditModal.RequestModel.ImageInBytes = string.Empty; + Context.AddEditModal.ForceRender(); + } + + public void SetDeleteCurrentImageFlag() + { + Context.AddEditModal.RequestModel.ImageInBytes = string.Empty; + Context.AddEditModal.RequestModel.ImagePath = string.Empty; + Context.AddEditModal.RequestModel.DeleteCurrentImage = true; + Context.AddEditModal.ForceRender(); + } +} + +public class ProductViewModel : UpdateProductRequest +{ + public string? ImagePath { get; set; } + public string? ImageInBytes { get; set; } + public string? ImageExtension { get; set; } +} \ No newline at end of file diff --git a/src/Client/Pages/Identity/Account/Account.razor b/src/Client/Pages/Identity/Account/Account.razor new file mode 100644 index 0000000..4d89ede --- /dev/null +++ b/src/Client/Pages/Identity/Account/Account.razor @@ -0,0 +1,33 @@ +@page "/account" + +@inject IStringLocalizer L + + + + + + + + @if (!SecurityTabHidden) + { + + + + } + + +@code +{ + [Inject] + public IAuthenticationService AuthService { get; set; } = default!; + + public bool SecurityTabHidden { get; set; } = false; + + protected override void OnInitialized() + { + if (AuthService.ProviderType == AuthProvider.AzureAd) + { + SecurityTabHidden = true; + } + } +} \ No newline at end of file diff --git a/src/Client/Pages/Identity/Account/Profile.razor b/src/Client/Pages/Identity/Account/Profile.razor new file mode 100644 index 0000000..ab54cf8 --- /dev/null +++ b/src/Client/Pages/Identity/Account/Profile.razor @@ -0,0 +1,80 @@ +@inject IStringLocalizer L + + + + + +
+ @if (!string.IsNullOrEmpty(_imageUrl)) + { + + } + else + { + @_firstLetterOfName + } +
+ @_profileModel.UserName + @_profileModel.Email +
+ + +
+
+ + + + + + @L["Profile Details"] + + + + + + + + + + + + + + + + + + + @L["Save Changes"] + + + + +
\ No newline at end of file diff --git a/src/Client/Pages/Identity/Account/Profile.razor.cs b/src/Client/Pages/Identity/Account/Profile.razor.cs new file mode 100644 index 0000000..2625e0c --- /dev/null +++ b/src/Client/Pages/Identity/Account/Profile.razor.cs @@ -0,0 +1,100 @@ +using System.Security.Claims; +using RewardsPlus.BlazorWebAssembly.Client.Components.Common; +using RewardsPlus.BlazorWebAssembly.Client.Components.Dialogs; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common; +using RewardsPlus.BlazorWebAssembly.Client.Shared; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Authorization; +using Microsoft.AspNetCore.Components.Forms; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Identity.Account; + +public partial class Profile +{ + [CascadingParameter] + protected Task AuthState { get; set; } = default!; + [Inject] + protected IAuthenticationService AuthService { get; set; } = default!; + [Inject] + protected IPersonalClient PersonalClient { get; set; } = default!; + + private readonly UpdateUserRequest _profileModel = new(); + + private string? _imageUrl; + private string? _userId; + private char _firstLetterOfName; + + private CustomValidation? _customValidation; + + protected override async Task OnInitializedAsync() + { + if ((await AuthState).User is { } user) + { + _userId = user.GetUserId(); + _profileModel.Email = user.GetEmail() ?? string.Empty; + _profileModel.UserName = user.GetFirstName() ?? string.Empty; + _profileModel.PhoneNumber = user.GetPhoneNumber(); + _imageUrl = string.IsNullOrEmpty(user?.GetImageUrl()) ? string.Empty : (Config[ConfigNames.ApiBaseUrl] + user?.GetImageUrl()); + if (_userId is not null) _profileModel.Id = _userId; + } + + if (_profileModel.UserName?.Length > 0) + { + _firstLetterOfName = _profileModel.UserName.ToUpper().FirstOrDefault(); + } + } + + private async Task UpdateProfileAsync() + { + if (await ApiHelper.ExecuteCallGuardedAsync( + () => PersonalClient.UpdateProfileAsync(_profileModel), Snackbar, _customValidation)) + { + Snackbar.Add(L["Your Profile has been updated. Please Login again to Continue."], Severity.Success); + await AuthService.ReLoginAsync(Navigation.Uri); + } + } + + private async Task UploadFiles(InputFileChangeEventArgs e) + { + var file = e.File; + if (file is not null) + { + string? extension = Path.GetExtension(file.Name); + if (!ApplicationConstants.SupportedImageFormats.Contains(extension.ToLower())) + { + Snackbar.Add("Image Format Not Supported.", Severity.Error); + return; + } + + string? fileName = $"{_userId}-{Guid.NewGuid():N}"; + fileName = fileName[..Math.Min(fileName.Length, 90)]; + var imageFile = await file.RequestImageFileAsync(ApplicationConstants.StandardImageFormat, ApplicationConstants.MaxImageWidth, ApplicationConstants.MaxImageHeight); + byte[]? buffer = new byte[imageFile.Size]; + await imageFile.OpenReadStream(ApplicationConstants.MaxAllowedSize).ReadAsync(buffer); + string? base64String = $"data:{ApplicationConstants.StandardImageFormat};base64,{Convert.ToBase64String(buffer)}"; + _profileModel.Image = new FileUploadRequest() { Name = fileName, Data = base64String, Extension = extension }; + + await UpdateProfileAsync(); + } + } + + public async Task RemoveImageAsync() + { + string deleteContent = L["You're sure you want to delete your Profile Image?"]; + var parameters = new DialogParameters + { + { nameof(DeleteConfirmation.ContentText), deleteContent } + }; + var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.Small, FullWidth = true, DisableBackdropClick = true }; + var dialog = DialogService.Show(L["Delete"], parameters, options); + var result = await dialog.Result; + if (!result.Cancelled) + { + _profileModel.DeleteCurrentImage = true; + await UpdateProfileAsync(); + } + } +} \ No newline at end of file diff --git a/src/Client/Pages/Identity/Account/Security.razor b/src/Client/Pages/Identity/Account/Security.razor new file mode 100644 index 0000000..c63d189 --- /dev/null +++ b/src/Client/Pages/Identity/Account/Security.razor @@ -0,0 +1,41 @@ +@inject IStringLocalizer L + + + + + + @L["Change Password"] + + + + + + + + + + + + + + + + + + + + @L["Change Password"] + + + \ No newline at end of file diff --git a/src/Client/Pages/Identity/Account/Security.razor.cs b/src/Client/Pages/Identity/Account/Security.razor.cs new file mode 100644 index 0000000..5b32337 --- /dev/null +++ b/src/Client/Pages/Identity/Account/Security.razor.cs @@ -0,0 +1,72 @@ +using RewardsPlus.BlazorWebAssembly.Client.Components.Common; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Shared; +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Identity.Account; + +public partial class Security +{ + [Inject] + public IPersonalClient PersonalClient { get; set; } = default!; + + private readonly ChangePasswordRequest _passwordModel = new(); + + private CustomValidation? _customValidation; + + private async Task ChangePasswordAsync() + { + if (await ApiHelper.ExecuteCallGuardedAsync( + () => PersonalClient.ChangePasswordAsync(_passwordModel), + Snackbar, + _customValidation, + L["Password Changed!"])) + { + _passwordModel.Password = string.Empty; + _passwordModel.NewPassword = string.Empty; + _passwordModel.ConfirmNewPassword = string.Empty; + } + } + + private bool _currentPasswordVisibility; + private InputType _currentPasswordInput = InputType.Password; + private string _currentPasswordInputIcon = Icons.Material.Filled.VisibilityOff; + private bool _newPasswordVisibility; + private InputType _newPasswordInput = InputType.Password; + private string _newPasswordInputIcon = Icons.Material.Filled.VisibilityOff; + + private void TogglePasswordVisibility(bool newPassword) + { + if (newPassword) + { + if (_newPasswordVisibility) + { + _newPasswordVisibility = false; + _newPasswordInputIcon = Icons.Material.Filled.VisibilityOff; + _newPasswordInput = InputType.Password; + } + else + { + _newPasswordVisibility = true; + _newPasswordInputIcon = Icons.Material.Filled.Visibility; + _newPasswordInput = InputType.Text; + } + } + else + { + if (_currentPasswordVisibility) + { + _currentPasswordVisibility = false; + _currentPasswordInputIcon = Icons.Material.Filled.VisibilityOff; + _currentPasswordInput = InputType.Password; + } + else + { + _currentPasswordVisibility = true; + _currentPasswordInputIcon = Icons.Material.Filled.Visibility; + _currentPasswordInput = InputType.Text; + } + } + } +} \ No newline at end of file diff --git a/src/Client/Pages/Identity/Roles/RolePermissions.razor b/src/Client/Pages/Identity/Roles/RolePermissions.razor new file mode 100644 index 0000000..c51c397 --- /dev/null +++ b/src/Client/Pages/Identity/Roles/RolePermissions.razor @@ -0,0 +1,75 @@ +@page "/roles/{Id}/permissions" +@attribute [MustHavePermission(FSHAction.View, FSHResource.RoleClaims)] + +@inject IStringLocalizer L + + + +@if (!_loaded) +{ + +} +else +{ + + @foreach (var group in _groupedRoleClaims.Keys) + { + var selectedRoleClaimsInGroup = _groupedRoleClaims[group].Where(c => c.Enabled).ToList(); + var allRoleClaimsInGroup = _groupedRoleClaims[group].ToList(); + + + +
+ @L["Back"] + + @if (_canEditRoleClaims) + { + @L["Update Permissions"] + + } +
+ + @if (_canSearchRoleClaims) + { + + + } +
+ + + + @L["Permission Name"] + + + + @L["Description"] + + + @L["Status"] + + + + + + + + + + + + + + + + + + +
+
+ } +
+} \ No newline at end of file diff --git a/src/Client/Pages/Identity/Roles/RolePermissions.razor.cs b/src/Client/Pages/Identity/Roles/RolePermissions.razor.cs new file mode 100644 index 0000000..859124a --- /dev/null +++ b/src/Client/Pages/Identity/Roles/RolePermissions.razor.cs @@ -0,0 +1,114 @@ +using System.Security.Claims; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; +using RewardsPlus.BlazorWebAssembly.Client.Shared; +using RewardsPlus.WebApi.Shared.Authorization; +using RewardsPlus.WebApi.Shared.Multitenancy; +using Mapster; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Authorization; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Identity.Roles; + +public partial class RolePermissions +{ + [Parameter] + public string Id { get; set; } = default!; // from route + [CascadingParameter] + protected Task AuthState { get; set; } = default!; + [Inject] + protected IAuthorizationService AuthService { get; set; } = default!; + [Inject] + protected IRolesClient RolesClient { get; set; } = default!; + + private Dictionary> _groupedRoleClaims = default!; + + public string _title = string.Empty; + public string _description = string.Empty; + + private string _searchString = string.Empty; + + private bool _canEditRoleClaims; + private bool _canSearchRoleClaims; + private bool _loaded; + + static RolePermissions() => TypeAdapterConfig.NewConfig().MapToConstructor(true); + + protected override async Task OnInitializedAsync() + { + var state = await AuthState; + _canEditRoleClaims = await AuthService.HasPermissionAsync(state.User, FSHAction.Update, FSHResource.RoleClaims); + _canSearchRoleClaims = await AuthService.HasPermissionAsync(state.User, FSHAction.View, FSHResource.RoleClaims); + + if (await ApiHelper.ExecuteCallGuardedAsync( + () => RolesClient.GetByIdWithPermissionsAsync(Id), Snackbar) + is RoleDto role && role.Permissions is not null) + { + _title = string.Format(L["{0} Permissions"], role.Name); + _description = string.Format(L["Manage {0} Role Permissions"], role.Name); + + var permissions = state.User.GetTenant() == MultitenancyConstants.Root.Id + ? FSHPermissions.All + : FSHPermissions.Admin; + + _groupedRoleClaims = permissions + .GroupBy(p => p.Resource) + .ToDictionary(g => g.Key, g => g.Select(p => + { + var permission = p.Adapt(); + permission.Enabled = role.Permissions.Contains(permission.Name); + return permission; + }).ToList()); + } + + _loaded = true; + } + + private Color GetGroupBadgeColor(int selected, int all) + { + if (selected == 0) + return Color.Error; + + if (selected == all) + return Color.Success; + + return Color.Info; + } + + private async Task SaveAsync() + { + var allPermissions = _groupedRoleClaims.Values.SelectMany(a => a); + var selectedPermissions = allPermissions.Where(a => a.Enabled); + var request = new UpdateRolePermissionsRequest() + { + RoleId = Id, + Permissions = selectedPermissions.Where(x => x.Enabled).Select(x => x.Name).ToList(), + }; + + if (await ApiHelper.ExecuteCallGuardedAsync( + () => RolesClient.UpdatePermissionsAsync(request.RoleId, request), + Snackbar, + successMessage: L["Updated Permissions."]) + is not null) + { + Navigation.NavigateTo("/roles"); + } + } + + private bool Search(PermissionViewModel permission) => + string.IsNullOrWhiteSpace(_searchString) + || permission.Name.Contains(_searchString, StringComparison.OrdinalIgnoreCase) is true + || permission.Description.Contains(_searchString, StringComparison.OrdinalIgnoreCase) is true; +} + +public record PermissionViewModel : FSHPermission +{ + public bool Enabled { get; set; } + + public PermissionViewModel(string Description, string Action, string Resource, bool IsBasic = false, bool IsRoot = false) + : base(Description, Action, Resource, IsBasic, IsRoot) + { + } +} \ No newline at end of file diff --git a/src/Client/Pages/Identity/Roles/Roles.razor b/src/Client/Pages/Identity/Roles/Roles.razor new file mode 100644 index 0000000..c24582a --- /dev/null +++ b/src/Client/Pages/Identity/Roles/Roles.razor @@ -0,0 +1,33 @@ +@page "/roles" +@attribute [MustHavePermission(FSHAction.View, FSHResource.Roles)] + +@inject IStringLocalizer L + + + + + + + @if (_canViewRoleClaims) + { + @L["Manage Permission"] + } + + + + @if (!Context.AddEditModal.IsCreate) + { + + + + } + + + + + + + + + \ No newline at end of file diff --git a/src/Client/Pages/Identity/Roles/Roles.razor.cs b/src/Client/Pages/Identity/Roles/Roles.razor.cs new file mode 100644 index 0000000..42a08a4 --- /dev/null +++ b/src/Client/Pages/Identity/Roles/Roles.razor.cs @@ -0,0 +1,60 @@ +using RewardsPlus.BlazorWebAssembly.Client.Components.EntityTable; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; +using RewardsPlus.WebApi.Shared.Authorization; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Authorization; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Identity.Roles; + +public partial class Roles +{ + [CascadingParameter] + protected Task AuthState { get; set; } = default!; + [Inject] + protected IAuthorizationService AuthService { get; set; } = default!; + [Inject] + private IRolesClient RolesClient { get; set; } = default!; + + protected EntityClientTableContext Context { get; set; } = default!; + + private bool _canViewRoleClaims; + + protected override async Task OnInitializedAsync() + { + var state = await AuthState; + _canViewRoleClaims = await AuthService.HasPermissionAsync(state.User, FSHAction.View, FSHResource.RoleClaims); + + Context = new( + entityName: L["Role"], + entityNamePlural: L["Roles"], + entityResource: FSHResource.Roles, + searchAction: FSHAction.View, + fields: new() + { + new(role => role.Id, L["Id"]), + new(role => role.Name, L["Name"]), + new(role => role.Description, L["Description"]) + }, + idFunc: role => role.Id, + loadDataFunc: async () => (await RolesClient.GetListAsync()).ToList(), + searchFunc: (searchString, role) => + string.IsNullOrWhiteSpace(searchString) + || role.Name?.Contains(searchString, StringComparison.OrdinalIgnoreCase) == true + || role.Description?.Contains(searchString, StringComparison.OrdinalIgnoreCase) == true, + createFunc: async role => await RolesClient.RegisterRoleAsync(role), + updateFunc: async (_, role) => await RolesClient.RegisterRoleAsync(role), + deleteFunc: async id => await RolesClient.DeleteAsync(id), + hasExtraActionsFunc: () => _canViewRoleClaims, + canUpdateEntityFunc: e => !FSHRoles.IsDefault(e.Name), + canDeleteEntityFunc: e => !FSHRoles.IsDefault(e.Name), + exportAction: string.Empty); + } + + private void ManagePermissions(string? roleId) + { + ArgumentNullException.ThrowIfNull(roleId, nameof(roleId)); + Navigation.NavigateTo($"/roles/{roleId}/permissions"); + } +} \ No newline at end of file diff --git a/src/Client/Pages/Identity/Users/UserProfile.razor b/src/Client/Pages/Identity/Users/UserProfile.razor new file mode 100644 index 0000000..5eeaddf --- /dev/null +++ b/src/Client/Pages/Identity/Users/UserProfile.razor @@ -0,0 +1,148 @@ +@page "/users/{Id}/profile" +@attribute [MustHavePermission(FSHAction.View, FSHResource.Users)] + +@inject IStringLocalizer _localizer + + +@if (!_loaded) +{ + +} +else +{ + + + @if (_canToggleUserStatus) + { + + + + + @_localizer["Administrator Settings."] + @_localizer["This is an Administrator Only View."] + + + + + + + + @_localizer["Save Changes"] + + + + + + } + + + + +
+ @if (!string.IsNullOrEmpty(_imageUrl)) + { + + } + else + { + @_firstLetterOfName + + } +
+ @_firstName @_lastName + @_email +
+ +
+ @if (!string.IsNullOrEmpty(_imageUrl)) + { + + @_localizer["View"] + + } +
+ +
+
+
+ + + + + @_localizer["Public Profile"] + + + + + + @_firstName + + + @_lastName + + + @_phoneNumber + + + + @_email + + + + + +
+} + +@code +{ +public class CustomStringToBoolConverter : BoolConverter + { + + public CustomStringToBoolConverter() + { + SetFunc = OnSet; + GetFunc = OnGet; + } + private string TrueString = "User Active"; + private string FalseString = "no, at all"; + private string NullString = "I don't know"; + + private string OnGet(bool? value) + { + try + { + return (value == true) ? TrueString : FalseString; + } + catch (Exception e) + { + UpdateGetError("Conversion error: " + e.Message); + return NullString; + } + } + + private bool? OnSet(string arg) + { + if (arg == null) + return null; + try + { + if (arg == TrueString) + return true; + if (arg == FalseString) + return false; + else + return null; + } + catch (FormatException e) + { + UpdateSetError("Conversion error: " + e.Message); + return null; + } + } + + } +} \ No newline at end of file diff --git a/src/Client/Pages/Identity/Users/UserProfile.razor.cs b/src/Client/Pages/Identity/Users/UserProfile.razor.cs new file mode 100644 index 0000000..8e3d0d8 --- /dev/null +++ b/src/Client/Pages/Identity/Users/UserProfile.razor.cs @@ -0,0 +1,74 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common; +using RewardsPlus.BlazorWebAssembly.Client.Shared; +using RewardsPlus.WebApi.Shared.Authorization; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Authorization; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Identity.Users; + +public partial class UserProfile +{ + [CascadingParameter] + protected Task AuthState { get; set; } = default!; + [Inject] + protected IAuthorizationService AuthService { get; set; } = default!; + [Inject] + protected IUsersClient UsersClient { get; set; } = default!; + + [Parameter] + public string? Id { get; set; } + [Parameter] + public string? Title { get; set; } + [Parameter] + public string? Description { get; set; } + + private bool _active; + private bool _emailConfirmed; + private char _firstLetterOfName; + private string? _firstName; + private string? _lastName; + private string? _phoneNumber; + private string? _email; + private string? _imageUrl; + private bool _loaded; + private bool _canToggleUserStatus; + + private async Task ToggleUserStatus() + { + var request = new ToggleUserStatusRequest { ActivateUser = _active, UserId = Id }; + await ApiHelper.ExecuteCallGuardedAsync(() => UsersClient.ToggleStatusAsync(Id, request), Snackbar); + Navigation.NavigateTo("/users"); + } + + [Parameter] + public string? ImageUrl { get; set; } + + protected override async Task OnInitializedAsync() + { + if (await ApiHelper.ExecuteCallGuardedAsync( + () => UsersClient.GetByIdAsync(Id), Snackbar) + is UserDetailsDto user) + { + _firstName = user.FirstName; + _lastName = user.LastName; + _email = user.Email; + _phoneNumber = user.PhoneNumber; + _active = user.IsActive; + _emailConfirmed = user.EmailConfirmed; + _imageUrl = string.IsNullOrEmpty(user.ImageUrl) ? string.Empty : (Config[ConfigNames.ApiBaseUrl] + user.ImageUrl); + Title = $"{_firstName} {_lastName}'s {_localizer["Profile"]}"; + Description = _email; + if (_firstName?.Length > 0) + { + _firstLetterOfName = _firstName.ToUpper().FirstOrDefault(); + } + } + + var state = await AuthState; + _canToggleUserStatus = await AuthService.HasPermissionAsync(state.User, FSHAction.Update, FSHResource.Users); + _loaded = true; + } +} \ No newline at end of file diff --git a/src/Client/Pages/Identity/Users/UserRoles.razor b/src/Client/Pages/Identity/Users/UserRoles.razor new file mode 100644 index 0000000..bc82479 --- /dev/null +++ b/src/Client/Pages/Identity/Users/UserRoles.razor @@ -0,0 +1,67 @@ +@page "/users/{Id}/roles" +@attribute [MustHavePermission(FSHAction.View, FSHResource.UserRoles)] + +@inject IStringLocalizer L + + + +@if (!_loaded) +{ + +} +else +{ + + +
+ + @L["Back"] + + @if (_canEditUsers) + { + + @L["Update"] + + } +
+ + @if (_canSearchRoles) + { + + + } +
+ + + @L["Role Name"] + + + + @L["Description"] + + + + @L["Status"] + + + + + + + + + + + + + + + + + + +
+} \ No newline at end of file diff --git a/src/Client/Pages/Identity/Users/UserRoles.razor.cs b/src/Client/Pages/Identity/Users/UserRoles.razor.cs new file mode 100644 index 0000000..399b6e7 --- /dev/null +++ b/src/Client/Pages/Identity/Users/UserRoles.razor.cs @@ -0,0 +1,77 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; +using RewardsPlus.BlazorWebAssembly.Client.Shared; +using RewardsPlus.WebApi.Shared.Authorization; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Authorization; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Identity.Users; + +public partial class UserRoles +{ + [Parameter] + public string? Id { get; set; } + [CascadingParameter] + protected Task AuthState { get; set; } = default!; + [Inject] + protected IAuthorizationService AuthService { get; set; } = default!; + [Inject] + protected IUsersClient UsersClient { get; set; } = default!; + + private List _userRolesList = default!; + + private string _title = string.Empty; + private string _description = string.Empty; + + private string _searchString = string.Empty; + + private bool _canEditUsers; + private bool _canSearchRoles; + private bool _loaded; + + protected override async Task OnInitializedAsync() + { + var state = await AuthState; + _canEditUsers = await AuthService.HasPermissionAsync(state.User, FSHAction.Update, FSHResource.Users); + _canSearchRoles = await AuthService.HasPermissionAsync(state.User, FSHAction.View, FSHResource.UserRoles); + + if (await ApiHelper.ExecuteCallGuardedAsync( + () => UsersClient.GetByIdAsync(Id), Snackbar) + is UserDetailsDto user) + { + _title = $"{user.FirstName} {user.LastName}"; + _description = string.Format(L["Manage {0} {1}'s Roles"], user.FirstName, user.LastName); + + if (await ApiHelper.ExecuteCallGuardedAsync( + () => UsersClient.GetRolesAsync(user.Id.ToString()), Snackbar) + is ICollection response) + { + _userRolesList = response.ToList(); + } + } + + _loaded = true; + } + + private async Task SaveAsync() + { + var request = new UserRolesRequest() + { + UserRoles = _userRolesList + }; + + if (await ApiHelper.ExecuteCallGuardedAsync( + () => UsersClient.AssignRolesAsync(Id, request), + Snackbar, + successMessage: L["Updated User Roles."]) + is not null) + { + Navigation.NavigateTo("/users"); + } + } + + private bool Search(UserRoleDto userRole) => + string.IsNullOrWhiteSpace(_searchString) + || userRole.RoleName?.Contains(_searchString, StringComparison.OrdinalIgnoreCase) is true; +} \ No newline at end of file diff --git a/src/Client/Pages/Identity/Users/Users.razor b/src/Client/Pages/Identity/Users/Users.razor new file mode 100644 index 0000000..9929ac9 --- /dev/null +++ b/src/Client/Pages/Identity/Users/Users.razor @@ -0,0 +1,40 @@ +@page "/users" +@attribute [MustHavePermission(FSHAction.View, FSHResource.Users)] + +@inject IStringLocalizer L + + + + + + @L["View Profile"] + @if (_canViewRoles) + { + @L["Manage Roles"] + } + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/Client/Pages/Identity/Users/Users.razor.cs b/src/Client/Pages/Identity/Users/Users.razor.cs new file mode 100644 index 0000000..609412a --- /dev/null +++ b/src/Client/Pages/Identity/Users/Users.razor.cs @@ -0,0 +1,95 @@ +using RewardsPlus.BlazorWebAssembly.Client.Components.EntityTable; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; +using RewardsPlus.WebApi.Shared.Authorization; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Authorization; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Identity.Users; + +public partial class Users +{ + [CascadingParameter] + protected Task AuthState { get; set; } = default!; + [Inject] + protected IAuthorizationService AuthService { get; set; } = default!; + + [Inject] + protected IUsersClient UsersClient { get; set; } = default!; + + protected EntityClientTableContext Context { get; set; } = default!; + + private bool _canExportUsers; + private bool _canViewRoles; + + // Fields for editform + protected string Password { get; set; } = string.Empty; + protected string ConfirmPassword { get; set; } = string.Empty; + + private bool _passwordVisibility; + private InputType _passwordInput = InputType.Password; + private string _passwordInputIcon = Icons.Material.Filled.VisibilityOff; + + protected override async Task OnInitializedAsync() + { + var user = (await AuthState).User; + _canExportUsers = await AuthService.HasPermissionAsync(user, FSHAction.Export, FSHResource.Users); + _canViewRoles = await AuthService.HasPermissionAsync(user, FSHAction.View, FSHResource.UserRoles); + + Context = new( + entityName: L["User"], + entityNamePlural: L["Users"], + entityResource: FSHResource.Users, + searchAction: FSHAction.View, + updateAction: string.Empty, + deleteAction: string.Empty, + fields: new() + { + new(user => user.FirstName, L["First Name"]), + new(user => user.LastName, L["Last Name"]), + new(user => user.UserName, L["UserName"]), + new(user => user.Email, L["Email"]), + new(user => user.PhoneNumber, L["PhoneNumber"]), + new(user => user.EmailConfirmed, L["Email Confirmation"], Type: typeof(bool)), + new(user => user.IsActive, L["Active"], Type: typeof(bool)) + }, + idFunc: user => user.Id, + loadDataFunc: async () => (await UsersClient.GetListAsync()).ToList(), + searchFunc: (searchString, user) => + string.IsNullOrWhiteSpace(searchString) + || user.FirstName?.Contains(searchString, StringComparison.OrdinalIgnoreCase) == true + || user.LastName?.Contains(searchString, StringComparison.OrdinalIgnoreCase) == true + || user.Email?.Contains(searchString, StringComparison.OrdinalIgnoreCase) == true + || user.PhoneNumber?.Contains(searchString, StringComparison.OrdinalIgnoreCase) == true + || user.UserName?.Contains(searchString, StringComparison.OrdinalIgnoreCase) == true, + createFunc: user => UsersClient.CreateAsync(user), + hasExtraActionsFunc: () => true, + exportAction: string.Empty); + } + + private void ViewProfile(in Guid userId) => + Navigation.NavigateTo($"/users/{userId}/profile"); + + private void ManageRoles(in Guid userId) => + Navigation.NavigateTo($"/users/{userId}/roles"); + + private void TogglePasswordVisibility() + { + if (_passwordVisibility) + { + _passwordVisibility = false; + _passwordInputIcon = Icons.Material.Filled.VisibilityOff; + _passwordInput = InputType.Password; + } + else + { + _passwordVisibility = true; + _passwordInputIcon = Icons.Material.Filled.Visibility; + _passwordInput = InputType.Text; + } + + Context.AddEditModal.ForceRender(); + } +} \ No newline at end of file diff --git a/src/Client/Pages/Index.razor b/src/Client/Pages/Index.razor new file mode 100644 index 0000000..362ae97 --- /dev/null +++ b/src/Client/Pages/Index.razor @@ -0,0 +1,95 @@ +@page "/home" +@page "/" + +@inject IStringLocalizer L + + + + +
+ +
+
+ + @L["RewardsPlus"] + @L["RewardsPlus WebAssembly Client"] + + + + + @L["Built with the goodness of"] MudBlazor @L["Component Library"]. + + + @L["Compatible with"] fullstackhero .NET WebAPI Boilerplate v1. + + + +
+ @L["Get Started"] + @L["Star on GitHub"] +
+
+ + @L["Version 1.0"] + + + + + @L["In case you are stuck anywhere or have any queries regarding this implementation, I have compiled a Quick Start Guide for you reference."] + @L["Read The Guide"] + + + + + + + + + @L["Here are few articles that should help you get started with Blazor."] + + + + + + + + + + + + @L["Application Claims of the currently logged in user."] + + @if (Claims is not null) + { + @foreach (var claim in Claims) + { + + + @claim.Type + + @claim.Value + + } + } + + + + + + @L["Liked this Boilerplate? Star us on Github!"] + +
+
+ +@code { + [CascadingParameter] + public Task AuthState { get; set; } = default!; + + public IEnumerable? Claims { get; set; } + + protected override async Task OnInitializedAsync() + { + var authState = await AuthState; + Claims = authState.User.Claims; + } +} \ No newline at end of file diff --git a/src/Client/Pages/Multitenancy/Tenants.razor b/src/Client/Pages/Multitenancy/Tenants.razor new file mode 100644 index 0000000..3f3da22 --- /dev/null +++ b/src/Client/Pages/Multitenancy/Tenants.razor @@ -0,0 +1,107 @@ +@page "/tenants" +@attribute [MustHavePermission(FSHAction.View, FSHResource.Tenants)] + +@inject IStringLocalizer L +@inject IAuthenticationService Authentication + + + + + + + + + + + + + + + + + + @if (Authentication.ProviderType == AuthProvider.AzureAd) + { + + + + } + + + @if(_canUpgrade) + { + @L["Upgrade Subscription"] + } + + @((context.ShowDetails == true) ? L["Hide"] : L["Show"]) @L["Tenant Details"] + + @if (_canModify) + { + @if (!context.IsActive) + { + @L["Activate Tenant"] + } + else + { + @L["Deactivate Tenant"] + } + } + + + + @if (context.ShowDetails) + { + + + + + + @L["Details for Tenant"] : + @context.Id + + + + + + + + @if(string.IsNullOrEmpty(context.ConnectionString?.Trim())) + { + @L["Shared Database"] + } + else + { + + + } + + @if (Authentication.ProviderType == AuthProvider.AzureAd) + { + + + + + } + +
@L["Connection String"] + + @context.ConnectionString?.Trim() + +
@L["Issuer"] + + + @context.Issuer?.Trim() + + +
+
+
+ +
+ } +
+ +
\ No newline at end of file diff --git a/src/Client/Pages/Multitenancy/Tenants.razor.cs b/src/Client/Pages/Multitenancy/Tenants.razor.cs new file mode 100644 index 0000000..7d23257 --- /dev/null +++ b/src/Client/Pages/Multitenancy/Tenants.razor.cs @@ -0,0 +1,121 @@ +using RewardsPlus.BlazorWebAssembly.Client.Components.EntityTable; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; +using RewardsPlus.BlazorWebAssembly.Client.Shared; +using RewardsPlus.WebApi.Shared.Authorization; +using Mapster; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Authorization; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Multitenancy; + +public partial class Tenants +{ + [Inject] + private ITenantsClient TenantsClient { get; set; } = default!; + private string? _searchString; + protected EntityClientTableContext Context { get; set; } = default!; + private List _tenants = new(); + public EntityTable EntityTable { get; set; } = default!; + [CascadingParameter] + protected Task AuthState { get; set; } = default!; + [Inject] + protected IAuthorizationService AuthService { get; set; } = default!; + + private bool _canUpgrade; + private bool _canModify; + + protected override async Task OnInitializedAsync() + { + Context = new( + entityName: L["Tenant"], + entityNamePlural: L["Tenants"], + entityResource: FSHResource.Tenants, + searchAction: FSHAction.View, + deleteAction: string.Empty, + updateAction: string.Empty, + fields: new() + { + new(tenant => tenant.Id, L["Id"]), + new(tenant => tenant.Name, L["Name"]), + new(tenant => tenant.AdminEmail, L["Admin Email"]), + new(tenant => tenant.ValidUpto.ToString("MMM dd, yyyy"), L["Valid Upto"]), + new(tenant => tenant.IsActive, L["Active"], Type: typeof(bool)) + }, + loadDataFunc: async () => _tenants = (await TenantsClient.GetListAsync()).Adapt>(), + searchFunc: (searchString, tenantDto) => + string.IsNullOrWhiteSpace(searchString) + || tenantDto.Name.Contains(searchString, StringComparison.OrdinalIgnoreCase), + createFunc: tenant => TenantsClient.CreateAsync(tenant.Adapt()), + hasExtraActionsFunc: () => true, + exportAction: string.Empty); + + var state = await AuthState; + _canUpgrade = await AuthService.HasPermissionAsync(state.User, FSHAction.UpgradeSubscription, FSHResource.Tenants); + _canModify = await AuthService.HasPermissionAsync(state.User, FSHAction.Update, FSHResource.Tenants); + } + + private void ViewTenantDetails(string id) + { + var tenant = _tenants.First(f => f.Id == id); + tenant.ShowDetails = !tenant.ShowDetails; + foreach (var otherTenants in _tenants.Except(new[] { tenant })) + { + otherTenants.ShowDetails = false; + } + } + + private async Task ViewUpgradeSubscriptionModalAsync(string id) + { + var tenant = _tenants.First(f => f.Id == id); + var parameters = new DialogParameters + { + { + nameof(UpgradeSubscriptionModal.Request), + new UpgradeSubscriptionRequest + { + TenantId = tenant.Id, + ExtendedExpiryDate = tenant.ValidUpto + } + } + }; + var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.Small, FullWidth = true, DisableBackdropClick = true }; + var dialog = DialogService.Show(L["Upgrade Subscription"], parameters, options); + var result = await dialog.Result; + if (!result.Cancelled) + { + await EntityTable.ReloadDataAsync(); + } + } + + private async Task DeactivateTenantAsync(string id) + { + if (await ApiHelper.ExecuteCallGuardedAsync( + () => TenantsClient.DeactivateAsync(id), + Snackbar, + null, + L["Tenant Deactivated."]) is not null) + { + await EntityTable.ReloadDataAsync(); + } + } + + private async Task ActivateTenantAsync(string id) + { + if (await ApiHelper.ExecuteCallGuardedAsync( + () => TenantsClient.ActivateAsync(id), + Snackbar, + null, + L["Tenant Activated."]) is not null) + { + await EntityTable.ReloadDataAsync(); + } + } + + public class TenantDetail : TenantDto + { + public bool ShowDetails { get; set; } + } +} \ No newline at end of file diff --git a/src/Client/Pages/Multitenancy/UpgradeSubscriptionModal.razor b/src/Client/Pages/Multitenancy/UpgradeSubscriptionModal.razor new file mode 100644 index 0000000..48921de --- /dev/null +++ b/src/Client/Pages/Multitenancy/UpgradeSubscriptionModal.razor @@ -0,0 +1,58 @@ +@inject IStringLocalizer L +@inject ITenantsClient TenantsClient + + + + + + + @L["Upgrade Subscription"] + + + + + + + + + + + + + + + + + @L["Cancel"] + @L["Upgrade"] + + + + +@code +{ + [Parameter] public UpgradeSubscriptionRequest Request { get; set; } = new(); + [CascadingParameter] private MudDialogInstance MudDialog { get; set; } = default!; + DateTime? date = DateTime.Today; + + protected override void OnInitialized() => + date = Request.ExtendedExpiryDate; + + private async Task UpgradeSubscriptionAsync() + { + Request.ExtendedExpiryDate = date.HasValue ? date.Value : Request.ExtendedExpiryDate; + if (await ApiHelper.ExecuteCallGuardedAsync( + () => TenantsClient.UpgradeSubscriptionAsync(Request.TenantId, Request), + Snackbar, + null, + L["Upgraded Subscription."]) is not null) + { + MudDialog.Close(); + } + } + + public void Cancel() + { + MudDialog.Cancel(); + } +} \ No newline at end of file diff --git a/src/Client/Pages/Personal/AuditLogs.razor b/src/Client/Pages/Personal/AuditLogs.razor new file mode 100644 index 0000000..d10503a --- /dev/null +++ b/src/Client/Pages/Personal/AuditLogs.razor @@ -0,0 +1,131 @@ +@page "/audit-logs" + +@inject IStringLocalizer L + + + + + + + @L["Search in Old Values"] + @L["Search in New Values"] + + + @L["Clear"] + @L["Cancel"] + @L["Ok"] + + + + + + @((context.ShowDetails == true) ? L["Hide"] : L["Show"]) @L["Trail Details"] + + + + @if (context.ShowDetails) + { + + + + + + @L["Details for Trail ID"] : @context.Id + + + + + + @if (!string.IsNullOrEmpty(context.AffectedColumns)) + { + + + + + } + + + + + @if (!string.IsNullOrEmpty(context.OldValues)) + { + + + + + } + @if (!string.IsNullOrEmpty(context.NewValues)) + { + + + + + } + +
@L["Columns Affected"] + + @foreach (var column in context.AffectedColumns.Trim('[').Trim(']').Split(',')) + { + @column.Replace('"', ' ').Trim() + } + +
@L["Primary Key"] + + @context.PrimaryKey?.Trim('{').Trim('}').Replace('"', ' ').Trim() + +
@L["Old Values"] + + + @foreach (var value in context.OldValues.Trim('{').Trim('}').Split(',')) + { + @if (_searchInOldValues) + { + + + + } + else + { + @value.Replace('"', ' ').Trim() + } + } + +
@L["New Values"] + + + @foreach (var value in context.NewValues.Trim('{').Trim('}').Split(',')) + { + @if (_searchInNewValues) + { + + + + } + else + { + @value.Replace('"', ' ').Trim() + } + } + +
+
+
+ +
+ } +
+ +
+ +@code { + private RenderFragment DateFieldTemplate => trail => __builder => + { + + @L["Local"] : @trail.LocalTime.ToString("G") + + + @L["UTC"] : @trail.DateTime.ToString("G") + + }; +} \ No newline at end of file diff --git a/src/Client/Pages/Personal/AuditLogs.razor.cs b/src/Client/Pages/Personal/AuditLogs.razor.cs new file mode 100644 index 0000000..cd71c2c --- /dev/null +++ b/src/Client/Pages/Personal/AuditLogs.razor.cs @@ -0,0 +1,71 @@ +using RewardsPlus.BlazorWebAssembly.Client.Components.EntityTable; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using Mapster; +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Personal; + +public partial class AuditLogs +{ + [Inject] + private IPersonalClient PersonalClient { get; set; } = default!; + + protected EntityClientTableContext Context { get; set; } = default!; + + private string? _searchString; + private MudDateRangePicker _dateRangePicker = default!; + private DateRange? _dateRange; + private bool _searchInOldValues; + private bool _searchInNewValues; + private List _trails = new(); + + // Configure Automapper + static AuditLogs() => + TypeAdapterConfig.NewConfig().Map( + dest => dest.LocalTime, + src => DateTime.SpecifyKind(src.DateTime, DateTimeKind.Utc).ToLocalTime()); + + protected override void OnInitialized() + { + Context = new( + entityNamePlural: L["Trails"], + searchAction: true.ToString(), + fields: new() + { + new(audit => audit.Id, L["Id"]), + new(audit => audit.TableName, L["Table Name"]), + new(audit => audit.DateTime, L["Date"], Template: DateFieldTemplate), + new(audit => audit.Type, L["Type"]) + }, + loadDataFunc: async () => _trails = (await PersonalClient.GetLogsAsync()).Adapt>(), + searchFunc: (searchString, trail) => + (string.IsNullOrWhiteSpace(searchString) // check Search String + || trail.TableName?.Contains(searchString, StringComparison.OrdinalIgnoreCase) == true + || (_searchInOldValues && + trail.OldValues?.Contains(searchString, StringComparison.OrdinalIgnoreCase) == true) + || (_searchInNewValues && + trail.NewValues?.Contains(searchString, StringComparison.OrdinalIgnoreCase) == true)) + && ((_dateRange?.Start is null && _dateRange?.End is null) // check Date Range + || (_dateRange?.Start is not null && _dateRange.End is null && trail.DateTime >= _dateRange.Start) + || (_dateRange?.Start is null && _dateRange?.End is not null && trail.DateTime <= _dateRange.End + new TimeSpan(0, 11, 59, 59, 999)) + || (trail.DateTime >= _dateRange!.Start && trail.DateTime <= _dateRange.End + new TimeSpan(0, 11, 59, 59, 999))), + hasExtraActionsFunc: () => true); + } + + private void ShowBtnPress(Guid id) + { + var trail = _trails.First(f => f.Id == id); + trail.ShowDetails = !trail.ShowDetails; + foreach (var otherTrail in _trails.Except(new[] { trail })) + { + otherTrail.ShowDetails = false; + } + } + + public class RelatedAuditTrail : AuditDto + { + public bool ShowDetails { get; set; } + public DateTime LocalTime { get; set; } + } +} \ No newline at end of file diff --git a/src/Client/Pages/Personal/Dashboard.razor b/src/Client/Pages/Personal/Dashboard.razor new file mode 100644 index 0000000..5e2fd94 --- /dev/null +++ b/src/Client/Pages/Personal/Dashboard.razor @@ -0,0 +1,65 @@ +@page "/dashboard" +@attribute [MustHavePermission(FSHAction.View, FSHResource.Dashboard)] + +@inject IStringLocalizer L + + + +@if (!_loaded) +{ + +} +else +{ + + + + +
+ @L["Products"] + @ProductCount +
+
+
+ + + +
+ @L["Brands"] + @BrandCount +
+
+
+ + + +
+ @L["Registered Users"] + + @UserCount +
+
+
+ + + +
+ @L["Registered Roles"] + + @RoleCount +
+
+
+ + + + + +
+} \ No newline at end of file diff --git a/src/Client/Pages/Personal/Dashboard.razor.cs b/src/Client/Pages/Personal/Dashboard.razor.cs new file mode 100644 index 0000000..a67e66c --- /dev/null +++ b/src/Client/Pages/Personal/Dashboard.razor.cs @@ -0,0 +1,62 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Notifications; +using RewardsPlus.BlazorWebAssembly.Client.Shared; +using RewardsPlus.WebApi.Shared.Notifications; +using MediatR.Courier; +using Microsoft.AspNetCore.Components; + +namespace RewardsPlus.BlazorWebAssembly.Client.Pages.Personal; + +public partial class Dashboard +{ + [Parameter] + public int ProductCount { get; set; } + [Parameter] + public int BrandCount { get; set; } + [Parameter] + public int UserCount { get; set; } + [Parameter] + public int RoleCount { get; set; } + + [Inject] + private IDashboardClient DashboardClient { get; set; } = default!; + [Inject] + private ICourier Courier { get; set; } = default!; + + private readonly string[] _dataEnterBarChartXAxisLabels = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; + private readonly List _dataEnterBarChartSeries = new(); + private bool _loaded; + + protected override async Task OnInitializedAsync() + { + Courier.SubscribeWeak>(async _ => + { + await LoadDataAsync(); + StateHasChanged(); + }); + + await LoadDataAsync(); + + _loaded = true; + } + + private async Task LoadDataAsync() + { + if (await ApiHelper.ExecuteCallGuardedAsync( + () => DashboardClient.GetAsync(), + Snackbar) + is StatsDto statsDto) + { + ProductCount = statsDto.ProductCount; + BrandCount = statsDto.BrandCount; + UserCount = statsDto.UserCount; + RoleCount = statsDto.RoleCount; + foreach (var item in statsDto.DataEnterBarChart) + { + _dataEnterBarChartSeries + .RemoveAll(x => x.Name.Equals(item.Name, StringComparison.OrdinalIgnoreCase)); + _dataEnterBarChartSeries.Add(new MudBlazor.ChartSeries { Name = item.Name, Data = item.Data?.ToArray() }); + } + } + } +} \ No newline at end of file diff --git a/src/Client/Program.cs b/src/Client/Program.cs new file mode 100644 index 0000000..470dacd --- /dev/null +++ b/src/Client/Program.cs @@ -0,0 +1,30 @@ +using System.Globalization; +using RewardsPlus.BlazorWebAssembly.Client; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; +using Microsoft.AspNetCore.Components.Web; +using Microsoft.AspNetCore.Components.WebAssembly.Hosting; + +var builder = WebAssemblyHostBuilder.CreateDefault(args); + +builder.RootComponents.Add("#app"); +builder.RootComponents.Add("head::after"); + +builder.Services.AddClientServices(builder.Configuration); + +var host = builder.Build(); + +var storageService = host.Services.GetRequiredService(); +if (storageService != null) +{ + CultureInfo culture; + if (await storageService.GetPreference() is ClientPreference preference) + culture = new CultureInfo(preference.LanguageCode); + else + culture = new CultureInfo(LocalizationConstants.SupportedLanguages.FirstOrDefault()?.Code ?? "en-US"); + CultureInfo.DefaultThreadCurrentCulture = culture; + CultureInfo.DefaultThreadCurrentUICulture = culture; +} + +await host.RunAsync(); \ No newline at end of file diff --git a/src/Client/Properties/launchSettings.json b/src/Client/Properties/launchSettings.json new file mode 100644 index 0000000..ec01420 --- /dev/null +++ b/src/Client/Properties/launchSettings.json @@ -0,0 +1,30 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:21716", + "sslPort": 44331 + } + }, + "profiles": { + "FSH.BlazorWebAssembly": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "https://localhost:5002;http://localhost:5003", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/src/Client/Resources/Components/Common/TablePager.ar.resx b/src/Client/Resources/Components/Common/TablePager.ar.resx new file mode 100644 index 0000000..61567a8 --- /dev/null +++ b/src/Client/Resources/Components/Common/TablePager.ar.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + {first_item}-{last_item} من {all_items} + + + صف لكل صفحة + + \ No newline at end of file diff --git a/src/Client/Resources/Components/Common/TablePager.de.resx b/src/Client/Resources/Components/Common/TablePager.de.resx new file mode 100644 index 0000000..bce5fdf --- /dev/null +++ b/src/Client/Resources/Components/Common/TablePager.de.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + {first_item}-{last_item} von {all_items} + + + Zeilen je Seite: + + \ No newline at end of file diff --git a/src/Client/Resources/Components/Common/TablePager.en.resx b/src/Client/Resources/Components/Common/TablePager.en.resx new file mode 100644 index 0000000..eef54b7 --- /dev/null +++ b/src/Client/Resources/Components/Common/TablePager.en.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + {first_item}-{last_item} of {all_items} + + + Rows per page: + + \ No newline at end of file diff --git a/src/Client/Resources/Components/Common/TablePager.es.resx b/src/Client/Resources/Components/Common/TablePager.es.resx new file mode 100644 index 0000000..9971ad9 --- /dev/null +++ b/src/Client/Resources/Components/Common/TablePager.es.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + {first_item}-{last_item} de {all_items} + + + Registros por página: + + \ No newline at end of file diff --git a/src/Client/Resources/Components/Common/TablePager.fr.resx b/src/Client/Resources/Components/Common/TablePager.fr.resx new file mode 100644 index 0000000..4ed5249 --- /dev/null +++ b/src/Client/Resources/Components/Common/TablePager.fr.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + {first_item}-{last_item} sur {all_items} + + + Lignes par page : + + \ No newline at end of file diff --git a/src/Client/Resources/Components/Common/TablePager.id.resx b/src/Client/Resources/Components/Common/TablePager.id.resx new file mode 100644 index 0000000..b45e839 --- /dev/null +++ b/src/Client/Resources/Components/Common/TablePager.id.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + {first_item}-{last_item} dari {all_items} + + + Baris per halaman: + + \ No newline at end of file diff --git a/src/Client/Resources/Components/Common/TablePager.it.resx b/src/Client/Resources/Components/Common/TablePager.it.resx new file mode 100644 index 0000000..338aa89 --- /dev/null +++ b/src/Client/Resources/Components/Common/TablePager.it.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + {first_item}-{last_item} di {all_items} + + + Righe per pagina: + + \ No newline at end of file diff --git a/src/Client/Resources/Components/Common/TablePager.km.resx b/src/Client/Resources/Components/Common/TablePager.km.resx new file mode 100644 index 0000000..ba27d45 --- /dev/null +++ b/src/Client/Resources/Components/Common/TablePager.km.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + {first_item}-{last_item} នៃ {all_items} + + + ជួរដេកក្នុងមួយទំព័រ៖ + + \ No newline at end of file diff --git a/src/Client/Resources/Components/Common/TablePager.nl.resx b/src/Client/Resources/Components/Common/TablePager.nl.resx new file mode 100644 index 0000000..bac82ce --- /dev/null +++ b/src/Client/Resources/Components/Common/TablePager.nl.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + {first_item}-{last_item} of {all_items} + + + Rijen per pagina: + + \ No newline at end of file diff --git a/src/Client/Resources/Components/Common/TablePager.ru.resx b/src/Client/Resources/Components/Common/TablePager.ru.resx new file mode 100644 index 0000000..7a5d02c --- /dev/null +++ b/src/Client/Resources/Components/Common/TablePager.ru.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + {first_item}-{last_item} из {all_items} + + + Строк на странице: + + \ No newline at end of file diff --git a/src/Client/Resources/Components/Common/TablePager.sv.resx b/src/Client/Resources/Components/Common/TablePager.sv.resx new file mode 100644 index 0000000..d28249a --- /dev/null +++ b/src/Client/Resources/Components/Common/TablePager.sv.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + {first_item}-{last_item} of {all_items} + + + Rader per sida: + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Register.ar.resx b/src/Client/Resources/Pages/Account/Register.ar.resx new file mode 100644 index 0000000..bc64cb0 --- /dev/null +++ b/src/Client/Resources/Pages/Account/Register.ar.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + هل لديك حساب؟ + + + بريد الالكتروني + + + أوافق على الشروط والخصوصية + + + كلمه السر + + + رقم الهاتف + + + اشتراك + + + تسجيل الدخول + + + اشتراك + + + اسم المستخدم + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Register.de.resx b/src/Client/Resources/Pages/Account/Register.de.resx new file mode 100644 index 0000000..59166f3 --- /dev/null +++ b/src/Client/Resources/Pages/Account/Register.de.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bereits registriert? + + + E-Mail + + + Ich stimme den Nutzungs- und Datenschutzbedingungen zu. + + + Passwort + + + Telefon + + + Registrieren + + + Anmelden + + + Registrieren + + + Benutzername + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Register.en.resx b/src/Client/Resources/Pages/Account/Register.en.resx new file mode 100644 index 0000000..d8c326d --- /dev/null +++ b/src/Client/Resources/Pages/Account/Register.en.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Already have an account? + + + E-mail + + + I agree to the terms and privacy + + + Password + + + Phone Number + + + Register + + + Sign In + + + Sign Up + + + Username + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Register.es.resx b/src/Client/Resources/Pages/Account/Register.es.resx new file mode 100644 index 0000000..8ff1bdf --- /dev/null +++ b/src/Client/Resources/Pages/Account/Register.es.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ¿Ya tiene una cuenta? + + + Correo + + + Acepto los términos y condiciones + + + Contraseña + + + Teléfono + + + Registrarse + + + Ingresar + + + Registrarse + + + Usuario + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Register.fr.resx b/src/Client/Resources/Pages/Account/Register.fr.resx new file mode 100644 index 0000000..e912e94 --- /dev/null +++ b/src/Client/Resources/Pages/Account/Register.fr.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Vous possédez déjà un compte ? + + + Courriel + + + J'accepte les conditions d'utilisation et la politique de confidentialité + + + Mot de passe + + + Numéro de téléphone + + + S'inscrire + + + Se connecter + + + S'inscrire + + + Nom d'utilisateur + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Register.id.resx b/src/Client/Resources/Pages/Account/Register.id.resx new file mode 100644 index 0000000..a9f2a0d --- /dev/null +++ b/src/Client/Resources/Pages/Account/Register.id.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Sudah punya akun? + + + E-mail + + + Saya setuju akan ketentuan dan kebijakan privasi + + + Sandi + + + Nomor Telepon + + + Daftar + + + Masuk + + + Daftar + + + Nama pengguna + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Register.it.resx b/src/Client/Resources/Pages/Account/Register.it.resx new file mode 100644 index 0000000..9cb4fdc --- /dev/null +++ b/src/Client/Resources/Pages/Account/Register.it.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Sei già registrato? + + + E-Mail + + + Accetto i termini e la privacy + + + Telefono + + + Registrati + + + Accedi + + + Iscriviti + + + Utente + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Register.km.resx b/src/Client/Resources/Pages/Account/Register.km.resx new file mode 100644 index 0000000..f6f8870 --- /dev/null +++ b/src/Client/Resources/Pages/Account/Register.km.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + មានគណនីរួចហើយ? + + + អ៊ីមែល + + + ខ្ញុំយល់ស្របនឹងលក្ខខណ្ឌនិងភាពឯកជន + + + លេខសម្ងាត់ + + + លេខទូរស័ព្ទ + + + ចុះឈ្មោះ + + + ចូល + + + ចុះ​ឈ្មោះ + + + ឈ្មោះ​អ្នកប្រើប្រាស់ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Register.nl.resx b/src/Client/Resources/Pages/Account/Register.nl.resx new file mode 100644 index 0000000..0be70ca --- /dev/null +++ b/src/Client/Resources/Pages/Account/Register.nl.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Heb je al een account? + + + E-mail + + + Ik ga akkoord met de voorwaarden en privacy + + + Wachtwoord + + + Telefoonnummer + + + Registreren + + + Aanmelden + + + Inschrijven + + + Gebruikersnaam + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Register.ru.resx b/src/Client/Resources/Pages/Account/Register.ru.resx new file mode 100644 index 0000000..1ac7f04 --- /dev/null +++ b/src/Client/Resources/Pages/Account/Register.ru.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Уже имеете аккаунт? + + + E-mail + + + Я согласен с условиями и конфиденциальностью + + + Пароль + + + Номер телефона + + + Зарегистрировать + + + Авторизация + + + Регистрация + + + Username + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Register.sv.resx b/src/Client/Resources/Pages/Account/Register.sv.resx new file mode 100644 index 0000000..a8984ec --- /dev/null +++ b/src/Client/Resources/Pages/Account/Register.sv.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Har du redan ett konto? + + + Epost + + + Jag godkänner villkoren och integriteten + + + Lösenord + + + Telefonnummer + + + Registrera + + + Logga In + + + Bli Medlem + + + Användarnamn + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Reset.ar.resx b/src/Client/Resources/Pages/Account/Reset.ar.resx new file mode 100644 index 0000000..dfc9fd2 --- /dev/null +++ b/src/Client/Resources/Pages/Account/Reset.ar.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + أوافق على الشروط والخصوصية + + + كلمة مرور جديدة + + + ضع كلمة مرور جديدة + + + لم يتم العثور على الرمز! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Reset.de.resx b/src/Client/Resources/Pages/Account/Reset.de.resx new file mode 100644 index 0000000..530dfed --- /dev/null +++ b/src/Client/Resources/Pages/Account/Reset.de.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ich stimme den Nutzungs- und Datenschutzbestimmungen zu. + + + Neues Passwort + + + Neues Passwort festlegen + + + Token nicht gefunden! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Reset.en.resx b/src/Client/Resources/Pages/Account/Reset.en.resx new file mode 100644 index 0000000..51f60ad --- /dev/null +++ b/src/Client/Resources/Pages/Account/Reset.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + I agree to the terms and privacy + + + New Password + + + Set new password + + + Token Not Found! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Reset.es.resx b/src/Client/Resources/Pages/Account/Reset.es.resx new file mode 100644 index 0000000..f6f44bc --- /dev/null +++ b/src/Client/Resources/Pages/Account/Reset.es.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acepto los términos y condiciones + + + Nueva contraseña + + + Establecer contraseña + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Reset.fr.resx b/src/Client/Resources/Pages/Account/Reset.fr.resx new file mode 100644 index 0000000..8019f31 --- /dev/null +++ b/src/Client/Resources/Pages/Account/Reset.fr.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + J'accepte les conditions d'utilisation et la politique de confidentialité + + + Nouveau mot de passe + + + Définir le nouveau mot de passe + + + Jeton introuvable ! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Reset.id.resx b/src/Client/Resources/Pages/Account/Reset.id.resx new file mode 100644 index 0000000..d169911 --- /dev/null +++ b/src/Client/Resources/Pages/Account/Reset.id.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Saya setuju akan ketentuan dan kebijakan privasi + + + Sandi baru + + + Atur sandi baru + + + Token Tidak Ditemukan! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Reset.it.resx b/src/Client/Resources/Pages/Account/Reset.it.resx new file mode 100644 index 0000000..0d29f14 --- /dev/null +++ b/src/Client/Resources/Pages/Account/Reset.it.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Accetto i termini e la privacy + + + Nuova Password + + + Token non trovato! + + + Imposta nuova password + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Reset.km.resx b/src/Client/Resources/Pages/Account/Reset.km.resx new file mode 100644 index 0000000..e302b84 --- /dev/null +++ b/src/Client/Resources/Pages/Account/Reset.km.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ខ្ញុំយល់ស្របនឹងលក្ខខណ្ឌនិងភាពឯកជន + + + ពាក្យសម្ងាត់​ថ្មី + + + កំណត់ពាក្យសម្ងាត់ថ្មី + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Reset.nl.resx b/src/Client/Resources/Pages/Account/Reset.nl.resx new file mode 100644 index 0000000..30f308e --- /dev/null +++ b/src/Client/Resources/Pages/Account/Reset.nl.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ik ga akkoord met de voorwaarden en privacy + + + Nieuw wachtwoord + + + Nieuw wachtwoord instellen + + + Token niet gevonden! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Reset.ru.resx b/src/Client/Resources/Pages/Account/Reset.ru.resx new file mode 100644 index 0000000..acf21ac --- /dev/null +++ b/src/Client/Resources/Pages/Account/Reset.ru.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Я согласен с условиями и конфиденциальностью + + + Новый пароль + + + Установить новый пароль + + + Токен не найден! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Account/Reset.sv.resx b/src/Client/Resources/Pages/Account/Reset.sv.resx new file mode 100644 index 0000000..f1f44a3 --- /dev/null +++ b/src/Client/Resources/Pages/Account/Reset.sv.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Jag godkänner villkoren och integriteten + + + Nytt Lösenord + + + Det nya lösenordet + + + Token hittades inte! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Authentication.ar.resx b/src/Client/Resources/Pages/Authentication/Authentication.ar.resx new file mode 100644 index 0000000..c331d00 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Authentication.ar.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + You were successfully logged out. + + + Click here to log back in + + + Logging you in... + + + Checking permissions... + + + Sorry, your login failed. Please try again or contact support. + + + Logging you out... + + + Sorry, log out operation failed. Please try again or contact support. + + + Retrieving profile... + + + Registering account... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Authentication.de.resx b/src/Client/Resources/Pages/Authentication/Authentication.de.resx new file mode 100644 index 0000000..94f8d99 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Authentication.de.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Du wurdest erfolgreich ausgeloggt. + + + Klicke hier, um dich wieder einzuloggen. + + + Du wirst eingeloggt... + + + Überprüfe Berechtigungen... + + + Entschuldigung, dein Login ist fehlgeschlagen. Versuche es noch einmal oder kontaktiere den Support. + + + Du wirst ausgeloggt... + + + Entschuldigung, dein Logout ist fehlgeschlagen. Versuche es noch einmal oder kontaktiere den Support. + + + Profil wird abgerufen... + + + Konto wird registriert... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Authentication.en.resx b/src/Client/Resources/Pages/Authentication/Authentication.en.resx new file mode 100644 index 0000000..c331d00 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Authentication.en.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + You were successfully logged out. + + + Click here to log back in + + + Logging you in... + + + Checking permissions... + + + Sorry, your login failed. Please try again or contact support. + + + Logging you out... + + + Sorry, log out operation failed. Please try again or contact support. + + + Retrieving profile... + + + Registering account... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Authentication.es.resx b/src/Client/Resources/Pages/Authentication/Authentication.es.resx new file mode 100644 index 0000000..c331d00 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Authentication.es.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + You were successfully logged out. + + + Click here to log back in + + + Logging you in... + + + Checking permissions... + + + Sorry, your login failed. Please try again or contact support. + + + Logging you out... + + + Sorry, log out operation failed. Please try again or contact support. + + + Retrieving profile... + + + Registering account... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Authentication.fr.resx b/src/Client/Resources/Pages/Authentication/Authentication.fr.resx new file mode 100644 index 0000000..c331d00 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Authentication.fr.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + You were successfully logged out. + + + Click here to log back in + + + Logging you in... + + + Checking permissions... + + + Sorry, your login failed. Please try again or contact support. + + + Logging you out... + + + Sorry, log out operation failed. Please try again or contact support. + + + Retrieving profile... + + + Registering account... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Authentication.id.resx b/src/Client/Resources/Pages/Authentication/Authentication.id.resx new file mode 100644 index 0000000..c331d00 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Authentication.id.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + You were successfully logged out. + + + Click here to log back in + + + Logging you in... + + + Checking permissions... + + + Sorry, your login failed. Please try again or contact support. + + + Logging you out... + + + Sorry, log out operation failed. Please try again or contact support. + + + Retrieving profile... + + + Registering account... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Authentication.it.resx b/src/Client/Resources/Pages/Authentication/Authentication.it.resx new file mode 100644 index 0000000..c015459 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Authentication.it.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Sei stato disconnesso con successo. + + + Clicca qui per accedere indietro + + + Registrarti in ... + + + Controllo Autorizzazioni ... + + + Siamo spiacenti, il tuo login è fallito. Si prega di riprovare o contattare il supporto. + + + Disattivandoti ... + + + Siamo spiacenti, operazione di disconnessione fallito. Si prega di riprovare o contattare il supporto. + + + Recupero del profilo ... + + + Registrazione dell'account ... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Authentication.km.resx b/src/Client/Resources/Pages/Authentication/Authentication.km.resx new file mode 100644 index 0000000..c331d00 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Authentication.km.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + You were successfully logged out. + + + Click here to log back in + + + Logging you in... + + + Checking permissions... + + + Sorry, your login failed. Please try again or contact support. + + + Logging you out... + + + Sorry, log out operation failed. Please try again or contact support. + + + Retrieving profile... + + + Registering account... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Authentication.nl.resx b/src/Client/Resources/Pages/Authentication/Authentication.nl.resx new file mode 100644 index 0000000..c331d00 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Authentication.nl.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + You were successfully logged out. + + + Click here to log back in + + + Logging you in... + + + Checking permissions... + + + Sorry, your login failed. Please try again or contact support. + + + Logging you out... + + + Sorry, log out operation failed. Please try again or contact support. + + + Retrieving profile... + + + Registering account... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Authentication.ru.resx b/src/Client/Resources/Pages/Authentication/Authentication.ru.resx new file mode 100644 index 0000000..c331d00 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Authentication.ru.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + You were successfully logged out. + + + Click here to log back in + + + Logging you in... + + + Checking permissions... + + + Sorry, your login failed. Please try again or contact support. + + + Logging you out... + + + Sorry, log out operation failed. Please try again or contact support. + + + Retrieving profile... + + + Registering account... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Authentication.sv.resx b/src/Client/Resources/Pages/Authentication/Authentication.sv.resx new file mode 100644 index 0000000..c331d00 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Authentication.sv.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + You were successfully logged out. + + + Click here to log back in + + + Logging you in... + + + Checking permissions... + + + Sorry, your login failed. Please try again or contact support. + + + Logging you out... + + + Sorry, log out operation failed. Please try again or contact support. + + + Retrieving profile... + + + Registering account... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/ForgotPassword.ar.resx b/src/Client/Resources/Pages/Authentication/ForgotPassword.ar.resx new file mode 100644 index 0000000..14e0972 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/ForgotPassword.ar.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + تم! + + + البريد الإلكتروني + + + أدخل عنوان البريد الإلكتروني المرتبط بحسابك وستتلقى رسالة بريد إلكتروني تحتوي على رابط لإعادة تعيين كلمة المرور الخاصة بك + + + هل نسيت كلمة السر? + + + إعادة تعيين كلمة المرور + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/ForgotPassword.de.resx b/src/Client/Resources/Pages/Authentication/ForgotPassword.de.resx new file mode 100644 index 0000000..f949b86 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/ForgotPassword.de.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Fertig! + + + E-Mail + + + E-Mail-Adresse eingeben, mit welcher das Konto verknüpft ist, um eine E-Mail zum zurücksetzen des Passworts zu erhalten. + + + Passwort vergessen? + + + Passwort zurücksetzen + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/ForgotPassword.en.resx b/src/Client/Resources/Pages/Authentication/ForgotPassword.en.resx new file mode 100644 index 0000000..5e4f57a --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/ForgotPassword.en.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Done! + + + E-Mail + + + Enter the email address linked to your account and you will recieve an email containing a link to reset your password + + + Forgot password? + + + Reset Password + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/ForgotPassword.es.resx b/src/Client/Resources/Pages/Authentication/ForgotPassword.es.resx new file mode 100644 index 0000000..31824cf --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/ForgotPassword.es.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Correo + + + Ingresa la dirección de correo vinculada a su cuenta y recibirá un correo con un enlace para blanquear la contraseña + + + ¿Olvidó su contraseña? + + + Blanquear contraseña + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/ForgotPassword.fr.resx b/src/Client/Resources/Pages/Authentication/ForgotPassword.fr.resx new file mode 100644 index 0000000..d887377 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/ForgotPassword.fr.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Terminé ! + + + Courriel + + + Sasissez le courriel lié à votre compte et vous y recevrez un message contenant un lien pour réinitialiser votre mot de passe + + + Mot de passe oublié ? + + + Réinitialiser le mot de passe + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/ForgotPassword.id.resx b/src/Client/Resources/Pages/Authentication/ForgotPassword.id.resx new file mode 100644 index 0000000..52c8afd --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/ForgotPassword.id.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Selesai! + + + E-Mail + + + Masukkan alamat email yang terhubung ke akun anda dan anda akan menerima email berisi link untuk mereset password anda + + + Lupa password? + + + Reset Password + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/ForgotPassword.it.resx b/src/Client/Resources/Pages/Authentication/ForgotPassword.it.resx new file mode 100644 index 0000000..b300815 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/ForgotPassword.it.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Password dimenticata? + + + E-Mail + + + Ripristina Password + + + Fatto! + + + Inserisci l'indirizzo E-Mail collegato al tuo utente e riceverai un link per il ripristino della password. + + + Possiamo aiutarti ripristinando la password. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/ForgotPassword.km.resx b/src/Client/Resources/Pages/Authentication/ForgotPassword.km.resx new file mode 100644 index 0000000..b574e84 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/ForgotPassword.km.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + អ៊ីម៉ែល + + + បញ្ចូលអាសយដ្ឋានអ៊ីមែលដែលភ្ជាប់ទៅគណនីរបស់អ្នកហើយអ្នកនឹងទទួលបានអ៊ីមែលដែលមានតំណភ្ជាប់ដើម្បីកំណត់លេខសម្ងាត់របស់អ្នកឡើងវិញ + + + ភ្លេច​លេខសំងាត់​? + + + កំណត់ពាក្យសម្ងាត់ឡើងវិញ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/ForgotPassword.nl.resx b/src/Client/Resources/Pages/Authentication/ForgotPassword.nl.resx new file mode 100644 index 0000000..d725b6c --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/ForgotPassword.nl.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + E-mail + + + Voer het e-mailadres in dat aan uw account is gekoppeld en u ontvangt een e-mail met een link om uw wachtwoord opnieuw in te stellen + + + Wachtwoord vergeten? + + + Wachtwoord opnieuw instellen + + + Klaar! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/ForgotPassword.ru.resx b/src/Client/Resources/Pages/Authentication/ForgotPassword.ru.resx new file mode 100644 index 0000000..9ff2cdc --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/ForgotPassword.ru.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Готово! + + + E-Mail + + + Введите email-адрес, прикреплённый к вашему аккаунту, и вы получите письмо, соржащее ссылку для сброса вашего пароля + + + Забыли пароль? + + + Сбросить пароль + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/ForgotPassword.sv.resx b/src/Client/Resources/Pages/Authentication/ForgotPassword.sv.resx new file mode 100644 index 0000000..7553815 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/ForgotPassword.sv.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Klart! + + + Epost + + + Fyll i din Epost-adress kopplat till ditt konto och du får ett mail med en länk för att nollställa ditt lösenord. + + + Glömt Lösenord? + + + Nollställ Lösenord + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Login.ar.resx b/src/Client/Resources/Pages/Authentication/Login.ar.resx new file mode 100644 index 0000000..a30f0a0 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Login.ar.resx @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + تسجيل الدخول مع أوراق الاعتماد الخاصة بك. + + + ليس لديك حساب؟ + + + بريد الالكتروني + + + البريد الالكتروني مطلوب! + + + قم بتعبئة بيانات اعتماد المسؤول + + + املأ بيانات اعتماد المستخدم الأساسية + + + هل نسيت كلمة السر؟ + + + كلمه السر + + + كلمة المرور مطلوبة! + + + سجل هنا + + + تذكرنى؟ + + + تسجيل الدخول + + + عنوان + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Login.de.resx b/src/Client/Resources/Pages/Authentication/Login.de.resx new file mode 100644 index 0000000..4812f2f --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Login.de.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Mit Zugangsdaten anmelden + + + Du hast noch keine Konto? + + + E-Mail + + + E-Mail wird benötigt. + + + Gib deine Zugangsdaten + + + Mit Zugangsdaten des Administrators ausfüllen + + + Mit Basis-Zugangsdaten ausfüllen + + + Passwort vergessen? + + + Passwort + + + Passwort wird benötigt! + + + Registriere dich hier + + + Zugangsdaten speichern? + + + Anmelden + + + Anmelden + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Login.en.resx b/src/Client/Resources/Pages/Authentication/Login.en.resx new file mode 100644 index 0000000..e13f761 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Login.en.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Login with your Credentials. + + + Don't have an account? + + + E-mail + + + Email is required! + + + Enter your credentials to get started. + + + Fill Administrator Credentials + + + Fill Basic User Credentials + + + Forgot password? + + + Password + + + Password is required! + + + Register here + + + Remember me? + + + Sign In + + + Sign In + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Login.es.resx b/src/Client/Resources/Pages/Authentication/Login.es.resx new file mode 100644 index 0000000..3c5e771 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Login.es.resx @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ingrese con sus credenciales. + + + ¿No tiene una cuenta? + + + Correo + + + El Correo es requerido! + + + Completar con Credenciales Administrador + + + Completar con Credenciales Usuario + + + ¿Olvidó su Contraseña? + + + Contraseña + + + La Contraseña es requerida! + + + Registrarse aquí + + + ¿Recordarme? + + + Ingresar + + + Ingresar + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Login.fr.resx b/src/Client/Resources/Pages/Authentication/Login.fr.resx new file mode 100644 index 0000000..8692631 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Login.fr.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Connectez-vous avec vos identifiants. + + + Courriel + + + Un courriel est requis ! + + + Mot de passe oublié ? + + + Mot de passe + + + Mot de passe requis ! + + + Se souvenir de moi ? + + + Connexion + + + Connexion + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Login.id.resx b/src/Client/Resources/Pages/Authentication/Login.id.resx new file mode 100644 index 0000000..28006ca --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Login.id.resx @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Masuk dengan Kredensial Anda. + + + Tidak punya akun? + + + E-mail + + + Email wajib diisi! + + + Isi Kredensial Administrator + + + Isi Kredensial Pengguna Basic + + + Lupa sandi? + + + Sandi + + + Sandi wajib diisi! + + + Daftar di sini + + + Ingat saya? + + + Masuk + + + Masuk + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Login.it.resx b/src/Client/Resources/Pages/Authentication/Login.it.resx new file mode 100644 index 0000000..bb48a76 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Login.it.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Accedi con le tue credenziali. + + + E-Mail + + + È richiesto un indirizzo E-Mail + + + Inserisci le tue credenziali per iniziare. + + + Utilizza credenziali amministrative + + + Utilizza credenziali utente base + + + Password dimenticata? + + + Password + + + È richiesta una password! + + + Ricordati di me? + + + Accedi + + + Accedi + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Login.km.resx b/src/Client/Resources/Pages/Authentication/Login.km.resx new file mode 100644 index 0000000..1bf008e --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Login.km.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ឡុកចូលប្រព័ន្ធជាមួយលេខកូដសម្ងាត់អ្នក + + + អ៊ីម៉ែល + + + ត្រូវការបំពេញអ៊ីម៉ែល + + + ភ្លេចលេខកូដសម្ងាត់? + + + លេខកូដសម្ងាត់ + + + ត្រូវការបំពេញលេខកូដសម្ងាត់ + + + ចងចាំក្នុងប្រព័ន្ធ? + + + ឡុកចូល + + + ឡុកចូល + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Login.nl.resx b/src/Client/Resources/Pages/Authentication/Login.nl.resx new file mode 100644 index 0000000..e0d271e --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Login.nl.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Log in met uw inloggegevens. + + + E-mail + + + E-mail is vereist! + + + Wachtwoord vergeten? + + + Wachtwoord + + + Wachtwoord is vereist! + + + Aanmelden + + + Aanmelden + + + Heb je geen account? + + + Beheerdersreferenties invullen + + + Basisgebruikersreferenties invullen + + + Schrijf je hier in + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Login.ru.resx b/src/Client/Resources/Pages/Authentication/Login.ru.resx new file mode 100644 index 0000000..ad69eb7 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Login.ru.resx @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Авторизуйтесь с помощью ваших учётных данных. + + + У вас ещё нет аккаунта? + + + E-mail + + + Email обязателен! + + + Заполнить учётными данными администратора + + + Заполнить учётными данными пользователя с базовыми правами + + + Забыли пароль? + + + Пароль + + + Пароль обязателен! + + + Зарегистрируйтесь здесь + + + Запомнить меня? + + + Авторизоваться + + + Авторизация + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Login.sv.resx b/src/Client/Resources/Pages/Authentication/Login.sv.resx new file mode 100644 index 0000000..d236777 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Login.sv.resx @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Logga in med dina uppgifter + + + Har du inget konto? + + + Epost + + + Epost är obligatoriskt + + + Fyll i Administratör Användaruppgifter + + + Fyll i Grundläggande Användaruppgifter + + + Glömt Lösenord? + + + Lösenord + + + Lösenord är obligatoriskt! + + + Registrera här + + + Kom ihåg mig? + + + Logga In + + + Logga In + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Register.ar.resx b/src/Client/Resources/Pages/Authentication/Register.ar.resx new file mode 100644 index 0000000..94332f5 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Register.ar.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + هل لديك حساب؟ + + + تأكيد كلمة المرور + + + بريد الالكتروني + + + الاسم الأول + + + الكنية + + + كلمه السر + + + رقم الهاتف + + + يسجل + + + تسجيل الدخول + + + اسم االمستخدم + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Register.de.resx b/src/Client/Resources/Pages/Authentication/Register.de.resx new file mode 100644 index 0000000..1bfb8a3 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Register.de.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Du hast schon ein Konto? + + + Passwort bestätigen + + + E-Mail + + + Vorname + + + Nachname + + + Passwort + + + Telefonnummer + + + Registrieren + + + Einloggen + + + Benutzername + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Register.en.resx b/src/Client/Resources/Pages/Authentication/Register.en.resx new file mode 100644 index 0000000..fe26547 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Register.en.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Already have an account? + + + Confirm Password + + + E-mail + + + First Name + + + Last Name + + + Password + + + Phone Number + + + Register + + + Sign In + + + User Name + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Register.es.resx b/src/Client/Resources/Pages/Authentication/Register.es.resx new file mode 100644 index 0000000..8010e7c --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Register.es.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ¿Ya tiene una cuenta? + + + Confirmar Contraseña + + + Correo + + + Nombre + + + Apellido + + + Contraseña + + + Número de Teléfono + + + Registrarse + + + Ingresar + + + Nombre de Usuario + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Register.fr.resx b/src/Client/Resources/Pages/Authentication/Register.fr.resx new file mode 100644 index 0000000..41e6323 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Register.fr.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Vous possédez déjà un compte ? + + + Confirmation du mot de passe + + + Courriel + + + Prénom + + + Nom + + + Mot de passe + + + Numéro de téléphone + + + S'inscrire + + + Se connecter + + + Nom d'utilisateur + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Register.id.resx b/src/Client/Resources/Pages/Authentication/Register.id.resx new file mode 100644 index 0000000..bbc2810 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Register.id.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Sudah punya akun? + + + Konfirmasi Password + + + E-mail + + + Nama Depan + + + Nama Belakang + + + Sandi + + + Nomor Telepon + + + Daftar + + + Masuk + + + User Name + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Register.it.resx b/src/Client/Resources/Pages/Authentication/Register.it.resx new file mode 100644 index 0000000..86387eb --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Register.it.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Hai già un account? + + + Conferma Password + + + E-mail + + + Nome + + + Cognome + + + Accetto i termini e la privacy + + + Telefono + + + Registrati + + + Registrati + + + Username + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Register.km.resx b/src/Client/Resources/Pages/Authentication/Register.km.resx new file mode 100644 index 0000000..0cf656e --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Register.km.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + មានគណនីរួចហើយ? + + + បញ្ជាក់លេខកូដសម្ងាត់ + + + អ៊ីម៉ែល + + + នាមខ្លួន + + + នាមត្រកូល + + + លេខកូដសម្ងាត់ + + + លេខទូរស័ព្ទ + + + ចុះឈ្មោះ + + + ឡុកចូល + + + ឈ្មោះអ្នកប្រើប្រាស់ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Register.nl.resx b/src/Client/Resources/Pages/Authentication/Register.nl.resx new file mode 100644 index 0000000..e355b93 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Register.nl.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Heb je al een account? + + + Wachtwoord bevestigen + + + E-mail + + + Voornaam + + + Achternaam + + + Wachtwoord + + + Telefoonnummer + + + Registreren + + + Aanmelden + + + Gebruikersnaam + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Register.ru.resx b/src/Client/Resources/Pages/Authentication/Register.ru.resx new file mode 100644 index 0000000..6d4d7ed --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Register.ru.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + У вас уже есть аккаунт? + + + Подтверждение пароля + + + E-mail + + + Имя + + + Фамилия + + + Пароль + + + Номер телефона + + + Зарегистрировать + + + Авторизоваться + + + User Name + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Authentication/Register.sv.resx b/src/Client/Resources/Pages/Authentication/Register.sv.resx new file mode 100644 index 0000000..d3ac6a2 --- /dev/null +++ b/src/Client/Resources/Pages/Authentication/Register.sv.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Har du redan ett konto? + + + Bekräfta lösenord + + + E-post + + + Förnamn + + + Efternamn + + + Lösenord + + + Telefonnummer + + + Registrera dig + + + Logga In + + + Användarnamn + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditBrandModal.ar.resx b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.ar.resx new file mode 100644 index 0000000..32a2c4e --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.ar.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + أضف العلامة التجارية + + + تم حفظ العلامة التجارية! + + + تم تحديث العلامة التجارية! + + + إلغاء + + + وصف + + + المعرّف + + + اسم + + + حفظ + + + ضريبة + + + تحديث + + + تحديث العلامة التجارية + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditBrandModal.de.resx b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.de.resx new file mode 100644 index 0000000..618b6ed --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.de.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Marke hinzufügen + + + Marke gespeichert! + + + Marke aktualisiert! + + + Abbrechen + + + Beschreibung + + + Id + + + Name + + + Speichern + + + Steuer + + + Aktualisieren + + + Martke Aktualisieren + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditBrandModal.en.resx b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.en.resx new file mode 100644 index 0000000..b8de313 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.en.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Add Brand + + + Brand Saved! + + + Brand Updated! + + + Cancel + + + Description + + + Id + + + Name + + + Save + + + Tax + + + Update + + + Update Brand + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditBrandModal.es.resx b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.es.resx new file mode 100644 index 0000000..bb9b491 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.es.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Agregar Marca + + + Marca Guardada! + + + Marca Actualizada! + + + Cancelar + + + Descripción + + + Id + + + Nombre + + + Guardar + + + Impuestos + + + Actualizar + + + Actualizar Marca + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditBrandModal.fr.resx b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.fr.resx new file mode 100644 index 0000000..732642a --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.fr.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ajouter une marque + + + Marque enregistrée ! + + + Marque mise à jour ! + + + Annuler + + + Description + + + Identifiant + + + Nom + + + Sauvegarder + + + Taxe + + + Mettre à jour + + + Édition d'une marque + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditBrandModal.id.resx b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.id.resx new file mode 100644 index 0000000..635c20b --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.id.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Tambah Merek + + + Merek Tersimpan! + + + Merek Diperbarui! + + + Batal + + + Deskripsi + + + Id + + + Nama + + + Simpan + + + Pajak + + + Perbarui + + + Perbarui Merek + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditBrandModal.it.resx b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.it.resx new file mode 100644 index 0000000..56dc1eb --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.it.resx @@ -0,0 +1,133 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Nuova marca + + + Marca salvata! + + + Marca aggiornata! + + + Annulla + + + Descrizione + + + Id + + + Nome + + + Salva + + + Imposta + + + Aggiorna + + + Aggiorna marca + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditBrandModal.km.resx b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.km.resx new file mode 100644 index 0000000..f29d99f --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.km.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + បន្ថែមម៉ាក + + + ម៉ាកបានរក្សាទុក! + + + ម៉ាកបានធ្វើបច្ចុប្បន្នភាព + + + បោះបង់ + + + ការពិពណ៌នា + + + លេខកូដសម្ងាល់ + + + ឈ្មោះ + + + រក្សាទុក + + + ពន្ធ + + + បច្ចុប្បន្នភាព + + + បច្ចុប្បន្នភាពម៉ាក + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditBrandModal.nl.resx b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.nl.resx new file mode 100644 index 0000000..13c6a94 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.nl.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Merk toevoegen + + + Merk gered! + + + Merk bijgewerkt! + + + Annuleren + + + Beschrijving + + + Id + + + Naam + + + Opslaan + + + Belasting + + + Update + + + Merk bijwerken + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditBrandModal.ru.resx b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.ru.resx new file mode 100644 index 0000000..2e506f3 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditBrandModal.ru.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Добавить бренд + + + Бренд сохранён + + + Бренд обновлён + + + Отмена + + + Описание + + + Id + + + Наименование + + + Сохранить + + + Сбор + + + Обновить + + + Обновить бренд + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditProductModal.ar.resx b/src/Client/Resources/Pages/Catalog/AddEditProductModal.ar.resx new file mode 100644 index 0000000..bcb9ce0 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditProductModal.ar.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + أضف منتج + + + الشفره + + + ماركة + + + إلغاء + + + حذف + + + وصف + + + المعرّف + + + اسم + + + تم حفظ المنتج! + + + تم تحديث المنتج! + + + تقييم + + + حفظ + + + تحديث + + + تحديث المنتج + + + تحميل + + + عرض + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditProductModal.de.resx b/src/Client/Resources/Pages/Catalog/AddEditProductModal.de.resx new file mode 100644 index 0000000..1bf6eaa --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditProductModal.de.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Produkt hinzufügen + + + Strichcode + + + Marke + + + Abbrechen + + + Löschen + + + Beschreibung + + + Id + + + Name + + + Produkte gespeichert + + + Produkt aktualisiert + + + Bewertung + + + Speichern + + + Aktualisieren + + + Produkt aktualisieren + + + Upload + + + Ansicht + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditProductModal.en.resx b/src/Client/Resources/Pages/Catalog/AddEditProductModal.en.resx new file mode 100644 index 0000000..ef00fca --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditProductModal.en.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Add Product + + + Barcode + + + Brand + + + Cancel + + + Delete + + + Description + + + Id + + + Name + + + Product Saved! + + + Product Updated! + + + Rate + + + Save + + + Update + + + Update Product + + + Upload + + + View + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditProductModal.es.resx b/src/Client/Resources/Pages/Catalog/AddEditProductModal.es.resx new file mode 100644 index 0000000..1dabb2f --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditProductModal.es.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Agregar Producto + + + Código de barra + + + Marca + + + Cancelar + + + Eliminar + + + Descripción + + + Id + + + Nombre + + + Producto Guardado! + + + Producto Actualizado! + + + Precio + + + Guardar + + + Actualizar + + + Actualizar Producto + + + Subir + + + Ver + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditProductModal.fr.resx b/src/Client/Resources/Pages/Catalog/AddEditProductModal.fr.resx new file mode 100644 index 0000000..4ba8a22 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditProductModal.fr.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ajouter un produit + + + Code barre + + + Marque + + + Annuler + + + Supprimer + + + Description + + + Identifiant + + + Nom + + + Produit enregistré ! + + + Produit mis à jour ! + + + Note + + + Sauvegarder + + + Mettre à jour + + + Édition d'un produit + + + Téléverser + + + Voir + + diff --git a/src/Client/Resources/Pages/Catalog/AddEditProductModal.id.resx b/src/Client/Resources/Pages/Catalog/AddEditProductModal.id.resx new file mode 100644 index 0000000..770fbfa --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditProductModal.id.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Tambah Produk + + + Barcode + + + Merek + + + Batal + + + Hapus + + + Deskripsi + + + Id + + + Nama + + + Produk Tersimpan! + + + Produk Diperbarui! + + + Nilai + + + Simpan + + + Perbarui + + + Perbarui Produk + + + Unggah + + + View + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditProductModal.it.resx b/src/Client/Resources/Pages/Catalog/AddEditProductModal.it.resx new file mode 100644 index 0000000..1d11a75 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditProductModal.it.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aggiungi prodotto + + + Barcode + + + Marca + + + Annulla + + + Elimina + + + Descrizione + + + Id + + + Nome + + + Prodotto Salvato! + + + Prodotto Aggiornato! + + + Vota + + + Salva + + + Aggiorna + + + Aggiorna Prodotto + + + Carica + + + View + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditProductModal.km.resx b/src/Client/Resources/Pages/Catalog/AddEditProductModal.km.resx new file mode 100644 index 0000000..06f7050 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditProductModal.km.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + បន្ថែមផលិតផល + + + បាកូដ + + + ម៉ាក + + + បោះបង់ + + + លុប + + + ការពិពណ៌នា + + + លេខកូដសម្ងាល់ + + + ឈ្មោះ + + + ផលិតផលបានរក្សាទុក + + + ផលិតផលបានធ្វើបច្ចុប្បន្នភាព + + + អត្រា + + + រក្សាទុក + + + បច្ចុប្បន្នភាព + + + ធ្វើបច្ចុប្បន្នភាពផលិតផល + + + ផ្ទុកឡើង + + + បង្ហាញ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditProductModal.nl.resx b/src/Client/Resources/Pages/Catalog/AddEditProductModal.nl.resx new file mode 100644 index 0000000..f81d047 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditProductModal.nl.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Product toevoegen + + + Barcode + + + Merk + + + Annuleren + + + Verwijderen + + + Beschrijving + + + Id + + + Naam + + + Product opgeslagen! + + + Product bijgewerkt! + + + Verhouding + + + Opslaan + + + Update + + + Product bijwerken + + + Uploaden + + + Bekijken + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditProductModal.ru.resx b/src/Client/Resources/Pages/Catalog/AddEditProductModal.ru.resx new file mode 100644 index 0000000..58dbb12 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditProductModal.ru.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Добавить продукт + + + Баркод + + + Бренд + + + Отмена + + + Удалить + + + Описание + + + Id + + + Наименование + + + Продукт сохранён + + + Продукт обновлён + + + Рейтинг + + + Сохранить + + + Обновить + + + Обновить продукт + + + Загрузить + + + Просмотр + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/AddEditProductModal.sv.resx b/src/Client/Resources/Pages/Catalog/AddEditProductModal.sv.resx new file mode 100644 index 0000000..1882727 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/AddEditProductModal.sv.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Lägg till produkt + + + Streckkod + + + Varumärke + + + Avbryt + + + Radera + + + Beskrivning + + + Id + + + Namn + + + Produkt Sparad! + + + Produkt Uppdaterad! + + + Betygsätt + + + Spara + + + Uppdatera + + + Uppdatera Produkt + + + Ladda upp + + + View + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Brands.ar.resx b/src/Client/Resources/Pages/Catalog/Brands.ar.resx new file mode 100644 index 0000000..45c2a98 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Brands.ar.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + أجراءات + + + أضف العلامة التجارية + + + يحدها + + + العلامات التجارية + + + تصدير الماركات + + + إنشاء + + + حذف + + + حذف المحتوى + + + كثيف + + + وصف + + + تعديل + + + تصدير + + + تم تصدير العلامات التجارية المفلترة + + + المعرّف + + + استيراد + + + إدارة العلامات التجارية. + + + اسم + + + لا توجد إجراءات مسموح بها + + + إعادة تحميل + + + ابحث عن العلامات التجارية + + + مخطط + + + ضريبة + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Brands.de.resx b/src/Client/Resources/Pages/Catalog/Brands.de.resx new file mode 100644 index 0000000..88c287c --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Brands.de.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktionen + + + Marke hinzufügen + + + Gerahmt + + + Marken + + + Marken exportiert + + + Hinzufügen + + + Löschen + + + Inhalt löschen + + + Schmal + + + Beschreibung + + + Bearbeiten + + + Exportieren + + + Gefilterte Marken exportiert + + + Id + + + Importieren + + + Marken verwalten. + + + Name + + + Keine Aktionen erlaubt + + + Neu laden + + + Nach Marken suchen + + + Gebändert + + + Steuer + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Brands.en.resx b/src/Client/Resources/Pages/Catalog/Brands.en.resx new file mode 100644 index 0000000..27b237c --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Brands.en.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Add Brand + + + Bordered + + + Brands + + + Brands exported + + + Create + + + Delete + + + Delete Content + + + Dense + + + Description + + + Edit + + + Export + + + Filtered Brands exported + + + Id + + + Import + + + Manage Brands. + + + Name + + + No Allowed Actions + + + Reload + + + Search for Brands + + + Striped + + + Tax + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Brands.es.resx b/src/Client/Resources/Pages/Catalog/Brands.es.resx new file mode 100644 index 0000000..35aebe0 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Brands.es.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acciones + + + Agregar Marca + + + Bordeado + + + Marcas + + + Marcas Exportadas + + + Crear + + + Borrar + + + ¿Desea eliminar el registro? + + + Denso + + + Descripción + + + Editar + + + Exportar + + + Marcas filtradas exportadas + + + Id + + + Importar + + + Gestionar Marcas + + + Nombre + + + Acciones no Permitidas + + + Recargar + + + Buscar Marcas + + + Rayado + + + Impuestos + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Brands.fr.resx b/src/Client/Resources/Pages/Catalog/Brands.fr.resx new file mode 100644 index 0000000..5ccf553 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Brands.fr.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Ajouter un marque + + + Avec bordures + + + Marques + + + Marques exportées + + + Créer + + + Supprimer + + + Supprimer la marque + + + Dense + + + Description + + + Éditer + + + Exporter + + + Marques filtrées exportées + + + Identifiant + + + Importer + + + Gérer les marques + + + Nom + + + Aucune action autorisée + + + Recharger + + + Chercher des marques + + + Rayé + + + Taxe + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Brands.id.resx b/src/Client/Resources/Pages/Catalog/Brands.id.resx new file mode 100644 index 0000000..81a2f01 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Brands.id.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Tindakan + + + Tambah Merek + + + Merek + + + Brands exported + + + Tambah + + + Hapus + + + Hapus Konten + + + Deskripsi + + + Sunting + + + Ekspor + + + Filtered Brands exported + + + Id + + + Import + + + Kelola Merek. + + + Nama + + + No Allowed Actions + + + Muat Ulang + + + Cari Merek + + + Pajak + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Brands.it.resx b/src/Client/Resources/Pages/Catalog/Brands.it.resx new file mode 100644 index 0000000..346068b --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Brands.it.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Azioni + + + Aggiungi marca + + + Marche + + + Brands exported + + + Crea + + + Elimina + + + Cancella contenuto + + + Descrizione + + + Modifica + + + Export + + + Filtered Brands exported + + + Id + + + Import + + + Gestione marca. + + + Nome + + + Nessuna azione consentita + + + Ricarica + + + Ricerca marche + + + Imposta + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Brands.km.resx b/src/Client/Resources/Pages/Catalog/Brands.km.resx new file mode 100644 index 0000000..20a35b7 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Brands.km.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + មុខងារ + + + បន្ថែមម៉ាក + + + ម៉ាក + + + ម៉ាកបាននាំចេញ + + + បង្កើត + + + លុប + + + ការពិពណ៌នា + + + កែប្រែ + + + នាំចេញ + + + ច្រោះម៉ាកបាននាំចេញ + + + លេខកូដសម្ងាល់ + + + Import + + + គ្រប់គ្រងម៉ាក + + + ឈ្មោះ + + + មិនមានសិទ្ធិ + + + ផ្ទុកឡើងវិញ + + + ស្វែងរកម៉ាក + + + ពន្ធ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Brands.nl.resx b/src/Client/Resources/Pages/Catalog/Brands.nl.resx new file mode 100644 index 0000000..d3e5aec --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Brands.nl.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acties + + + Merk toevoegen + + + Grenst aan + + + Merken + + + Geëxporteerde merken + + + Aanmaken + + + Verwijderen + + + Inhoud verwijderen + + + Dicht + + + Beschrijving + + + Bewerken + + + Exporteren + + + Gefilterde merken geëxporteerd + + + Id + + + Importeren + + + Beheer merken. + + + Naam + + + Geen toegestane acties + + + Herladen + + + Zoeken naar merken + + + Gestreept + + + Belasting + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Brands.ru.resx b/src/Client/Resources/Pages/Catalog/Brands.ru.resx new file mode 100644 index 0000000..1c34c46 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Brands.ru.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Действия + + + Добавить бренд + + + Обрамлённый + + + Бренды + + + Бренды экспортированы + + + Создать + + + Удалить + + + Удалить контент + + + Компактный + + + Описание + + + Редактировать + + + Экспорт в Excel + + + Отфильтрованные бренды экспортированы + + + Id + + + Импорт + + + Управление брендами. + + + Наименование + + + Нет доступных действий + + + Перезагрузить + + + Поиск брендов... + + + Чередующийся + + + Сбор + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Brands.sv.resx b/src/Client/Resources/Pages/Catalog/Brands.sv.resx new file mode 100644 index 0000000..934d8d1 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Brands.sv.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Åtgärder + + + Lägg till varumärke + + + Varumärken + + + Brands exported + + + Skapa + + + Radera + + + Ta bort innehåll + + + Beskrivning + + + Redigera + + + Exportera + + + Filtered Brands exported + + + Id + + + Import + + + Hantera varumärken. + + + Namn + + + No Allowed Actions + + + Ladda om + + + Sök efter varumärken + + + Moms + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Products.ar.resx b/src/Client/Resources/Pages/Catalog/Products.ar.resx new file mode 100644 index 0000000..e84ef69 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Products.ar.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + أجراءات + + + الشفره + + + يحدها + + + ماركة + + + إنشاء + + + حذف + + + حذف المحتوى + + + كثيف + + + وصف + + + تعديل + + + تصدير + + + تصدير المنتجات المفلترة + + + المعرّف + + + إدارة المنتجات. + + + اسم + + + لا توجد إجراءات مسموح بها + + + منتجات + + + تصدير المنتجات + + + تقييم + + + إعادة تحميل + + + بحث + + + مخطط + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Products.de.resx b/src/Client/Resources/Pages/Catalog/Products.de.resx new file mode 100644 index 0000000..d3ab068 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Products.de.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktionen + + + Strichcode + + + Gerahmt + + + Marke + + + Hinzufügen + + + Löschen + + + Inhalt löschen + + + Schmal + + + Beschreibung + + + Bearbeiten + + + Exportieren + + + Gefilterte Produkte exportiert + + + Id + + + Produkte verwalten + + + Maximale Bewertung + + + Minimale Bewertung + + + Name + + + Keine Aktionen erlaubt + + + Produkte + + + Produkte exportiert + + + Bewertung + + + Neu laden + + + Suchen + + + Gebändert + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Products.en.resx b/src/Client/Resources/Pages/Catalog/Products.en.resx new file mode 100644 index 0000000..1c633ca --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Products.en.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Barcode + + + Bordered + + + Brand + + + Create + + + Delete + + + Delete Content + + + Dense + + + Description + + + Edit + + + Export + + + Filtered Products exported + + + Id + + + Manage Products. + + + Maximum Rate + + + Minimum Rate + + + Name + + + No Allowed Actions + + + Products + + + Products exported + + + Rate + + + Reload + + + Search + + + Striped + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Products.es.resx b/src/Client/Resources/Pages/Catalog/Products.es.resx new file mode 100644 index 0000000..3da508d --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Products.es.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acciones + + + Código de barra + + + Bordeado + + + Marca + + + Crear + + + Borrar + + + ¿Desea eliminar el registro? + + + Denso + + + Descripción + + + Editar + + + Exportar + + + Productos filtrados exportados + + + Id + + + Gestionar Productos + + + Nombre + + + Acciones no Permitidas + + + Productos + + + Productos exportados + + + Precio + + + Recargar + + + Buscar + + + Rayado + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Products.fr.resx b/src/Client/Resources/Pages/Catalog/Products.fr.resx new file mode 100644 index 0000000..ebf66a8 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Products.fr.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Code barre + + + Avec bordures + + + Marque + + + Créer + + + Supprimer + + + Supprimer le produit + + + Dense + + + Description + + + Éditer + + + Exporter + + + Produits filtrés exportés + + + Identifiant + + + Gérer les produits. + + + Nom + + + Aucune action autorisée + + + Produits + + + Products exported + + + Note + + + Recharger + + + Chercher + + + Rayé + + diff --git a/src/Client/Resources/Pages/Catalog/Products.id.resx b/src/Client/Resources/Pages/Catalog/Products.id.resx new file mode 100644 index 0000000..15d8d77 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Products.id.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Tindakan + + + Barcode + + + Merek + + + Tambah + + + Hapus + + + Hapus Konten + + + Deskripsi + + + Sunting + + + Ekspor + + + Filtered Products exported + + + Id + + + Kelola Produk. + + + Nama + + + No Allowed Actions + + + Produk + + + Products exported + + + Nilai + + + Muat Ulang + + + Cari + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Products.it.resx b/src/Client/Resources/Pages/Catalog/Products.it.resx new file mode 100644 index 0000000..a218fa3 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Products.it.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Azioni + + + Descrizione + + + Id + + + Nome + + + Prodotti + + + Ricarica + + + Marca + + + Cancella contenuto + + + Ricerca + + + Tasso + + + Gestione prodotti. + + + Modifica + + + Elimina + + + Crea + + + Barcode + + + Prodotti esportati + + + Prodotti filtrati esportati + + + Nessuna azione consentita + + + Tasso massimo + + + Tasso minimo + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Products.km.resx b/src/Client/Resources/Pages/Catalog/Products.km.resx new file mode 100644 index 0000000..6cbf00d --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Products.km.resx @@ -0,0 +1,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + មុខងារ + + + បាកូដ + + + បង្កើត + + + លុប + + + ការពិពណ៌នា + + + កែប្រែ + + + ច្រោះផលិតផលបាននាំចេញ + + + លេខកូដសម្ងាល់ + + + គ្រប់គ្រងផលិតផល + + + ឈ្មោះ + + + គ្មានសិទ្ធិ + + + ផលិតផល + + + ផលិតផលនាំចេញ + + + អត្រា + + + ផ្ទុកឡើងវិញ + + + ស្វែងរក + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Products.nl.resx b/src/Client/Resources/Pages/Catalog/Products.nl.resx new file mode 100644 index 0000000..cc4ced9 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Products.nl.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acties + + + Barcode + + + Aanmaken + + + Verwijderen + + + Beschrijving + + + Bewerken + + + Gefilterde producten geëxporteerd + + + Id + + + Producten beheren. + + + Naam + + + Geen toegestane acties + + + Producten + + + Uitgevoerde producten + + + Verhouding + + + Herladen + + + Zoeken + + + Grenst aan + + + Merk + + + Inhoud verwijderen + + + Dicht + + + Exporteren + + + Gestreept + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Products.ru.resx b/src/Client/Resources/Pages/Catalog/Products.ru.resx new file mode 100644 index 0000000..b2ae187 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Products.ru.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Действия + + + Баркод + + + Обрамлённый + + + Бренд + + + Создать + + + Удалить + + + Удалить контент + + + Компактный + + + Описание + + + Редактировать + + + Экспорт в Excel + + + Отфильтрованные продукты экспортированы + + + Id + + + Управление продуктами. + + + Наименование + + + Нет доступных действий + + + Продукты + + + Продукты экспортированы + + + Рейтинг + + + Перезагрузить + + + Поиск продуктов... + + + Чередующийся + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Catalog/Products.sv.resx b/src/Client/Resources/Pages/Catalog/Products.sv.resx new file mode 100644 index 0000000..43994b0 --- /dev/null +++ b/src/Client/Resources/Pages/Catalog/Products.sv.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Åtgärder + + + Streckkod + + + Varumärke + + + Skapa + + + Radera + + + Ta bort innehåll + + + Beskrivning + + + Redigera + + + Exportera + + + Filtered Products exported + + + Id + + + Hantera Produkter. + + + Namn + + + No Allowed Actions + + + Produkter + + + Products exported + + + Betygsätta + + + Ladda om + + + Sök + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Communication/Chat.ar.resx b/src/Client/Resources/Pages/Communication/Chat.ar.resx new file mode 100644 index 0000000..6637bd9 --- /dev/null +++ b/src/Client/Resources/Pages/Communication/Chat.ar.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + دردشة + + + جهات الاتصال + + + دليل مفصل للمزيد. + + + أدخل رسالتك... + + + مسجّل الدخول. + + + تسجيل الخروج. + + + رسالة جديدة من {0} + + + يرسل + + + هل تريد أن تفهم كيف يتم تنفيذ الدردشة في BlazorHero؟ قم بإحالة هذا + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Communication/Chat.de.resx b/src/Client/Resources/Pages/Communication/Chat.de.resx new file mode 100644 index 0000000..0555b5b --- /dev/null +++ b/src/Client/Resources/Pages/Communication/Chat.de.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Chat + + + Kontakte + + + Detaillierte Anleitung für mehr. + + + Gibt deine Nachricht ein... + + + Eingeloggt. + + + Ausgeloggt. + + + Neue Nachricht von {0} + + + Absenden + + + Du möchtest verstehen, wie der Chat in FullStackHero implementiert ist? Lies hier + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Communication/Chat.en.resx b/src/Client/Resources/Pages/Communication/Chat.en.resx new file mode 100644 index 0000000..7b318d4 --- /dev/null +++ b/src/Client/Resources/Pages/Communication/Chat.en.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + chat + + + contacts + + + detailed guide for more. + + + Enter your message... + + + Logged In. + + + Logged Out. + + + New Message From {0} + + + Send + + + Want to understand how Chat is implemented in BlazorHero ? Refer this + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Communication/Chat.es.resx b/src/Client/Resources/Pages/Communication/Chat.es.resx new file mode 100644 index 0000000..702f3f7 --- /dev/null +++ b/src/Client/Resources/Pages/Communication/Chat.es.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + chat + + + contactos + + + guía detallada para mas. + + + Ingrese su mensaje... + + + Contectado. + + + Desconectado. + + + Nuevo mensaje de {0} + + + Enviar + + + ¿Quiere entender como el Chat está implmentado en BlazorHero? Mirar esta referencia + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Communication/Chat.fr.resx b/src/Client/Resources/Pages/Communication/Chat.fr.resx new file mode 100644 index 0000000..9b67e0b --- /dev/null +++ b/src/Client/Resources/Pages/Communication/Chat.fr.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Conversations + + + Contacts + + + guide détaillé pour en savoir plus. + + + Entrez votre message. + + + Connecté. + + + Déconnecté. + + + Nouveau message de {0} + + + Envoyer + + + Vous voulez comprendre comment le chat est implémenté dans BlazorHero ? Jettez un œil à ce + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Communication/Chat.id.resx b/src/Client/Resources/Pages/Communication/Chat.id.resx new file mode 100644 index 0000000..a9e65c4 --- /dev/null +++ b/src/Client/Resources/Pages/Communication/Chat.id.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + obrolan + + + kontak + + + panduan rinci lebih lanjut. + + + Tulis pesan anda... + + + Logged In. + + + Logged Out. + + + New Message From {0} + + + Kirim + + + Ingin tau bagaimana cara obrolan diimplementasi di BlazorHero ? Lihat + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Communication/Chat.it.resx b/src/Client/Resources/Pages/Communication/Chat.it.resx new file mode 100644 index 0000000..534c625 --- /dev/null +++ b/src/Client/Resources/Pages/Communication/Chat.it.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + chat + + + contatti + + + guida dettagliata per saperne di più. + + + Inserisci il tuo messaggio ... + + + Logged In. + + + Logged Out. + + + New Message From {0} + + + Invia + + + Vuoi capire come viene implementata la chat in BlazorHero? Guarda qui + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Communication/Chat.km.resx b/src/Client/Resources/Pages/Communication/Chat.km.resx new file mode 100644 index 0000000..f492f0a --- /dev/null +++ b/src/Client/Resources/Pages/Communication/Chat.km.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ជជែក + + + ឈ្មោះទំនាក់ទំនង + + + ការណែនាំលំអិត + + + វាយបញ្ចូលសាររបស់អ្នក + + + ឡុកចូល។ + + + ឡុកចេញ។ + + + សារថ្មីមកពី {0} + + + ផ្ញើ + + + ចង់ដឹងអំពីរបៀបសរសេរកូដមុខងារជជែកក្នុងប្លេហ្សឺហេរ៉ូ ចូលទៅកាន់តំណភ្ជាប់នេះ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Communication/Chat.nl.resx b/src/Client/Resources/Pages/Communication/Chat.nl.resx new file mode 100644 index 0000000..7b2a08f --- /dev/null +++ b/src/Client/Resources/Pages/Communication/Chat.nl.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Gesprek + + + Contactpersonen + + + gedetailleerde gids voor meer. + + + Voer uw bericht in... + + + Ingelogd. + + + Uitgelogd. + + + Nieuw bericht van {0} + + + Verzenden + + + Wilt u begrijpen hoe een Chat wordt geïmplementeerd in BlazorHero ? Ga dan naar deze + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Communication/Chat.ru.resx b/src/Client/Resources/Pages/Communication/Chat.ru.resx new file mode 100644 index 0000000..e2e8a9e --- /dev/null +++ b/src/Client/Resources/Pages/Communication/Chat.ru.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + чат + + + контакты + + + подробному руководству для получения дополнительной информации. + + + Введите ваше сообщение... + + + авторизовался. + + + вышел. + + + Новое сообщение от {0} + + + Отправить + + + Хотите понять, как реализован чат в BlazorHero ? Обратитесь к этому + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Communication/Chat.sv.resx b/src/Client/Resources/Pages/Communication/Chat.sv.resx new file mode 100644 index 0000000..0fa02a8 --- /dev/null +++ b/src/Client/Resources/Pages/Communication/Chat.sv.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + chatt + + + kontakter + + + detaljerad guide för mer. + + + Ditt meddelande... + + + Logged In. + + + Logged Out. + + + New Message From {0} + + + Skicka + + + Vill du förstå hur Chatt implementeras i BlazorHero? Se detta + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Home.ar.resx b/src/Client/Resources/Pages/Content/Home.ar.resx new file mode 100644 index 0000000..06018d1 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Home.ar.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + بليزر للمبتدئين - بدء استخدام بليزر + + + Blazor Hero عبارة عن نموذج للحل الشامل للهندسة المعمارية النظيفة لتجميع الويب Blazor الذي تم إنشاؤه باستخدام + + + بناء تطبيق دردشة مع Blazor ، Identity ، و SignalR + + + الاحتفال بـ 1500 نجمة على جيثب! + + + مكتبة المكونات + + + المصادقة المخصصة في Blazor WebAssembly - بالتفصيل + + + قالب معماري نظيف لـ Blazor Web-Assembly + + + التوثيق - قريبا + + + استكشاف هيكل مشروع Blazor + + + ابدء + + + مستودع جيثب: لا تنسى ترك نجم ؛) + + + إليك بعض المقالات التي من المفترض أن تساعدك في البدء باستخدام Blazor. + + + كيفية تنفيذ Blazor CRUD باستخدام Entity Framework Core؟ + + + تنفيذ Blazor CRUD باستخدام مكتبة مكونات Mudblazor في .NET 5 + + + روابط مهمة + + + في حال كنت عالقًا في أي مكان أو كان لديك أي استفسارات بخصوص هذا التنفيذ ، فقد قمت بتجميع دليل البدء السريع للرجوع إليه + + + مصادر التعلم + + + أحب BlazorHero؟ نجمة لنا على جيثب! + + + هندسة البصل في ASP.NET Core مع CQRS - مفصل + + + صفحة المشروع + + + دليل البدء السريع + + + اقرأ الدليل + + + ادعمني! + + + بلازور هيرو + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Home.de.resx b/src/Client/Resources/Pages/Content/Home.de.resx new file mode 100644 index 0000000..64fdfeb --- /dev/null +++ b/src/Client/Resources/Pages/Content/Home.de.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Blazor für Anfänger - Erste Schritte in Blazor + + + Blazor Hero ist ein All-In-One Clean Architecture Lösungstemplate für Blazor Web-Assembly, erstellt mit + + + Baue eine Chat-Anwendung With Blazor, Identity, And SignalR + + + Wir feiern 1,500 Sterne auf Github! + + + Komponentenbibliothek + + + Benutzerdefinierte Authentifizierung in Blazor WebAssembly im Detail + + + Clean Architecture Vorlage für Blazor Web-Assembly + + + Dokumentation - demnächst + + + Erforsche die Blazor Projektstruktur + + + Erste Schritte + + + Github Repository : Vergiss nicht, einen Stern zu hinterlassen ;) + + + Hier sind ein paar Artikel, die dir beimn Einstieg in Blazor helfen sollten. + + + Wie implementierst du Blazor CRUD mit Entity Framework Core? + + + Implementiere Blazor CRUD mit der Mudblazor Komponentenbibliothek in .NET 5 + + + Wichtige Verknüpfungen + + + Falls du irgendwo steckenbleiben solltest, oder Fragen zu dieser Implementierung hast, habe ich eine Schnellstartanleitung für dich erstellt. + + + Lernmittel + + + Dir gefällt BlazorHero? Hinterlasse einen Stern auf Github! + + + Zwiebelarchitektur in ASP.NET Core mit CQRS im Detail + + + Projektseite + + + Schnellstartanleitung + + + Lies die Anleitung + + + Unterstütze mich! + + + Blazor Hero + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Home.en.resx b/src/Client/Resources/Pages/Content/Home.en.resx new file mode 100644 index 0000000..1d1c273 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Home.en.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Blazor For Beginners – Getting Started With Blazor + + + Blazor Hero is an All-In-One Clean Architecture Solution Template For Blazor Web-Assembly built with + + + Building A Chat Application With Blazor, Identity, And SignalR + + + Celebrating 1,500 Stars on Github! + + + Component Library + + + Custom Authentication In Blazor WebAssembly – Detailed + + + Clean Architecture Template For Blazor Web-Assembly + + + Documentation - Coming Soon + + + Exploring Blazor Project Structure + + + Getting Started + + + Github Repository : Do Not Forget to Leave a Star ;) + + + Here are few articles that should help you get started with Blazor. + + + How To Implement Blazor CRUD Using Entity Framework Core? + + + Implementing Blazor CRUD Using Mudblazor Component Library In .NET 5 + + + Important Links + + + In case you are stuck anywhere or have any queries regarding this implementation, I have compiled a Quick Start Guide for you reference. + + + Learning Resources + + + Liked BlazorHero? Star us on Github! + + + Onion Architecture In ASP.NET Core With CQRS – Detailed + + + Project Page + + + Quick Start Guide + + + Read The Guide + + + Support Me! + + + Blazor Hero + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Home.es.resx b/src/Client/Resources/Pages/Content/Home.es.resx new file mode 100644 index 0000000..f5e12b4 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Home.es.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Blazor para Principiantes – Iniciarse con Blazor + + + Blazor Hero es un template de Solución de Arquitectura todo-en-uno para Blazor Web-Assembly, hecho con la Librería de Componentes + + + Construir una Aplicación de Chat con Blazor, Identity y SignalR + + + Celebrando 1,500 Estrellas en Github! + + + + + + Autenticación Personalizada en Blazor WebAssembly – Detallado + + + Template de Arquitectura Limpia para Blazor Web-Assembly + + + Documentación - Pronto + + + Explorando la estructura de un Proyecto Blazor + + + Iniciarse + + + Repositorio en Github: No olvides dejar una estrella ;) + + + Aquí hay unos artículos que te ayudarán a iniciarte el Blazor. + + + ¿Cómo implementar un CRUD en Blazro usando Entity Framework Core? + + + Implementando un CRUD en Blazor usando la librería de componentes Mudblazor en .NET 5 + + + Links Importantes + + + En caso que tengas problemas para avanzar o tengas preguntas sobre la implementación, he compilado una Guía de Inicio Rápido para tu referencia. + + + Recursos para Aprendizaje + + + ¿Te gustó BlazorHero? Deja una estrella en Github! + + + Arquitectura Onion en ASP.NET Core con CQRS – Detalle + + + Página del proyecto + + + Guía de Inicio Rápido + + + Lee la guía + + + Apoyarme! + + + Blazor Hero + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Home.fr.resx b/src/Client/Resources/Pages/Content/Home.fr.resx new file mode 100644 index 0000000..0024b82 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Home.fr.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Blazor For Beginners – Getting Started With Blazor + + + Blazor Hero est un modèle de solution propre et tout en un pour Blazor Web-Assembly, construit avec la bibliothèque de composants + + + Building A Chat Application With Blazor, Identity, And SignalR + + + Celebrating 1,500 Stars on Github! + + + + + + Custom Authentication In Blazor WebAssembly – Detailed + + + Modèle d'architecture propre pour Blasor Web-Assembly + + + Documentation - Coming Soon + + + Exploring Blazor Project Structure + + + Getting Started + + + Github Repository : Do Not Forget to Leave a Star ;) + + + Here are few articles that should help you get started with Blazor. + + + How To Implement Blazor CRUD Using Entity Framework Core? + + + Implementing Blazor CRUD Using Mudblazor Component Library In .NET 5 + + + Important Links + + + In case you are stuck anywhere or have any queries regarding this implementation, I have compiled a Quick Start Guide for you reference. + + + Learning Resources + + + Liked BlazorHero? Star us on Github! + + + Onion Architecture In ASP.NET Core With CQRS – Detailed + + + Project Page + + + Quick Start Guide + + + Read The Guide + + + Support Me! + + + Blazor Hero + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Home.id.resx b/src/Client/Resources/Pages/Content/Home.id.resx new file mode 100644 index 0000000..32c38ef --- /dev/null +++ b/src/Client/Resources/Pages/Content/Home.id.resx @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Blazor For Beginners – Getting Started With Blazor + + + Blazor Hero adalah sebuah Template Solusi Clean Architecture All-In-One Untuk Blazor Web-Assembly + + + Blazor Hero is an All-In-One Clean Architecture Solution Template For Blazor Web-Assembly built with + + + Building A Chat Application With Blazor, Identity, And SignalR + + + Celebrating 1,500 Stars on Github! + + + Pustaka Komponen + + + Component Library + + + Custom Authentication In Blazor WebAssembly – Detailed + + + Template Clean Architecture Untuk Blazor Web-Assembly + + + Documentation - Coming Soon + + + Exploring Blazor Project Structure + + + Getting Started + + + Github Repository : Do Not Forget to Leave a Star ;) + + + Here are few articles that should help you get started with Blazor. + + + How To Implement Blazor CRUD Using Entity Framework Core? + + + Implementing Blazor CRUD Using Mudblazor Component Library In .NET 5 + + + Important Links + + + In case you are stuck anywhere or have any queries regarding this implementation, I have compiled a Quick Start Guide for you reference. + + + Learning Resources + + + Liked BlazorHero? Star us on Github! + + + Onion Architecture In ASP.NET Core With CQRS – Detailed + + + Halaman Proyek + + + Quick Start Guide + + + Read The Guide + + + Dukung Saya! + + + Blazor Hero + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Home.it.resx b/src/Client/Resources/Pages/Content/Home.it.resx new file mode 100644 index 0000000..e004f55 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Home.it.resx @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Descrizione + + + Blazor Hero + + + Libreria di compoenti + + + Supportami! + + + Blazor Hero + + + Blazor For Beginners – Getting Started With Blazor + + + Blazor Hero is an All-In-One Clean Architecture Solution Template For Blazor Web-Assembly built with + + + Building A Chat Application With Blazor, Identity, And SignalR + + + Celebrating 1,500 Stars on Github! + + + Component Library + + + Custom Authentication In Blazor WebAssembly – Detailed + + + Exploring Blazor Project Structure + + + Getting Started + + + Github Repository : Do Not Forget to Leave a Star ;) + + + Here are few articles that should help you get started with Blazor. + + + How To Implement Blazor CRUD Using Entity Framework Core? + + + Implementing Blazor CRUD Using Mudblazor Component Library In .NET 5 + + + Important Links + + + In case you are stuck anywhere or have any queries regarding this implementation, I have compiled a Quick Start Guide for you reference. + + + Learning Resources + + + Liked BlazorHero? Star us on Github! + + + Onion Architecture In ASP.NET Core With CQRS – Detailed + + + Quick Start Guide + + + Read The Guide + + + Documentation - Coming Soon + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Home.km.resx b/src/Client/Resources/Pages/Content/Home.km.resx new file mode 100644 index 0000000..7fccc0b --- /dev/null +++ b/src/Client/Resources/Pages/Content/Home.km.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ប្លេហ្សឺសម្រាប់ការចាប់ផ្តើម - ចាំផ្តើមជាមួយប្លេហ្សឺ + + + Blazor Hero is an All-In-One Clean Architecture Solution Template For Blazor Web-Assembly built with + + + Building A Chat Application With Blazor, Identity, And SignalR + + + Celebrating 1,500 Stars on Github! + + + Component Library + + + Custom Authentication In Blazor WebAssembly – Detailed + + + គំរូកម្មវិធីដែលអភិវឌ្ឍតាមបច្ចេកវិទ្យា Blazor Web-Assembly + + + ឯកសារណែនាំលម្អិត មកដល់ឆាប់ៗនេះ + + + គ្រោងថតរបស់គម្រោង + + + ចាប់ផ្តើម + + + Github Repository : Do Not Forget to Leave a Star ;) + + + Here are few articles that should help you get started with Blazor. + + + How To Implement Blazor CRUD Using Entity Framework Core? + + + Implementing Blazor CRUD Using Mudblazor Component Library In .NET 5 + + + Important Links + + + In case you are stuck anywhere or have any queries regarding this implementation, I have compiled a Quick Start Guide for you reference. + + + ធនធានសិក្សា + + + Liked BlazorHero? Star us on Github! + + + Onion Architecture In ASP.NET Core With CQRS – Detailed + + + ទំព័រគម្រោង + + + ការណែនាំសង្ខេប + + + អានការណែនា + + + គាំទ្រយើងខ្ញុំ! + + + ប្លេហ្សឺ ហេរ៉ូ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Home.nl.resx b/src/Client/Resources/Pages/Content/Home.nl.resx new file mode 100644 index 0000000..6ec8ae5 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Home.nl.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Blazor voor beginners – Aan de slag met Blazor + + + Blazor Hero is een alles-in-één schone architectuuroplossing sjabloon voor Blazor web-assembly gebouwd met + + + Een chattoepassing bouwen met Blazor, Identity en SignalR + + + Inmiddels 1500 sterren op Github! + + + Componentbibliotheek + + + Aangepaste verificatie in Blazor WebAssembly - Gedetailleerd + + + Schone architectuursjabloon voor Blazor Web-Assembly + + + Documentatie - Binnenkort beschikbaar + + + Blazor-projectstructuur verkennen + + + Opstarten + + + Github Repository : Vergeet niet om een ster achter te laten ;) + + + Hier zijn enkele artikelen die u moeten helpen aan de slag te gaan met Blazor. + + + Hoe Blazor CRUD implementeren met Entity Framework Core? + + + Blazor CRUD implementeren met mudblazor-componentbibliotheek in .NET 5 + + + Belangrijke links + + + Verhoog dat u ergens vastzit of heb vragen over deze implementatie, ik heb een Quick Start Guide voor u samengesteld. + + + Leermiddelen + + + Vind je BlazorHero leuk? Geef een ster op Github! + + + Onion Architecture In ASP.NET Core Met CQRS – Gedetailleerd + + + Projectpagina + + + Snelstartgids + + + Lees de gids + + + Steun mij! + + + Blazor Held + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Home.ru.resx b/src/Client/Resources/Pages/Content/Home.ru.resx new file mode 100644 index 0000000..c1d6b11 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Home.ru.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Blazor For Beginners – Getting Started With Blazor + + + Blazor Hero - это All-In-One шаблон решения с применением "чистой" архитектуры для Blazor Web-Assembly, построенный с помощью + + + Building A Chat Application With Blazor, Identity, And SignalR + + + Достигнуто 1,500 Звёзд на Github! + + + библиотеки компонентов + + + Custom Authentication In Blazor WebAssembly – Detailed + + + Шаблон "чистой" архитектуры для Blazor Web-Assembly + + + Документация - скоро появится + + + Exploring Blazor Project Structure + + + Начало работы + + + Репозиторий Github : не забудьте поставить звезду ;) + + + Вот несколько статей, которые должны помочь вам начать работу с Blazor. + + + How To Implement Blazor CRUD Using Entity Framework Core? + + + Implementing Blazor CRUD Using Mudblazor Component Library In .NET 5 + + + Важные ссылки + + + Если вы где-то застряли или у вас есть какие-либо вопросы относительно этой реализации, я составил для вас краткое руководство по началу работы. + + + Учебные ресурсы + + + Нравится BlazorHero? Поставьте звезду на Github! + + + Onion Architecture In ASP.NET Core With CQRS – Detailed + + + Страница проекта + + + Краткое руководство по началу работы + + + Прочитать руководство + + + Поддержать меня! + + + Blazor Hero + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Home.sv.resx b/src/Client/Resources/Pages/Content/Home.sv.resx new file mode 100644 index 0000000..a9bcdcc --- /dev/null +++ b/src/Client/Resources/Pages/Content/Home.sv.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Blazor för nybörjare - Komma igång med Blazor + + + Blazor Hero är en allt-i-ett-ren mall för arkitekturlösningar för Blazor Web-Assembly byggd med + + + Bygga en Chattapplikation med Blazor, Identity och SignalR + + + Celebrating 1,500 Stars on Github! + + + Komponentbibliotek + + + Anpassad autentisering i Blazor WebAssembly - Detaljerad + + + Ren arkitekturmall för Blazor Web-Assembly + + + Documentation - Coming Soon + + + Utforska Blazor-projektets struktur + + + Komma igång + + + Github Repository : Glöm inte att lämna en stjärna ;) + + + Här är några artiklar som kan hjälpa dig att komma igång med Blazor. + + + Hur implementerar jag Blazor CRUD med Entity Framework Core? + + + Implementering av Blazor CRUD med Mudblazor Komponent Library i .NET 5 + + + Viktiga länkar + + + Öka att du har fastnat någonstans eller har några frågor angående denna implementering, jag har sammanställt en snabbstartsguide som referens. + + + Lärande resurser + + + Liked BlazorHero? Star us on Github! + + + Onion Architecture In ASP.NET Core With CQRS – Detaljerad + + + Projektsida + + + Snabbstartsguide + + + Läs guiden + + + Stöd Mig! + + + Blazor Hero + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Resources.ar.resx b/src/Client/Resources/Pages/Content/Resources.ar.resx new file mode 100644 index 0000000..4f13a27 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Resources.ar.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + الوصول إلى الموارد هنا. + + + رهيبة بليزر + + + مكان رائع للتعلم والعثور على معلومات ومشاريع / أمثلة حول Blazor. + + + موارد + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Resources.de.resx b/src/Client/Resources/Pages/Content/Resources.de.resx new file mode 100644 index 0000000..9000594 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Resources.de.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Auf Ressourcen zugreifen. + + + Awesome Blazor + + + Großartige Seite zum Lernen von Blazor. Es gibt eine Vielzahl an Informationen, Projekten und Beispielen. + + + Ressourcen + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Resources.en.resx b/src/Client/Resources/Pages/Content/Resources.en.resx new file mode 100644 index 0000000..4254cab --- /dev/null +++ b/src/Client/Resources/Pages/Content/Resources.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Access Resources here. + + + Awesome Blazor + + + Great place to learn, find information and projects/examples about Blazor. + + + Resources + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Resources.es.resx b/src/Client/Resources/Pages/Content/Resources.es.resx new file mode 100644 index 0000000..0f6b656 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Resources.es.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acceder a los recursos aquí + + + Awesome Blazor + + + Estupendo lugar para aprender, buscar información y proyectos/ejemplos sobre Blazor. + + + Recursos + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Resources.fr.resx b/src/Client/Resources/Pages/Content/Resources.fr.resx new file mode 100644 index 0000000..fdccea8 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Resources.fr.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Accédez aux ressouces ici. + + + Awesome Blazor + + + Bon endroit pour apprendre, trouver des informations et des projets / exemples avec Blazor. + + + Ressources + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Resources.id.resx b/src/Client/Resources/Pages/Content/Resources.id.resx new file mode 100644 index 0000000..5233f41 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Resources.id.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Akses Resources di sini. + + + Awesome Blazor + + + Tempat yang bagus untuk belajar, mencari informasi dan proyek/contoh tentang Blazor. + + + Resources + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Resources.it.resx b/src/Client/Resources/Pages/Content/Resources.it.resx new file mode 100644 index 0000000..2d8f2f6 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Resources.it.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Risorse + + + Ottimo posto per imparare, trovare informazioni e progetti/esempi su Blazor. + + + Eccezionale Blazor + + + Accedi alle risorse qui. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Resources.km.resx b/src/Client/Resources/Pages/Content/Resources.km.resx new file mode 100644 index 0000000..fe1c3c3 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Resources.km.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ចូលប្រើធនធាននៅទីនេះ + + + ធនធានប្លេហ្សឺមហាសាល + + + កន្លែងដ៏ល្អដើម្បីរៀនស្វែងរកព័ត៌មាននិងគម្រោង / ឧទាហរណ៍គំរូរបស់ប្លេហ្សឺ + + + ធនធាន + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Resources.nl.resx b/src/Client/Resources/Pages/Content/Resources.nl.resx new file mode 100644 index 0000000..a6e54ef --- /dev/null +++ b/src/Client/Resources/Pages/Content/Resources.nl.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Hier kunt u bronnen openen. + + + Geweldige Blazor + + + Geweldige plek om te leren, informatie en projecten / voorbeelden over Blazor te vinden. + + + Bronnen + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Resources.ru.resx b/src/Client/Resources/Pages/Content/Resources.ru.resx new file mode 100644 index 0000000..c69e400 --- /dev/null +++ b/src/Client/Resources/Pages/Content/Resources.ru.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Доступ к ресурсам здесь. + + + Awesome Blazor + + + Отличное место для обучения, где можно найти информацию и проекты/примеры о Blazor. + + + Ресурсы + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Content/Resources.sv.resx b/src/Client/Resources/Pages/Content/Resources.sv.resx new file mode 100644 index 0000000..163625f --- /dev/null +++ b/src/Client/Resources/Pages/Content/Resources.sv.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Få tillgång till resurser här. + + + Fantastisk Blazor + + + Bra ställe att lära sig, hitta information och projekt / exempel om Blazor. + + + Resurser + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Account.ar.resx b/src/Client/Resources/Pages/Identity/Account/Account.ar.resx new file mode 100644 index 0000000..a1e51f2 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Account.ar.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + الحساب + + + إدارة حسابك + + + الملف الشخصي + + + حماية + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Account.de.resx b/src/Client/Resources/Pages/Identity/Account/Account.de.resx new file mode 100644 index 0000000..a309580 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Account.de.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Konto + + + Konto verwalten + + + Profil + + + Sicherheit + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Account.en.resx b/src/Client/Resources/Pages/Identity/Account/Account.en.resx new file mode 100644 index 0000000..8153dbd --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Account.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Account + + + Manage your account + + + Profile + + + Security + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Account.es.resx b/src/Client/Resources/Pages/Identity/Account/Account.es.resx new file mode 100644 index 0000000..d838676 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Account.es.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cuenta + + + Gestione su cuenta + + + Perfil + + + Seguridad + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Account.fr.resx b/src/Client/Resources/Pages/Identity/Account/Account.fr.resx new file mode 100644 index 0000000..3ff7ab8 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Account.fr.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Compte + + + Gérez votre compte + + + Profile + + + Sécurité + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Account.id.resx b/src/Client/Resources/Pages/Identity/Account/Account.id.resx new file mode 100644 index 0000000..7ee6bd2 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Account.id.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Akun + + + Kelola akun anda + + + Profil + + + Keamanan + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Account.it.resx b/src/Client/Resources/Pages/Identity/Account/Account.it.resx new file mode 100644 index 0000000..d4c0346 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Account.it.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Account + + + Gestisci il tuo account + + + Profilo + + + Sicurezza + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Account.km.resx b/src/Client/Resources/Pages/Identity/Account/Account.km.resx new file mode 100644 index 0000000..d3e124c --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Account.km.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + គណនី + + + គ្រប់គ្រង​គណនី​របស់​អ្នក + + + ប្រវត្តិរូប + + + សន្តិសុខ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Account.nl.resx b/src/Client/Resources/Pages/Identity/Account/Account.nl.resx new file mode 100644 index 0000000..4e3d049 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Account.nl.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Account + + + Uw account beheren + + + Profiel + + + Beveiliging + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Account.ru.resx b/src/Client/Resources/Pages/Identity/Account/Account.ru.resx new file mode 100644 index 0000000..5344d37 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Account.ru.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Аккаунт + + + Управление вашим аккаунтом + + + Профиль + + + Безопасность + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Account.sv.resx b/src/Client/Resources/Pages/Identity/Account/Account.sv.resx new file mode 100644 index 0000000..2bfbf5c --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Account.sv.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Konto + + + Hantera ditt konto + + + Profil + + + Säkerhet + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Profile.ar.resx b/src/Client/Resources/Pages/Identity/Account/Profile.ar.resx new file mode 100644 index 0000000..549b9dc --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Profile.ar.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + حذف صورة + + + حذف الصورة + + + هل تريد حذف صورة ملف تعريف {0} + + + بريد الالكتروني + + + الاسم الأول + + + الكنية + + + رقم الهاتف + + + الملف الشخصي + + + تفاصيل الملف الشخصي + + + تمت إضافة صورة الملف الشخصي. + + + تم حذف صورة الملف الشخصي. + + + حفظ التغييرات + + + تحميل الصور + + + تم تحديث ملفك الشخصي. الرجاء تسجيل الدخول للمتابعة. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Profile.de.resx b/src/Client/Resources/Pages/Identity/Account/Profile.de.resx new file mode 100644 index 0000000..badb9b7 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Profile.de.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bild löschen + + + Bild löschen + + + Möchtest du das Profilbild von {0} löschen + + + E-Mail + + + Vorname + + + Nachname + + + Telefon + + + Profil + + + Profildetails + + + Profilbild hinzugefügt. + + + Profilbild gelöscht. + + + Änderungen speichern + + + Bild hochladen + + + Profil aktualisiert. Zum Fortfahren anmelden. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Profile.en.resx b/src/Client/Resources/Pages/Identity/Account/Profile.en.resx new file mode 100644 index 0000000..708594b --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Profile.en.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Delete Image + + + Delete Picture + + + Do you want to delete the profile picture of {0} + + + Email + + + First Name + + + Last Name + + + Phone Number + + + Profile + + + Profile Details + + + Profile picture added. + + + Profile picture deleted. + + + Save Changes + + + Upload Image + + + Your Profile has been updated. Please Login to Continue. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Profile.es.resx b/src/Client/Resources/Pages/Identity/Account/Profile.es.resx new file mode 100644 index 0000000..add91bb --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Profile.es.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Borrar Imagen + + + Borrar Imagen + + + ¿Quiere borrar la imagen de perfil de {0} + + + Correo + + + Nombre + + + Apellido + + + Teléfono + + + Perfil + + + Detalle del perfil + + + Imagen de Perfil agregada. + + + Imagen de Perfil borrada. + + + Guardar cambios + + + Cargar Imagen + + + Tu perfil fue actualizado, por favor ingrese para continuar. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Profile.fr.resx b/src/Client/Resources/Pages/Identity/Account/Profile.fr.resx new file mode 100644 index 0000000..9dd3d5c --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Profile.fr.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Supprimer image + + + Supprimer photo + + + Voulez-vous supprimer la photo de profil de {0} + + + Courriel + + + Prénom + + + Nom + + + Numéro de téléphone + + + Profil + + + Détails du profil + + + Photo de profil ajouté. + + + Photo de profil supprimée. + + + Sauvagarder les changements + + + Téléverser une image + + + Votre profil a été mis à jour. Merci de vous reconnecter pour continuer. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Profile.id.resx b/src/Client/Resources/Pages/Identity/Account/Profile.id.resx new file mode 100644 index 0000000..238596e --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Profile.id.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Hapus Gambar + + + Hapus Gambar + + + Do you want to delete the profile picture of {0} + + + Email + + + Nama Depan + + + Nama Belakang + + + Nomor Telepon + + + Profil + + + Detail Profil + + + Profile picture added. + + + Profile picture deleted. + + + Simpan Perubahan + + + Unggah Gambar + + + Profil Anda telah diperbarui. Login untuk Melanjutkan. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Profile.it.resx b/src/Client/Resources/Pages/Identity/Account/Profile.it.resx new file mode 100644 index 0000000..3848468 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Profile.it.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Elimina Immagine + + + Elimina Immagine + + + Do you want to delete the profile picture of {0} + + + Email + + + Nome + + + Cognome + + + Telefono + + + Profilo + + + Dettagli profilo + + + Profile picture added. + + + Profile picture deleted. + + + Salvare le modifiche + + + Carica immagine + + + Il tuo profilo è stato aggiornato. Accedere per continuare. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Profile.km.resx b/src/Client/Resources/Pages/Identity/Account/Profile.km.resx new file mode 100644 index 0000000..56fd8a9 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Profile.km.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + លុបរូបភាព + + + លុបរូបភាព + + + តើអ្នកចង់លុបរូបថតប្រូហ្វាល់នៃ {0} + + + អ៊ីមែល + + + នាមខ្លួន + + + នាមត្រកូល + + + លេខទូរស័ព្ទ + + + ប្រវត្តិរូប + + + ព័ត៌មានលម្អិតប្រវត្តិរូប + + + រូបថតប្រូហ្វាល់បានបន្ថែម + + + រូបថតប្រូហ្វាល់បានលុប + + + រក្សាទុកការផ្លាស់ប្តូរ + + + ផ្ទុកឡើងរូបភាព + + + ពត៌មានរបស់អ្នកត្រូវបានធ្វើបច្ចុប្បន្នភាព។ សូមចូលដើម្បីបន្ត។ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Profile.nl.resx b/src/Client/Resources/Pages/Identity/Account/Profile.nl.resx new file mode 100644 index 0000000..faba084 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Profile.nl.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Afbeelding verwijderen + + + Wilt u de profielfoto van {0} verwijderen? + + + Email + + + Voornaam + + + Achternaam + + + Telefoonnummer + + + Profiel + + + Profielgegevens + + + Profielfoto toegevoegd. + + + Profielfoto verwijderd. + + + Wijzigingen opslaan + + + Uw profiel is bijgewerkt. Log in om door te gaan. + + + Afbeelding verwijderen + + + Afbeelding uploaden + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Profile.ru.resx b/src/Client/Resources/Pages/Identity/Account/Profile.ru.resx new file mode 100644 index 0000000..c08082a --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Profile.ru.resx @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Удалить изображение + + + Вы действительно хотите удалить изображение профиля {0} + + + Email + + + Имя + + + Фамилия + + + Номер телефона + + + Профиль + + + Детали профиля + + + Изображение профиля добавлено. + + + Изображение профиля удалено. + + + Сохранить изменения + + + Загрузить изображение + + + Ваш профиль был обновлён. Пожалуйста, авторизуйтесь, чтобы продолжить. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Profile.sv.resx b/src/Client/Resources/Pages/Identity/Account/Profile.sv.resx new file mode 100644 index 0000000..48cf3c5 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Profile.sv.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Radera Bild + + + Radera Bild + + + Do you want to delete the profile picture of {0} + + + E-post + + + Förnamn + + + Efternamn + + + Telefonnummer + + + Profil + + + Profil Detaljer + + + Profile picture added. + + + Profile picture deleted. + + + Spara Ändringar + + + Ladda upp bild + + + Din profil har uppdaterats. Var vänlig logga in för att fortsätta. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Security.ar.resx b/src/Client/Resources/Pages/Identity/Account/Security.ar.resx new file mode 100644 index 0000000..8e0d14b --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Security.ar.resx @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + تغيير كلمة المرور + + + كلمة المرور الحالي + + + كلمة سر خاطئة. + + + كلمه السر + + + تم تغيير كلمة السر! + + + تأكيد كلمة المرور + + + مطلوب تأكيد كلمة المرور! + + + كلمة المرور مطلوبة! + + + يجب ألا يقل طول كلمة المرور عن 8 + + + يجب أن تحتوي كلمة المرور على حرف كبير واحد على الأقل + + + يجب أن تحتوي كلمة المرور على رقم واحد على الأقل + + + يجب أن تحتوي كلمة المرور على حرف صغير واحد على الأقل + + + كلمات المرور غير متطابقة + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Security.de.resx b/src/Client/Resources/Pages/Identity/Account/Security.de.resx new file mode 100644 index 0000000..593ce75 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Security.de.resx @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Passwort ändern + + + Aktuelles Passwort + + + Falsches Passwort. + + + Passwort + + + Passwort geändert! + + + Passwortwiederholung + + + Passwortwiederholung wird benötigt! + + + Passwort wird benötigt! + + + Passwort muss mindestens 8 Zeichen lang sein + + + Passwort muss mindestens einen Großbuchstaben enthalten + + + Passwort muss mindestens eine Zahl enthalten + + + Passwort muss mindestens einen Kleinbuchstaben enthalten + + + Passwörter stimmen nicht überein. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Security.en.resx b/src/Client/Resources/Pages/Identity/Account/Security.en.resx new file mode 100644 index 0000000..9de3a3e --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Security.en.resx @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Change Password + + + Current Password + + + Incorrect Password. + + + Password + + + Password Changed! + + + Password Confirmation + + + Password Confirmation is required! + + + Password is required! + + + Password must be at least of length 8 + + + Password must contain at least one capital letter + + + Password must contain at least one digit + + + Password must contain at least one lowercase letter + + + Passwords don't match + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Security.es.resx b/src/Client/Resources/Pages/Identity/Account/Security.es.resx new file mode 100644 index 0000000..998fab6 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Security.es.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cambiar contraseña + + + Contraseña actual + + + Contraseña + + + Confirmación de contraseña + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Security.fr.resx b/src/Client/Resources/Pages/Identity/Account/Security.fr.resx new file mode 100644 index 0000000..b98c7ae --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Security.fr.resx @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Changer le mot de passe + + + Mot de passe actuel + + + Mot de passe incorrect. + + + Mot de passe + + + Mot de passe changé ! + + + Mot de passe confirmé ! + + + Confirmation du mot de passe requise ! + + + Mot de passe requis ! + + + Le mot de passe doit au moins contenir 8 caractères ! + + + Le mot de passe doit au moins contenir une lettre majuscule + + + Le mot de passe doit au moins contenir un chiffre + + + Le mot de passe doit au moins contenir une minuscule + + + Les mots de passes de correspondent pas + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Security.id.resx b/src/Client/Resources/Pages/Identity/Account/Security.id.resx new file mode 100644 index 0000000..6f68328 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Security.id.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ubah sandi + + + Sandi saat Ini + + + Sandi salah. + + + Sandi + + + Sandi diperbarui! + + + Konfirmasi sandi + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Security.it.resx b/src/Client/Resources/Pages/Identity/Account/Security.it.resx new file mode 100644 index 0000000..787c422 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Security.it.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cambia password + + + Password corrente + + + Password non corretta. + + + Password + + + Password cambiata! + + + Conferma password + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Security.km.resx b/src/Client/Resources/Pages/Identity/Account/Security.km.resx new file mode 100644 index 0000000..9f41488 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Security.km.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ផ្លាស់ប្តូរពាក្យសម្ងាត់ + + + លេខសំងាត់​បច្ចុប្បន្ន + + + ពាក្យសម្ងាត់ + + + ការ​បញ្ជាក់​ពាក្យ​សម្ងាត់ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Security.nl.resx b/src/Client/Resources/Pages/Identity/Account/Security.nl.resx new file mode 100644 index 0000000..54116f3 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Security.nl.resx @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Wachtwoord wijzigen + + + Huidig wachtwoord + + + Wachtwoord + + + Wachtwoordbevestiging + + + Onjuist wachtwoord. + + + Wachtwoord gewijzigd! + + + Lösenordsbekräftelse krävs! + + + Wachtwoord is vereist! + + + Wachtwoord moet uit minimaal 8 karakters bestaan! + + + Wachtwoord moet uit minimaal 1 hoofdletter bestaan! + + + Wachtwoord moet uit minimaal 1 nummer! + + + Wachtwoord moet uit minimaal 1 kleine letter! + + + Wachtwoorden komen niet overeen! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Security.ru.resx b/src/Client/Resources/Pages/Identity/Account/Security.ru.resx new file mode 100644 index 0000000..6240d95 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Security.ru.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Изменить пароль + + + Текущий пароль + + + Неверный пароль. + + + Пароль + + + Пароль изменён! + + + Подтверждение пароля + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Account/Security.sv.resx b/src/Client/Resources/Pages/Identity/Account/Security.sv.resx new file mode 100644 index 0000000..1fa3c42 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Account/Security.sv.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ändra lösenord + + + Nuvarande lösenord + + + Fel lösenord. + + + Lösenord + + + Lösenord Ändrat! + + + Lösenordsbekräftelse + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RegisterUserModal.ar.resx b/src/Client/Resources/Pages/Identity/RegisterUserModal.ar.resx new file mode 100644 index 0000000..aa9eed6 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RegisterUserModal.ar.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + المستخدم نشط؟ + + + هل تريد تأكيد البريد الإلكتروني تلقائيًا؟ + + + إلغاء + + + تأكيد كلمة المرور + + + بريد الالكتروني + + + الاسم الأول + + + الكنية + + + كلمه السر + + + رقم الهاتف + + + الملف الشخصي + + + تفاصيل الملف الشخصي + + + تسجيل + + + تسجيل المستخدم + + + حفظ التغييرات + + + اسم االمستخدم + + + مستخدم مسجل! + + + مستخدم مسجل. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RegisterUserModal.de.resx b/src/Client/Resources/Pages/Identity/RegisterUserModal.de.resx new file mode 100644 index 0000000..06149d5 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RegisterUserModal.de.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Benutzer aktivieren? + + + E-Mail automatisch bestätigen? + + + Abbrechen + + + Passwort wiederholen + + + E-Mail + + + Vorname + + + Nachname + + + Passwort + + + Telefon + + + Profil + + + Profildetails + + + Registrieren + + + Benutzer registrieren + + + Änderungen speichern + + + Benutzername + + + Benutzer registriert! + + + Benutzer registriert. Eine Bestätigungsemail wurde an die angegebene E-Mail-Adresse versendet. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RegisterUserModal.en.resx b/src/Client/Resources/Pages/Identity/RegisterUserModal.en.resx new file mode 100644 index 0000000..02e1e86 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RegisterUserModal.en.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Activate User? + + + Auto Confirm Email? + + + Cancel + + + Confirm Password + + + Email + + + First Name + + + Last Name + + + Password + + + Phone Number + + + Profile + + + Profile Details + + + Register + + + Register User + + + Save Changes + + + User Name + + + User Registered! + + + User Registered. Confirmation Mail has been delivered to the Mailbox. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RegisterUserModal.es.resx b/src/Client/Resources/Pages/Identity/RegisterUserModal.es.resx new file mode 100644 index 0000000..ff8e8ee --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RegisterUserModal.es.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ¿Activar usuario? + + + ¿Autoconfirmar correo? + + + Cancelar + + + Confirmar contraseña + + + Correo + + + Nombre + + + Apellido + + + Contraseña + + + Teléfono + + + Perfil + + + Detalle del perfil + + + Registrar + + + Usuario registrado + + + Guardar cambios + + + Usuario + + + Usuario Registrado! + + + Usuario Registrado. Un correo de confirmación fue enviado a su casilla de correo. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RegisterUserModal.fr.resx b/src/Client/Resources/Pages/Identity/RegisterUserModal.fr.resx new file mode 100644 index 0000000..3c2d06a --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RegisterUserModal.fr.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Utilisateur actif ? + + + Confirmer automatiquement le courriel ? + + + Annuler + + + Confirmer le mot de passe + + + Courriel + + + Prénom + + + Nom + + + Mot de passe + + + Numéro de téléphone + + + Profil + + + Détails du profil + + + Inscrire + + + Inscrire l'utilisateur + + + Sauvegarder les changements. + + + Nom d'utilisateur + + + Utilisateur enregistré. + + + Utilisateur enregistré. Un courriel de confirmation a lui été envoyé. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RegisterUserModal.id.resx b/src/Client/Resources/Pages/Identity/RegisterUserModal.id.resx new file mode 100644 index 0000000..b26268a --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RegisterUserModal.id.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktifkan Pengguna? + + + Konfirmasi Email Otomatis? + + + Batal + + + Konfirmasi Sandi + + + Email + + + Nama Depan + + + Nama Belakang + + + Sandi + + + Nomor Telepon + + + Profil + + + Detail Profil + + + Daftar + + + Daftar Pengguna + + + Simpan Perubahan + + + User Name + + + Pengguna Terdaftar! + + + Pengguna Terdaftar. Email konfirmasi telah dikirim ke email Anda. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RegisterUserModal.it.resx b/src/Client/Resources/Pages/Identity/RegisterUserModal.it.resx new file mode 100644 index 0000000..2999209 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RegisterUserModal.it.resx @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 1.3 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.3500.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Auto conferma E-Mail? + + + Annulla + + + Conferma password + + + Email + + + Nome + + + Cognome + + + Password + + + Telefono + + + Profilo + + + Dettagli profilo + + + Registrati + + + Registra utente + + + Salvare le modifiche + + + Nome utente + + + Utente registrato! + + + Utente registrato. Una mail di conferma è stata inviata alla vostra casella E-Mail. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RegisterUserModal.km.resx b/src/Client/Resources/Pages/Identity/RegisterUserModal.km.resx new file mode 100644 index 0000000..821eb89 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RegisterUserModal.km.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ធ្វើឱ្យអ្នកប្រើប្រាស់សកម្ម? + + + បញ្ជាក់អ៊ីមែលដោយស្វ័យប្រវត្តិ? + + + បោះបង់ + + + បញ្ជាក់ពាក្យសម្ងាត់ + + + អ៊ីមែល + + + នាមខ្លួន + + + នាមត្រកូល + + + ពាក្យសម្ងាត់ + + + លេខទូរស័ព្ទ + + + ប្រវត្តិរូប + + + ប្រវត្តិរូបលម្អិត + + + ចុះឈ្មោះ + + + ចុះឈ្មោះអ្នកប្រើប្រាស់ + + + រក្សាការកែប្រែ + + + ឈ្មោះអ្នកប្រើប្រាស់ + + + អ្នកប្រើប្រាស់ត្រូវបានចុះឈ្មោះរួចរាល់ + + + អ្នកប្រើប្រាស់ត្រូវបានចុះឈ្មោះរួចរាល់ សារអ៊ីម៉ែលបញ្ជាក់នឹងត្រូវផ្ញើទៅកាន់ប្រអប់សាររបស់អ្នក! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RegisterUserModal.nl.resx b/src/Client/Resources/Pages/Identity/RegisterUserModal.nl.resx new file mode 100644 index 0000000..39a5449 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RegisterUserModal.nl.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Gebruiker activeren? + + + E-mail automatisch bevestigen? + + + Annuleren + + + Wachtwoord bevestigen + + + Email + + + Voornaam + + + Achternaam + + + Wachtwoord + + + Telefoonnummer + + + Profiel + + + Profielgegevens + + + Registreren + + + Gebruiker registreren + + + Wijzigingen opslaan + + + Gebruikersnaam + + + Gebruiker geregistreerd! + + + Geregistreerde gebruiker. Bevestigingsmail is afgeleverd bij de mailbox. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RegisterUserModal.ru.resx b/src/Client/Resources/Pages/Identity/RegisterUserModal.ru.resx new file mode 100644 index 0000000..15c69df --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RegisterUserModal.ru.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Активировать пользователя? + + + Подтвердить email автоматически? + + + Отмена + + + Подтверждение пароля + + + Email + + + Имя + + + Фамилия + + + Пароль + + + Номер телефона + + + Профиль + + + Детали профиля + + + Зарегистрировать + + + Регистрация пользователя + + + Сохранить изменения + + + Username + + + Пользователь зарегистрирован + + + Пользователь зарегистрирован. Письмо для подтверждения будет отправлено по почте. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RegisterUserModal.sv.resx b/src/Client/Resources/Pages/Identity/RegisterUserModal.sv.resx new file mode 100644 index 0000000..949f8d8 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RegisterUserModal.sv.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktivera användare? + + + Bekräfta e-post automatiskt? + + + Avbryt + + + Bekräfta lösenord + + + E-post + + + Förnamn + + + Efternamn + + + Lösenord + + + Telefonnummer + + + Profil + + + Profil Detaljer + + + Registrera + + + Registrera användare + + + Spara ändringar + + + Användarnamn + + + Användare Registrerad! + + + Användare registrerad. Bekräftelsemeddelande har skickats till brevlådan. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Reset.ar.resx b/src/Client/Resources/Pages/Identity/Reset.ar.resx new file mode 100644 index 0000000..cfc5c47 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Reset.ar.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + تأكيد كلمة المرور + + + بريد الالكتروني + + + أدخل البريد الإلكتروني لإعادة تعيين كلمة المرور + + + كلمه السر + + + إعادة تعيين كلمة المرور + + + لم يتم العثور على الرمز! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Reset.de.resx b/src/Client/Resources/Pages/Identity/Reset.de.resx new file mode 100644 index 0000000..00eb773 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Reset.de.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Passwort bestätigen + + + E-Mail + + + E-Mail-Adresse eingeben um, das Passwort zurückzusetzen + + + Passwort + + + Passwort zurücksetzen + + + Token nicht gefunden! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Reset.en.resx b/src/Client/Resources/Pages/Identity/Reset.en.resx new file mode 100644 index 0000000..4e4a724 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Reset.en.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Confirm Password + + + E-mail + + + Enter email for password reset + + + Password + + + Reset password + + + Token Not Found! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Reset.es.resx b/src/Client/Resources/Pages/Identity/Reset.es.resx new file mode 100644 index 0000000..cf79b0c --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Reset.es.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Confirmar Contraseña + + + Correo + + + Ingrese correo para blanquear contraseña + + + Contraseña + + + Blanquear Contraseña + + + Token no encontrado! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Reset.fr.resx b/src/Client/Resources/Pages/Identity/Reset.fr.resx new file mode 100644 index 0000000..a38eed5 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Reset.fr.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Confirmer le mot de passe + + + Courriel + + + Entrez le courriel pour la réinitialisation du mot de passe + + + Mot de passe + + + Réinitialiser le mot de passe + + + Jeton introuvable ! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Reset.id.resx b/src/Client/Resources/Pages/Identity/Reset.id.resx new file mode 100644 index 0000000..4e4a724 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Reset.id.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Confirm Password + + + E-mail + + + Enter email for password reset + + + Password + + + Reset password + + + Token Not Found! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Reset.it.resx b/src/Client/Resources/Pages/Identity/Reset.it.resx new file mode 100644 index 0000000..4e4a724 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Reset.it.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Confirm Password + + + E-mail + + + Enter email for password reset + + + Password + + + Reset password + + + Token Not Found! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Reset.km.resx b/src/Client/Resources/Pages/Identity/Reset.km.resx new file mode 100644 index 0000000..895f21c --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Reset.km.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + លេខកូដសម្ងាត់បញ្ជាក់ + + + អ៊ីំម៉ែល + + + បញ្ចូលអ៊ីម៉ែលដើម្បីកំណត់លេខកូដសម្ងាត់ឡើងវិញ + + + លេខកូដសម្ងាត់ + + + កំណត់លេខកូដសម្ងាត់ឡើងវិញ + + + ធូឃីនរកមិនឃើញ! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Reset.nl.resx b/src/Client/Resources/Pages/Identity/Reset.nl.resx new file mode 100644 index 0000000..d1617f7 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Reset.nl.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Wachtwoord bevestigen + + + E-mail + + + Voer uw E-mail in voor het opnieuw instellen van het wachtwoord! + + + Wachtwoord + + + Wachtwoord opnieuw instellen + + + Token niet gevonden! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Reset.ru.resx b/src/Client/Resources/Pages/Identity/Reset.ru.resx new file mode 100644 index 0000000..47208bc --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Reset.ru.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Подтверждение пароля + + + E-mail + + + Введите email для сброса ппароля + + + Пароль + + + Сбросить пароль + + + Токен не найден! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Reset.sv.resx b/src/Client/Resources/Pages/Identity/Reset.sv.resx new file mode 100644 index 0000000..4e4a724 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Reset.sv.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Confirm Password + + + E-mail + + + Enter email for password reset + + + Password + + + Reset password + + + Token Not Found! + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RoleModal.ar.resx b/src/Client/Resources/Pages/Identity/RoleModal.ar.resx new file mode 100644 index 0000000..ea2c146 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RoleModal.ar.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + أضف دورًا + + + إلغاء + + + وصف + + + معرف الدور + + + اسم الدور + + + حفظ الدور + + + تحديث الدور + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RoleModal.de.resx b/src/Client/Resources/Pages/Identity/RoleModal.de.resx new file mode 100644 index 0000000..3ad22b6 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RoleModal.de.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Rolle hinzufügen + + + Abbrechen + + + Beschreibung + + + Rollen ID + + + Rollenname + + + Rolle speichern + + + Rolle aktualisieren + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RoleModal.en.resx b/src/Client/Resources/Pages/Identity/RoleModal.en.resx new file mode 100644 index 0000000..a9dfc58 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RoleModal.en.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Add Role + + + Cancel + + + Description + + + Role ID + + + Role Name + + + Save Role + + + Update Role + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RoleModal.es.resx b/src/Client/Resources/Pages/Identity/RoleModal.es.resx new file mode 100644 index 0000000..059eae4 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RoleModal.es.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Agregar Rol + + + Cancelar + + + Descripción + + + ID de Rol + + + Nombre de Rol + + + Guardar + + + Actualizar + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RoleModal.fr.resx b/src/Client/Resources/Pages/Identity/RoleModal.fr.resx new file mode 100644 index 0000000..88f6a63 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RoleModal.fr.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ajouter un rôle + + + Annuler + + + Description + + + Identifiant du rôle + + + Nom du rôle + + + Sauvegarder le rôle + + + Mettre à jour le rôle + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RoleModal.id.resx b/src/Client/Resources/Pages/Identity/RoleModal.id.resx new file mode 100644 index 0000000..ba2c181 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RoleModal.id.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Tambah Wewenang + + + Batal + + + Description + + + Wewenang berhasil dibuat! + + + ID Wewenang + + + Nama Wewenang + + + Simpan Wewenang + + + Perbarui Wewenang + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RoleModal.it.resx b/src/Client/Resources/Pages/Identity/RoleModal.it.resx new file mode 100644 index 0000000..eba449c --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RoleModal.it.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Attivare l'utente? + + + Annulla + + + Description + + + Id ruolo + + + Nome ruolo + + + Salvare ruolo + + + Aggiorna ruolo + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RoleModal.km.resx b/src/Client/Resources/Pages/Identity/RoleModal.km.resx new file mode 100644 index 0000000..eaa3005 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RoleModal.km.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + បន្ថែមតួនាទី + + + បោះបង់ + + + ពិពណ៌នា + + + លេខសម្គាល់តួនាទី + + + ឈ្មោះតួនាទី + + + រក្សាទុកតួនាទី + + + ធ្វើបច្ចុប្បន្នភាពតួនាទី + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RoleModal.nl.resx b/src/Client/Resources/Pages/Identity/RoleModal.nl.resx new file mode 100644 index 0000000..26ddbae --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RoleModal.nl.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Rol toevoegen + + + Annuleren + + + Beschrijving + + + Rol-ID + + + Rolnaam + + + Rol opslaan + + + Rol bijwerken + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RoleModal.ru.resx b/src/Client/Resources/Pages/Identity/RoleModal.ru.resx new file mode 100644 index 0000000..a66eebf --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RoleModal.ru.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Добавить роль + + + Отмена + + + Описание + + + ID роли + + + Имя роли + + + Сохранить роль + + + Обновить роль + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/RoleModal.sv.resx b/src/Client/Resources/Pages/Identity/RoleModal.sv.resx new file mode 100644 index 0000000..d01cb2e --- /dev/null +++ b/src/Client/Resources/Pages/Identity/RoleModal.sv.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Lägg till roll + + + Avbryt + + + Description + + + Roll ID + + + Roll Namn + + + Spara Roll + + + Uppdatera Roll + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/RolePermissions.ar.resx b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.ar.resx new file mode 100644 index 0000000..d40cc37 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.ar.resx @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + كل الأذونات + + + تطبيق + + + يحدها + + + كثيف + + + وصف + + + هنا يمكنك ترك تعليق لهذا الإذن للدور الحالي + + + إدارة الإذن + + + إدارة أذونات {0} {1} + + + اسم الإذن + + + ابحث عن أذونات + + + حالة + + + مخطط + + + نوع + + + تحديث أذونات الدور + + + سيتم حفظها فقط عند تحديد الإذن + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/RolePermissions.de.resx b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.de.resx new file mode 100644 index 0000000..bc9a1e6 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.de.resx @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Alle Berechtigungen + + + Anwenden + + + Gerahmt + + + Schmal + + + Beschreibung + + + Hier kann ein Kommentar für diese Berechtigung der aktuellen Rolle hinterlassen werden + + + Berechtigungen verwalten + + + Verwalte {0} Berechtigungen von {1} + + + Berechtigungsname + + + Nach Berechtigungen suchen + + + Status + + + Gebändert + + + Typ + + + Rollenberechtigungen verwalten + + + Wird nur gespeichert wenn Berechtigung ausgewählt + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/RolePermissions.en.resx b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.en.resx new file mode 100644 index 0000000..83f81ed --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.en.resx @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + All Permissions + + + Apply + + + Bordered + + + Dense + + + Description + + + Here you can leave a comment for this permission for the current role + + + Manage Permission + + + Manage {0} {1}'s Permissions + + + Permission Name + + + Search For Permissions + + + Status + + + Striped + + + Type + + + Update Role Permissions + + + Will be saved only when selected Permission + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/RolePermissions.es.resx b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.es.resx new file mode 100644 index 0000000..358154c --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.es.resx @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Todos los Permisos + + + Aplicar + + + Bordeado + + + Denso + + + Descripción + + + Aquí puede dejar un comentario para este permiso para el rol actual + + + Administrar Permisos + + + Administrar los permisos de {0} {1} + + + Nombre del Permiso + + + Buscar Permisos + + + Estado + + + Rayado + + + Tipo + + + Actualizar los Permisos del Rol + + + Será guardado únicamente cuando se seleccione Permisos + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/RolePermissions.fr.resx b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.fr.resx new file mode 100644 index 0000000..8b5380b --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.fr.resx @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Toutes les permissions + + + Appliquer + + + Avec bordures + + + Dense + + + Description + + + Vous pouvez laisser ici un commentaire pour expliquer la permission de ce rôle. + + + Gérer la permission + + + Gérer les permissions du rôle {0} {1} + + + Nom de la permission + + + Rechercher une permission + + + Statut + + + Rayé + + + Type + + + Mettre à jour les permissions du rôle + + + Va être sauvegardé seulement si la permission est sélectionnée + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/RolePermissions.id.resx b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.id.resx new file mode 100644 index 0000000..6698c6a --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.id.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + All Permissions + + + Apply + + + Description + + + Here you can leave a comment for this permission for the current role + + + Pengaturan Izin + + + Pengaturan {0} {1} Izin + + + Nama Wewenang + + + Status + + + Tipe + + + Perbarui Izin Wewenang + + + Will be saved only when selected Permission + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/RolePermissions.it.resx b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.it.resx new file mode 100644 index 0000000..56b3c0d --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.it.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Tutti le autorizzazioni + + + Applica + + + Descrizione + + + Qui puoi lasciare un commento per questa autorizzazione per il ruolo corrente + + + Gestisci autorizzazione + + + Gestisci {0} {1} Autorizzazioni + + + Nome autorizzazioni + + + Status + + + Questa è una visualizzazione solo amministratore + + + Salva autorizzazioni + + + Aggiorna le autorizzazioni del ruolo + + + Saranno salvati solo i permessi selezionati + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/RolePermissions.km.resx b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.km.resx new file mode 100644 index 0000000..10fa383 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.km.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + សិទ្ធិទាំងអស់ + + + អនុវត្ត + + + ពិពណ៌នា + + + ទីនេះអ្នកអាចដាក់កំណត់សម្គាល់សិទ្ធិសម្រាប់តួនាទីមួយនេះបាន + + + គ្រង់គ្រងសិទ្ធិ + + + គ្រប់គ្រង {0} {1} សិទ្ធិ + + + ឈ្មោះសិទ្ធិ + + + ស្ថានភាព + + + ប្រភេទ + + + បច្ចុប្បន្នភាពសិទ្ធិរបស់តួនាទី + + + ត្រូវបានរក្សាទុកចំពោះសិទ្ធិដែលបានជ្រើសរើសតែប៉ុណ្ណោះ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/RolePermissions.nl.resx b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.nl.resx new file mode 100644 index 0000000..ac114dc --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.nl.resx @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Alle machtigingen + + + Toepassen + + + Grenst aan + + + Dicht + + + Beschrijving + + + Hier kunt u een opmerking achterlaten voor deze machtiging voor de huidige rol + + + Machtiging beheren + + + Machtigingen van {0} {1} beheren + + + Naam machtiging + + + Zoeken naar machtigingen + + + Status + + + Gestreept + + + Type + + + Rolmachtigingen bijwerken + + + Wordt alleen opgeslagen wanneer deze optie Is geselecteerd + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/RolePermissions.ru.resx b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.ru.resx new file mode 100644 index 0000000..752fc9c --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.ru.resx @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Все права + + + Применить + + + Обрамлённый + + + Компактный + + + Описание + + + Здесь вы можете оставить комментарий к этому разрешению для текущей роли + + + Управление правами + + + Управление правами {0} {1} + + + Имя права + + + Найти права + + + Статус + + + Чередующийся + + + Тип + + + Обновить права роли + + + Будет сохранено только при выбранном разрешении + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/RolePermissions.sv.resx b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.sv.resx new file mode 100644 index 0000000..f45df6a --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/RolePermissions.sv.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + All Permissions + + + Apply + + + Description + + + Here you can leave a comment for this permission for the current role + + + Hantera Behörighet + + + Hantera {0} {1} Behörigheter + + + Permission Name + + + Status + + + Typ + + + Uppdatera Rollbehörigheter + + + Will be saved only when selected Permission + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/Roles.ar.resx b/src/Client/Resources/Pages/Identity/Roles/Roles.ar.resx new file mode 100644 index 0000000..fd3def1 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/Roles.ar.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + أجراءات + + + يحدها + + + إنشاء + + + حذف + + + هل تريد حذف الدور بالمعرف {0}؟ + + + كثيف + + + وصف + + + يحرر + + + المعرف + + + إدارة الإذن + + + إدارة الأدوار. + + + لا توجد إجراءات مسموح بها + + + إعادة تحميل + + + دور + + + الأدوار + + + البحث عن الأدوار ... + + + مخطط + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/Roles.de.resx b/src/Client/Resources/Pages/Identity/Roles/Roles.de.resx new file mode 100644 index 0000000..dab2a04 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/Roles.de.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktionen + + + Gerahmt + + + Hinzufügen + + + Löschen + + + Möchtest du die Rolle mit der Id {0} löschen? + + + Schmal + + + Beschreibung + + + Bearbeiten + + + Id + + + Berechtigungen verwalten + + + Rollen verwalten. + + + Keine Aktionen erlaubt + + + Neu laden + + + Rolle + + + Rollen + + + Nach Rollen suchen... + + + Gebändert + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/Roles.en.resx b/src/Client/Resources/Pages/Identity/Roles/Roles.en.resx new file mode 100644 index 0000000..0fa1138 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/Roles.en.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Bordered + + + Create + + + Delete + + + Do you want to delete the role with Id {0}? + + + Dense + + + Description + + + Edit + + + Id + + + Manage Permission + + + Manage Roles. + + + No Allowed Actions + + + Reload + + + Role + + + Roles + + + Search for Roles... + + + Striped + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/Roles.es.resx b/src/Client/Resources/Pages/Identity/Roles/Roles.es.resx new file mode 100644 index 0000000..1d2ab77 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/Roles.es.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acciones + + + Bordeado + + + Crear + + + Borrar + + + ¿Deseas borrar el rol con el Id {0}? + + + Denso + + + Descripción + + + Editar + + + Id + + + Administrar Permisos + + + Gestionar Roles + + + Acciones no Permitidas + + + Recargar + + + Rol + + + Roles + + + Buscar Roles + + + Rayado + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/Roles.fr.resx b/src/Client/Resources/Pages/Identity/Roles/Roles.fr.resx new file mode 100644 index 0000000..24b39cc --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/Roles.fr.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Avec bordures + + + Créer + + + Supprimer + + + Voulez-vous supprimer le rôle d'identifiant {0}? + + + Dense + + + Description + + + Éditer + + + Identifiant + + + Gérer la permission + + + Gérer les rôles + + + Aucune action autorisée + + + Recharger + + + Rôle + + + Rôles + + + Rechercher des rôles + + + Rayé + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/Roles.id.resx b/src/Client/Resources/Pages/Identity/Roles/Roles.id.resx new file mode 100644 index 0000000..7c09d81 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/Roles.id.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Tindakan + + + Tambah + + + Hapus + + + Hapus wewenang dengan Id {0}? + + + Description + + + Sunting + + + Id + + + Atur Perizinan + + + Atur Wewenang. + + + No Allowed Actions + + + Muat Ulang + + + Wewenang + + + Wewenang + + + Cari Wewenang... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/Roles.it.resx b/src/Client/Resources/Pages/Identity/Roles/Roles.it.resx new file mode 100644 index 0000000..fbd73a3 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/Roles.it.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Azioni + + + Crea + + + Elimina + + + Vuoi eliminare il ruolo con Id {0}? + + + Description + + + Modifica + + + Id + + + Gestisci autorizzazione + + + Gestisci ruoli. + + + No Allowed Actions + + + Ricarica + + + Ruolo + + + Ruoli + + + Ricerca ruoli... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/Roles.km.resx b/src/Client/Resources/Pages/Identity/Roles/Roles.km.resx new file mode 100644 index 0000000..eca7c51 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/Roles.km.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + មុខងារ + + + បង្កើត + + + លុប + + + តើអ្នកចង់លុបតួនាទីជាមួយលេខសម្គាល់ {0} ទេ? + + + ពិពណ៌នា + + + កែប្រែ + + + លេខកូដ + + + គ្រប់គ្រងតួនាទី + + + សកម្មភាពមិនត្រូវបានអនុញ្ញាត្ត + + + ផ្ទុកឡើងវិញ + + + តួនាទី + + + ស្វែងរកតួនាទី ... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/Roles.nl.resx b/src/Client/Resources/Pages/Identity/Roles/Roles.nl.resx new file mode 100644 index 0000000..e64ccda --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/Roles.nl.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acties + + + Aanmaken + + + Verwijderen + + + Wilt u de rol verwijderen met Id {0}? + + + Beschrijving + + + Bewerken + + + Id + + + Rollen beheren. + + + Geen toegestane acties + + + Herladen + + + Rollen + + + Rollen zoeken... + + + Grenst aan + + + Dicht + + + Machtiging beheren + + + Rol + + + Gestreept + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/Roles.ru.resx b/src/Client/Resources/Pages/Identity/Roles/Roles.ru.resx new file mode 100644 index 0000000..283844d --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/Roles.ru.resx @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Действия + + + Обрамлённый + + + Создать + + + Удалить + + + Вы действительно хотите удалить роль с Id {0}? + + + Компактный + + + Описание + + + Редактировать + + + Id + + + Управление правами + + + Управление ролями. + + + Нет доступных действий + + + Перезагрузить + + + Роль + + + Роли + + + Поиск ролей... + + + Чередующийся + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Roles/Roles.sv.resx b/src/Client/Resources/Pages/Identity/Roles/Roles.sv.resx new file mode 100644 index 0000000..0b9f79f --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Roles/Roles.sv.resx @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Åtgärder + + + Skapa + + + Radera + + + Vill du ta bort rollen med Id {0}? + + + Description + + + Redigera + + + Id + + + Hantera Behörighet + + + Hantera Roller. + + + No Allowed Actions + + + Ladda Om + + + Roll + + + Roller + + + Sök efter Roll... + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserProfile.ar.resx b/src/Client/Resources/Pages/Identity/Users/UserProfile.ar.resx new file mode 100644 index 0000000..9a71a7f --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserProfile.ar.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + نشيط؟ + + + إعدادات المسؤول. + + + البريد الإلكتروني + + + الاسم الأول + + + الكنية + + + رقم الهاتف + + + الملف الشخصي + + + حساب عام + + + حفظ التغييرات + + + هذا هو العرض المسؤول فقط. + + + تم تحديث حالة المستخدم. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserProfile.de.resx b/src/Client/Resources/Pages/Identity/Users/UserProfile.de.resx new file mode 100644 index 0000000..7ae4716 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserProfile.de.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktiv? + + + Administrator Einstellungen + + + E-Mail + + + Vorname + + + Nachname + + + Telefon + + + Profil + + + Öffentliches Profil + + + Änderungen speichern + + + Diese Ansicht ist nur für den Administrator. + + + Benutzerstatus aktualisiert. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserProfile.en.resx b/src/Client/Resources/Pages/Identity/Users/UserProfile.en.resx new file mode 100644 index 0000000..f98093b --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserProfile.en.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Active? + + + Administrator Settings. + + + E-Mail + + + First Name + + + Last Name + + + Phone Number + + + Profile + + + Public Profile + + + Save Changes + + + This is an Administrator Only View. + + + Updated User Status. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserProfile.es.resx b/src/Client/Resources/Pages/Identity/Users/UserProfile.es.resx new file mode 100644 index 0000000..6acdc56 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserProfile.es.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ¿Activo? + + + Configuraciones de Administrador + + + Correo + + + Nombre + + + Apellido + + + Teléfono + + + Perfil + + + Perfil Público + + + Guardar cambios + + + Esta es una vista solo de Administrador + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserProfile.fr.resx b/src/Client/Resources/Pages/Identity/Users/UserProfile.fr.resx new file mode 100644 index 0000000..4ce1ad8 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserProfile.fr.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actif ? + + + Paramètres pour les administateurs. + + + Courriel + + + Prénom + + + Nom + + + Numéro de téléphone + + + Profil + + + Profil public + + + Sauvegarder les changements + + + Ceci est visible uniquement par les administrateurs. + + + Statut de l'utilisateur mis à jour. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserProfile.id.resx b/src/Client/Resources/Pages/Identity/Users/UserProfile.id.resx new file mode 100644 index 0000000..56bde38 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserProfile.id.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktif? + + + Pengaturan Administrator. + + + E-Mail + + + Nama Depan + + + Nama Belakang + + + Nomor Telepon + + + Profil + + + Profil Publik + + + Simpan Perubahan + + + Ini adalah tampilan khusus Administrator. + + + Perbarui Status Pengguna. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserProfile.it.resx b/src/Client/Resources/Pages/Identity/Users/UserProfile.it.resx new file mode 100644 index 0000000..3bea79d --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserProfile.it.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Attivato ? + + + Impostazioni amministratore. + + + E-Mail + + + Nome + + + Cognome + + + Telefono + + + Profilo + + + Profilo pubblico + + + Salvare le modifiche + + + Questa è una visualizzazione solo amministratore. + + + Aggiorna status utente. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserProfile.km.resx b/src/Client/Resources/Pages/Identity/Users/UserProfile.km.resx new file mode 100644 index 0000000..fb3e505 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserProfile.km.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + សកម្ម? + + + ការកំណត់អ្នកគ្រប់គ្រង + + + អ៊ីមែល + + + នាមខ្លួន + + + នាមត្រកូល + + + លេខទូរស័ព្ទ + + + ប្រវត្តិរូប + + + ប្រវត្តិរូបសាធារណៈ + + + រក្សាទុកការផ្លាស់ប្តូរ + + + ផ្ទាំងសម្រាប់តែអ្នកប្រើប្រាស់មានសិទ្ធិជារដ្ឋបាលប្រព័ន្ធទេ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserProfile.nl.resx b/src/Client/Resources/Pages/Identity/Users/UserProfile.nl.resx new file mode 100644 index 0000000..17c4cd3 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserProfile.nl.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actief? + + + Beheerdersinstellingen + + + E-mail + + + Voornaam + + + Achternaam + + + Telefoonnummer + + + Profiel + + + Openbaar profiel + + + Wijzigingen opslaan + + + Dit is alleen een weergave voor beheerders. + + + Bijgewerkte gebruikersstatus. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserProfile.ru.resx b/src/Client/Resources/Pages/Identity/Users/UserProfile.ru.resx new file mode 100644 index 0000000..ca0349c --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserProfile.ru.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Активный? + + + Настройки администратора. + + + E-Mail + + + Имя + + + Фамилия + + + Номер телефона + + + Профиль + + + Публичные данные профиля + + + Сохранить изменения + + + Эта стрица доступна только администраторам. + + + Статус пользователя обновлён. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserProfile.sv.resx b/src/Client/Resources/Pages/Identity/Users/UserProfile.sv.resx new file mode 100644 index 0000000..ad47191 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserProfile.sv.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktiv? + + + Administratörsinställningar. + + + E-post + + + Förnamn + + + Efternamn + + + Telefonnummer + + + Profil + + + Offentlig profil + + + Spara ändringar + + + Detta är enbart en administratörsvy. + + + Uppdaterad användarstatus. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserRoles.ar.resx b/src/Client/Resources/Pages/Identity/Users/UserRoles.ar.resx new file mode 100644 index 0000000..74663cc --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserRoles.ar.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bordered + + + Dense + + + Manage {0} {1}'s Roles + + + Role Name + + + Roles Updated! + + + Search For User Roles + + + Status + + + Striped + + + Update User Roles + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserRoles.de.resx b/src/Client/Resources/Pages/Identity/Users/UserRoles.de.resx new file mode 100644 index 0000000..cd38ab3 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserRoles.de.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Gerahmt + + + Schmal + + + Rollen von {0} {1}'s verwalten + + + Rollenname + + + Rollen aktualisiert! + + + Nach Benutzerrollen suchen + + + Status + + + Gebändert + + + Nutzerrolle aktualisieren + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserRoles.en.resx b/src/Client/Resources/Pages/Identity/Users/UserRoles.en.resx new file mode 100644 index 0000000..74663cc --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserRoles.en.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bordered + + + Dense + + + Manage {0} {1}'s Roles + + + Role Name + + + Roles Updated! + + + Search For User Roles + + + Status + + + Striped + + + Update User Roles + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserRoles.es.resx b/src/Client/Resources/Pages/Identity/Users/UserRoles.es.resx new file mode 100644 index 0000000..f4b8b24 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserRoles.es.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Bordeado + + + Denso + + + Descripción + + + Administrar Roles de {0} {1} + + + Nombre del Rol + + + Roles actualizados! + + + Buscar por Rol de Usuario + + + Estado + + + Rayado + + + Actualizar Roles de Usuario + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserRoles.fr.resx b/src/Client/Resources/Pages/Identity/Users/UserRoles.fr.resx new file mode 100644 index 0000000..e56749a --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserRoles.fr.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Avec bordures + + + Dense + + + Gérer les rôles de {0} {1} + + + Nom du rôle + + + Rôles mis à jour + + + Rechercher parmis les rôles de l'utilisateur + + + Statut + + + Rayé + + + Mettre à jour les rôles de l'utilisateur + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserRoles.id.resx b/src/Client/Resources/Pages/Identity/Users/UserRoles.id.resx new file mode 100644 index 0000000..5015c9e --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserRoles.id.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Pengaturan {0} {1} Wewenang + + + Nama Wewenang + + + Wewenang Diperbarui! + + + Status + + + Perbarui Wewenang Pengguna + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserRoles.it.resx b/src/Client/Resources/Pages/Identity/Users/UserRoles.it.resx new file mode 100644 index 0000000..ac5b7c0 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserRoles.it.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Manage {0} {1}'s Roles + + + Nome ruolo + + + Ruoli aggiornati! + + + Stato + + + Aggiorna ruoli utente + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserRoles.km.resx b/src/Client/Resources/Pages/Identity/Users/UserRoles.km.resx new file mode 100644 index 0000000..706e0a6 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserRoles.km.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Manage {0} {1}'s Roles + + + ឈ្មោះតួនាទី + + + តួនាទីត្រូវបានធ្វើបច្ចុប្បន្នភាព! + + + ស្ថានភាព + + + បច្ចុប្បន្នភាពតួនាទីរបស់អ្នកប្រើប្រាស់ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserRoles.nl.resx b/src/Client/Resources/Pages/Identity/Users/UserRoles.nl.resx new file mode 100644 index 0000000..e515e39 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserRoles.nl.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Rollen van {0} {1} beheren + + + Rolnaam + + + Rollen bijgewerkt! + + + Status + + + Gebruikersrollen bijwerken + + + Grenst aan + + + Dicht + + + Zoeken naar gebruikersrollen + + + Gestreept + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserRoles.ru.resx b/src/Client/Resources/Pages/Identity/Users/UserRoles.ru.resx new file mode 100644 index 0000000..a934c03 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserRoles.ru.resx @@ -0,0 +1,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Обрамлённый + + + Компактный + + + Управление Ролями {0} {1} + + + Имя роли + + + Роли обновлены! + + + Поиск ролей пользователя + + + Статус + + + Чередующийся + + + Обновить роли пользователя + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/UserRoles.sv.resx b/src/Client/Resources/Pages/Identity/Users/UserRoles.sv.resx new file mode 100644 index 0000000..4963a5f --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/UserRoles.sv.resx @@ -0,0 +1,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Hantera {0} {1} Roller + + + Rollnamn + + + Roller uppdaterade! + + + Status + + + Uppdatera användarroller + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/Users.ar.resx b/src/Client/Resources/Pages/Identity/Users/Users.ar.resx new file mode 100644 index 0000000..09b0624 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/Users.ar.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + أجراءات + + + نشيط + + + يحدها + + + إنشاء + + + كثيف + + + بريد الالكتروني + + + تأكيد البريد الإلكتروني + + + تصدير + + + تم تصدير المستخدمين الذين تمت تصفيتهم + + + الاسم الأول + + + الكنية + + + إدارة الأدوار + + + ادارة المستخدمين + + + لا توجد إجراءات مسموح بها + + + غير مسموح. + + + رقم الهاتف + + + تسجيل مستخدم جديد + + + إعادة تحميل + + + البحث عن المستخدمين + + + مخطط + + + اسم االمستخدم + + + المستخدمون + + + تصدير المستخدمين + + + عرض الصفحة الشخصية + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/Users.de.resx b/src/Client/Resources/Pages/Identity/Users/Users.de.resx new file mode 100644 index 0000000..48abf2c --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/Users.de.resx @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktionen + + + Aktiv + + + Gerahmt + + + Passwort bestätigen + + + Hinzufügen + + + Schmal + + + E-Mail + + + E-Mail bestätigt + + + Export + + + Gefilterte Benutzer exportiert + + + Vorname + + + Nachname + + + Rollen verwalten + + + Nutzer verwalten + + + Keine Aktionen erlaubt + + + Nicht erlaubt. + + + Passwort + + + Telefonnummer + + + Neuen Nutzer anlegen + + + Neu laden + + + Nach Benutzern suchen + + + Gebändert + + + Benutzername + + + Nutzer + + + Benutzer exportiert + + + Profil anzeigen + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/Users.en.resx b/src/Client/Resources/Pages/Identity/Users/Users.en.resx new file mode 100644 index 0000000..2251438 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/Users.en.resx @@ -0,0 +1,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Active + + + Bordered + + + Confirm Password + + + Create + + + Dense + + + Email + + + Email Confirmation + + + Export + + + Filtered Users exported + + + First Name + + + Last Name + + + Manage Roles + + + Manage Users + + + No Allowed Actions + + + Not Allowed. + + + Password + + + Phone Number + + + Register New User + + + Reload + + + Search For Users + + + Striped + + + User Name + + + Users + + + Users exported + + + View Profile + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/Users.es.resx b/src/Client/Resources/Pages/Identity/Users/Users.es.resx new file mode 100644 index 0000000..9a9793a --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/Users.es.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acciones + + + Activo + + + Bordeado + + + Crear + + + Denso + + + Correo + + + Confirmación de correo + + + Exportar + + + Usuarios Filtrados exportados + + + Nombre + + + Apellido + + + Gestionar Roles + + + Gestionar Usuarios + + + Acciones no Permitidas + + + No Permitido + + + Teléfono + + + Nuevo usuario + + + Recargar + + + Buscar usuarios + + + Rayado + + + Nombre de Usuario + + + Usuarios + + + Usuarios exportados + + + Ver perfil + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/Users.fr.resx b/src/Client/Resources/Pages/Identity/Users/Users.fr.resx new file mode 100644 index 0000000..771937f --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/Users.fr.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Actif + + + Créer + + + Courriel + + + Confirmation du courriel + + + Exporter + + + Utilisateurs filtrés exportés + + + Prénom + + + Nom + + + Gérer les rôles + + + Gérer les utilisateurs + + + Aucune action autorisée + + + Enregistrer un nouvel utilisateur + + + Recharger + + + Rechercher des utilisateurs + + + Utilisateurs + + + Utilisateurs exportés + + + Voir le profil + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/Users.id.resx b/src/Client/Resources/Pages/Identity/Users/Users.id.resx new file mode 100644 index 0000000..4b1f5dd --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/Users.id.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Tindakan + + + Aktif + + + Tambah Pengguna + + + Email + + + Konfirmasi Email + + + Export + + + Filtered Users exported + + + Nama Depan + + + Nama Belakang + + + Atur Wewenang + + + Atur Pengguna + + + No Allowed Actions + + + Tidak Diizinkan. + + + Daftar Pengguna Baru + + + Muat Ulang + + + Cari Pengguna + + + Pengguna + + + Users exported + + + Lihat Profil + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/Users.it.resx b/src/Client/Resources/Pages/Identity/Users/Users.it.resx new file mode 100644 index 0000000..7d50b0c --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/Users.it.resx @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Azioni + + + Attiva + + + Conferma Password + + + Crea + + + Email + + + Conferma E-Mail + + + Export + + + Filtered Users exported + + + Nome + + + Cognome + + + Gestisci ruoli + + + Gestisci utenti + + + No Allowed Actions + + + Non autorizzato. + + + Password + + + Numero di telefono + + + Numero di telefono + + + Registra nuovo utente + + + Ricarica + + + Ricerca utenti + + + Nome utente + + + Nome utente + + + Utenti + + + Users exported + + + Vedi profilo + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/Users.km.resx b/src/Client/Resources/Pages/Identity/Users/Users.km.resx new file mode 100644 index 0000000..7e26532 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/Users.km.resx @@ -0,0 +1,174 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + មុខងារ + + + សកម្ម + + + បង្កើត + + + អ៊ីម៉ែល + + + អ៊ីម៉ែលបញ្ជាក់ + + + នាំចេញ + + + ច្រោះអ្នកប្រើប្រាស់បាននាំចេញ + + + នាមខ្លួន + + + នាមត្រកូល + + + កំណត់សិទ្ធិអ្នកប្រើប្រាស់ + + + កំណត់អ្នកប្រើប្រាស់ + + + សកម្មភាពមិនអនុញ្ញាត្ត + + + ចុះឈ្មោះអ្នកប្រើប្រាស់ថ្មី + + + ផ្ទុកឡើងវិញ + + + ស្វែងរកអ្នកប្រើប្រាស់ + + + អ្នកប្រើប្រាស់ + + + អ្នកប្រើប្រាស់បាននាំចេញ + + + បង្ហាញព័ត៌មានផ្ទាល់ខ្លួន + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/Users.nl.resx b/src/Client/Resources/Pages/Identity/Users/Users.nl.resx new file mode 100644 index 0000000..80ee914 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/Users.nl.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acties + + + Actief + + + Aanmaken + + + Email + + + Bevestiging per e-mail + + + Exporteren + + + Gefilterde gebruikers geëxporteerd + + + Voornaam + + + Achternaam + + + Rollen beheren + + + Gebruikers beheren + + + Geen toegestane acties + + + Nieuwe gebruiker registreren + + + Herladen + + + Gebruikers zoeken + + + Gebruikers + + + Gebruikers geëxporteerd + + + Profiel weergeven + + + Grenst aan + + + Dicht + + + Niet toegestaan. + + + Telefoonnummer + + + Gestreept + + + Gebruikersnaam + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/Users.ru.resx b/src/Client/Resources/Pages/Identity/Users/Users.ru.resx new file mode 100644 index 0000000..9b83555 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/Users.ru.resx @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Действия + + + Активный + + + Обрамлённый + + + Создать + + + Компактный + + + Email + + + Email подтверждён + + + Экспорт в Excel + + + Отфильтрованные пользователи экспортированы + + + Имя + + + Фамилия + + + Управление ролями + + + Управление пользователями + + + Нет доступных действий + + + Не разрешено. + + + Номер телефона + + + Зарегистрировать нового пользователя + + + Перезагрузить + + + Поиск пользователя... + + + Чередующийся + + + UserName + + + Пользователи + + + Пользователи экспортированы + + + Посмотреть профиль + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Identity/Users/Users.sv.resx b/src/Client/Resources/Pages/Identity/Users/Users.sv.resx new file mode 100644 index 0000000..bdc6cd6 --- /dev/null +++ b/src/Client/Resources/Pages/Identity/Users/Users.sv.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Åtgärder + + + Aktiv + + + Skapa + + + E-post + + + E-post Bekräftelse + + + Export + + + Filtered Users exported + + + Förnamn + + + Efternamn + + + Hantera Roller + + + Hantera Användare + + + No Allowed Actions + + + Inte Tillåtet. + + + Registrera ny användare + + + Ladda om + + + Sök efter användare + + + Användare + + + Users exported + + + Visa Profil + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Index.de.resx b/src/Client/Resources/Pages/Index.de.resx new file mode 100644 index 0000000..e998e26 --- /dev/null +++ b/src/Client/Resources/Pages/Index.de.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Blazor WASM Vorlage + + + Erstellt mit dem Besten von + + + Kompatibel mit + + + Komponentenbibliothek + + + Falls du irgendwo steckenbleiben solltest, oder Fragen zu dieser Implementierung hast, habe ich eine Schnellstartanleitung für dich erstellt. + + + Anleitung lesen + + + Version 1.0 + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Index.en.resx b/src/Client/Resources/Pages/Index.en.resx new file mode 100644 index 0000000..14ddac7 --- /dev/null +++ b/src/Client/Resources/Pages/Index.en.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Blazor WASM Boilerplate + + + Built with the goodness of + + + Compatible with + + + Component Library + + + In case you are stuck anywhere or have any queries regarding this implementation, I have compiled a Quick Start Guide for you reference. + + + Read The Guide + + + Version 1.0 + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Index.it.resx b/src/Client/Resources/Pages/Index.it.resx new file mode 100644 index 0000000..cb76ac0 --- /dev/null +++ b/src/Client/Resources/Pages/Index.it.resx @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Blazor WASM Boilerplate + + + Sviluppato con l'ultilizzo di componenti della libreria + + + Compatibile con + + + Component Library + + + Nel caso in cui tu sia bloccato ovunque o hai domande riguardanti questa implementazione, ho compilato una guida rapida per il tuo riferimento. + + + GUIDA + + + Versione 1.0 + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentModal.ar.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.ar.resx new file mode 100644 index 0000000..c32c8b3 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.ar.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + أضف مستند + + + الغاء + + + وصف + + + نوع المستند + + + تنزيل + + + رقم المعرف + + + عام؟ + + + حفظ + + + عنوان + + + تحديث + + + تحديث المستند + + + رفع + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentModal.de.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.de.resx new file mode 100644 index 0000000..5c863a4 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.de.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Dokument hinzufügen + + + Abbrechen + + + Beschreibung + + + Dokumenttyp + + + Herunterladen + + + Id + + + Öffentlich? + + + Speichern + + + Titel + + + Aktualisieren + + + Dokument aktualisieren + + + Hochladen + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentModal.en.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.en.resx new file mode 100644 index 0000000..87f6df1 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.en.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Add Document + + + Cancel + + + Description + + + Document Type + + + Download + + + Id + + + Is Public? + + + Save + + + Title + + + Update + + + Update Document + + + Upload + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentModal.es.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.es.resx new file mode 100644 index 0000000..dc71795 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.es.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Agregar Documento + + + Cancelar + + + Descripción + + + Tipo de Documento + + + Descargar + + + Id + + + ¿Es Público? + + + Guardar + + + Título + + + Actualizar + + + Actualizar Documento + + + Subir + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentModal.fr.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.fr.resx new file mode 100644 index 0000000..2e1cc02 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.fr.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ajouter un document + + + Annuler + + + Description + + + Type du document + + + Télécharger + + + Identifiant + + + Est public ? + + + Sauvegarder + + + Titre + + + Mettre à jour + + + Mettre à jour le document + + + Téléverser + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentModal.id.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.id.resx new file mode 100644 index 0000000..afa6f30 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.id.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Tambah Dokumen + + + Batal + + + Deskripsi + + + Document Type + + + Unduh + + + Id + + + Dokumen Publik? + + + Simpan + + + Judul + + + Perbarui + + + Perbarui Dokumen + + + Unggah + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentModal.it.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.it.resx new file mode 100644 index 0000000..6c14e3b --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.it.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aggiungi documento + + + Annulla + + + Descrizione + + + Document Type + + + Download + + + Id + + + È pubblico? + + + Salva + + + Titolo + + + Aggiorna + + + Aggiorna Documento + + + Carica + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentModal.km.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.km.resx new file mode 100644 index 0000000..0797109 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.km.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + បន្ថែមឯកសារ + + + បោះបង់ + + + ការពិពណ៌នា + + + ប្រភេទឯកសារ + + + ទាញយក + + + លេខកូដសម្គាល់ + + + ជាសាធារណះ? + + + រក្សាទុក + + + ចំណងជើង + + + បច្ចុប្បន្នភាព + + + បច្ចុប្បន្នភាពឯកសារ + + + ផ្ទុកឡើង + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentModal.nl.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.nl.resx new file mode 100644 index 0000000..3da7669 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.nl.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Document toevoegen + + + Annuleren + + + Beschrijving + + + Documenttype + + + Downloaden + + + Id + + + Is het openbaar? + + + Opslaan + + + Titel + + + Update + + + Document bijwerken + + + Uploaden + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentModal.ru.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.ru.resx new file mode 100644 index 0000000..4da98f0 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.ru.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Добавить документ + + + Отмена + + + Описание + + + Тип документа + + + Скачать + + + Id + + + Публичный? + + + Сохранить + + + Заголовок + + + Обновить + + + Обновить документ + + + Загрузить + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentModal.sv.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.sv.resx new file mode 100644 index 0000000..e23d6b5 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentModal.sv.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Lägg till dokument + + + Avbryt + + + Beskrivning + + + Document Type + + + Ladda ner + + + Id + + + Är Offentlig? + + + Spara + + + Rubrik + + + Uppdatera + + + Uppdatera Dokument + + + Ladda Upp + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.ar.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.ar.resx new file mode 100644 index 0000000..909c248 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.ar.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Add Document Type + + + الغاء + + + وصف + + + رقم المعرف + + + اسم + + + حثظ + + + تحديث + + + تحديث موع المستند + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.de.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.de.resx new file mode 100644 index 0000000..4b9bf26 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.de.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Dokumenttyp hinzufügen + + + Abbrechen + + + Beschreibung + + + Id + + + Name + + + Speichern + + + Aktualisieren + + + Dokumenttyp aktualisieren + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.en.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.en.resx new file mode 100644 index 0000000..8b60e1c --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.en.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Add Document Type + + + Cancel + + + Description + + + Id + + + Name + + + Save + + + Update + + + Update Document Type + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.es.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.es.resx new file mode 100644 index 0000000..647a528 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.es.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Agregar Tipo de Documento + + + Cancelar + + + Descripción + + + Id + + + Nombre + + + Guardar + + + Actualizar + + + Actualizar Tipo de Documento + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.fr.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.fr.resx new file mode 100644 index 0000000..a0b980d --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.fr.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ajouter un type de document + + + Annuler + + + Description + + + Identifiant + + + Nom + + + Sauvegarder + + + Mettre à jour + + + Mettre à jour le type de document + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.km.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.km.resx new file mode 100644 index 0000000..bd07f65 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.km.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + បន្ថែមប្រភេទឯកសារ + + + បោះបង់ + + + ពិពណ៌នា + + + លេខកូដ + + + ឈ្មោះ + + + រក្សាទុក + + + បច្ចុប្បន្នភាព + + + បច្ចុប្បន្នភាពប្រភេទឯកសារ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.nl.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.nl.resx new file mode 100644 index 0000000..cb353bf --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.nl.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Documenttype toevoegen + + + Annuleren + + + Beschrijving + + + Id + + + Naam + + + Opslaan + + + Update + + + Documenttype bijwerken + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.ru.resx b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.ru.resx new file mode 100644 index 0000000..0f7290e --- /dev/null +++ b/src/Client/Resources/Pages/Misc/AddEditDocumentTypeModal.ru.resx @@ -0,0 +1,144 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Добавить тип документа + + + Отмена + + + Описание + + + Id + + + Наименование + + + Сохранить + + + Обновить + + + Обновить тип документа + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentStore.ar.resx b/src/Client/Resources/Pages/Misc/DocumentStore.ar.resx new file mode 100644 index 0000000..ae36281 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentStore.ar.resx @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + أجراءات + + + يحدها + + + تصفح المستندات المتاحة. + + + إنشاء + + + تاريخ الإنشاء + + + حذف + + + حذف المحتوى + + + كثيف + + + وصف + + + متجر المستندات + + + نوع الوثيقة + + + تحميل + + + يحرر + + + المعرف + + + عام + + + إدارة السمات الموسعة + + + لا توجد إجراءات مسموح بها + + + صاحب + + + إعادة تحميل + + + بحث + + + مخطط + + + عنوان + + + أنت + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentStore.de.resx b/src/Client/Resources/Pages/Misc/DocumentStore.de.resx new file mode 100644 index 0000000..d7f094f --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentStore.de.resx @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktionen + + + Gerahmt + + + Verfügbare Dokumente durchsuchen. + + + Erstellen + + + Erstellungsdatum + + + Löschen + + + Inhalt löschen + + + Schmal + + + Beschreibung + + + Dokumentenspeicher + + + Dokumenttyp + + + Herunterladen + + + Bearbeiten + + + Id + + + Öffentlich + + + Erweiterte Attribute verwalten + + + Keine Aktionen erlaubt + + + Eigentümer + + + Neu laden + + + Suche + + + Gebändert + + + Titel + + + Du + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentStore.en.resx b/src/Client/Resources/Pages/Misc/DocumentStore.en.resx new file mode 100644 index 0000000..68cb0bb --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentStore.en.resx @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Bordered + + + Browse Available Documents. + + + Create + + + Date Created + + + Delete + + + Delete Content + + + Dense + + + Description + + + Document Store + + + Document Type + + + Download + + + Edit + + + Id + + + Is Public + + + Manage Extended Attributes + + + No Allowed Actions + + + Owner + + + Reload + + + Search + + + Striped + + + Title + + + you + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentStore.es.resx b/src/Client/Resources/Pages/Misc/DocumentStore.es.resx new file mode 100644 index 0000000..74654a0 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentStore.es.resx @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acciones + + + Bordeado + + + Navegar Documentos Disponibles. + + + Crear + + + Fecha de Creación + + + Borrar + + + ¿Desea eliminar el registro? + + + Denso + + + Descripción + + + Almacén de Documentos + + + Tipo de Documento + + + Descarga + + + Editar + + + Id + + + Es Público + + + Administrar Atributos Extendidos + + + Acciones no Permitidas + + + Propietario + + + Recargar + + + Buscar + + + Rayado + + + Título + + + Ud. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentStore.fr.resx b/src/Client/Resources/Pages/Misc/DocumentStore.fr.resx new file mode 100644 index 0000000..5247805 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentStore.fr.resx @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Avec bordures + + + Parcourir les documents disponibles. + + + Créer + + + Date de création + + + Supprimer + + + Supprimer l'élément + + + Dense + + + Description + + + Stockage de documents + + + Type de document + + + Télécharger + + + Éditer + + + Identifiant + + + Est public + + + Gérer les attributs étendus + + + Aucune action autorisée + + + Propriétaire + + + Recharger + + + Rechercher + + + Rayé + + + Titre + + + vous + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentStore.id.resx b/src/Client/Resources/Pages/Misc/DocumentStore.id.resx new file mode 100644 index 0000000..4586f7d --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentStore.id.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Tindakan + + + Telusuri Dokumen yang Tersedia. + + + Tambah Dokumen + + + Tanggal Dibuat + + + Hapus + + + Delete Content + + + Deskripsi + + + Penyimpanan Dokumen + + + Document Type + + + Unduh + + + Sunting + + + Id + + + Dokumen Publik + + + Manage Extended Attributes + + + No Allowed Actions + + + Pemilik + + + Muat Ulang + + + Cari + + + Judul + + + you + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentStore.it.resx b/src/Client/Resources/Pages/Misc/DocumentStore.it.resx new file mode 100644 index 0000000..51932c2 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentStore.it.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Azioni + + + Sfoglia i documenti disponibili. + + + Crea + + + Data di Creazione + + + Elimina + + + Delete Content + + + Descrizione + + + Archivio documenti + + + Document Type + + + Download + + + Modifica + + + Id + + + E' Pubblico + + + Manage Extended Attributes + + + No Allowed Actions + + + Proprietario + + + Ricarica + + + Cerca + + + Titolo + + + you + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentStore.km.resx b/src/Client/Resources/Pages/Misc/DocumentStore.km.resx new file mode 100644 index 0000000..d1d4b53 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentStore.km.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + សកម្មភាព + + + រកមើលឯកសារមានទាំងអស់ + + + បង្កើត + + + កាលបរិឆ្ឆេទបង្កើត + + + លុប + + + អត្ថបទត្រូវបានលុប + + + ការពិពណ៌នា + + + តំបន់រក្សាទុកឯកសារ + + + ប្រភេទឯកសារ + + + ទាញយក + + + កែប្រែ + + + លេខកូដសម្ងាត់ + + + ធ្វើអោយជាសាធារណះ + + + គ្រប់គ្រង ជួរឈរបន្ថែម + + + សកម្មភាពមិនបានអនុញ្ញាត្ត + + + ម្ខាស់ + + + ផ្ទុកឡើងវិញ + + + ស្វែងរក + + + ចំណងជើង + + + អ្នក + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentStore.nl.resx b/src/Client/Resources/Pages/Misc/DocumentStore.nl.resx new file mode 100644 index 0000000..5f962f4 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentStore.nl.resx @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acties + + + Grenst aan + + + Blader door beschikbare documenten. + + + Aanmaken + + + Datum gemaakt + + + Verwijderen + + + Inhoud verwijderen + + + Dicht + + + Beschrijving + + + Documentopslag + + + Documenttype + + + Downloaden + + + Bewerken + + + Id + + + Is openbaar + + + Uitgebreide kenmerken beheren + + + Geen toegestane acties + + + Eigenaar + + + Herladen + + + Zoeken + + + Gestreept + + + Titel + + + jij + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentStore.ru.resx b/src/Client/Resources/Pages/Misc/DocumentStore.ru.resx new file mode 100644 index 0000000..6f251e4 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentStore.ru.resx @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Действия + + + Обрамлённый + + + Обзор доступных документов. + + + Создать + + + Дата создания + + + Удалить + + + Удалить контент + + + Компактный + + + Описание + + + Хранилище документов + + + Тип документа + + + Скачать + + + Редактировать + + + Id + + + Публичный + + + Управление атрибутами + + + Нет доступных действий + + + Владелец + + + Перезагрузить + + + Поиск документов + + + Чередующийся + + + Заголовок + + + Вы + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentStore.sv.resx b/src/Client/Resources/Pages/Misc/DocumentStore.sv.resx new file mode 100644 index 0000000..869cdea --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentStore.sv.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Åtgärder + + + Bläddra i tillgängliga dokument. + + + Skapa + + + Skapat datum + + + Radera + + + Delete Content + + + Beskrivning + + + Dokument Förvaring + + + Document Type + + + Ladda Ner + + + Ändra + + + Id + + + Är Offentlig + + + Manage Extended Attributes + + + No Allowed Actions + + + Ägare + + + Ladda Om + + + Sök + + + Rubrik + + + you + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentTypes.ar.resx b/src/Client/Resources/Pages/Misc/DocumentTypes.ar.resx new file mode 100644 index 0000000..d317b38 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentTypes.ar.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + أجراءات + + + يحدها + + + إنشاء + + + حذف + + + حذف المحتوى + + + كثيف + + + وصف + + + أنواع المستندات + + + أنواع المستندات التي تم تصديرها + + + يحرر + + + يصدر + + + تم تصدير أنواع المستندات التي تمت تصفيتها + + + المعرف + + + إدارة أنواع المستندات. + + + اسم + + + لا توجد إجراءات مسموح بها + + + إعادة تحميل + + + ابحث عن أنواع المستندات + + + مخطط + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentTypes.de.resx b/src/Client/Resources/Pages/Misc/DocumentTypes.de.resx new file mode 100644 index 0000000..930df1f --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentTypes.de.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktionen + + + Gerahmt + + + Erstellen + + + Löschen + + + Inhalt löschen + + + Schmal + + + Beschreibung + + + Dokumenttypen + + + Dokumenttypen exportiert + + + Bearbeiten + + + Export + + + Gefilterte Dokumenttypen exportiert + + + Id + + + Dokumenttypen verwalten. + + + Name + + + Keine Aktionen erlaubt + + + Neu laden + + + Nach Dokumenttypen suchen + + + Gebändert + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentTypes.en.resx b/src/Client/Resources/Pages/Misc/DocumentTypes.en.resx new file mode 100644 index 0000000..ba73b34 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentTypes.en.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Bordered + + + Create + + + Delete + + + Delete Content + + + Dense + + + Description + + + Document Types + + + Document Types exported + + + Edit + + + Export + + + Filtered Document Types exported + + + Id + + + Manage Document Types. + + + Name + + + No Allowed Actions + + + Reload + + + Search for Document Types + + + Striped + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentTypes.es.resx b/src/Client/Resources/Pages/Misc/DocumentTypes.es.resx new file mode 100644 index 0000000..527d617 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentTypes.es.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acciones + + + Bordeado + + + Crear + + + Borrar + + + ¿Desea borrar el registro? + + + Denso + + + Descripción + + + Tipos de Documentos + + + Tipos de Documentos exportados + + + Editar + + + Exportar + + + Tipos de Documentos Filtrados exportados + + + Id + + + Administar Tipos de Documentos. + + + Nombre + + + Acciones no Permitidas + + + Recargar + + + Buscar Tipos de Documentos + + + Rayado + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentTypes.fr.resx b/src/Client/Resources/Pages/Misc/DocumentTypes.fr.resx new file mode 100644 index 0000000..19ca0fb --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentTypes.fr.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Avec bordures + + + Création + + + Suppression + + + Supprimer l'élément + + + Dense + + + Description + + + Types de documents + + + Types de documents exportés + + + Éditer + + + Exporter + + + Types de documents filtrés exportés + + + Identifiants + + + Gérer les types de documents + + + Nom + + + Aucune action autorisée + + + Recharger + + + Rechercher parmis les types de documents + + + Rayé + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentTypes.km.resx b/src/Client/Resources/Pages/Misc/DocumentTypes.km.resx new file mode 100644 index 0000000..2ab117c --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentTypes.km.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + សកម្មភាព + + + ព្រុំប្រទល់ + + + បង្កើត + + + លុប + + + លុបខ្លឹមសារ + + + ពង្រួម + + + ពិពណ៌នា + + + ប្រភេទឯកសារ + + + ប្រភេទឯកសារនាំចេញ + + + កែប្រែ + + + នាំចេញ + + + ច្រោះប្រភេទឯកសារនាំចេញ + + + លេខកូដ + + + គ្រប់គ្រងប្រភេទឯកសារ + + + ឈ្មោះ + + + សកម្មភាពមិនអនុញ្ញាត្ត + + + ផ្ទុកឡើងវិញ + + + ស្វែងរកប្រភេទឯកសារ + + + ឆ្លាស់ពណ៌ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentTypes.nl.resx b/src/Client/Resources/Pages/Misc/DocumentTypes.nl.resx new file mode 100644 index 0000000..65e8af1 --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentTypes.nl.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acties + + + Grenst aan + + + Aanmaken + + + Verwijderen + + + Inhoud verwijderen + + + Dicht + + + Beschrijving + + + Documenttypen + + + Geëxporteerde documenttypen + + + Bewerken + + + Exporteren + + + Gefilterde documenttypen geëxporteerd + + + Id + + + Documenttypen beheren. + + + Naam + + + Geen toegestane acties + + + Herladen + + + Zoeken naar documenttypen + + + Gestreept + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Misc/DocumentTypes.ru.resx b/src/Client/Resources/Pages/Misc/DocumentTypes.ru.resx new file mode 100644 index 0000000..1d369bb --- /dev/null +++ b/src/Client/Resources/Pages/Misc/DocumentTypes.ru.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Действия + + + Обрамлённый + + + Создать + + + Удалить + + + Удалить контент + + + Компактный + + + Описание + + + Типы документов + + + Типы документов экспортированы + + + Редактировать + + + Экспорт в Excel + + + Отфильтрованные типы документов экспортированы + + + Id + + + Управление типами документов. + + + Наименование + + + Нет доступных действий + + + Перезагрузить + + + Поиск типов документов... + + + Чередующийся + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Multitenancy/Tenants.de.resx b/src/Client/Resources/Pages/Multitenancy/Tenants.de.resx new file mode 100644 index 0000000..f0beede --- /dev/null +++ b/src/Client/Resources/Pages/Multitenancy/Tenants.de.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktiv + + + E-Mail-Adresse des Administrators + + + Name + + + Gültig bis + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Multitenancy/Tenants.en.resx b/src/Client/Resources/Pages/Multitenancy/Tenants.en.resx new file mode 100644 index 0000000..383c6a7 --- /dev/null +++ b/src/Client/Resources/Pages/Multitenancy/Tenants.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Active + + + Admin Email + + + Name + + + Valid Upto + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Multitenancy/Tenants.it.resx b/src/Client/Resources/Pages/Multitenancy/Tenants.it.resx new file mode 100644 index 0000000..356ba8f --- /dev/null +++ b/src/Client/Resources/Pages/Multitenancy/Tenants.it.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Attivo + + + Email (Adm) + + + Nome + + + Valito fino a + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Multitenancy/UpgradeSubscriptionModal.de.resx b/src/Client/Resources/Pages/Multitenancy/UpgradeSubscriptionModal.de.resx new file mode 100644 index 0000000..75eeef9 --- /dev/null +++ b/src/Client/Resources/Pages/Multitenancy/UpgradeSubscriptionModal.de.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Abbrechen + + + Aktuelles Ablaufdatum + + + Neues Ablaufdatum + + + Aktualisieren + + + Abonnement aktualisieren + + + Abonnement aktualisiert. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Multitenancy/UpgradeSubscriptionModal.en.resx b/src/Client/Resources/Pages/Multitenancy/UpgradeSubscriptionModal.en.resx new file mode 100644 index 0000000..c788ea0 --- /dev/null +++ b/src/Client/Resources/Pages/Multitenancy/UpgradeSubscriptionModal.en.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cancel + + + Current Expiry Date + + + New Expiry Date + + + Upgrade + + + Upgrade Subscription + + + Upgraded Subscription. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Multitenancy/UpgradeSubscriptionModal.it.resx b/src/Client/Resources/Pages/Multitenancy/UpgradeSubscriptionModal.it.resx new file mode 100644 index 0000000..87d54c5 --- /dev/null +++ b/src/Client/Resources/Pages/Multitenancy/UpgradeSubscriptionModal.it.resx @@ -0,0 +1,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Annulla + + + Data di scadenza + + + Nuova data di scadenza + + + Aggiornamento + + + Aggiorna Subscription + + + Subscription Aggiornata. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/AuditLogs.ar.resx b/src/Client/Resources/Pages/Personal/AuditLogs.ar.resx new file mode 100644 index 0000000..2bacb36 --- /dev/null +++ b/src/Client/Resources/Pages/Personal/AuditLogs.ar.resx @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + مسارات المراجعة + + + تم تصدير مسارات التدقيق + + + يحدها + + + الغاء + + + مسح + + + تتأثر الأعمدة + + + تاريخ + + + النطاق الزمني للبحث + + + كثيف + + + تفاصيل معرف الممر + + + تصدير إلى Excel + + + تم تصدير مسارات التدقيق المصفاة + + + إخفاء + + + المعرف + + + محلي + + + قيم جديدة + + + موافق + + + المفتاح الأساسي + + + ابحث عن مسارات + + + ابحث في القيم الجديدة + + + ابحث في القيم القديمة + + + ابحث في القيم القديمة + + + عرض + + + مخطط + + + اسم الجدول + + + تفاضيل + + + نوع + + + التوقيت العالمي + + + أنشطتك الأخيرة. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/AuditLogs.de.resx b/src/Client/Resources/Pages/Personal/AuditLogs.de.resx new file mode 100644 index 0000000..f16282e --- /dev/null +++ b/src/Client/Resources/Pages/Personal/AuditLogs.de.resx @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Prüfpfade + + + Prüfpfade aktualisiert + + + Gerahmt + + + Abbrechen + + + Leeren + + + Betroffene Spalten + + + Datum + + + Zeitraum für Suche + + + Schmal + + + Details zur Prüfpfad-Id + + + Zu Excel exportieren + + + Gefilterte Prüfpfade exported + + + Verstecken + + + Id + + + Lokal + + + Neue Werte + + + Ok + + + Alte Werte + + + Primärschlüssekl + + + Nach Prüfpfaden suchen + + + In neuen Werten suchen + + + In alten Werten suchen + + + Anzeigen + + + Gebändert + + + Tabellenname + + + Prüfpfad-Details + + + Typ + + + UTC + + + Deine letzten Aktivitäten. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/AuditLogs.en.resx b/src/Client/Resources/Pages/Personal/AuditLogs.en.resx new file mode 100644 index 0000000..c6b6a01 --- /dev/null +++ b/src/Client/Resources/Pages/Personal/AuditLogs.en.resx @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Audit Trails + + + Audit Trails exported + + + Bordered + + + Cancel + + + Clear + + + Columns Affected + + + Date + + + Date Range For Searching + + + Dense + + + Details for Trail ID + + + Export To Excel + + + Filtered Audit Trails exported + + + Hide + + + Id + + + Local + + + New Values + + + Ok + + + Old Values + + + Primary Key + + + Search for Trails + + + Search in New Values + + + Search in Old Values + + + Show + + + Striped + + + Table Name + + + Trail Details + + + Type + + + UTC + + + Your Recent Activities. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/AuditLogs.es.resx b/src/Client/Resources/Pages/Personal/AuditLogs.es.resx new file mode 100644 index 0000000..a363e1c --- /dev/null +++ b/src/Client/Resources/Pages/Personal/AuditLogs.es.resx @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Registro de Auditoría + + + Registro de Auditoría exportado + + + Bordeado + + + Cancelar + + + Limpiar + + + Columnas Afectadas + + + Fecha + + + Rango de Fechas para Búsqueda + + + Denso + + + Detalles para Registro ID + + + Exportar a Excel + + + Registros de Auditoría Filtrados exportados + + + Ocultar + + + Id + + + Local + + + Nuevos Valores + + + Ok + + + Valores Anteriores + + + Clave Primaria + + + Buscar Registros + + + Buscar en Valores Nuevos + + + Buscar en Valores Anteriores + + + Mostrar + + + Rayado + + + Nombre de Tabla + + + Detalle de Registro + + + Tipo + + + UTC + + + Su actividad reciente. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/AuditLogs.fr.resx b/src/Client/Resources/Pages/Personal/AuditLogs.fr.resx new file mode 100644 index 0000000..f2029e1 --- /dev/null +++ b/src/Client/Resources/Pages/Personal/AuditLogs.fr.resx @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Pistes d'audit + + + Pistes d'audit exportées + + + Avec bordures + + + Annulées + + + Effacer + + + Colonnes affectées + + + Date + + + Plage de dates pour la recherche + + + Dense + + + Détail de la piste d'identifiant + + + Exporter vers Excel + + + Pistes d'audit filtrés exportées + + + Cacher + + + Identifiant + + + Local + + + Nouvelles valeurs + + + OK + + + Anciennes valeurs + + + Clé primaire + + + Rechercher des pistes + + + Rechercher parmis les nouvelles valeurs + + + Rechercher parmis les anciennes valeurs + + + Afficher + + + Rayé + + + Nom de la table + + + Détails de la piste + + + Type + + + UTC + + + Activité récente + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/AuditLogs.it.resx b/src/Client/Resources/Pages/Personal/AuditLogs.it.resx new file mode 100644 index 0000000..c3eab91 --- /dev/null +++ b/src/Client/Resources/Pages/Personal/AuditLogs.it.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Registro Attività + + + Audit Trails exported + + + Colonne Interessate + + + Data + + + Dettagli per ID Attività + + + Esporta in Excel + + + Filtered Audit Trails exported + + + Nascondi + + + Id + + + Locale + + + Nuovi valori + + + Vecchi valori + + + Chiave Primaria + + + Cerca Attività + + + Mostra + + + Nome Tabella + + + Dettagli Attività + + + Tipo + + + UTC + + + Le tue Attività Recenti. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/AuditLogs.km.resx b/src/Client/Resources/Pages/Personal/AuditLogs.km.resx new file mode 100644 index 0000000..d3a1341 --- /dev/null +++ b/src/Client/Resources/Pages/Personal/AuditLogs.km.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + កំណត់ត្រាប្រព័ន្ធ + + + កំណត់ត្រាប្រព័ន្ធ នាំចេញ + + + ជួរឈរដែលបានកែប្រែ + + + កាលបរិច្ឆេទ + + + កំណត់ត្រាលម្អិតសម្រាប់កំណត់ត្រាដែលមានលេខសម្ងាល់ + + + បម្លែងជា​ Excel + + + ច្រោះកំណត់ត្រាប្រព័ន្ធនាំចេញ + + + បិទ + + + លេខកូដសម្ងាល់ + + + ខាងក្នុង + + + តម្លៃថ្មី + + + តម្លៃចាស់ + + + លេខសម្គាល់គោល + + + ស្វែងរកកំណត់ត្រាប្រព័ន្ធ + + + បង្ហាញ + + + ឈ្មោះតារាង + + + កំណត់ត្រាលម្អិត + + + ប្រភេទ + + + ម៉ោងសកល + + + សកម្មភាពរបស់អ្នកចុងក្រោយ + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/AuditLogs.nl.resx b/src/Client/Resources/Pages/Personal/AuditLogs.nl.resx new file mode 100644 index 0000000..b84bf72 --- /dev/null +++ b/src/Client/Resources/Pages/Personal/AuditLogs.nl.resx @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Audit Trails + + + Audit Trails geëxporteerd + + + Grenst aan + + + Annuleren + + + Duidelijk + + + Betrokken kolommen + + + Datum + + + Datumbereik voor zoeken + + + Dicht + + + Details voor Trail ID + + + Exporteren naar Excel + + + Gefilterde controletrails geëxporteerd + + + Verbergen + + + Id + + + Lokaal + + + Nieuwe Waarden + + + OK + + + Oude Waarden + + + Primary Key + + + Zoeken naar paden + + + Zoeken in nieuwe waarden + + + Zoeken in oude waarden + + + Tonen + + + Gestreept + + + Table Naam + + + Trail Details + + + Type + + + UTC + + + Uw recente activiteiten. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/AuditLogs.ru.resx b/src/Client/Resources/Pages/Personal/AuditLogs.ru.resx new file mode 100644 index 0000000..583705f --- /dev/null +++ b/src/Client/Resources/Pages/Personal/AuditLogs.ru.resx @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Журналы аудита + + + Журналы аудита экспортированы + + + Обрамлённый + + + Отмена + + + Очистить + + + Затронутые стобцы + + + Дата + + + Диапазон дат для поиска + + + Компактный + + + Детали для записи с ID + + + Экспорт в Excel + + + Отфильтрованные журналы аудита экспортированы + + + Скрыть + + + Id + + + Локальное + + + Новые значения + + + Ok + + + Старые значения + + + Первичный ключ + + + Поиск в журналах + + + Искать в новых значениях + + + Искать в старых значениях + + + Показать + + + Чередующийся + + + Имя таблицы + + + Детали записи в журнале + + + Тип + + + UTC + + + Ваша текущая активность. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/AuditLogs.sv.resx b/src/Client/Resources/Pages/Personal/AuditLogs.sv.resx new file mode 100644 index 0000000..3b95b8b --- /dev/null +++ b/src/Client/Resources/Pages/Personal/AuditLogs.sv.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Granskningsspår + + + Audit Trails exported + + + Berörda kolumner + + + Datum + + + Detaljer för Spår ID + + + Exportera till Excel + + + Filtered Audit Trails exported + + + Göm + + + Id + + + Lokalt + + + Nya Värden + + + Gamla Värden + + + Primärnyckel + + + Sök efter spår + + + Visa + + + Tabellnamn + + + Spår Detaljer + + + Typ + + + UTC + + + Dina senaste aktiviteter. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/Dashboard.ar.resx b/src/Client/Resources/Pages/Personal/Dashboard.ar.resx new file mode 100644 index 0000000..a803152 --- /dev/null +++ b/src/Client/Resources/Pages/Personal/Dashboard.ar.resx @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + أبريل + + + أغسطس + + + العلامات التجارية + + + الرسوم البيانية قادمة قريبا + + + لوحة القيادة + + + ديسمبر + + + سمات المستند الممتدة + + + أنواع المستندات + + + وثائق + + + فبراير + + + يناير + + + يوليو + + + يونيو + + + مارس + + + مايو + + + نوفمبر + + + أكتوبر + + + منتجات + + + رؤى سريعة. + + + تحديثات الوقت الحقيقي & رؤى مع SignalR. + + + الأدوار المسجلة + + + المستخدمون المسجلون + + + سبتمبر + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/Dashboard.de.resx b/src/Client/Resources/Pages/Personal/Dashboard.de.resx new file mode 100644 index 0000000..a20fd84 --- /dev/null +++ b/src/Client/Resources/Pages/Personal/Dashboard.de.resx @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Apr + + + Aug + + + Marken + + + Diagramme kommen bald... + + + Dashboard + + + Dez + + + Erweiterte Dokumentattribute + + + Dokumenttypen + + + Dokumente + + + Feb + + + Jan + + + Jul + + + Jun + + + Mär + + + Mai + + + Nov + + + Okt + + + Produkte + + + Schnelle Einblicke. + + + Echtzeitaktualisierungen & Einblicke mit SignalR. + + + Registrierte Rollen + + + Registrierte Benutzer + + + Sep + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/Dashboard.en.resx b/src/Client/Resources/Pages/Personal/Dashboard.en.resx new file mode 100644 index 0000000..0ec5a3f --- /dev/null +++ b/src/Client/Resources/Pages/Personal/Dashboard.en.resx @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Apr + + + Aug + + + Brands + + + Charts comming soon ish... + + + Dashboard + + + Dec + + + Document Extended Attributes + + + Document Types + + + Documents + + + Feb + + + Jan + + + Jul + + + Jun + + + Mar + + + May + + + Nov + + + Oct + + + Products + + + Quick Insights. + + + Realtime Updates & Insights with SignalR. + + + Registered Roles + + + Registered Users + + + Sep + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/Dashboard.es.resx b/src/Client/Resources/Pages/Personal/Dashboard.es.resx new file mode 100644 index 0000000..e278606 --- /dev/null +++ b/src/Client/Resources/Pages/Personal/Dashboard.es.resx @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Abr + + + Ago + + + Marcas + + + Próximamente gráficos... + + + Panel de Control + + + Dic + + + Atributos Extendidos de Documentos + + + Tipos de Documentos + + + Documentos + + + Feb + + + Ene + + + Jul + + + Jun + + + Mar + + + May + + + Nov + + + Oct + + + Productos + + + Perspectivas Rápidas. + + + Actualizaciones en Tiempo Real & Perspectivas con SignalR. + + + Roles Registrados + + + Usuarios Registrados + + + Sep + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/Dashboard.fr.resx b/src/Client/Resources/Pages/Personal/Dashboard.fr.resx new file mode 100644 index 0000000..819beeb --- /dev/null +++ b/src/Client/Resources/Pages/Personal/Dashboard.fr.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Avr. + + + Août + + + Marques + + + Tableau de bord + + + Déc. + + + Attributs étendus des documents + + + Types de documents + + + Documents + + + Févr. + + + Janv. + + + Juill. + + + Juin + + + Mars + + + Mai + + + Nov. + + + Oct. + + + Produits + + + Aperçus rapides. + + + Mises à jour en temps réel & aperçus avec SignalR. + + + Roles enregistrés + + + Utilisateurs enregistrés + + + Sept. + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/Dashboard.id.resx b/src/Client/Resources/Pages/Personal/Dashboard.id.resx new file mode 100644 index 0000000..c7a7fed --- /dev/null +++ b/src/Client/Resources/Pages/Personal/Dashboard.id.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Merek + + + Grafik akan segera hadir... + + + Dasbor + + + Document Extended Attributes + + + Document Types + + + Documents + + + Produk + + + Wawasan Singkat. + + + Wewenang Terdaftar + + + Pengguna Terdaftar + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/Dashboard.it.resx b/src/Client/Resources/Pages/Personal/Dashboard.it.resx new file mode 100644 index 0000000..316467e --- /dev/null +++ b/src/Client/Resources/Pages/Personal/Dashboard.it.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Prodotti + + + Utenti registrati + + + Marche + + + Grafici... coming soon... + + + Dashboard + + + Approfondimenti rapidi. + + + Ruoli registrati + + + Documenti + + + Tipi di documenti + + + Document Extended Attributes + + + Aggiornamenti in tempo reale e approfondimenti con SignalR + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/Dashboard.km.resx b/src/Client/Resources/Pages/Personal/Dashboard.km.resx new file mode 100644 index 0000000..809c44a --- /dev/null +++ b/src/Client/Resources/Pages/Personal/Dashboard.km.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ម៉ាក + + + ផ្ទាំងឆាតនឹងមកដល់ឆាប់ៗនេះ + + + ផ្ទាំងទិន្នន័យ + + + ជួរឈរឯកសារ + + + ប្រភេទឯកសារ + + + ឯកសារ + + + ផលិតផល + + + ផ្ទាំងទិន្នន័យសង្ខេប + + + ចំនួនតួនាទីសរុប + + + ចំនួនអ្នកប្រើប្រាស់សរុប + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/Dashboard.nl.resx b/src/Client/Resources/Pages/Personal/Dashboard.nl.resx new file mode 100644 index 0000000..d5e9851 --- /dev/null +++ b/src/Client/Resources/Pages/Personal/Dashboard.nl.resx @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Apr + + + Aug + + + Merken + + + Grafieken binnenkort ish... + + + Dashboard + + + Dec + + + Uitgebreide kenmerken van document + + + Documenttypen + + + Documenten + + + Februari + + + Jan + + + Jul + + + Jun + + + Mar + + + Mei + + + Nov + + + Oct + + + Producten + + + Snelle inzichten. + + + Realtime updates en inzichten met SignalR. + + + Geregistreerde rollen + + + Geregistreerde gebruikers + + + Sep + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/Dashboard.ru.resx b/src/Client/Resources/Pages/Personal/Dashboard.ru.resx new file mode 100644 index 0000000..fab4703 --- /dev/null +++ b/src/Client/Resources/Pages/Personal/Dashboard.ru.resx @@ -0,0 +1,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Апр + + + Авг + + + Брендов + + + Графики скоро появятся ... + + + Dashboard + + + Дек + + + Расширенных атрибутов документов + + + Типов документов + + + Документов + + + Фев + + + Янв + + + Июл + + + Июн + + + Мрт + + + Май + + + Ноя + + + Окт + + + Продуктов + + + Быстрая информация. + + + Обновления и аналитика в реальном времени с помощью SignalR. + + + Ролей + + + Пользователей + + + Сен + + \ No newline at end of file diff --git a/src/Client/Resources/Pages/Personal/Dashboard.sv.resx b/src/Client/Resources/Pages/Personal/Dashboard.sv.resx new file mode 100644 index 0000000..25c864d --- /dev/null +++ b/src/Client/Resources/Pages/Personal/Dashboard.sv.resx @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Varumärken + + + Diagram kommer ganska snart... + + + Instrumentpanel + + + Document Extended Attributes + + + Document Types + + + Documents + + + Produkter + + + Snabba insikter. + + + Registrerade Roller + + + Registrerade Användare + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.ar.resx b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.ar.resx new file mode 100644 index 0000000..5642e31 --- /dev/null +++ b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.ar.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + إضافة الخصائص الإضافية + + + إلغاء + + + مسح + + + تاريخ + + + عشري + + + وصف + + + رقم المعرف + + + المعرف الخارجي + + + مجموعة + + + المعرف + + + مفعل؟ + + + Json + + + مفتاح + + + موافق + + + حفظ + + + نص + + + وقت + + + نوع + + + تحديث + + + تحديث الخصائص الإضافية + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.de.resx b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.de.resx new file mode 100644 index 0000000..7c7cd54 --- /dev/null +++ b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.de.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Erweiterte Attribute hinzufügen + + + Abbrechen + + + Leeren + + + Datum + + + Dezimal + + + Beschreibung + + + Objekt-Id + + + Externe Id + + + Gruppe + + + Id + + + Ist Aktiv + + + Json + + + Schlüssel + + + Ok + + + Speichern + + + Text + + + Zeit + + + Typ + + + Aktualisieren + + + Erweiterte Attribute aktualieren + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.en.resx b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.en.resx new file mode 100644 index 0000000..9e1f7c0 --- /dev/null +++ b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.en.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Add Extended Attribute + + + Cancel + + + Clear + + + Date + + + Decimal + + + Description + + + Entity Id + + + External Id + + + Group + + + Id + + + Is Active + + + Json + + + Key + + + Ok + + + Save + + + Text + + + Time + + + Type + + + Update + + + Update Extended Attribute + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.es.resx b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.es.resx new file mode 100644 index 0000000..e061dff --- /dev/null +++ b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.es.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Agregar Atributo Extendido + + + Cancelar + + + Limpiar + + + Fecha + + + Decimal + + + Descripción + + + Id de Entidad + + + Id Externo + + + Grupo + + + Id + + + ¿Está Activo? + + + Json + + + Clave + + + Ok + + + Guardar + + + Texto + + + Hora + + + Tipo + + + Actualizar + + + Actualizar Atributos Extendidos + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.fr.resx b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.fr.resx new file mode 100644 index 0000000..0cbb20b --- /dev/null +++ b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.fr.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ajouter un attribut étendu + + + Annuler + + + Effacer + + + Date + + + Décimal + + + Description + + + Identifiant de l'entité + + + Identifiant externe + + + Groupe + + + Identifiant + + + Est actif + + + Json + + + Clé + + + OK + + + Sauvegarder + + + Texte + + + Heure + + + Type + + + Mettre à jour + + + Mettre à jour l'attribut étendu + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.id.resx b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.id.resx new file mode 100644 index 0000000..9e1f7c0 --- /dev/null +++ b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.id.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Add Extended Attribute + + + Cancel + + + Clear + + + Date + + + Decimal + + + Description + + + Entity Id + + + External Id + + + Group + + + Id + + + Is Active + + + Json + + + Key + + + Ok + + + Save + + + Text + + + Time + + + Type + + + Update + + + Update Extended Attribute + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.it.resx b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.it.resx new file mode 100644 index 0000000..ff5ace2 --- /dev/null +++ b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.it.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Add Extended Attribute + + + Annulla + + + Pulisci + + + Date + + + Decimal + + + Description + + + Entity Id + + + External Id + + + Group + + + Id + + + IsActive + + + Json + + + Key + + + Ok + + + Salva + + + Text + + + Time + + + Type + + + Aggiorna + + + Update Extended Attribute + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.km.resx b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.km.resx new file mode 100644 index 0000000..184bb9f --- /dev/null +++ b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.km.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + បន្ធែមជួរឈរ + + + បោះបង់ + + + សម្អាត + + + Date + + + Decimal + + + ពិពណ៌នា + + + Entity Id + + + External Id + + + ក្រុម + + + Id + + + គឺសកម្ម + + + Json + + + Key + + + អូខេ + + + រក្សាទុក + + + Text + + + Time + + + ប្រភេទ + + + បច្ចុប្បន្នភាព + + + បច្ចុប្បន្នភាពជួរឈរបន្ថែម + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.nl.resx b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.nl.resx new file mode 100644 index 0000000..1a8594e --- /dev/null +++ b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.nl.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Uitgebreid kenmerk toevoegen + + + Annuleren + + + Duidelijk + + + Datum + + + Decimaal + + + Beschrijving + + + Entiteits-id + + + Externe id + + + Groep + + + Id + + + Is actief + + + Json + + + Sleutel + + + OK + + + Opslaan + + + Sms + + + Tijd + + + Type + + + Update + + + Uitgebreid kenmerk bijwerken + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.ru.resx b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.ru.resx new file mode 100644 index 0000000..934224d --- /dev/null +++ b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.ru.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Добавить расширенный атрибут + + + Отмена + + + Очистить + + + Дата + + + Числовое значение + + + Описание + + + Id сущности + + + Внешний Id + + + Группа + + + Id + + + Активный? + + + Json значение + + + Ключ + + + Ок + + + Сохранить + + + Текстовое значение + + + Время + + + Тип + + + Обновить + + + Обновить расширенный атрибут + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.sv.resx b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.sv.resx new file mode 100644 index 0000000..9e1f7c0 --- /dev/null +++ b/src/Client/Resources/Shared/Components/AddEditExtendedAttributeModalLocalization.sv.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Add Extended Attribute + + + Cancel + + + Clear + + + Date + + + Decimal + + + Description + + + Entity Id + + + External Id + + + Group + + + Id + + + Is Active + + + Json + + + Key + + + Ok + + + Save + + + Text + + + Time + + + Type + + + Update + + + Update Extended Attribute + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.ar.resx b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.ar.resx new file mode 100644 index 0000000..ca79862 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.ar.resx @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + أجراءات + + + كل المجموعات + + + Bordered + + + إنشاء + + + حذف + + + هل تريد حذف السمة الموسعة؟ + + + كثيف + + + وصف + + + تعديل + + + معرف الكينونة + + + تصدير + + + الخصائص الإضافية التي تم تصديرها + + + معرف خارجي + + + تم تصدير السمات الموسعة التي تمت تصفيتها + + + مجموعة + + + رقم المعرف + + + تضمين حقول الكينونة (تصدير) + + + نشط؟ + + + مفتاح + + + إدارة الخصائص الإضافية {0} + + + إدارة سمات {0} {1} الموسعة + + + لا توجد إجراءات مسموح بها + + + غير مسموح. + + + مجموعة مختارة فقط (تصدير) + + + مالك + + + إعادة تحميل + + + ابحث عن {0} السمات الموسعة + + + مخطط + + + نوع + + + قيمة + + + أنت + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.de.resx b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.de.resx new file mode 100644 index 0000000..f7b7111 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.de.resx @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktionen + + + Alle Gruppen + + + Gebändert + + + Erstellen + + + Löschen + + + Erweiterte Attribute löschen? + + + Schmal + + + Beschreibung + + + Bearbeiten + + + Objekt-Id + + + Export + + + Erweiterte Attribute exportiert + + + Externe Id + + + Gefilterte erweiterte Attribute exportiert + + + Gruppe + + + Id + + + Objektfelder einschließen (Export) + + + Ist Aktiv + + + Schlüssel + + + Verwalte {0} erweiterte Attribute + + + Verwalte erweiterte {0} Attribute von {1} + + + No Allowed Actions + + + Not Allowed. + + + Only Selected Group (Export) + + + Owner + + + Reload + + + Search For {0} Extended Attributes + + + Striped + + + Type + + + Value + + + you + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.en.resx b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.en.resx new file mode 100644 index 0000000..4270e95 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.en.resx @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + All Groups + + + Bordered + + + Create + + + Delete + + + Delete Extended Attribute? + + + Dense + + + Description + + + Edit + + + Entity Id + + + Export + + + Extended Attributes exported + + + External Id + + + Filtered Extended Attributes exported + + + Group + + + Id + + + Include Entity fields (Export) + + + Is Active + + + Key + + + Manage {0} Extended Attributes + + + Manage {0} {1}'s Extended Attributes + + + No Allowed Actions + + + Not Allowed. + + + Only Selected Group (Export) + + + Owner + + + Reload + + + Search For {0} Extended Attributes + + + Striped + + + Type + + + Value + + + you + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.es.resx b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.es.resx new file mode 100644 index 0000000..1cfea1f --- /dev/null +++ b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.es.resx @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acciones + + + Todos los Grupos + + + Bordeado + + + Crear + + + Borrar + + + ¿Eliminar Atributo Extendido? + + + Denso + + + Descripción + + + Editar + + + Id de Entidad + + + Exportar + + + Atributos Extendidos exportados + + + Id Externo + + + Atributos Extendidos Filtrados exportados + + + Grupo + + + Id + + + Incluir campos de Entidad (Exportar) + + + ¿Está Activo? + + + Clave + + + Administrar Atributos Extendidos ({0}) + + + Administrar los Atributos Extendidos de: {0}-{1} + + + Acciones no Permitidas + + + No Permitido. + + + Solo el Grupo Seleccionado (Exportar) + + + Propietario + + + Recargar + + + Buscar Atributos Extendidos ({0}) + + + Rayado + + + Tipo + + + Valor + + + Ud. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.fr.resx b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.fr.resx new file mode 100644 index 0000000..706054b --- /dev/null +++ b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.fr.resx @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Tous les groupes + + + Avec bordure + + + Créer + + + Supprimer + + + Supprimer l'attribut étendu ? + + + Dense + + + Description + + + Éditer + + + Identifiant de l'entité + + + Exporter + + + Attributs étendus exportés + + + Identifiant externe + + + Attributs étendus filtrés exportés + + + Groupe + + + Identifiant + + + Inclure tous les champs (export) + + + Est actif + + + Clé + + + Gérer les attributs étendus de {0} + + + Gérer les attributs étendus de {0} {1} + + + Aucune action autorisée + + + Non autorisé. + + + Seulement les groupes sélectionné (export) + + + Propriétaire + + + Recharger + + + Rechercher les attributs étendus de {0} + + + Rayé + + + Type + + + Valeur + + + vous + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.id.resx b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.id.resx new file mode 100644 index 0000000..4270e95 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.id.resx @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + All Groups + + + Bordered + + + Create + + + Delete + + + Delete Extended Attribute? + + + Dense + + + Description + + + Edit + + + Entity Id + + + Export + + + Extended Attributes exported + + + External Id + + + Filtered Extended Attributes exported + + + Group + + + Id + + + Include Entity fields (Export) + + + Is Active + + + Key + + + Manage {0} Extended Attributes + + + Manage {0} {1}'s Extended Attributes + + + No Allowed Actions + + + Not Allowed. + + + Only Selected Group (Export) + + + Owner + + + Reload + + + Search For {0} Extended Attributes + + + Striped + + + Type + + + Value + + + you + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.it.resx b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.it.resx new file mode 100644 index 0000000..4fb941f --- /dev/null +++ b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.it.resx @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Azioni + + + All Groups + + + Bordered + + + Crea + + + Cancella + + + Delete Extended Attribute? + + + Dense + + + Descrizione + + + Modifica + + + Entity Id + + + Esporta + + + Extended Attributes exported + + + External Id + + + Filtered Extended Attributes exported + + + Gruppo + + + Id + + + Include Entity fields (Export) + + + Attivo + + + Key + + + Manage {0} Extended Attributes + + + Manage {0} {1}'s Extended Attributes + + + Nessuna azione è consentita + + + Non consentito + + + Solo il gruppo selezionato (Export) + + + Owner + + + Ricarica + + + Search For {0} Extended Attributes + + + Striped + + + Tipo + + + Valore + + + you + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.km.resx b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.km.resx new file mode 100644 index 0000000..a88e072 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.km.resx @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + សកម្មភាព + + + ក្រុមទាំងអស់ + + + ព្រុំព្រទល់ + + + បង្កើត + + + លុប + + + លុបជួរឈរបន្ថែម? + + + បង្រួម + + + ពិពណ៌នា + + + កែប្រែ + + + Entity Id + + + នាំចេញ + + + ជួរឈរបន្ថែមនាំចេញ + + + External Id + + + ច្រោះជួរឈរបន្ថែមនាំចេញ + + + ក្រុម + + + Id + + + Include Entity fields (Export) + + + គឺសកម្ម + + + Key + + + Manage {0} Extended Attributes + + + Manage {0} {1}'s Extended Attributes + + + មិនត្រូវបានអនុញ្ញាត + + + មិនអនុញ្ញាត្ត + + + Only Selected Group (Export) + + + ម្ចាស់ + + + ផ្ទុកឡើងវិញ + + + Search For {0} Extended Attributes + + + Striped + + + ប្រភេទ + + + តម្លៃ + + + you + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.nl.resx b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.nl.resx new file mode 100644 index 0000000..b54e93e --- /dev/null +++ b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.nl.resx @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Acties + + + Alle groepen + + + Grenst aan + + + Aanmaken + + + Verwijderen + + + Uitgebreid kenmerk verwijderen? + + + Dicht + + + Beschrijving + + + Bewerken + + + Entiteits-id + + + Exporteren + + + Geëxporteerde uitgebreide kenmerken + + + Externe id + + + Gefilterde uitgebreide kenmerken geëxporteerd + + + Groep + + + Id + + + Entiteitsvelden opnemen (exporteren) + + + Is actief + + + Sleutel + + + Uitgebreide kenmerken beheren {0} + + + Uitgebreide kenmerken van {0} {1} beheren + + + Geen toegestane acties + + + Niet toegestaan. + + + Alleen geselecteerde groep (exporteren) + + + Eigenaar + + + Herladen + + + Zoeken naar {0} uitgebreide kenmerken + + + Gestreept + + + Type + + + Waarde + + + jij + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.ru.resx b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.ru.resx new file mode 100644 index 0000000..7ec3a74 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.ru.resx @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Действия + + + Все группы + + + Обрамлённый + + + Создать + + + Удалить + + + Удалить расширенный атрибут? + + + Компактный + + + Описание + + + Редактировать + + + Id сущности + + + Экспорт в Excel + + + Расширенные атрибуты экспортированы + + + Внешний Id + + + Отфильтрованные расширенные атрибуты экспортированы + + + Группа + + + Id + + + Включить поля сущности (Экспорт) + + + Активный? + + + Ключ + + + Управление расширенными атрибутами {0} + + + Управление расширенными атрибутами {1} с Id = {0} + + + Нет доступных действий + + + Нет доступа. + + + Только выбранную группу (Экспорт) + + + Владелец + + + Перезагрузить + + + Поиск расширенных атрибутов {0} + + + Чередующийся + + + Тип + + + Значение + + + Вы + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.sv.resx b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.sv.resx new file mode 100644 index 0000000..4270e95 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ExtendedAttributesLocalization.sv.resx @@ -0,0 +1,213 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + All Groups + + + Bordered + + + Create + + + Delete + + + Delete Extended Attribute? + + + Dense + + + Description + + + Edit + + + Entity Id + + + Export + + + Extended Attributes exported + + + External Id + + + Filtered Extended Attributes exported + + + Group + + + Id + + + Include Entity fields (Export) + + + Is Active + + + Key + + + Manage {0} Extended Attributes + + + Manage {0} {1}'s Extended Attributes + + + No Allowed Actions + + + Not Allowed. + + + Only Selected Group (Export) + + + Owner + + + Reload + + + Search For {0} Extended Attributes + + + Striped + + + Type + + + Value + + + you + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ImportExcelModal.ar.resx b/src/Client/Resources/Shared/Components/ImportExcelModal.ar.resx new file mode 100644 index 0000000..23dee1b --- /dev/null +++ b/src/Client/Resources/Shared/Components/ImportExcelModal.ar.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + إلغاء + + + استيراد + + + الرجاء رفع ملف اكسل! + + + رفع + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ImportExcelModal.de.resx b/src/Client/Resources/Shared/Components/ImportExcelModal.de.resx new file mode 100644 index 0000000..fd884a0 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ImportExcelModal.de.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Abbrechen + + + Importieren + + + Bitte lade eine Excel-Datei hoch! + + + Hochladen + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ImportExcelModal.en.resx b/src/Client/Resources/Shared/Components/ImportExcelModal.en.resx new file mode 100644 index 0000000..7d6c332 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ImportExcelModal.en.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cancel + + + Import + + + Please upload excel file! + + + Upload + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ImportExcelModal.es.resx b/src/Client/Resources/Shared/Components/ImportExcelModal.es.resx new file mode 100644 index 0000000..cb3b505 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ImportExcelModal.es.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cancelar + + + Importar + + + Por favor subar el archivo Excel! + + + Subir + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ImportExcelModal.fr.resx b/src/Client/Resources/Shared/Components/ImportExcelModal.fr.resx new file mode 100644 index 0000000..eece67a --- /dev/null +++ b/src/Client/Resources/Shared/Components/ImportExcelModal.fr.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Annuler + + + Importer + + + Merci de téléverser un fichier excel ! + + + Téléverser + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ImportExcelModal.id.resx b/src/Client/Resources/Shared/Components/ImportExcelModal.id.resx new file mode 100644 index 0000000..7d6c332 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ImportExcelModal.id.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cancel + + + Import + + + Please upload excel file! + + + Upload + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ImportExcelModal.it.resx b/src/Client/Resources/Shared/Components/ImportExcelModal.it.resx new file mode 100644 index 0000000..7d6c332 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ImportExcelModal.it.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cancel + + + Import + + + Please upload excel file! + + + Upload + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ImportExcelModal.km.resx b/src/Client/Resources/Shared/Components/ImportExcelModal.km.resx new file mode 100644 index 0000000..7d6c332 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ImportExcelModal.km.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cancel + + + Import + + + Please upload excel file! + + + Upload + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ImportExcelModal.nl.resx b/src/Client/Resources/Shared/Components/ImportExcelModal.nl.resx new file mode 100644 index 0000000..719c7eb --- /dev/null +++ b/src/Client/Resources/Shared/Components/ImportExcelModal.nl.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Annuleren + + + Importeren + + + Upload excel-bestand! + + + Uploaden + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ImportExcelModal.ru.resx b/src/Client/Resources/Shared/Components/ImportExcelModal.ru.resx new file mode 100644 index 0000000..6cbf650 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ImportExcelModal.ru.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Отмена + + + Импорт + + + Пожалуйста, загрузите excel файл! + + + Загрузить + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/ImportExcelModal.sv.resx b/src/Client/Resources/Shared/Components/ImportExcelModal.sv.resx new file mode 100644 index 0000000..7d6c332 --- /dev/null +++ b/src/Client/Resources/Shared/Components/ImportExcelModal.sv.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cancel + + + Import + + + Please upload excel file! + + + Upload + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/LanguageSelector.ar.resx b/src/Client/Resources/Shared/Components/LanguageSelector.ar.resx new file mode 100644 index 0000000..5ab4357 --- /dev/null +++ b/src/Client/Resources/Shared/Components/LanguageSelector.ar.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Dutch - Netherlands + + + English + + + French + + + German + + + Indonesia + + + Italian + + + Khmer + + + Russian + + + Spanish + + + Swedish + + + عربي + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/LanguageSelector.de.resx b/src/Client/Resources/Shared/Components/LanguageSelector.de.resx new file mode 100644 index 0000000..0b8081b --- /dev/null +++ b/src/Client/Resources/Shared/Components/LanguageSelector.de.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Niederländisch - Nederland + + + Englisch - English + + + Französisch - Français + + + Deutsch + + + Indonesisch - bahasa Indonesia + + + Italienisch - Italiano + + + Khmer - ខ្មែរ + + + Russisch - русский + + + Spanisch - Español + + + Schwedisch - Svenska + + + Arabisch - عربي + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/LanguageSelector.en.resx b/src/Client/Resources/Shared/Components/LanguageSelector.en.resx new file mode 100644 index 0000000..5ab4357 --- /dev/null +++ b/src/Client/Resources/Shared/Components/LanguageSelector.en.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Dutch - Netherlands + + + English + + + French + + + German + + + Indonesia + + + Italian + + + Khmer + + + Russian + + + Spanish + + + Swedish + + + عربي + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/LanguageSelector.es.resx b/src/Client/Resources/Shared/Components/LanguageSelector.es.resx new file mode 100644 index 0000000..3c1f165 --- /dev/null +++ b/src/Client/Resources/Shared/Components/LanguageSelector.es.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Holandés - Holanda + + + Inglés + + + Francés + + + Alemán + + + Indonesia + + + Italiano + + + Jemer + + + Ruso + + + Español + + + Sueco + + + عربي + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/LanguageSelector.fr.resx b/src/Client/Resources/Shared/Components/LanguageSelector.fr.resx new file mode 100644 index 0000000..09a7e86 --- /dev/null +++ b/src/Client/Resources/Shared/Components/LanguageSelector.fr.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Dutch - Netherlands + + + Anglais + + + Français + + + Allemand + + + Indonésie + + + Italien + + + Jemer + + + Russe + + + Espanol + + + Suédois + + + عربي + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/LanguageSelector.id.resx b/src/Client/Resources/Shared/Components/LanguageSelector.id.resx new file mode 100644 index 0000000..e728993 --- /dev/null +++ b/src/Client/Resources/Shared/Components/LanguageSelector.id.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Dutch - Netherlands + + + Inggris + + + Perancis + + + Jerman + + + Indonesiano + + + Italia + + + Khmer + + + Rusia + + + Orang Spanyol + + + Orang Swedia + + + عربي + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/LanguageSelector.it.resx b/src/Client/Resources/Shared/Components/LanguageSelector.it.resx new file mode 100644 index 0000000..001bf81 --- /dev/null +++ b/src/Client/Resources/Shared/Components/LanguageSelector.it.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Dutch - Netherlands + + + Inglese + + + Francese + + + Tedesco + + + Indonesiano + + + Italiano + + + Khmer + + + Russo + + + Spagnolo + + + Svedese + + + عربي + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/LanguageSelector.nl.resx b/src/Client/Resources/Shared/Components/LanguageSelector.nl.resx new file mode 100644 index 0000000..5ab4357 --- /dev/null +++ b/src/Client/Resources/Shared/Components/LanguageSelector.nl.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Dutch - Netherlands + + + English + + + French + + + German + + + Indonesia + + + Italian + + + Khmer + + + Russian + + + Spanish + + + Swedish + + + عربي + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Components/LanguageSelector.ru.resx b/src/Client/Resources/Shared/Components/LanguageSelector.ru.resx new file mode 100644 index 0000000..9290d77 --- /dev/null +++ b/src/Client/Resources/Shared/Components/LanguageSelector.ru.resx @@ -0,0 +1,153 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Голландский - Нидерланды + + + Английский + + + Французский + + + Немецкий + + + Индонезия + + + Итальянский + + + Кхмерский + + + Русский + + + Испанский + + + Шведский + + + عربي + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.en.resx b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.en.resx new file mode 100644 index 0000000..ad5c1a2 --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.en.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cancel + + + Confirm + + + Delete Confirmation + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.es.resx b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.es.resx new file mode 100644 index 0000000..83a4d45 --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.es.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cancelar + + + Confirmar + + + Confirmación de borrado + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.fr.resx b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.fr.resx new file mode 100644 index 0000000..8aa2a1a --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.fr.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Annuler + + + Confirmer + + + Confirmation de suppression + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.id.resx b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.id.resx new file mode 100644 index 0000000..33fd900 --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.id.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Batal + + + Konfirmasi + + + Konfirmasi Hapus + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.it.resx b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.it.resx new file mode 100644 index 0000000..a529978 --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.it.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Annulla + + + Conferma + + + Conferma eliminazione + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.km.resx b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.km.resx new file mode 100644 index 0000000..819d5ff --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.km.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + បោះបង់ + + + បញ្ជាក់ + + + បញ្ជាក់លុប + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.nl.resx b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.nl.resx new file mode 100644 index 0000000..d9fdfce --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.nl.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Annuleren + + + Bevestig + + + Verwijder Bevestiging + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.ru.resx b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.ru.resx new file mode 100644 index 0000000..7b147f7 --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.ru.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Отмена + + + Подтвердить + + + Подтвержедние удаления + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.sv.resx b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.sv.resx new file mode 100644 index 0000000..5a9a09f --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/DeleteConfirmation.sv.resx @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Avbryt + + + Bekräfta + + + Radera bekräftelse + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/Logout.en.resx b/src/Client/Resources/Shared/Dialogs/Logout.en.resx new file mode 100644 index 0000000..2bb3110 --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/Logout.en.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cancel + + + Logout Confirmation + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/Logout.es.resx b/src/Client/Resources/Shared/Dialogs/Logout.es.resx new file mode 100644 index 0000000..fa3257a --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/Logout.es.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cancelar + + + Confirmación de Salida + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/Logout.fr.resx b/src/Client/Resources/Shared/Dialogs/Logout.fr.resx new file mode 100644 index 0000000..8cc6a39 --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/Logout.fr.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Annuler + + + Confirmation de déconnexion + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/Logout.id.resx b/src/Client/Resources/Shared/Dialogs/Logout.id.resx new file mode 100644 index 0000000..077f91a --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/Logout.id.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Batal + + + Konfirmasi Keluar + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/Logout.it.resx b/src/Client/Resources/Shared/Dialogs/Logout.it.resx new file mode 100644 index 0000000..d2222c8 --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/Logout.it.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Annulla + + + Conferma Logout + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/Logout.km.resx b/src/Client/Resources/Shared/Dialogs/Logout.km.resx new file mode 100644 index 0000000..8438a5c --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/Logout.km.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + បោះបង់ + + + បញ្ជាក់ពីការចាកចេញពីប្រព័ន្ធ + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/Logout.nl.resx b/src/Client/Resources/Shared/Dialogs/Logout.nl.resx new file mode 100644 index 0000000..01f52ed --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/Logout.nl.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Annuleren + + + Afmeldbevestiging + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/Logout.ru.resx b/src/Client/Resources/Shared/Dialogs/Logout.ru.resx new file mode 100644 index 0000000..68a6131 --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/Logout.ru.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Отмена + + + Подтверждение выхода + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/Dialogs/Logout.sv.resx b/src/Client/Resources/Shared/Dialogs/Logout.sv.resx new file mode 100644 index 0000000..7ad76d8 --- /dev/null +++ b/src/Client/Resources/Shared/Dialogs/Logout.sv.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Avbryt + + + Bekräftelse För Utloggning + + \ No newline at end of file diff --git "a/src/Client/Resources/Shared/Dialogs/\342\200\217\342\200\217DeleteConfirmation.ar.resx" "b/src/Client/Resources/Shared/Dialogs/\342\200\217\342\200\217DeleteConfirmation.ar.resx" new file mode 100644 index 0000000..7172f86 --- /dev/null +++ "b/src/Client/Resources/Shared/Dialogs/\342\200\217\342\200\217DeleteConfirmation.ar.resx" @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + الغاء + + + تأكيد + + + تأكيد الحذف + + \ No newline at end of file diff --git "a/src/Client/Resources/Shared/Dialogs/\342\200\217\342\200\217Logout.ar.resx" "b/src/Client/Resources/Shared/Dialogs/\342\200\217\342\200\217Logout.ar.resx" new file mode 100644 index 0000000..c23d9df --- /dev/null +++ "b/src/Client/Resources/Shared/Dialogs/\342\200\217\342\200\217Logout.ar.resx" @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + الغاء + + + تأكيد الخروج + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/MainLayout.de.resx b/src/Client/Resources/Shared/MainLayout.de.resx new file mode 100644 index 0000000..819ef5a --- /dev/null +++ b/src/Client/Resources/Shared/MainLayout.de.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Konto + + + Kauf mir einen Kaffee! + + + Chat? + + + Community + + + Facebook-Gruppe + + + Facebook-Seite + + + Repository forken + + + Ausloggen + + + Möchtest du dich wirklich ausloggen? + + + MudBlazor-Dokumentation + + + Schnellstartanleitung + + + Token aktualisiert. + + + Ressourcen + + + Support + + + Umschalten zum dunklen Modus + + + Rechts nach Links / Links nach Rechts umschalten + + + Willkommen {0} + + + Du wurdest ausgeloggt, weil die Berechtigungen einer deine Rollen aktualisiert wurden. + + + Du wurdest ausgeloggt, weil der Benutzer mit deinem Token gelöscht wurde. + + + Bis bist ausgeloggt. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/MainLayout.en.resx b/src/Client/Resources/Shared/MainLayout.en.resx new file mode 100644 index 0000000..ef2c7d0 --- /dev/null +++ b/src/Client/Resources/Shared/MainLayout.en.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Account + + + Buy Me A Coffee! + + + Chat? + + + Community + + + Facebook Group + + + Facebook Page + + + Fork Repository + + + Logout + + + Do you really want to Logout? + + + MudBlazor Documentation + + + Quick-Start Guide + + + Refreshed Token. + + + Resources + + + Support + + + Toggle Dark Mode + + + Toggle right-to-left/left-to-right + + + Welcome {0} + + + You are logged out because the Permissions of one of your Roles have been updated. + + + You are logged out because the user with your Token has been deleted. + + + You are Logged Out. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/MainLayout.es.resx b/src/Client/Resources/Shared/MainLayout.es.resx new file mode 100644 index 0000000..79c64e9 --- /dev/null +++ b/src/Client/Resources/Shared/MainLayout.es.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cuenta + + + Buy Me A Coffee! + + + Chat? + + + Comunidad + + + Grupo de Facebook + + + Página de Facebook + + + Salir + + + ¿Realmente quiere salir del sistema? + + + Documentación de MudBlazor + + + Guía de Inicio Rápido + + + Token refrescado. + + + Recursos + + + Soporte + + + Alternar modo oscuro + + + Alternar right-to-left/left-to-right + + + Bienvenido {0} + + + Ha cerrado sesión porque los permisos de su Rol han sido actualizados. + + + Ha cerrado sesión porque el usuario asociado a su Token ha sido borrado. + + + Ha cerrado sesión. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/MainLayout.fr.resx b/src/Client/Resources/Shared/MainLayout.fr.resx new file mode 100644 index 0000000..e3538b8 --- /dev/null +++ b/src/Client/Resources/Shared/MainLayout.fr.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Compte + + + Buy Me A Coffee! + + + Chatter ? + + + Communauté + + + Grouppe Facebook + + + Page Facebook + + + Forker le dépôt + + + Déconnexion + + + Voulez-vous vraiment vous déconnecter ? + + + Documentation MudBlazor + + + Guide de démarrage rapide + + + Jeton raffraîchi + + + Ressources + + + Support + + + Basculer le mode sombre / mode clair + + + Basculer affichage gauche-droite / droite-gauche + + + Bienvenu {0} + + + Vous avez été déconnecté car les permissions de l'un de vos rôles ont été mise à jour. + + + Vous avez été déconnecté car l'utilisateur lié au jeton a été supprimé. + + + Vous êtes déconnecté. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/MainLayout.id.resx b/src/Client/Resources/Shared/MainLayout.id.resx new file mode 100644 index 0000000..33714f0 --- /dev/null +++ b/src/Client/Resources/Shared/MainLayout.id.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Akun + + + Buy Me A Coffee! + + + Chat? + + + Komunitas + + + Grup Facebook + + + Halaman Facebook + + + Fork Repository + + + Keluar + + + Apakah anda yakin ingin Keluar? + + + Dokumentasi MudBlazor + + + Panduan Awal Singkat + + + Refreshed Token. + + + Resources + + + Dukung + + + Toggle Mode Gelap + + + Toggle right-to-left/left-to-right + + + Selamat Datang {0} + + + You are logged out because the Permissions of one of your Roles have been updated. + + + You are logged out because the user with your Token has been deleted. + + + You are Logged Out. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/MainLayout.it.resx b/src/Client/Resources/Shared/MainLayout.it.resx new file mode 100644 index 0000000..5140d04 --- /dev/null +++ b/src/Client/Resources/Shared/MainLayout.it.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Account + + + Buy Me A Coffee! + + + Chat? + + + Community + + + Gruppo Facebook + + + Pagina Facebook + + + Fork Repository + + + Logout + + + Vuoi effettuare il Logout? + + + Documentazione MudBlazor + + + Guida rapida + + + Refreshed Token. + + + Risorse + + + Supporto + + + Attiva la modalità scura + + + Toggle right-to-left/left-to-right + + + Benvenuto {0} + + + You are logged out because the Permissions of one of your Roles have been updated. + + + You are logged out because the user with your Token has been deleted. + + + You are Logged Out. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/MainLayout.km.resx b/src/Client/Resources/Shared/MainLayout.km.resx new file mode 100644 index 0000000..227e366 --- /dev/null +++ b/src/Client/Resources/Shared/MainLayout.km.resx @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + គណនី + + + ទិញកាហ្វេមួយមក! + + + ឆាត? + + + សហគមន៍ + + + ក្រុមហ្វេសប៊ុក + + + ទំព័រហ្វេសប៊ុក + + + ចាកចេញ + + + តើអ្នកពិតជាចង់ចាកចេញមែនទេ? + + + ឯកសារ MudBlazor + + + ម​គ្គុ​ទេស​ក៍​ចាប់​ផ្តើ​ម​រហ័ស + + + Refreshed Token. + + + ធនធាន + + + គាំទ្រ + + + បិទ / បើកស្បែកងងឹត + + + Toggle right-to-left/left-to-right + + + ស្វាគមន៏ {0} + + + អ្នកត្រូវបានចាកចេញពីប្រព័ន្ធព្រោះសិទ្ធិនៃមុខងារបស់អ្នកត្រូវបានធ្វើបច្ចុប្បន្នភាព + + + អ្នកត្រូវបានចាកចេញពីប្រព័ន្ធព្រោះកូដធូឃីនអ្នកត្រូវបានលុប + + + អ្នកត្រូវបានចាកចេញ + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/MainLayout.nl.resx b/src/Client/Resources/Shared/MainLayout.nl.resx new file mode 100644 index 0000000..9cbbf9e --- /dev/null +++ b/src/Client/Resources/Shared/MainLayout.nl.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Account + + + Koop me een koffie! + + + Chatten? + + + Community + + + Facebook Groep + + + Facebook Pagina + + + Fork Repository + + + Uitloggen + + + Wil je echt uitloggen? + + + MudBlazor Documentation + + + Snelstartgids + + + Vernieuwd Token. + + + Bronnen + + + Ondersteuning + + + Donkere Modus Schakelen + + + Wissel van rechts naar links/links naar rechts + + + Welkom {0} + + + U bent uitgelogd omdat de machtigingen van een van uw rollen zijn bijgewerkt. + + + U bent uitgelogd omdat de gebruiker met uw Token is verwijderd. + + + U bent uitgelogd. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/MainLayout.ru.resx b/src/Client/Resources/Shared/MainLayout.ru.resx new file mode 100644 index 0000000..1fee9c5 --- /dev/null +++ b/src/Client/Resources/Shared/MainLayout.ru.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Аккаунт + + + Купить мне кофе! + + + К чату? + + + Сообщество + + + Группа Facebook + + + Страница Facebook + + + Репозиторий + + + Выйти + + + Подтверждение выхода + + + Документация MudBlazor + + + Краткое руководство пользователя + + + Токен обновлён. + + + Ресурсы + + + Поддержка + + + Переключить Тёмный режим + + + Переключить справа-на-лево/слева-на-право + + + Добро пожаловать {0} + + + Вы вышли из системы, потому что были обновлены разрешения одной из ваших ролей. + + + Вы вышли из системы, потому что пользователь с вашим токеном был удален. + + + Вы вышли из системы. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/MainLayout.sv.resx b/src/Client/Resources/Shared/MainLayout.sv.resx new file mode 100644 index 0000000..d66bc71 --- /dev/null +++ b/src/Client/Resources/Shared/MainLayout.sv.resx @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Konto + + + Buy Me A Coffee! + + + Chat? + + + Community + + + Facebook Grupp + + + Facebook Sida + + + Fork Repository + + + Logga ut + + + Vill du verkligen logga ut? + + + MudBlazor Dokumentation + + + Snabbstart Guide + + + Refreshed Token. + + + Resurser + + + Support + + + Växla Mörktläge + + + Toggle right-to-left/left-to-right + + + Välkommen {0} + + + You are logged out because the Permissions of one of your Roles have been updated. + + + You are logged out because the user with your Token has been deleted. + + + You are Logged Out. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NavMenu.de.resx b/src/Client/Resources/Shared/NavMenu.de.resx new file mode 100644 index 0000000..8bd8b09 --- /dev/null +++ b/src/Client/Resources/Shared/NavMenu.de.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Konto + + + Administrator + + + Marken + + + Katalog + + + Chat + + + Kommunikation + + + Dashboard + + + Dokumentenverwaltung + + + Dokumentenspeicher + + + Documenttypen + + + FAQs + + + Merkmale + + + Start + + + Protokolle + + + E-Mail + + + Persönlich + + + Produkte + + + Schnellstartanleitung + + + Ressourcen + + + Rollen + + + Swagger + + + Benutzer + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NavMenu.en.resx b/src/Client/Resources/Shared/NavMenu.en.resx new file mode 100644 index 0000000..61adb32 --- /dev/null +++ b/src/Client/Resources/Shared/NavMenu.en.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Account + + + Administrator + + + Brands + + + Catalog + + + Chat + + + Communication + + + Dashboard + + + Document Management + + + Document Store + + + Document Types + + + FAQs + + + Features + + + Home + + + Logs + + + Mail + + + Personal + + + Products + + + Quick Start Guide + + + Resources + + + Roles + + + Swagger + + + Users + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NavMenu.es.resx b/src/Client/Resources/Shared/NavMenu.es.resx new file mode 100644 index 0000000..6bfbf6e --- /dev/null +++ b/src/Client/Resources/Shared/NavMenu.es.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Cuenta + + + Administrador + + + Auditoría + + + Marcas + + + Gestión de catálogo + + + Chat + + + Comunicaciones + + + Panel de Control + + + Administración de Documentos + + + Almacén de Documentos + + + Tipos de Documentos + + + FAQs + + + Características + + + Inicio + + + Mail + + + Personal + + + Productos + + + Guía de Inicio Rápido + + + Recursos + + + Roles + + + Swagger + + + Usuarios + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NavMenu.fr.resx b/src/Client/Resources/Shared/NavMenu.fr.resx new file mode 100644 index 0000000..b888549 --- /dev/null +++ b/src/Client/Resources/Shared/NavMenu.fr.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Compte + + + Administrateur + + + Pistes d'audit + + + Marques + + + Gestion du catalogue + + + Conversations + + + Communication + + + Tableau de bord + + + Gestion des documents + + + Stockage des documents + + + Types de documents + + + FAQ + + + Fonctionnalités + + + Accueil + + + Courriel + + + Renseignements personnels + + + Produits + + + Guide de démarrage rapide + + + Ressources + + + Rôles + + + Swagger + + + Utilisateurs + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NavMenu.id.resx b/src/Client/Resources/Shared/NavMenu.id.resx new file mode 100644 index 0000000..5240880 --- /dev/null +++ b/src/Client/Resources/Shared/NavMenu.id.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Akun + + + Administrator + + + Audit Trails + + + Merek + + + Manajemen Katalog + + + Obrolan + + + Komunikasi + + + Dasbor + + + Document Management + + + Document Store + + + Document Types + + + FAQs + + + Fitur + + + Beranda + + + Mail + + + Personal + + + Produk + + + Panduan Awal Singkat + + + Resources + + + Wewenang + + + Swagger + + + Pengguna + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NavMenu.it.resx b/src/Client/Resources/Shared/NavMenu.it.resx new file mode 100644 index 0000000..371cd91 --- /dev/null +++ b/src/Client/Resources/Shared/NavMenu.it.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Account + + + Amministratore + + + Marche + + + Gestione catalogo + + + Chat + + + Comunicazione + + + Dashboard + + + Document Management + + + Archivio documenti + + + Document Types + + + FAQs + + + Caratteristiche + + + Home + + + Registro Attività + + + Mail + + + Personale + + + Prodotti + + + Guida rapida + + + Risorse + + + Ruoli + + + Swagger + + + Utenti + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NavMenu.km.resx b/src/Client/Resources/Shared/NavMenu.km.resx new file mode 100644 index 0000000..01df5e7 --- /dev/null +++ b/src/Client/Resources/Shared/NavMenu.km.resx @@ -0,0 +1,165 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + គណនី + + + រដ្ឋបាល + + + ផលិតផល + + + គ្រប់គ្រងកាតាឡុក + + + ទំនាក់ទំនង + + + ការគ្រប់គ្រងឯកសារ + + + ប្រភេទឯកសារ + + + កម្រងសំណួរចម្លើយ + + + មុខងារ + + + ទំព័រដើម + + + ឯកជន + + + ផលិតផល + + + ធនធាន + + + សិទ្ធិប្រើប្រាស់ + + + អ្នកប្រើប្រាស់ + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NavMenu.nl.resx b/src/Client/Resources/Shared/NavMenu.nl.resx new file mode 100644 index 0000000..30d1ce8 --- /dev/null +++ b/src/Client/Resources/Shared/NavMenu.nl.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Account + + + Administrator + + + Audit Trails + + + Merken + + + Catalogusbeheer + + + Chat + + + Communicatie + + + Dashboard + + + Documentbeheer + + + Documentopslag + + + Documenttypen + + + FAQs + + + Functies + + + Hoofdscherm + + + Mail + + + Persoonlijk + + + Producten + + + Snelstartgids + + + Bronnen + + + Rollen + + + Swagger + + + Gebruikers + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NavMenu.ru.resx b/src/Client/Resources/Shared/NavMenu.ru.resx new file mode 100644 index 0000000..253d25a --- /dev/null +++ b/src/Client/Resources/Shared/NavMenu.ru.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Аккаунт + + + Администрирование + + + Журналы аудита + + + Бренды + + + Управление каталогом + + + Чат + + + Коммуникации + + + Dashboard + + + Управление документами + + + Хранилище документов + + + Типы документов + + + FAQ + + + Функции + + + Домашняя + + + Почта + + + Персональные данные + + + Продукты + + + Краткое руководство пользователя + + + Ресурсы + + + Роли + + + Swagger + + + Пользователи + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NavMenu.sv.resx b/src/Client/Resources/Shared/NavMenu.sv.resx new file mode 100644 index 0000000..d85fdd1 --- /dev/null +++ b/src/Client/Resources/Shared/NavMenu.sv.resx @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Konto + + + Administratör + + + Audit Trails + + + Märken + + + Kataloghantering + + + Chatt + + + Kommunikation + + + Översikt + + + Document Management + + + Dokumentlagring + + + Document Types + + + FAQs + + + Funktioner + + + Hem + + + Mail + + + Personal + + + Produkter + + + Snabbstart Guide + + + Resurser + + + Roler + + + Swagger + + + Användare + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NotFoundLayout.de.resx b/src/Client/Resources/Shared/NotFoundLayout.de.resx new file mode 100644 index 0000000..15b332f --- /dev/null +++ b/src/Client/Resources/Shared/NotFoundLayout.de.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Zur Startseite gehen! + + + Die gesuchte Seite existiert nicht! + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NotFoundLayout.en.resx b/src/Client/Resources/Shared/NotFoundLayout.en.resx new file mode 100644 index 0000000..3b95741 --- /dev/null +++ b/src/Client/Resources/Shared/NotFoundLayout.en.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Go Home! + + + The page you were looking for doesn't exist. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NotFoundLayout.es.resx b/src/Client/Resources/Shared/NotFoundLayout.es.resx new file mode 100644 index 0000000..8cda145 --- /dev/null +++ b/src/Client/Resources/Shared/NotFoundLayout.es.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ir a Inicio! + + + La página que busca no existe + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NotFoundLayout.fr.resx b/src/Client/Resources/Shared/NotFoundLayout.fr.resx new file mode 100644 index 0000000..c0d6d60 --- /dev/null +++ b/src/Client/Resources/Shared/NotFoundLayout.fr.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Revenir à l'accueil + + + La page que vous recherchez n'existe pas. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NotFoundLayout.id.resx b/src/Client/Resources/Shared/NotFoundLayout.id.resx new file mode 100644 index 0000000..1b922b7 --- /dev/null +++ b/src/Client/Resources/Shared/NotFoundLayout.id.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Kembali ke Beranda! + + + Halaman yang anda tuju tidak tersedia. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NotFoundLayout.it.resx b/src/Client/Resources/Shared/NotFoundLayout.it.resx new file mode 100644 index 0000000..5f231c6 --- /dev/null +++ b/src/Client/Resources/Shared/NotFoundLayout.it.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Vai alla Home! + + + La pagina che stavi cercando non esiste. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NotFoundLayout.km.resx b/src/Client/Resources/Shared/NotFoundLayout.km.resx new file mode 100644 index 0000000..b6c6f4b --- /dev/null +++ b/src/Client/Resources/Shared/NotFoundLayout.km.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ទៅទំព័រដើម! + + + ទំព័រដែលអ្នកមកកាន់នេះគឺពុំមានទេ! + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NotFoundLayout.nl.resx b/src/Client/Resources/Shared/NotFoundLayout.nl.resx new file mode 100644 index 0000000..39ea8d9 --- /dev/null +++ b/src/Client/Resources/Shared/NotFoundLayout.nl.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Ga naar hoofdpagina + + + De pagina die u zocht bestaat niet + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NotFoundLayout.ru.resx b/src/Client/Resources/Shared/NotFoundLayout.ru.resx new file mode 100644 index 0000000..506a4d9 --- /dev/null +++ b/src/Client/Resources/Shared/NotFoundLayout.ru.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + На домашнюю страницу! + + + Страница, которую вы искали, не существует. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/NotFoundLayout.sv.resx b/src/Client/Resources/Shared/NotFoundLayout.sv.resx new file mode 100644 index 0000000..e49cb97 --- /dev/null +++ b/src/Client/Resources/Shared/NotFoundLayout.sv.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Till Start! + + + Sidan du letar efter finns inte. + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/SharedResource.de.resx b/src/Client/Resources/Shared/SharedResource.de.resx new file mode 100644 index 0000000..c6de4f5 --- /dev/null +++ b/src/Client/Resources/Shared/SharedResource.de.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Aktionen + + + Fortgeschrittene Suche + + + Marke + + + Abbrechen + + + Erstellen + + + Bearbeiten + + + Produkt + + + Produkte + + + Neu laden + + + Suche nach + + + Aktualisieren + + + Benutzer + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/SharedResource.en.resx b/src/Client/Resources/Shared/SharedResource.en.resx new file mode 100644 index 0000000..4ced943 --- /dev/null +++ b/src/Client/Resources/Shared/SharedResource.en.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Actions + + + Advanced Search + + + Brand + + + Cancel + + + Create + + + Edit + + + Product + + + Products + + + Reload + + + Search for + + + Update + + + User + + \ No newline at end of file diff --git a/src/Client/Resources/Shared/SharedResource.it.resx b/src/Client/Resources/Shared/SharedResource.it.resx new file mode 100644 index 0000000..310e16e --- /dev/null +++ b/src/Client/Resources/Shared/SharedResource.it.resx @@ -0,0 +1,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + Azioni + + + Ricerca avanzata + + + Marchio + + + Annulla + + + Crea + + + Modifica + + + Prodotto + + + Prodotti + + + Ricarica + + + Ricerca per + + + Aggiorna + + + Utente + + \ No newline at end of file diff --git "a/src/Client/Resources/Shared/\342\200\217\342\200\217MainLayout.ar.resx" "b/src/Client/Resources/Shared/\342\200\217\342\200\217MainLayout.ar.resx" new file mode 100644 index 0000000..55bb1c9 --- /dev/null +++ "b/src/Client/Resources/Shared/\342\200\217\342\200\217MainLayout.ar.resx" @@ -0,0 +1,180 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + الحساب + + + اشتري لي قهوة! + + + دردشة؟ + + + تواصل اجتماعي + + + مجموعة الفيسبوك + + + صفحة الفيسبوك + + + نسخ الشوكة + + + تسجيل خروج + + + هل تريد حقًا تسجيل الخروج؟ + + + توثيق MudBlazor + + + دليل البدء السريع + + + Rرمز محدث. + + + الموارد + + + الدعم + + + تبديل الوضع الداكن + + + التبديل من اليمين إلى اليسار / من اليسار إلى اليمين + + + مرحبًا {0} + + + لقد تم تسجيل خروجك لأنه تم تحديث أذونات أحد الأدوار الخاصة بك. + + + لقد تم تسجيل خروجك لأنه تم حذف المستخدم الذي يحمل الرمز المميز الخاص بك. + + + لقد قمت بتسجيل الخروج. + + \ No newline at end of file diff --git "a/src/Client/Resources/Shared/\342\200\217\342\200\217NavMenu.ar.resx" "b/src/Client/Resources/Shared/\342\200\217\342\200\217NavMenu.ar.resx" new file mode 100644 index 0000000..50ba92e --- /dev/null +++ "b/src/Client/Resources/Shared/\342\200\217\342\200\217NavMenu.ar.resx" @@ -0,0 +1,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + الحساب + + + الإدارة + + + مسارات المراجعة + + + العلامات التجارية + + + إدارة الكتالوج + + + الدردشة + + + التواصل + + + لوحة الإدارة + + + إدارة المستندات + + + مخزن المستندات + + + أنواع المستندات + + + أسئلة وأجوبة + + + سمات + + + الصفحة الرئيسية + + + بريد + + + شخصي + + + المنتجات + + + دليل البدء السريع + + + الموارد + + + الأدوار + + + Swagger + + + المستخدمون + + \ No newline at end of file diff --git "a/src/Client/Resources/Shared/\342\200\217\342\200\217NotFoundLayout.ar.resx" "b/src/Client/Resources/Shared/\342\200\217\342\200\217NotFoundLayout.ar.resx" new file mode 100644 index 0000000..fa752e5 --- /dev/null +++ "b/src/Client/Resources/Shared/\342\200\217\342\200\217NotFoundLayout.ar.resx" @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + الذهاب للرئيسية! + + + الصفحة التي تبحث عنها غير موجودة. + + \ No newline at end of file diff --git a/src/Client/Shared/ApiHelper.cs b/src/Client/Shared/ApiHelper.cs new file mode 100644 index 0000000..8f82b78 --- /dev/null +++ b/src/Client/Shared/ApiHelper.cs @@ -0,0 +1,86 @@ +using RewardsPlus.BlazorWebAssembly.Client.Components.Common; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Shared; + +public static class ApiHelper +{ + public static async Task ExecuteCallGuardedAsync( + Func> call, + ISnackbar snackbar, + CustomValidation? customValidation = null, + string? successMessage = null) + { + customValidation?.ClearErrors(); + try + { + var result = await call(); + + if (!string.IsNullOrWhiteSpace(successMessage)) + { + snackbar.Add(successMessage, Severity.Info); + } + + return result; + } + catch (ApiException ex) + { + if (ex.Result.Errors is not null) + { + customValidation?.DisplayErrors(ex.Result.Errors); + } + else + { + snackbar.Add("Something went wrong!", Severity.Error); + } + } + catch (ApiException ex) + { + snackbar.Add(ex.Result.Exception, Severity.Error); + } + catch (Exception ex) + { + snackbar.Add(ex.Message, Severity.Error); + } + + return default; + } + + public static async Task ExecuteCallGuardedAsync( + Func call, + ISnackbar snackbar, + CustomValidation? customValidation = null, + string? successMessage = null) + { + customValidation?.ClearErrors(); + try + { + await call(); + + if (!string.IsNullOrWhiteSpace(successMessage)) + { + snackbar.Add(successMessage, Severity.Success); + } + + return true; + } + catch (ApiException ex) + { + if (ex.Result.Errors is not null) + { + customValidation?.DisplayErrors(ex.Result.Errors); + } + else + { + snackbar.Add("Something went wrong!", Severity.Error); + } + } + catch (ApiException ex) + { + snackbar.Add(ex.Result.Exception, Severity.Error); + } + + return false; + } +} \ No newline at end of file diff --git a/src/Client/Shared/BaseLayout.razor b/src/Client/Shared/BaseLayout.razor new file mode 100644 index 0000000..9eaabaa --- /dev/null +++ b/src/Client/Shared/BaseLayout.razor @@ -0,0 +1,33 @@ +@inherits LayoutComponentBase + + + + + + + + + + + + + + @Body + + + + + + + + + + @Body + + + + + + \ No newline at end of file diff --git a/src/Client/Shared/BaseLayout.razor.cs b/src/Client/Shared/BaseLayout.razor.cs new file mode 100644 index 0000000..0bb3d81 --- /dev/null +++ b/src/Client/Shared/BaseLayout.razor.cs @@ -0,0 +1,49 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Theme; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Shared; + +public partial class BaseLayout +{ + private ClientPreference? _themePreference; + private MudTheme _currentTheme = new LightTheme(); + private bool _themeDrawerOpen; + private bool _rightToLeft; + + protected override async Task OnInitializedAsync() + { + _themePreference = await ClientPreferences.GetPreference() as ClientPreference; + if (_themePreference == null) _themePreference = new ClientPreference(); + SetCurrentTheme(_themePreference); + + Snackbar.Add("Like this boilerplate? ", Severity.Normal, config => + { + config.BackgroundBlurred = true; + config.Icon = Icons.Custom.Brands.GitHub; + config.Action = "Star us on Github!"; + config.ActionColor = Color.Primary; + config.Onclick = snackbar => + { + Navigation.NavigateTo("https://github.com/fullstackhero/blazor-wasm-boilerplate"); + return Task.CompletedTask; + }; + }); + } + + private async Task ThemePreferenceChanged(ClientPreference themePreference) + { + SetCurrentTheme(themePreference); + await ClientPreferences.SetPreference(themePreference); + } + + private void SetCurrentTheme(ClientPreference themePreference) + { + _currentTheme = themePreference.IsDarkMode ? new DarkTheme() : new LightTheme(); + _currentTheme.Palette.Primary = themePreference.PrimaryColor; + _currentTheme.Palette.Secondary = themePreference.SecondaryColor; + _currentTheme.LayoutProperties.DefaultBorderRadius = $"{themePreference.BorderRadius}px"; + _currentTheme.LayoutProperties.DefaultBorderRadius = $"{themePreference.BorderRadius}px"; + _rightToLeft = themePreference.IsRTL; + } +} \ No newline at end of file diff --git a/src/Client/Shared/DialogServiceExtensions.cs b/src/Client/Shared/DialogServiceExtensions.cs new file mode 100644 index 0000000..ccd6dd2 --- /dev/null +++ b/src/Client/Shared/DialogServiceExtensions.cs @@ -0,0 +1,19 @@ +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Shared; + +public static class DialogServiceExtensions +{ + public static Task ShowModalAsync(this IDialogService dialogService, DialogParameters parameters) + where TDialog : ComponentBase => + dialogService.ShowModal(parameters).Result; + + public static IDialogReference ShowModal(this IDialogService dialogService, DialogParameters parameters) + where TDialog : ComponentBase + { + var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.Medium, FullWidth = true, DisableBackdropClick = true }; + + return dialogService.Show(string.Empty, parameters, options); + } +} \ No newline at end of file diff --git a/src/Client/Shared/MainLayout.razor b/src/Client/Shared/MainLayout.razor new file mode 100644 index 0000000..085f12f --- /dev/null +++ b/src/Client/Shared/MainLayout.razor @@ -0,0 +1,107 @@ +@inject IStringLocalizer L + + + + + + + @L["RewardsPlus"] + + + + @L["Sponsor"] + + + + @L["Community"] + @L["Discord"] + @L["Facebook"] + + LinkedIn + Buy Me a Coffee! + + Open Collective + + @L["Resources"] + @L["Documentation"] + + + + + + + + + + + + + + +
+ + +
+ @L["Community"] + @L["Discord"] + @L["Facebook"] + + LinkedIn + @L["Resources"] + + @L["MudBlazor Documentation"] + + @L["Quick-Start Guide"] +
+ +
+ + + + + +
+ + +
+ + @L["Account"] +
+
+ +
+ + @L["Dashboard"] +
+
+
+ + Logout + +
+
+
+
+
+ + + + + + + + @ChildContent + + + + + \ No newline at end of file diff --git a/src/Client/Shared/MainLayout.razor.cs b/src/Client/Shared/MainLayout.razor.cs new file mode 100644 index 0000000..8eae587 --- /dev/null +++ b/src/Client/Shared/MainLayout.razor.cs @@ -0,0 +1,63 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences; +using Microsoft.AspNetCore.Components; +using MudBlazor; + +namespace RewardsPlus.BlazorWebAssembly.Client.Shared; + +public partial class MainLayout +{ + [Parameter] + public RenderFragment ChildContent { get; set; } = default!; + [Parameter] + public EventCallback OnDarkModeToggle { get; set; } + [Parameter] + public EventCallback OnRightToLeftToggle { get; set; } + + private bool _drawerOpen; + private bool _rightToLeft; + + protected override async Task OnInitializedAsync() + { + if (await ClientPreferences.GetPreference() is ClientPreference preference) + { + _rightToLeft = preference.IsRTL; + _drawerOpen = preference.IsDrawerOpen; + } + } + + private async Task RightToLeftToggle() + { + bool isRtl = await ClientPreferences.ToggleLayoutDirectionAsync(); + _rightToLeft = isRtl; + + await OnRightToLeftToggle.InvokeAsync(isRtl); + } + + public async Task ToggleDarkMode() + { + await OnDarkModeToggle.InvokeAsync(); + } + + private async Task DrawerToggle() + { + _drawerOpen = await ClientPreferences.ToggleDrawerAsync(); + } + + private void Logout() + { + var parameters = new DialogParameters + { + { nameof(Dialogs.Logout.ContentText), $"{L["Logout Confirmation"]}"}, + { nameof(Dialogs.Logout.ButtonText), $"{L["Logout"]}"}, + { nameof(Dialogs.Logout.Color), Color.Error} + }; + + var options = new DialogOptions { CloseButton = true, MaxWidth = MaxWidth.Small, FullWidth = true }; + DialogService.Show(L["Logout"], parameters, options); + } + + private void Profile() + { + Navigation.NavigateTo("/account"); + } +} \ No newline at end of file diff --git a/src/Client/Shared/NavMenu.razor b/src/Client/Shared/NavMenu.razor new file mode 100644 index 0000000..9ccb1ba --- /dev/null +++ b/src/Client/Shared/NavMenu.razor @@ -0,0 +1,55 @@ +@inject IStringLocalizer L + + + + @L["Start"] + @L["Home"] + @L["Getting Started"] + @if (_canViewHangfire) + { + @L["Hangfire"] + } + @L["Personal"] + @if (_canViewDashboard) + { + @L["Dashboard"] + } + @L["Account"] + @L["Logs"] + @if (_canViewProducts || _canViewBrands) + { + @L["Management"] + + @if (_canViewProducts) + { + + @L["Products"] + + } + @if (_canViewBrands) + { + + @L["Brands"] + + } + + } + @if (CanViewAdministrationGroup) + { + @L["Administration"] + @if (_canViewUsers) + { + @L["Users"] + } + @if (_canViewRoles) + { + @L["Roles"] + } + @if(_canViewTenants) + { + @L["Tenants"] + } + } + \ No newline at end of file diff --git a/src/Client/Shared/NavMenu.razor.cs b/src/Client/Shared/NavMenu.razor.cs new file mode 100644 index 0000000..1329692 --- /dev/null +++ b/src/Client/Shared/NavMenu.razor.cs @@ -0,0 +1,39 @@ +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth; +using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common; +using RewardsPlus.WebApi.Shared.Authorization; +using Microsoft.AspNetCore.Authorization; +using Microsoft.AspNetCore.Components; +using Microsoft.AspNetCore.Components.Authorization; + +namespace RewardsPlus.BlazorWebAssembly.Client.Shared; + +public partial class NavMenu +{ + [CascadingParameter] + protected Task AuthState { get; set; } = default!; + [Inject] + protected IAuthorizationService AuthService { get; set; } = default!; + + private string? _hangfireUrl; + private bool _canViewHangfire; + private bool _canViewDashboard; + private bool _canViewRoles; + private bool _canViewUsers; + private bool _canViewProducts; + private bool _canViewBrands; + private bool _canViewTenants; + private bool CanViewAdministrationGroup => _canViewUsers || _canViewRoles || _canViewTenants; + + protected override async Task OnParametersSetAsync() + { + _hangfireUrl = Config[ConfigNames.ApiBaseUrl] + "jobs"; + var user = (await AuthState).User; + _canViewHangfire = await AuthService.HasPermissionAsync(user, FSHAction.View, FSHResource.Hangfire); + _canViewDashboard = await AuthService.HasPermissionAsync(user, FSHAction.View, FSHResource.Dashboard); + _canViewRoles = await AuthService.HasPermissionAsync(user, FSHAction.View, FSHResource.Roles); + _canViewUsers = await AuthService.HasPermissionAsync(user, FSHAction.View, FSHResource.Users); + _canViewProducts = await AuthService.HasPermissionAsync(user, FSHAction.View, FSHResource.Products); + _canViewBrands = await AuthService.HasPermissionAsync(user, FSHAction.View, FSHResource.Brands); + _canViewTenants = await AuthService.HasPermissionAsync(user, FSHAction.View, FSHResource.Tenants); + } +} \ No newline at end of file diff --git a/src/Client/Shared/NotFound.razor b/src/Client/Shared/NotFound.razor new file mode 100644 index 0000000..98c36fd --- /dev/null +++ b/src/Client/Shared/NotFound.razor @@ -0,0 +1,56 @@ +@using Infrastructure.Theme +@inherits LayoutComponentBase + + + + +
+ + + + + + + + + + + + + + + + + Not Found + +
+ Go Home +
+
+
+
+ +@code { + private MudTheme _currentTheme = new LightTheme(); + + protected override async Task OnInitializedAsync() + { + _currentTheme = new LightTheme(); + _currentTheme = await ClientPreferences.GetCurrentThemeAsync(); + } +} \ No newline at end of file diff --git a/src/Client/Shared/SharedResource.cs b/src/Client/Shared/SharedResource.cs new file mode 100644 index 0000000..6bca88c --- /dev/null +++ b/src/Client/Shared/SharedResource.cs @@ -0,0 +1,5 @@ +namespace RewardsPlus.BlazorWebAssembly.Client.Shared; + +public class SharedResource +{ +} diff --git a/src/Client/_Imports.razor b/src/Client/_Imports.razor new file mode 100644 index 0000000..da539ad --- /dev/null +++ b/src/Client/_Imports.razor @@ -0,0 +1,42 @@ +@using System.Security.Claims +@using Microsoft.AspNetCore.Authorization +@using Microsoft.AspNetCore.Components +@using Microsoft.AspNetCore.Components.Authorization +@using Microsoft.AspNetCore.Components.Forms +@using Microsoft.AspNetCore.Components.Routing +@using Microsoft.AspNetCore.Components.Web +@using Microsoft.AspNetCore.Components.Web.Virtualization +@using Microsoft.AspNetCore.Components.WebAssembly.Authentication +@using Microsoft.AspNetCore.Components.WebAssembly.Http +@using Microsoft.AspNetCore.WebUtilities +@using Microsoft.Extensions.Configuration +@using Microsoft.Extensions.DependencyInjection +@using Microsoft.Extensions.Localization +@using Microsoft.JSInterop +@using RewardsPlus.BlazorWebAssembly.Client +@using RewardsPlus.BlazorWebAssembly.Client.Shared +@using RewardsPlus.BlazorWebAssembly.Client.Pages.Authentication +@using RewardsPlus.BlazorWebAssembly.Client.Pages.Multitenancy +@using RewardsPlus.BlazorWebAssembly.Client.Components.Common +@using RewardsPlus.BlazorWebAssembly.Client.Components.EntityTable +@using RewardsPlus.BlazorWebAssembly.Client.Components.Localization +@using RewardsPlus.BlazorWebAssembly.Client.Components.Notifications +@using RewardsPlus.BlazorWebAssembly.Client.Components.ThemeManager +@using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.ApiClient +@using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Auth +@using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Common +@using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Notifications +@using RewardsPlus.BlazorWebAssembly.Client.Infrastructure.Preferences +@using RewardsPlus.WebApi.Shared.Authorization +@using Blazored.LocalStorage +@using Mapster +@using MediatR.Courier +@using MudBlazor + +@attribute [Authorize] + +@inject NavigationManager Navigation +@inject ISnackbar Snackbar +@inject IDialogService DialogService +@inject IConfiguration Config +@inject IClientPreferenceManager ClientPreferences \ No newline at end of file diff --git a/appsettings.Development.json b/src/Client/wwwroot/appsettings.Development.json similarity index 100% rename from appsettings.Development.json rename to src/Client/wwwroot/appsettings.Development.json diff --git a/appsettings.json b/src/Client/wwwroot/appsettings.json similarity index 100% rename from appsettings.json rename to src/Client/wwwroot/appsettings.json diff --git a/css/fsh.css b/src/Client/wwwroot/css/fsh.css similarity index 100% rename from css/fsh.css rename to src/Client/wwwroot/css/fsh.css diff --git a/favicon.ico b/src/Client/wwwroot/favicon.ico similarity index 100% rename from favicon.ico rename to src/Client/wwwroot/favicon.ico diff --git a/index.html b/src/Client/wwwroot/index.html similarity index 98% rename from index.html rename to src/Client/wwwroot/index.html index 4e0cb04..5ca6c95 100644 --- a/index.html +++ b/src/Client/wwwroot/index.html @@ -5,7 +5,7 @@ Blazor WebAssembly Boilerplate - + diff --git a/manifest.json b/src/Client/wwwroot/manifest.json similarity index 100% rename from manifest.json rename to src/Client/wwwroot/manifest.json diff --git a/rp-logo.png b/src/Client/wwwroot/rp-logo.png similarity index 100% rename from rp-logo.png rename to src/Client/wwwroot/rp-logo.png diff --git a/src/Client/wwwroot/service-worker.js b/src/Client/wwwroot/service-worker.js new file mode 100644 index 0000000..0c4fa6b --- /dev/null +++ b/src/Client/wwwroot/service-worker.js @@ -0,0 +1,4 @@ +// In development, always fetch from the network and do not enable offline support. +// This is because caching would make development more difficult (changes would not +// be reflected on the first load after each change). +self.addEventListener('fetch', () => { }); \ No newline at end of file diff --git a/src/Client/wwwroot/service-worker.published.js b/src/Client/wwwroot/service-worker.published.js new file mode 100644 index 0000000..a88a6e9 --- /dev/null +++ b/src/Client/wwwroot/service-worker.published.js @@ -0,0 +1,48 @@ +// Caution! Be sure you understand the caveats before publishing an application with +// offline support. See https://aka.ms/blazor-offline-considerations + +self.importScripts('./service-worker-assets.js'); +self.addEventListener('install', event => event.waitUntil(onInstall(event))); +self.addEventListener('activate', event => event.waitUntil(onActivate(event))); +self.addEventListener('fetch', event => event.respondWith(onFetch(event))); + +const cacheNamePrefix = 'offline-cache-'; +const cacheName = `${cacheNamePrefix}${self.assetsManifest.version}`; +const offlineAssetsInclude = [/\.dll$/, /\.pdb$/, /\.wasm/, /\.html/, /\.js$/, /\.json$/, /\.css$/, /\.woff$/, /\.png$/, /\.jpe?g$/, /\.gif$/, /\.ico$/, /\.blat$/, /\.dat$/]; +const offlineAssetsExclude = [/^service-worker\.js$/]; + +async function onInstall(event) { + console.info('Service worker: Install'); + + // Fetch and cache all matching items from the assets manifest + const assetsRequests = self.assetsManifest.assets + .filter(asset => offlineAssetsInclude.some(pattern => pattern.test(asset.url))) + .filter(asset => !offlineAssetsExclude.some(pattern => pattern.test(asset.url))) + .map(asset => new Request(asset.url, { integrity: asset.hash, cache: 'no-cache' })); + await caches.open(cacheName).then(cache => cache.addAll(assetsRequests)); +} + +async function onActivate(event) { + console.info('Service worker: Activate'); + + // Delete unused caches + const cacheKeys = await caches.keys(); + await Promise.all(cacheKeys + .filter(key => key.startsWith(cacheNamePrefix) && key !== cacheName) + .map(key => caches.delete(key))); +} + +async function onFetch(event) { + let cachedResponse = null; + if (event.request.method === 'GET') { + // For all navigation requests, try to serve index.html from cache + // If you need some URLs to be server-rendered, edit the following check to exclude those URLs + const shouldServeIndexHtml = event.request.mode === 'navigate'; + + const request = shouldServeIndexHtml ? 'index.html' : event.request; + const cache = await caches.open(cacheName); + cachedResponse = await cache.match(request); + } + + return cachedResponse || fetch(event.request); +} \ No newline at end of file diff --git a/src/Host/Host.csproj b/src/Host/Host.csproj new file mode 100644 index 0000000..62ea2da --- /dev/null +++ b/src/Host/Host.csproj @@ -0,0 +1,24 @@ + + + + net6.0 + RewardsPlus.BlazorWebAssembly.Host + RewardsPlus.BlazorWebAssembly.Host + + + + + + + + + + + + + + Always + + + + \ No newline at end of file diff --git a/src/Host/Pages/Error.cshtml b/src/Host/Pages/Error.cshtml new file mode 100644 index 0000000..9257435 --- /dev/null +++ b/src/Host/Pages/Error.cshtml @@ -0,0 +1,44 @@ +@page +@model RewardsPlus.BlazorWebAssembly.Server.Pages.ErrorModel + + + + + + + + Error + + + + + +
+
+

Error.

+

An error occurred while processing your request.

+ + @if (Model.ShowRequestId) + { +

+ Request ID: @Model.RequestId +

+ } + +

Development Mode

+

+ Swapping to the Development environment displays detailed information about the error + that occurred. +

+

+ The Development environment shouldn't be enabled for deployed applications. + It can result in displaying sensitive information from exceptions to end users. + For local debugging, enable the Development environment by setting the + ASPNETCORE_ENVIRONMENT environment variable to Development + and restarting the app. +

+
+
+ + + diff --git a/src/Host/Pages/Error.cshtml.cs b/src/Host/Pages/Error.cshtml.cs new file mode 100644 index 0000000..84fedd9 --- /dev/null +++ b/src/Host/Pages/Error.cshtml.cs @@ -0,0 +1,19 @@ +using System.Diagnostics; +using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.RazorPages; + +namespace RewardsPlus.BlazorWebAssembly.Server.Pages; + +[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] +[IgnoreAntiforgeryToken] +public class ErrorModel : PageModel +{ + public string? RequestId { get; set; } + + public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + + public void OnGet() + { + RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; + } +} \ No newline at end of file diff --git a/src/Host/Program.cs b/src/Host/Program.cs new file mode 100644 index 0000000..098865c --- /dev/null +++ b/src/Host/Program.cs @@ -0,0 +1,26 @@ +var builder = WebApplication.CreateBuilder(args); +builder.Services.AddControllersWithViews(); +builder.Services.AddRazorPages(); + +var app = builder.Build(); + +if (app.Environment.IsDevelopment()) +{ + app.UseWebAssemblyDebugging(); +} +else +{ + app.UseExceptionHandler("/Error"); + app.UseHsts(); +} + +app.UseHttpsRedirection(); +app.UseBlazorFrameworkFiles(); +app.UseStaticFiles(); +app.UseRouting(); + +app.MapRazorPages(); +app.MapControllers(); +app.MapFallbackToFile("index.html"); + +app.Run(); \ No newline at end of file diff --git a/src/Host/Properties/launchSettings.json b/src/Host/Properties/launchSettings.json new file mode 100644 index 0000000..5727059 --- /dev/null +++ b/src/Host/Properties/launchSettings.json @@ -0,0 +1,30 @@ +{ + "iisSettings": { + "windowsAuthentication": false, + "anonymousAuthentication": true, + "iisExpress": { + "applicationUrl": "http://localhost:21716", + "sslPort": 44331 + } + }, + "profiles": { + "RewardsPlus.BlazorWebAssembly.Server": { + "commandName": "Project", + "dotnetRunMessages": true, + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "applicationUrl": "https://localhost:5002;http://localhost:5003", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + }, + "IIS Express": { + "commandName": "IISExpress", + "launchBrowser": true, + "inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}", + "environmentVariables": { + "ASPNETCORE_ENVIRONMENT": "Development" + } + } + } +} \ No newline at end of file diff --git a/src/Host/appsettings.Development.json b/src/Host/appsettings.Development.json new file mode 100644 index 0000000..1b2d3ba --- /dev/null +++ b/src/Host/appsettings.Development.json @@ -0,0 +1,8 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + } +} \ No newline at end of file diff --git a/src/Host/appsettings.json b/src/Host/appsettings.json new file mode 100644 index 0000000..ec04bc1 --- /dev/null +++ b/src/Host/appsettings.json @@ -0,0 +1,9 @@ +{ + "Logging": { + "LogLevel": { + "Default": "Information", + "Microsoft.AspNetCore": "Warning" + } + }, + "AllowedHosts": "*" +} \ No newline at end of file diff --git a/src/Shared/Authorization/ClaimsPrincipalExtensions.cs b/src/Shared/Authorization/ClaimsPrincipalExtensions.cs new file mode 100644 index 0000000..71a5ff1 --- /dev/null +++ b/src/Shared/Authorization/ClaimsPrincipalExtensions.cs @@ -0,0 +1,39 @@ +using RewardsPlus.WebApi.Shared.Authorization; + +namespace System.Security.Claims; + +public static class ClaimsPrincipalExtensions +{ + public static string? GetEmail(this ClaimsPrincipal principal) + => principal.FindFirstValue(ClaimTypes.Email); + + public static string? GetTenant(this ClaimsPrincipal principal) + => principal.FindFirstValue(FSHClaims.Tenant); + + public static string? GetFullName(this ClaimsPrincipal principal) + => principal?.FindFirst(FSHClaims.Fullname)?.Value; + + public static string? GetFirstName(this ClaimsPrincipal principal) + => principal?.FindFirst(ClaimTypes.Name)?.Value; + + public static string? GetSurname(this ClaimsPrincipal principal) + => principal?.FindFirst(ClaimTypes.Surname)?.Value; + + public static string? GetPhoneNumber(this ClaimsPrincipal principal) + => principal.FindFirstValue(ClaimTypes.MobilePhone); + + public static string? GetUserId(this ClaimsPrincipal principal) + => principal.FindFirstValue(ClaimTypes.NameIdentifier); + + public static string? GetImageUrl(this ClaimsPrincipal principal) + => principal.FindFirstValue(FSHClaims.ImageUrl); + + public static DateTimeOffset GetExpiration(this ClaimsPrincipal principal) => + DateTimeOffset.FromUnixTimeSeconds(Convert.ToInt64( + principal.FindFirstValue(FSHClaims.Expiration))); + + private static string? FindFirstValue(this ClaimsPrincipal principal, string claimType) => + principal is null + ? throw new ArgumentNullException(nameof(principal)) + : principal.FindFirst(claimType)?.Value; +} \ No newline at end of file diff --git a/src/Shared/Authorization/FSHClaims.cs b/src/Shared/Authorization/FSHClaims.cs new file mode 100644 index 0000000..08be955 --- /dev/null +++ b/src/Shared/Authorization/FSHClaims.cs @@ -0,0 +1,11 @@ +namespace RewardsPlus.WebApi.Shared.Authorization; + +public static class FSHClaims +{ + public const string Tenant = "tenant"; + public const string Fullname = "fullName"; + public const string Permission = "permission"; + public const string ImageUrl = "image_url"; + public const string IpAddress = "ipAddress"; + public const string Expiration = "exp"; +} \ No newline at end of file diff --git a/src/Shared/Authorization/FSHPermissions.cs b/src/Shared/Authorization/FSHPermissions.cs new file mode 100644 index 0000000..4758485 --- /dev/null +++ b/src/Shared/Authorization/FSHPermissions.cs @@ -0,0 +1,80 @@ +using System.Collections.ObjectModel; + +namespace RewardsPlus.WebApi.Shared.Authorization; + +public static class FSHAction +{ + public const string View = nameof(View); + public const string Search = nameof(Search); + public const string Create = nameof(Create); + public const string Update = nameof(Update); + public const string Delete = nameof(Delete); + public const string Export = nameof(Export); + public const string Generate = nameof(Generate); + public const string Clean = nameof(Clean); + public const string UpgradeSubscription = nameof(UpgradeSubscription); +} + +public static class FSHResource +{ + public const string Tenants = nameof(Tenants); + public const string Dashboard = nameof(Dashboard); + public const string Hangfire = nameof(Hangfire); + public const string Users = nameof(Users); + public const string UserRoles = nameof(UserRoles); + public const string Roles = nameof(Roles); + public const string RoleClaims = nameof(RoleClaims); + public const string Products = nameof(Products); + public const string Brands = nameof(Brands); +} + +public static class FSHPermissions +{ + private static readonly FSHPermission[] _all = new FSHPermission[] + { + new("View Dashboard", FSHAction.View, FSHResource.Dashboard), + new("View Hangfire", FSHAction.View, FSHResource.Hangfire), + new("View Users", FSHAction.View, FSHResource.Users), + new("Search Users", FSHAction.Search, FSHResource.Users), + new("Create Users", FSHAction.Create, FSHResource.Users), + new("Update Users", FSHAction.Update, FSHResource.Users), + new("Delete Users", FSHAction.Delete, FSHResource.Users), + new("Export Users", FSHAction.Export, FSHResource.Users), + new("View UserRoles", FSHAction.View, FSHResource.UserRoles), + new("Update UserRoles", FSHAction.Update, FSHResource.UserRoles), + new("View Roles", FSHAction.View, FSHResource.Roles), + new("Create Roles", FSHAction.Create, FSHResource.Roles), + new("Update Roles", FSHAction.Update, FSHResource.Roles), + new("Delete Roles", FSHAction.Delete, FSHResource.Roles), + new("View RoleClaims", FSHAction.View, FSHResource.RoleClaims), + new("Update RoleClaims", FSHAction.Update, FSHResource.RoleClaims), + new("View Products", FSHAction.View, FSHResource.Products, IsBasic: true), + new("Search Products", FSHAction.Search, FSHResource.Products, IsBasic: true), + new("Create Products", FSHAction.Create, FSHResource.Products), + new("Update Products", FSHAction.Update, FSHResource.Products), + new("Delete Products", FSHAction.Delete, FSHResource.Products), + new("Export Products", FSHAction.Export, FSHResource.Products), + new("View Brands", FSHAction.View, FSHResource.Brands, IsBasic: true), + new("Search Brands", FSHAction.Search, FSHResource.Brands, IsBasic: true), + new("Create Brands", FSHAction.Create, FSHResource.Brands), + new("Update Brands", FSHAction.Update, FSHResource.Brands), + new("Delete Brands", FSHAction.Delete, FSHResource.Brands), + new("Generate Brands", FSHAction.Generate, FSHResource.Brands), + new("Clean Brands", FSHAction.Clean, FSHResource.Brands), + new("View Tenants", FSHAction.View, FSHResource.Tenants, IsRoot: true), + new("Create Tenants", FSHAction.Create, FSHResource.Tenants, IsRoot: true), + new("Update Tenants", FSHAction.Update, FSHResource.Tenants, IsRoot: true), + new("Upgrade Tenant Subscription", FSHAction.UpgradeSubscription, FSHResource.Tenants, IsRoot: true) + }; + + public static IReadOnlyList All { get; } = new ReadOnlyCollection(_all); + public static IReadOnlyList Root { get; } = new ReadOnlyCollection(_all.Where(p => p.IsRoot).ToArray()); + public static IReadOnlyList Admin { get; } = new ReadOnlyCollection(_all.Where(p => !p.IsRoot).ToArray()); + public static IReadOnlyList Basic { get; } = new ReadOnlyCollection(_all.Where(p => p.IsBasic).ToArray()); +} + +public record FSHPermission(string Description, string Action, string Resource, bool IsBasic = false, bool IsRoot = false) +{ + public string Name => NameFor(Action, Resource); + public static string NameFor(string action, string resource) => $"Permissions.{resource}.{action}"; +} \ No newline at end of file diff --git a/src/Shared/Authorization/FSHRoles.cs b/src/Shared/Authorization/FSHRoles.cs new file mode 100644 index 0000000..c38fa27 --- /dev/null +++ b/src/Shared/Authorization/FSHRoles.cs @@ -0,0 +1,17 @@ +using System.Collections.ObjectModel; + +namespace RewardsPlus.WebApi.Shared.Authorization; + +public static class FSHRoles +{ + public static string Admin = nameof(Admin); + public static string Basic = nameof(Basic); + + public static IReadOnlyList DefaultRoles { get; } = new ReadOnlyCollection(new[] + { + Admin, + Basic + }); + + public static bool IsDefault(string roleName) => DefaultRoles.Any(r => r == roleName); +} \ No newline at end of file diff --git a/src/Shared/Events/IEvent.cs b/src/Shared/Events/IEvent.cs new file mode 100644 index 0000000..f2cccc9 --- /dev/null +++ b/src/Shared/Events/IEvent.cs @@ -0,0 +1,5 @@ +namespace RewardsPlus.WebApi.Shared.Events; + +public interface IEvent +{ +} \ No newline at end of file diff --git a/src/Shared/MultiTenancy/MultitenancyConstants.cs b/src/Shared/MultiTenancy/MultitenancyConstants.cs new file mode 100644 index 0000000..d5ae1e1 --- /dev/null +++ b/src/Shared/MultiTenancy/MultitenancyConstants.cs @@ -0,0 +1,15 @@ +namespace RewardsPlus.WebApi.Shared.Multitenancy; + +public class MultitenancyConstants +{ + public static class Root + { + public const string Id = "root"; + public const string Name = "Root"; + public const string EmailAddress = "admin@root.com"; + } + + public const string DefaultPassword = "123Pa$$word!"; + + public const string TenantIdName = "tenant"; +} \ No newline at end of file diff --git a/src/Shared/Notifications/BasicNotification.cs b/src/Shared/Notifications/BasicNotification.cs new file mode 100644 index 0000000..a7e8bde --- /dev/null +++ b/src/Shared/Notifications/BasicNotification.cs @@ -0,0 +1,15 @@ +namespace RewardsPlus.WebApi.Shared.Notifications; + +public class BasicNotification : INotificationMessage +{ + public enum LabelType + { + Information, + Success, + Warning, + Error + } + + public string? Message { get; set; } + public LabelType Label { get; set; } +} \ No newline at end of file diff --git a/src/Shared/Notifications/INotificationMessage.cs b/src/Shared/Notifications/INotificationMessage.cs new file mode 100644 index 0000000..f059af0 --- /dev/null +++ b/src/Shared/Notifications/INotificationMessage.cs @@ -0,0 +1,5 @@ +namespace RewardsPlus.WebApi.Shared.Notifications; + +public interface INotificationMessage +{ +} \ No newline at end of file diff --git a/src/Shared/Notifications/JobNotification.cs b/src/Shared/Notifications/JobNotification.cs new file mode 100644 index 0000000..9ada2a2 --- /dev/null +++ b/src/Shared/Notifications/JobNotification.cs @@ -0,0 +1,8 @@ +namespace RewardsPlus.WebApi.Shared.Notifications; + +public class JobNotification : INotificationMessage +{ + public string? Message { get; set; } + public string? JobId { get; set; } + public decimal Progress { get; set; } +} \ No newline at end of file diff --git a/src/Shared/Notifications/NotificationConstants.cs b/src/Shared/Notifications/NotificationConstants.cs new file mode 100644 index 0000000..5a3d407 --- /dev/null +++ b/src/Shared/Notifications/NotificationConstants.cs @@ -0,0 +1,6 @@ +namespace RewardsPlus.WebApi.Shared.Notifications; + +public static class NotificationConstants +{ + public const string NotificationFromServer = nameof(NotificationFromServer); +} \ No newline at end of file diff --git a/src/Shared/Notifications/StatsChangedNotification.cs b/src/Shared/Notifications/StatsChangedNotification.cs new file mode 100644 index 0000000..1201fff --- /dev/null +++ b/src/Shared/Notifications/StatsChangedNotification.cs @@ -0,0 +1,5 @@ +namespace RewardsPlus.WebApi.Shared.Notifications; + +public class StatsChangedNotification : INotificationMessage +{ +} \ No newline at end of file diff --git a/src/Shared/Shared.csproj b/src/Shared/Shared.csproj new file mode 100644 index 0000000..72eb13f --- /dev/null +++ b/src/Shared/Shared.csproj @@ -0,0 +1,7 @@ + + + net6.0 + FSH.WebApi.Shared + FSH.WebApi.Shared + + \ No newline at end of file diff --git a/stylecop.json b/stylecop.json new file mode 100644 index 0000000..95ceebe --- /dev/null +++ b/stylecop.json @@ -0,0 +1,12 @@ +{ + "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json", + "settings": { + "orderingRules": { + "systemUsingDirectivesFirst": true, + "usingDirectivesPlacement": "outsideNamespace" + }, + "layoutRules": { + "newlineAtEndOfFile": "omit" + } + } +} \ No newline at end of file