From 63be312bb4fe11d1037382ae6a78313df101b51a Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Mon, 13 Jan 2025 19:51:26 +0100 Subject: [PATCH 001/110] Configure data sources (#259) --- app/ERIClientV1/Client.Generated.cs | 1277 +++++++++++++++++ app/ERIClientV1/ERIClientV1.csproj | 10 + app/MindWork AI Studio.sln | 11 + .../Assistants/ERI/AssistantERI.razor | 4 +- .../Assistants/ERI/AssistantERI.razor.cs | 11 + .../Components/SelectDirectory.razor | 1 + .../Components/SelectDirectory.razor.cs | 3 + .../Components/SelectFile.razor | 17 + .../Components/SelectFile.razor.cs | 63 + .../Settings/SettingsPanelDataSources.razor | 67 + .../SettingsPanelDataSources.razor.cs | 233 +++ .../Settings/SettingsPanelEmbeddings.razor.cs | 12 +- .../Dialogs/DataSourceERI_V1Dialog.razor | 128 ++ .../Dialogs/DataSourceERI_V1Dialog.razor.cs | 277 ++++ .../DataSourceLocalDirectoryDialog.razor | 79 + .../DataSourceLocalDirectoryDialog.razor.cs | 120 ++ .../Dialogs/DataSourceLocalFileDialog.razor | 78 + .../DataSourceLocalFileDialog.razor.cs | 121 ++ .../Dialogs/EmbeddingProviderDialog.razor.cs | 3 +- .../MindWork AI Studio.csproj | 4 + app/MindWork AI Studio/Pages/Settings.razor | 1 + .../Pages/Settings.razor.cs | 1 + .../Settings/DataModel/Data.cs | 10 + .../Settings/DataModel/DataSourceERI_V1.cs | 46 + .../DataModel/DataSourceLocalDirectory.cs | 31 + .../Settings/DataModel/DataSourceLocalFile.cs | 31 + .../Settings/DataModel/DataSourceType.cs | 27 + .../DataModel/DataSourceTypeExtension.cs | 24 + .../Settings/IDataSource.cs | 35 + .../Settings/IERIDataSource.cs | 12 + .../Settings/IExternalDataSource.cs | 16 + .../Settings/IInternalDataSource.cs | 9 + .../Tools/AuthMethodsV1Extensions.cs | 16 + .../Tools/Rust/FileSelectionResponse.cs | 8 + .../Tools/Rust/PreviousFile.cs | 7 + .../Tools/RustService.APIKeys.cs | 76 + .../Tools/RustService.App.cs | 120 ++ .../Tools/RustService.Clipboard.cs | 50 + .../Tools/RustService.FileSystem.cs | 32 + .../Tools/RustService.Secrets.cs | 76 + .../Tools/RustService.Updates.cs | 40 + app/MindWork AI Studio/Tools/RustService.cs | 279 +--- .../Tools/Validation/DataSourceValidation.cs | 149 ++ app/MindWork AI Studio/packages.lock.json | 3 + .../wwwroot/changelog/v0.9.26.md | 3 + runtime/src/app_window.rs | 49 + runtime/src/runtime_api.rs | 1 + 47 files changed, 3388 insertions(+), 283 deletions(-) create mode 100644 app/ERIClientV1/Client.Generated.cs create mode 100644 app/ERIClientV1/ERIClientV1.csproj create mode 100644 app/MindWork AI Studio/Components/SelectFile.razor create mode 100644 app/MindWork AI Studio/Components/SelectFile.razor.cs create mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor create mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor create mode 100644 app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor create mode 100644 app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor create mode 100644 app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs create mode 100644 app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs create mode 100644 app/MindWork AI Studio/Settings/DataModel/DataSourceLocalDirectory.cs create mode 100644 app/MindWork AI Studio/Settings/DataModel/DataSourceLocalFile.cs create mode 100644 app/MindWork AI Studio/Settings/DataModel/DataSourceType.cs create mode 100644 app/MindWork AI Studio/Settings/DataModel/DataSourceTypeExtension.cs create mode 100644 app/MindWork AI Studio/Settings/IDataSource.cs create mode 100644 app/MindWork AI Studio/Settings/IERIDataSource.cs create mode 100644 app/MindWork AI Studio/Settings/IExternalDataSource.cs create mode 100644 app/MindWork AI Studio/Settings/IInternalDataSource.cs create mode 100644 app/MindWork AI Studio/Tools/AuthMethodsV1Extensions.cs create mode 100644 app/MindWork AI Studio/Tools/Rust/FileSelectionResponse.cs create mode 100644 app/MindWork AI Studio/Tools/Rust/PreviousFile.cs create mode 100644 app/MindWork AI Studio/Tools/RustService.APIKeys.cs create mode 100644 app/MindWork AI Studio/Tools/RustService.App.cs create mode 100644 app/MindWork AI Studio/Tools/RustService.Clipboard.cs create mode 100644 app/MindWork AI Studio/Tools/RustService.FileSystem.cs create mode 100644 app/MindWork AI Studio/Tools/RustService.Secrets.cs create mode 100644 app/MindWork AI Studio/Tools/RustService.Updates.cs create mode 100644 app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md diff --git a/app/ERIClientV1/Client.Generated.cs b/app/ERIClientV1/Client.Generated.cs new file mode 100644 index 00000000..96698e16 --- /dev/null +++ b/app/ERIClientV1/Client.Generated.cs @@ -0,0 +1,1277 @@ +//---------------------- +// +// Generated using the NSwag toolchain v14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) +// +//---------------------- + +#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 612 // Disable "CS0612 '...' is obsolete" +#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" +#pragma warning disable 8604 // Disable "CS8604 Possible null reference argument for parameter" +#pragma warning disable 8625 // Disable "CS8625 Cannot convert null literal to non-nullable reference type" + +namespace ERI_Client.V1 +{ + using System = global::System; + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class Client + { + private System.Net.Http.HttpClient _httpClient; + private static System.Lazy _settings = new System.Lazy(CreateSerializerSettings, true); + + public Client(System.Net.Http.HttpClient httpClient) + { + _httpClient = httpClient; + } + + private static System.Text.Json.JsonSerializerOptions CreateSerializerSettings() + { + var settings = new System.Text.Json.JsonSerializerOptions(); + UpdateJsonSerializerSettings(settings); + return settings; + } + + protected System.Text.Json.JsonSerializerOptions JsonSerializerSettings { get { return _settings.Value; } } + + static partial void UpdateJsonSerializerSettings(System.Text.Json.JsonSerializerOptions 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 the available authentication methods. + /// + /// OK + /// A server side error occurred. + public virtual System.Threading.Tasks.Task> GetAuthMethodsAsync() + { + return GetAuthMethodsAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get the available authentication methods. + /// + /// OK + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task> GetAuthMethodsAsync(System.Threading.CancellationToken cancellationToken) + { + 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")); + + var urlBuilder_ = new System.Text.StringBuilder(); + + // Operation Path: "auth/methods" + urlBuilder_.Append("auth/methods"); + + 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_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.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(); + } + } + + /// + /// Authenticate with the data source to get a token for further requests. + /// + /// OK + /// A server side error occurred. + public virtual System.Threading.Tasks.Task AuthenticateAsync(AuthMethod authMethod) + { + return AuthenticateAsync(authMethod, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Authenticate with the data source to get a token for further requests. + /// + /// OK + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task AuthenticateAsync(AuthMethod authMethod, System.Threading.CancellationToken cancellationToken) + { + if (authMethod == null) + throw new System.ArgumentNullException("authMethod"); + + 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")); + + var urlBuilder_ = new System.Text.StringBuilder(); + + // Operation Path: "auth" + urlBuilder_.Append("auth"); + urlBuilder_.Append('?'); + urlBuilder_.Append(System.Uri.EscapeDataString("authMethod")).Append('=').Append(System.Uri.EscapeDataString(ConvertToString(authMethod, System.Globalization.CultureInfo.InvariantCulture))).Append('&'); + urlBuilder_.Length--; + + 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_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.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 information about the data source. + /// + /// OK + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetDataSourceInfoAsync() + { + return GetDataSourceInfoAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get information about the data source. + /// + /// OK + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetDataSourceInfoAsync(System.Threading.CancellationToken cancellationToken) + { + 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")); + + var urlBuilder_ = new System.Text.StringBuilder(); + + // Operation Path: "dataSource" + urlBuilder_.Append("dataSource"); + + 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_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.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 information about the used embedding(s). + /// + /// OK + /// A server side error occurred. + public virtual System.Threading.Tasks.Task> GetEmbeddingInfoAsync() + { + return GetEmbeddingInfoAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get information about the used embedding(s). + /// + /// OK + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task> GetEmbeddingInfoAsync(System.Threading.CancellationToken cancellationToken) + { + 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")); + + var urlBuilder_ = new System.Text.StringBuilder(); + + // Operation Path: "embedding/info" + urlBuilder_.Append("embedding/info"); + + 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_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.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 information about the retrieval processes implemented by this data source. + /// + /// OK + /// A server side error occurred. + public virtual System.Threading.Tasks.Task> GetRetrievalInfoAsync() + { + return GetRetrievalInfoAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get information about the retrieval processes implemented by this data source. + /// + /// OK + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task> GetRetrievalInfoAsync(System.Threading.CancellationToken cancellationToken) + { + 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")); + + var urlBuilder_ = new System.Text.StringBuilder(); + + // Operation Path: "retrieval/info" + urlBuilder_.Append("retrieval/info"); + + 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_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.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(); + } + } + + /// + /// Retrieve information from the data source. + /// + /// OK + /// A server side error occurred. + public virtual System.Threading.Tasks.Task> RetrieveAsync(RetrievalRequest body) + { + return RetrieveAsync(body, System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Retrieve information from the data source. + /// + /// OK + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task> RetrieveAsync(RetrievalRequest body, System.Threading.CancellationToken cancellationToken) + { + if (body == null) + throw new System.ArgumentNullException("body"); + + var client_ = _httpClient; + var disposeClient_ = false; + try + { + using (var request_ = new System.Net.Http.HttpRequestMessage()) + { + var json_ = System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(body, _settings.Value); + var content_ = new System.Net.Http.ByteArrayContent(json_); + 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")); + + var urlBuilder_ = new System.Text.StringBuilder(); + + // Operation Path: "retrieval" + urlBuilder_.Append("retrieval"); + + 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_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.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 the security requirements for this data source. + /// + /// OK + /// A server side error occurred. + public virtual System.Threading.Tasks.Task GetSecurityRequirementsAsync() + { + return GetSecurityRequirementsAsync(System.Threading.CancellationToken.None); + } + + /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. + /// + /// Get the security requirements for this data source. + /// + /// OK + /// A server side error occurred. + public virtual async System.Threading.Tasks.Task GetSecurityRequirementsAsync(System.Threading.CancellationToken cancellationToken) + { + 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")); + + var urlBuilder_ = new System.Text.StringBuilder(); + + // Operation Path: "security/requirements" + urlBuilder_.Append("security/requirements"); + + 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_ = new System.Collections.Generic.Dictionary>(); + foreach (var item_ in response_.Headers) + headers_[item_.Key] = item_.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(); + } + } + + 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 = System.Text.Json.JsonSerializer.Deserialize(responseText, JsonSerializerSettings); + return new ObjectResponseResult(typedBody, responseText); + } + catch (System.Text.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)) + { + var typedBody = await System.Text.Json.JsonSerializer.DeserializeAsync(responseStream, JsonSerializerSettings, cancellationToken).ConfigureAwait(false); + return new ObjectResponseResult(typedBody, string.Empty); + } + } + catch (System.Text.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 is string[]) + { + return string.Join(",", (string[])value); + } + else if (value.GetType().IsArray) + { + var valueArray = (System.Array)value; + var valueTextArray = new string[valueArray.Length]; + for (var i = 0; i < valueArray.Length; i++) + { + valueTextArray[i] = ConvertToString(valueArray.GetValue(i), cultureInfo); + } + return string.Join(",", valueTextArray); + } + + var result = System.Convert.ToString(value, cultureInfo); + return result == null ? "" : result; + } + } + + /// + /// An authentication field. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public enum AuthField + { + + [System.Runtime.Serialization.EnumMember(Value = @"NONE")] + NONE = 0, + + [System.Runtime.Serialization.EnumMember(Value = @"USERNAME")] + USERNAME = 1, + + [System.Runtime.Serialization.EnumMember(Value = @"PASSWORD")] + PASSWORD = 2, + + [System.Runtime.Serialization.EnumMember(Value = @"TOKEN")] + TOKEN = 3, + + [System.Runtime.Serialization.EnumMember(Value = @"KERBEROS_TICKET")] + KERBEROS_TICKET = 4, + + } + + /// + /// The mapping between an AuthField and the field name in the authentication request. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class AuthFieldMapping + { + + [System.Text.Json.Serialization.JsonPropertyName("authField")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] + public AuthField AuthField { get; set; } + + /// + /// The field name in the authentication request. + /// + + [System.Text.Json.Serialization.JsonPropertyName("fieldName")] + public string FieldName { get; set; } + + } + + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public enum AuthMethod + { + + [System.Runtime.Serialization.EnumMember(Value = @"NONE")] + NONE = 0, + + [System.Runtime.Serialization.EnumMember(Value = @"KERBEROS")] + KERBEROS = 1, + + [System.Runtime.Serialization.EnumMember(Value = @"USERNAME_PASSWORD")] + USERNAME_PASSWORD = 2, + + [System.Runtime.Serialization.EnumMember(Value = @"TOKEN")] + TOKEN = 3, + + } + + /// + /// The response to an authentication request. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class AuthResponse + { + /// + /// True, when the authentication was successful. + /// + + [System.Text.Json.Serialization.JsonPropertyName("success")] + public bool Success { get; set; } + + /// + /// The token to use for further requests. + /// + + [System.Text.Json.Serialization.JsonPropertyName("token")] + public string Token { get; set; } + + /// + /// When the authentication was not successful, this contains the reason. + /// + + [System.Text.Json.Serialization.JsonPropertyName("message")] + public string Message { get; set; } + + } + + /// + /// Describes one authentication scheme for this data source. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class AuthScheme + { + + [System.Text.Json.Serialization.JsonPropertyName("authMethod")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] + public AuthMethod AuthMethod { get; set; } + + /// + /// A list of field mappings for the authentication method. The client must know, + ///
e.g., how the password field is named in the request. + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("authFieldMappings")] + public System.Collections.Generic.ICollection AuthFieldMappings { get; set; } + + } + + /// + /// A chat thread, which is a list of content blocks. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ChatThread + { + /// + /// The content blocks in this chat thread. + /// + + [System.Text.Json.Serialization.JsonPropertyName("contentBlocks")] + public System.Collections.Generic.ICollection ContentBlocks { get; set; } + + } + + /// + /// A block of content of a chat thread. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class ContentBlock + { + /// + /// The content of the block. Remember that images and other media are base64 encoded. + /// + + [System.Text.Json.Serialization.JsonPropertyName("content")] + public string Content { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("role")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] + public Role Role { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("type")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] + public ContentType Type { get; set; } + + } + + /// + /// The type of content. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public enum ContentType + { + + [System.Runtime.Serialization.EnumMember(Value = @"NONE")] + NONE = 0, + + [System.Runtime.Serialization.EnumMember(Value = @"UNKNOWN")] + UNKNOWN = 1, + + [System.Runtime.Serialization.EnumMember(Value = @"TEXT")] + TEXT = 2, + + [System.Runtime.Serialization.EnumMember(Value = @"IMAGE")] + IMAGE = 3, + + [System.Runtime.Serialization.EnumMember(Value = @"VIDEO")] + VIDEO = 4, + + [System.Runtime.Serialization.EnumMember(Value = @"AUDIO")] + AUDIO = 5, + + [System.Runtime.Serialization.EnumMember(Value = @"SPEECH")] + SPEECH = 6, + + } + + /// + /// Matching context returned by the data source as a result of a retrieval request. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class Context + { + /// + /// The name of the source, e.g., a document name, database name, + ///
collection name, etc. + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } + + /// + /// What are the contents of the source? For example, is it a + ///
dictionary, a book chapter, business concept, a paper, etc. + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("category")] + public string Category { get; set; } + + /// + /// The path to the content, e.g., a URL, a file path, a path in a + ///
graph database, etc. + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("path")] + public string Path { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("type")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] + public ContentType Type { get; set; } + + /// + /// The content that matched the user prompt. For text, you + ///
return the matched text and, e.g., three words before and after it. + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("matchedContent")] + public string MatchedContent { get; set; } + + /// + /// The surrounding content of the matched content. + ///
For text, you may return, e.g., one sentence or paragraph before and after + ///
the matched content. + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("surroundingContent")] + public System.Collections.Generic.ICollection SurroundingContent { get; set; } + + /// + /// Links to related content, e.g., links to Wikipedia articles, + ///
links to sources, etc. + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("links")] + public System.Collections.Generic.ICollection Links { get; set; } + + } + + /// + /// Information about the data source. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class DataSourceInfo + { + /// + /// The name of the data source, e.g., "Internal Organization Documents." + /// + + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } + + /// + /// A short description of the data source. What kind of data does it contain? + ///
What is the data source used for? + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } + + } + + /// + /// Represents information about the used embedding for this data source. The purpose of this information is to give the + ///
interested user an idea of what kind of embedding is used and what it does. + ///
+ [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class EmbeddingInfo + { + /// + /// What kind of embedding is used. For example, "Transformer Embedding," "Contextual Word + ///
Embedding," "Graph Embedding," etc. + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("embeddingType")] + public string EmbeddingType { get; set; } + + /// + /// Name the embedding used. This can be a library, a framework, or the name of the used + ///
algorithm. + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("embeddingName")] + public string EmbeddingName { get; set; } + + /// + /// A short description of the embedding. Describe what the embedding is doing. + /// + + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } + + /// + /// Describe when the embedding is used. For example, when the user prompt contains certain + ///
keywords, or anytime? + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("usedWhen")] + public string UsedWhen { get; set; } + + /// + /// A link to the embedding's documentation or the source code. Might be null. + /// + + [System.Text.Json.Serialization.JsonPropertyName("link")] + public string Link { get; set; } + + } + + /// + /// Known types of providers that can process data. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public enum ProviderType + { + + [System.Runtime.Serialization.EnumMember(Value = @"NONE")] + NONE = 0, + + [System.Runtime.Serialization.EnumMember(Value = @"ANY")] + ANY = 1, + + [System.Runtime.Serialization.EnumMember(Value = @"SELF_HOSTED")] + SELF_HOSTED = 2, + + } + + /// + /// Information about a retrieval process, which this data source implements. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class RetrievalInfo + { + /// + /// A unique identifier for the retrieval process. This can be a GUID, a unique name, or an increasing integer. + /// + + [System.Text.Json.Serialization.JsonPropertyName("id")] + public string Id { get; set; } + + /// + /// The name of the retrieval process, e.g., "Keyword-Based Wikipedia Article Retrieval". + /// + + [System.Text.Json.Serialization.JsonPropertyName("name")] + public string Name { get; set; } + + /// + /// A short description of the retrieval process. What kind of retrieval process is it? + /// + + [System.Text.Json.Serialization.JsonPropertyName("description")] + public string Description { get; set; } + + /// + /// A link to the retrieval process's documentation, paper, Wikipedia article, or the source code. Might be null. + /// + + [System.Text.Json.Serialization.JsonPropertyName("link")] + public string Link { get; set; } + + /// + /// A dictionary that describes the parameters of the retrieval process. The key is the parameter name, + ///
and the value is a description of the parameter. Although each parameter will be sent as a string, the description should indicate the + ///
expected type and range, e.g., 0.0 to 1.0 for a float parameter. + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("parametersDescription")] + public System.Collections.Generic.IDictionary ParametersDescription { get; set; } + + /// + /// A list of embeddings used in this retrieval process. It might be empty in case no embedding is used. + /// + + [System.Text.Json.Serialization.JsonPropertyName("embeddings")] + public System.Collections.Generic.ICollection Embeddings { get; set; } + + } + + /// + /// The retrieval request sent by AI Studio. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class RetrievalRequest + { + /// + /// The latest user prompt that AI Studio received. + /// + + [System.Text.Json.Serialization.JsonPropertyName("latestUserPrompt")] + public string LatestUserPrompt { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("latestUserPromptType")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] + public ContentType LatestUserPromptType { get; set; } + + [System.Text.Json.Serialization.JsonPropertyName("thread")] + public ChatThread Thread { get; set; } + + /// + /// Optional. The ID of the retrieval process that the data source should use. + ///
When null, the data source chooses an appropriate retrieval process. Selecting a retrieval process is optional + ///
for AI Studio users. Most users do not specify a retrieval process. + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("retrievalProcessId")] + public string RetrievalProcessId { get; set; } + + /// + /// A dictionary of parameters that the data source should use for the retrieval process. + ///
Although each parameter will be sent as a string, the retrieval process specifies the expected type and range. + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("parameters")] + public System.Collections.Generic.IDictionary Parameters { get; set; } + + /// + /// The maximum number of matches that the data source should return. AI Studio uses + ///
any value below 1 to indicate that the data source should return as many matches as appropriate. + ///
+ + [System.Text.Json.Serialization.JsonPropertyName("maxMatches")] + public int MaxMatches { get; set; } + + } + + /// + /// Possible roles of any chat thread. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public enum Role + { + + [System.Runtime.Serialization.EnumMember(Value = @"NONE")] + NONE = 0, + + [System.Runtime.Serialization.EnumMember(Value = @"UNKNOW")] + UNKNOW = 1, + + [System.Runtime.Serialization.EnumMember(Value = @"SYSTEM")] + SYSTEM = 2, + + [System.Runtime.Serialization.EnumMember(Value = @"USER")] + USER = 3, + + [System.Runtime.Serialization.EnumMember(Value = @"AI")] + AI = 4, + + [System.Runtime.Serialization.EnumMember(Value = @"AGENT")] + AGENT = 5, + + } + + /// + /// Represents the security requirements for this data source. + /// + [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] + public partial class SecurityRequirements + { + + [System.Text.Json.Serialization.JsonPropertyName("allowedProviderType")] + [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] + public ProviderType AllowedProviderType { get; set; } + + } + + + + [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.0.3.0 (NJsonSchema v11.0.0.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", "14.0.3.0 (NJsonSchema v11.0.0.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 108 +#pragma warning restore 114 +#pragma warning restore 472 +#pragma warning restore 612 +#pragma warning restore 1573 +#pragma warning restore 1591 +#pragma warning restore 8073 +#pragma warning restore 3016 +#pragma warning restore 8603 +#pragma warning restore 8604 +#pragma warning restore 8625 \ No newline at end of file diff --git a/app/ERIClientV1/ERIClientV1.csproj b/app/ERIClientV1/ERIClientV1.csproj new file mode 100644 index 00000000..8ca0662e --- /dev/null +++ b/app/ERIClientV1/ERIClientV1.csproj @@ -0,0 +1,10 @@ + + + + net8.0 + latest + enable + enable + + + diff --git a/app/MindWork AI Studio.sln b/app/MindWork AI Studio.sln index 696edae2..6bf20b24 100644 --- a/app/MindWork AI Studio.sln +++ b/app/MindWork AI Studio.sln @@ -2,6 +2,10 @@ Microsoft Visual Studio Solution File, Format Version 12.00 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MindWork AI Studio", "MindWork AI Studio\MindWork AI Studio.csproj", "{059FDFCC-7D0B-474E-9F20-B9C437DF1CDD}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ERIClients", "ERIClients", "{5C2AF789-287B-4FCB-B675-7273D8CD4579}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ERIClientV1", "ERIClientV1\ERIClientV1.csproj", "{9E35A273-0FA6-4BD5-8880-A1DDAC106926}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -12,5 +16,12 @@ Global {059FDFCC-7D0B-474E-9F20-B9C437DF1CDD}.Debug|Any CPU.Build.0 = Debug|Any CPU {059FDFCC-7D0B-474E-9F20-B9C437DF1CDD}.Release|Any CPU.ActiveCfg = Release|Any CPU {059FDFCC-7D0B-474E-9F20-B9C437DF1CDD}.Release|Any CPU.Build.0 = Release|Any CPU + {9E35A273-0FA6-4BD5-8880-A1DDAC106926}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {9E35A273-0FA6-4BD5-8880-A1DDAC106926}.Debug|Any CPU.Build.0 = Debug|Any CPU + {9E35A273-0FA6-4BD5-8880-A1DDAC106926}.Release|Any CPU.ActiveCfg = Release|Any CPU + {9E35A273-0FA6-4BD5-8880-A1DDAC106926}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {9E35A273-0FA6-4BD5-8880-A1DDAC106926} = {5C2AF789-287B-4FCB-B675-7273D8CD4579} EndGlobalSection EndGlobal diff --git a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor index 5e008e25..19ad57cb 100644 --- a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor +++ b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor @@ -52,7 +52,7 @@ else Add ERI server preset - + Delete this server preset @@ -346,4 +346,4 @@ else - + diff --git a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs index 85347316..ca5b4f98 100644 --- a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs +++ b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs @@ -739,6 +739,17 @@ public partial class AssistantERI : AssistantBaseCore return null; } + + private string? ValidateDirectory(string path) + { + if(!this.writeToFilesystem) + return null; + + if(string.IsNullOrWhiteSpace(path)) + return "Please provide a base directory for the ERI server to write files to."; + + return null; + } private string GetMultiSelectionAuthText(List selectedValues) { diff --git a/app/MindWork AI Studio/Components/SelectDirectory.razor b/app/MindWork AI Studio/Components/SelectDirectory.razor index 95f09d69..29a0fc8f 100644 --- a/app/MindWork AI Studio/Components/SelectDirectory.razor +++ b/app/MindWork AI Studio/Components/SelectDirectory.razor @@ -4,6 +4,7 @@ Text="@this.Directory" Label="@this.Label" ReadOnly="@true" + Validation="@this.Validation" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Folder" UserAttributes="@SPELLCHECK_ATTRIBUTES" diff --git a/app/MindWork AI Studio/Components/SelectDirectory.razor.cs b/app/MindWork AI Studio/Components/SelectDirectory.razor.cs index ec4f6cd3..79bc18ef 100644 --- a/app/MindWork AI Studio/Components/SelectDirectory.razor.cs +++ b/app/MindWork AI Studio/Components/SelectDirectory.razor.cs @@ -21,6 +21,9 @@ public partial class SelectDirectory : ComponentBase [Parameter] public string DirectoryDialogTitle { get; set; } = "Select Directory"; + [Parameter] + public Func Validation { get; set; } = _ => null; + [Inject] private SettingsManager SettingsManager { get; init; } = null!; diff --git a/app/MindWork AI Studio/Components/SelectFile.razor b/app/MindWork AI Studio/Components/SelectFile.razor new file mode 100644 index 00000000..34842360 --- /dev/null +++ b/app/MindWork AI Studio/Components/SelectFile.razor @@ -0,0 +1,17 @@ + + + + + Choose File + + \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/SelectFile.razor.cs b/app/MindWork AI Studio/Components/SelectFile.razor.cs new file mode 100644 index 00000000..5d1b7f04 --- /dev/null +++ b/app/MindWork AI Studio/Components/SelectFile.razor.cs @@ -0,0 +1,63 @@ +using AIStudio.Settings; + +using Microsoft.AspNetCore.Components; + +namespace AIStudio.Components; + +public partial class SelectFile : ComponentBase +{ + [Parameter] + public string File { get; set; } = string.Empty; + + [Parameter] + public EventCallback FileChanged { get; set; } + + [Parameter] + public bool Disabled { get; set; } + + [Parameter] + public string Label { get; set; } = string.Empty; + + [Parameter] + public string FileDialogTitle { get; set; } = "Select File"; + + [Parameter] + public Func Validation { get; set; } = _ => null; + + [Inject] + private SettingsManager SettingsManager { get; init; } = null!; + + [Inject] + public RustService RustService { get; set; } = null!; + + [Inject] + protected ILogger Logger { get; init; } = null!; + + private static readonly Dictionary SPELLCHECK_ATTRIBUTES = new(); + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + // Configure the spellchecking for the instance name input: + this.SettingsManager.InjectSpellchecking(SPELLCHECK_ATTRIBUTES); + await base.OnInitializedAsync(); + } + + #endregion + + private void InternalFileChanged(string file) + { + this.File = file; + this.FileChanged.InvokeAsync(file); + } + + private async Task OpenFileDialog() + { + var response = await this.RustService.SelectFile(this.FileDialogTitle, string.IsNullOrWhiteSpace(this.File) ? null : this.File); + this.Logger.LogInformation($"The user selected the file '{response.SelectedFilePath}'."); + + if (!response.UserCancelled) + this.InternalFileChanged(response.SelectedFilePath); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor new file mode 100644 index 00000000..3f19bf9f --- /dev/null +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor @@ -0,0 +1,67 @@ +@using AIStudio.Settings +@using AIStudio.Settings.DataModel +@inherits SettingsPanelBase + +@if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) +{ + + + + Configured Data Sources + + + You might configure different data sources. A data source can include one file, all files + in a directory, or data from your company. Later, you can incorporate these data sources + as needed when the AI requires this data to complete a certain task. + + + + + + + + + + + + # + Name + Type + Embedding + Actions + + + @context.Num + @context.Name + @context.Type.GetDisplayName() + @this.GetEmbeddingName(context) + + + @if (context is IERIDataSource) + { + @* *@ + @* Show Information *@ + @* *@ + } + + Edit + + + Delete + + + + + + @if (this.SettingsManager.ConfigurationData.DataSources.Count == 0) + { + No data sources configured yet. + } + + + External Data (ERI-Server v1) + Local Directory + Local File + + +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor.cs new file mode 100644 index 00000000..03124527 --- /dev/null +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor.cs @@ -0,0 +1,233 @@ +using AIStudio.Dialogs; +using AIStudio.Settings; +using AIStudio.Settings.DataModel; + +using ERI_Client.V1; + +using Microsoft.AspNetCore.Components; + +using DialogOptions = AIStudio.Dialogs.DialogOptions; + +namespace AIStudio.Components.Settings; + +public partial class SettingsPanelDataSources : SettingsPanelBase +{ + [Parameter] + public List> AvailableDataSources { get; set; } = new(); + + [Parameter] + public EventCallback>> AvailableDataSourcesChanged { get; set; } + + [Parameter] + public Func>> AvailableEmbeddingsFunc { get; set; } = () => []; + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + await this.UpdateDataSources(); + await base.OnInitializedAsync(); + } + + #endregion + + private string GetEmbeddingName(IDataSource dataSource) + { + if(dataSource is IInternalDataSource internalDataSource) + { + var matchedEmbedding = this.SettingsManager.ConfigurationData.EmbeddingProviders.FirstOrDefault(x => x.Id == internalDataSource.EmbeddingId); + if(matchedEmbedding == default) + return "No valid embedding"; + + return matchedEmbedding.Name; + } + + if(dataSource is IExternalDataSource) + return "External (ERI)"; + + return "Unknown"; + } + + private async Task AddDataSource(DataSourceType type) + { + IDataSource? addedDataSource = null; + switch (type) + { + case DataSourceType.LOCAL_FILE: + var localFileDialogParameters = new DialogParameters + { + { x => x.IsEditing, false }, + { x => x.AvailableEmbeddings, this.AvailableEmbeddingsFunc() } + }; + + var localFileDialogReference = await this.DialogService.ShowAsync("Add Local File as Data Source", localFileDialogParameters, DialogOptions.FULLSCREEN); + var localFileDialogResult = await localFileDialogReference.Result; + if (localFileDialogResult is null || localFileDialogResult.Canceled) + return; + + var localFile = (DataSourceLocalFile)localFileDialogResult.Data!; + localFile = localFile with { Num = this.SettingsManager.ConfigurationData.NextDataSourceNum++ }; + addedDataSource = localFile; + break; + + case DataSourceType.LOCAL_DIRECTORY: + var localDirectoryDialogParameters = new DialogParameters + { + { x => x.IsEditing, false }, + { x => x.AvailableEmbeddings, this.AvailableEmbeddingsFunc() } + }; + + var localDirectoryDialogReference = await this.DialogService.ShowAsync("Add Local Directory as Data Source", localDirectoryDialogParameters, DialogOptions.FULLSCREEN); + var localDirectoryDialogResult = await localDirectoryDialogReference.Result; + if (localDirectoryDialogResult is null || localDirectoryDialogResult.Canceled) + return; + + var localDirectory = (DataSourceLocalDirectory)localDirectoryDialogResult.Data!; + localDirectory = localDirectory with { Num = this.SettingsManager.ConfigurationData.NextDataSourceNum++ }; + addedDataSource = localDirectory; + break; + + case DataSourceType.ERI_V1: + var eriDialogParameters = new DialogParameters + { + { x => x.IsEditing, false }, + }; + + var eriDialogReference = await this.DialogService.ShowAsync("Add ERI v1 Data Source", eriDialogParameters, DialogOptions.FULLSCREEN); + var eriDialogResult = await eriDialogReference.Result; + if (eriDialogResult is null || eriDialogResult.Canceled) + return; + + var eriDataSource = (DataSourceERI_V1)eriDialogResult.Data!; + eriDataSource = eriDataSource with { Num = this.SettingsManager.ConfigurationData.NextDataSourceNum++ }; + addedDataSource = eriDataSource; + break; + } + + if(addedDataSource is null) + return; + + this.SettingsManager.ConfigurationData.DataSources.Add(addedDataSource); + await this.UpdateDataSources(); + await this.SettingsManager.StoreSettings(); + await this.MessageBus.SendMessage(this, Event.CONFIGURATION_CHANGED); + } + + private async Task EditDataSource(IDataSource dataSource) + { + IDataSource? editedDataSource = null; + switch (dataSource) + { + case DataSourceLocalFile localFile: + var localFileDialogParameters = new DialogParameters + { + { x => x.IsEditing, true }, + { x => x.DataSource, localFile }, + { x => x.AvailableEmbeddings, this.AvailableEmbeddingsFunc() } + }; + + var localFileDialogReference = await this.DialogService.ShowAsync("Edit Local File Data Source", localFileDialogParameters, DialogOptions.FULLSCREEN); + var localFileDialogResult = await localFileDialogReference.Result; + if (localFileDialogResult is null || localFileDialogResult.Canceled) + return; + + editedDataSource = (DataSourceLocalFile)localFileDialogResult.Data!; + break; + + case DataSourceLocalDirectory localDirectory: + var localDirectoryDialogParameters = new DialogParameters + { + { x => x.IsEditing, true }, + { x => x.DataSource, localDirectory }, + { x => x.AvailableEmbeddings, this.AvailableEmbeddingsFunc() } + }; + + var localDirectoryDialogReference = await this.DialogService.ShowAsync("Edit Local Directory Data Source", localDirectoryDialogParameters, DialogOptions.FULLSCREEN); + var localDirectoryDialogResult = await localDirectoryDialogReference.Result; + if (localDirectoryDialogResult is null || localDirectoryDialogResult.Canceled) + return; + + editedDataSource = (DataSourceLocalDirectory)localDirectoryDialogResult.Data!; + break; + + case DataSourceERI_V1 eriDataSource: + var eriDialogParameters = new DialogParameters + { + { x => x.IsEditing, true }, + { x => x.DataSource, eriDataSource }, + }; + + var eriDialogReference = await this.DialogService.ShowAsync("Edit ERI v1 Data Source", eriDialogParameters, DialogOptions.FULLSCREEN); + var eriDialogResult = await eriDialogReference.Result; + if (eriDialogResult is null || eriDialogResult.Canceled) + return; + + editedDataSource = (DataSourceERI_V1)eriDialogResult.Data!; + break; + } + + if(editedDataSource is null) + return; + + this.SettingsManager.ConfigurationData.DataSources[this.SettingsManager.ConfigurationData.DataSources.IndexOf(dataSource)] = editedDataSource; + + await this.UpdateDataSources(); + await this.SettingsManager.StoreSettings(); + await this.MessageBus.SendMessage(this, Event.CONFIGURATION_CHANGED); + } + + private async Task DeleteDataSource(IDataSource dataSource) + { + var dialogParameters = new DialogParameters + { + { "Message", $"Are you sure you want to delete the data source '{dataSource.Name}' of type {dataSource.Type.GetDisplayName()}?" }, + }; + + var dialogReference = await this.DialogService.ShowAsync("Delete Data Source", dialogParameters, DialogOptions.FULLSCREEN); + var dialogResult = await dialogReference.Result; + if (dialogResult is null || dialogResult.Canceled) + return; + + var applyChanges = dataSource is IInternalDataSource; + + // External data sources may need a secret for authentication: + if (dataSource is IExternalDataSource externalDataSource) + { + // When the auth method is NONE or KERBEROS, we don't need to delete a secret. + // In the case of KERBEROS, we don't store the Kerberos ticket in the secret store. + if(dataSource is IERIDataSource { AuthMethod: AuthMethod.NONE or AuthMethod.KERBEROS }) + applyChanges = true; + + // All other auth methods require a secret, which we need to delete now: + else + { + var deleteSecretResponse = await this.RustService.DeleteSecret(externalDataSource); + if (deleteSecretResponse.Success) + applyChanges = true; + } + } + + if(applyChanges) + { + this.SettingsManager.ConfigurationData.DataSources.Remove(dataSource); + await this.SettingsManager.StoreSettings(); + await this.UpdateDataSources(); + await this.MessageBus.SendMessage(this, Event.CONFIGURATION_CHANGED); + } + } + + private Task ShowInformation(IDataSource dataSource) + { + #warning Implement the information dialog for ERI data sources. + return Task.CompletedTask; + } + + private async Task UpdateDataSources() + { + this.AvailableDataSources.Clear(); + foreach (var dataSource in this.SettingsManager.ConfigurationData.DataSources) + this.AvailableDataSources.Add(new (dataSource.Name, dataSource.Id)); + + await this.AvailableDataSourcesChanged.InvokeAsync(this.AvailableDataSources); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelEmbeddings.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelEmbeddings.razor.cs index afa50246..7520e596 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelEmbeddings.razor.cs +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelEmbeddings.razor.cs @@ -21,7 +21,17 @@ public partial class SettingsPanelEmbeddings : SettingsPanelBase var modelName = provider.Model.ToString(); return modelName.Length > MAX_LENGTH ? "[...] " + modelName[^Math.Min(MAX_LENGTH, modelName.Length)..] : modelName; } - + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + await this.UpdateEmbeddingProviders(); + await base.OnInitializedAsync(); + } + + #endregion + private async Task AddEmbeddingProvider() { var dialogParameters = new DialogParameters diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor new file mode 100644 index 00000000..64e307b9 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor @@ -0,0 +1,128 @@ +@using ERI_Client.V1 + + + + @* ReSharper disable once CSharpWarnings::CS8974 *@ + + + + @* ReSharper disable once CSharpWarnings::CS8974 *@ + + + + + + @if (!this.IsConnectionEncrypted()) + { + + Please note: the connection to the ERI v1 server is not encrypted. This means that all + data sent to the server is transmitted in plain text. Please ask the ERI server administrator + to enable encryption. + + } + + @if (this.IsConnectionPossible()) + { + + + Test connection & read available metadata + + + @this.GetTestResultText() + + + } + + @if(this.availableAuthMethods.Count > 0 || this.dataAuthMethod != default) + { + + @foreach (var authMethod in this.availableAuthMethods) + { + @authMethod.DisplayName() + } + + } + + @if (this.NeedsSecret()) + { + if (this.dataAuthMethod is AuthMethod.USERNAME_PASSWORD) + { + @* ReSharper disable once CSharpWarnings::CS8974 *@ + + } + + @* ReSharper disable once CSharpWarnings::CS8974 *@ + + } + + + + + + Cancel + + @if(this.IsEditing) + { + @:Update + } + else + { + @:Add + } + + + \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs new file mode 100644 index 00000000..1e4eaf7d --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs @@ -0,0 +1,277 @@ +using AIStudio.Settings; +using AIStudio.Settings.DataModel; +using AIStudio.Tools.Validation; + +using ERI_Client.V1; + +using Microsoft.AspNetCore.Components; + +// ReSharper disable InconsistentNaming +namespace AIStudio.Dialogs; + +public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId +{ + [CascadingParameter] + private MudDialogInstance MudDialog { get; set; } = null!; + + [Parameter] + public bool IsEditing { get; set; } + + [Parameter] + public DataSourceERI_V1 DataSource { get; set; } + + [Inject] + private SettingsManager SettingsManager { get; init; } = null!; + + [Inject] + private ILogger Logger { get; init; } = null!; + + [Inject] + private RustService RustService { get; init; } = null!; + + private static readonly Dictionary SPELLCHECK_ATTRIBUTES = new(); + + private readonly DataSourceValidation dataSourceValidation; + private readonly Encryption encryption = Program.ENCRYPTION; + + /// + /// The list of used data source names. We need this to check for uniqueness. + /// + private List UsedDataSourcesNames { get; set; } = []; + + private bool dataIsValid; + private string[] dataIssues = []; + private string dataSecretStorageIssue = string.Empty; + private string dataEditingPreviousInstanceName = string.Empty; + private HttpClient? httpClient; + private List availableAuthMethods = []; + private bool connectionTested; + private bool connectionSuccessfulTested; + + private uint dataNum; + private string dataSecret = string.Empty; + private string dataId = Guid.NewGuid().ToString(); + private string dataName = string.Empty; + private string dataHostname = string.Empty; + private int dataPort; + private AuthMethod dataAuthMethod; + private string dataUsername = string.Empty; + + // We get the form reference from Blazor code to validate it manually: + private MudForm form = null!; + + public DataSourceERI_V1Dialog() + { + this.dataSourceValidation = new() + { + GetAuthMethod = () => this.dataAuthMethod, + GetPreviousDataSourceName = () => this.dataEditingPreviousInstanceName, + GetUsedDataSourceNames = () => this.UsedDataSourcesNames, + GetSecretStorageIssue = () => this.dataSecretStorageIssue, + GetTestedConnection = () => this.connectionTested, + GetTestedConnectionResult = () => this.connectionSuccessfulTested, + GetAvailableAuthMethods = () => this.availableAuthMethods, + }; + } + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + // Configure the spellchecking for the instance name input: + this.SettingsManager.InjectSpellchecking(SPELLCHECK_ATTRIBUTES); + + // Load the used instance names: + this.UsedDataSourcesNames = this.SettingsManager.ConfigurationData.DataSources.Select(x => x.Name.ToLowerInvariant()).ToList(); + + // When editing, we need to load the data: + if(this.IsEditing) + { + this.dataEditingPreviousInstanceName = this.DataSource.Name.ToLowerInvariant(); + this.dataNum = this.DataSource.Num; + this.dataId = this.DataSource.Id; + this.dataName = this.DataSource.Name; + this.dataHostname = this.DataSource.Hostname; + this.dataPort = this.DataSource.Port; + this.dataAuthMethod = this.DataSource.AuthMethod; + this.dataUsername = this.DataSource.Username; + + if (this.dataAuthMethod is AuthMethod.TOKEN or AuthMethod.USERNAME_PASSWORD) + { + // Load the secret: + var requestedSecret = await this.RustService.GetSecret(this); + if (requestedSecret.Success) + this.dataSecret = await requestedSecret.Secret.Decrypt(this.encryption); + else + { + this.dataSecret = string.Empty; + this.dataSecretStorageIssue = $"Failed to load the auth. secret from the operating system. The message was: {requestedSecret.Issue}. You might ignore this message and provide the secret again."; + await this.form.Validate(); + } + } + } + + await base.OnInitializedAsync(); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + // Reset the validation when not editing and on the first render. + // We don't want to show validation errors when the user opens the dialog. + if(!this.IsEditing && firstRender) + this.form.ResetValidation(); + + await base.OnAfterRenderAsync(firstRender); + } + + #endregion + + #region Implementation of ISecretId + + public string SecretId => this.dataId; + + public string SecretName => this.dataName; + + #endregion + + private DataSourceERI_V1 CreateDataSource() + { + var cleanedHostname = this.dataHostname.Trim(); + return new DataSourceERI_V1 + { + Id = this.dataId, + Num = this.dataNum, + Port = this.dataPort, + Name = this.dataName, + Hostname = cleanedHostname.EndsWith('/') ? cleanedHostname[..^1] : cleanedHostname, + AuthMethod = this.dataAuthMethod, + Username = this.dataUsername, + Type = DataSourceType.ERI_V1, + }; + } + + private bool IsConnectionEncrypted() => this.dataHostname.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase); + + private bool IsConnectionPossible() + { + if(this.dataSourceValidation.ValidatingHostname(this.dataHostname) is not null) + return false; + + if(this.dataSourceValidation.ValidatePort(this.dataPort) is not null) + return false; + + return true; + } + + private async Task TestConnection() + { + try + { + this.httpClient = new HttpClient + { + BaseAddress = new Uri($"{this.dataHostname}:{this.dataPort}"), + Timeout = TimeSpan.FromSeconds(5), + }; + + using (this.httpClient) + { + var client = new Client(this.httpClient); + var authSchemes = await client.GetAuthMethodsAsync(); + if (authSchemes is null) + { + await this.form.Validate(); + + Array.Resize(ref this.dataIssues, this.dataIssues.Length + 1); + this.dataIssues[^1] = "Failed to connect to the ERI v1 server. The server did not respond."; + return; + } + + this.availableAuthMethods = authSchemes.Select(n => n.AuthMethod).ToList(); + + this.connectionTested = true; + this.connectionSuccessfulTested = true; + this.Logger.LogInformation("Connection to the ERI v1 server was successful tested."); + } + } + catch (Exception e) + { + await this.form.Validate(); + + Array.Resize(ref this.dataIssues, this.dataIssues.Length + 1); + this.dataIssues[^1] = $"Failed to connect to the ERI v1 server. The message was: {e.Message}"; + this.Logger.LogError($"Failed to connect to the ERI v1 server. Message: {e.Message}"); + + this.connectionTested = true; + this.connectionSuccessfulTested = false; + } + } + + private string GetTestResultText() + { + if(!this.connectionTested) + return "Not tested yet."; + + return this.connectionSuccessfulTested ? "Connection successful." : "Connection failed."; + } + + private Color GetTestResultColor() + { + if (!this.connectionTested) + return Color.Default; + + return this.connectionSuccessfulTested ? Color.Success : Color.Error; + } + + private string GetTestResultIcon() + { + if (!this.connectionTested) + return Icons.Material.Outlined.HourglassEmpty; + + return this.connectionSuccessfulTested ? Icons.Material.Outlined.CheckCircle : Icons.Material.Outlined.Error; + } + + private bool NeedsSecret() => this.dataAuthMethod is AuthMethod.TOKEN or AuthMethod.USERNAME_PASSWORD; + + private string GetSecretLabel() => this.dataAuthMethod switch + { + AuthMethod.TOKEN => "Access Token", + AuthMethod.USERNAME_PASSWORD => "Password", + _ => "Secret", + }; + + private async Task Store() + { + await this.form.Validate(); + + var testConnectionValidation = this.dataSourceValidation.ValidateTestedConnection(); + if(testConnectionValidation is not null) + { + Array.Resize(ref this.dataIssues, this.dataIssues.Length + 1); + this.dataIssues[^1] = testConnectionValidation; + this.dataIsValid = false; + } + + this.dataSecretStorageIssue = string.Empty; + + // When the data is not valid, we don't store it: + if (!this.dataIsValid) + return; + + var addedDataSource = this.CreateDataSource(); + if (!string.IsNullOrWhiteSpace(this.dataSecret)) + { + // Store the secret in the OS secure storage: + var storeResponse = await this.RustService.SetSecret(this, this.dataSecret); + if (!storeResponse.Success) + { + this.dataSecretStorageIssue = $"Failed to store the auth. secret in the operating system. The message was: {storeResponse.Issue}. Please try again."; + await this.form.Validate(); + return; + } + } + + this.MudDialog.Close(DialogResult.Ok(addedDataSource)); + } + + private void Cancel() => this.MudDialog.Cancel(); +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor new file mode 100644 index 00000000..22d1c984 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor @@ -0,0 +1,79 @@ + + + + @* ReSharper disable once CSharpWarnings::CS8974 *@ + + + + Select a root directory for this data source. All data in this directory and all + its subdirectories will be processed for this data source. + + + + + In order for the AI to be able to determine the appropriate data at any time, you must + choose an embedding method. + + + @foreach (var embedding in this.AvailableEmbeddings) + { + @embedding.Name + } + + + @if (!string.IsNullOrWhiteSpace(this.dataEmbeddingId)) + { + if (this.SelectedCloudEmbedding) + { + + @if (string.IsNullOrWhiteSpace(this.dataPath)) + { + @: Please note: the embedding you selected runs in the cloud. All your data will be sent to the cloud. + @: Please confirm that you have read and understood this. + } + else + { + @: Please note: the embedding you selected runs in the cloud. All your data from the + @: folder '@this.dataPath' and all its subdirectories will be sent to the cloud. Please + @: confirm that you have read and understood this. + } + + + } + else + { + + The embedding you selected runs locally or in your organization. Your data is not sent to the cloud. + + } + } + + + + + Cancel + + @if(this.IsEditing) + { + @:Update + } + else + { + @:Add + } + + + \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor.cs new file mode 100644 index 00000000..9f1b4f1f --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor.cs @@ -0,0 +1,120 @@ +using AIStudio.Settings; +using AIStudio.Settings.DataModel; +using AIStudio.Tools.Validation; + +using Microsoft.AspNetCore.Components; + +namespace AIStudio.Dialogs; + +public partial class DataSourceLocalDirectoryDialog : ComponentBase +{ + [CascadingParameter] + private MudDialogInstance MudDialog { get; set; } = null!; + + [Parameter] + public bool IsEditing { get; set; } + + [Parameter] + public DataSourceLocalDirectory DataSource { get; set; } + + [Parameter] + public IReadOnlyList> AvailableEmbeddings { get; set; } = []; + + [Inject] + private SettingsManager SettingsManager { get; init; } = null!; + + private static readonly Dictionary SPELLCHECK_ATTRIBUTES = new(); + + private readonly DataSourceValidation dataSourceValidation; + + /// + /// The list of used data source names. We need this to check for uniqueness. + /// + private List UsedDataSourcesNames { get; set; } = []; + + private bool dataIsValid; + private string[] dataIssues = []; + private string dataEditingPreviousInstanceName = string.Empty; + + private uint dataNum; + private string dataId = Guid.NewGuid().ToString(); + private string dataName = string.Empty; + private bool dataUserAcknowledgedCloudEmbedding; + private string dataEmbeddingId = string.Empty; + private string dataPath = string.Empty; + + // We get the form reference from Blazor code to validate it manually: + private MudForm form = null!; + + public DataSourceLocalDirectoryDialog() + { + this.dataSourceValidation = new() + { + GetSelectedCloudEmbedding = () => this.SelectedCloudEmbedding, + GetPreviousDataSourceName = () => this.dataEditingPreviousInstanceName, + GetUsedDataSourceNames = () => this.UsedDataSourcesNames, + }; + } + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + // Configure the spellchecking for the instance name input: + this.SettingsManager.InjectSpellchecking(SPELLCHECK_ATTRIBUTES); + + // Load the used instance names: + this.UsedDataSourcesNames = this.SettingsManager.ConfigurationData.DataSources.Select(x => x.Name.ToLowerInvariant()).ToList(); + + // When editing, we need to load the data: + if(this.IsEditing) + { + this.dataEditingPreviousInstanceName = this.DataSource.Name.ToLowerInvariant(); + this.dataNum = this.DataSource.Num; + this.dataId = this.DataSource.Id; + this.dataName = this.DataSource.Name; + this.dataEmbeddingId = this.DataSource.EmbeddingId; + this.dataPath = this.DataSource.Path; + } + + await base.OnInitializedAsync(); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + // Reset the validation when not editing and on the first render. + // We don't want to show validation errors when the user opens the dialog. + if(!this.IsEditing && firstRender) + this.form.ResetValidation(); + + await base.OnAfterRenderAsync(firstRender); + } + + #endregion + + private bool SelectedCloudEmbedding => !this.SettingsManager.ConfigurationData.EmbeddingProviders.FirstOrDefault(x => x.Id == this.dataEmbeddingId).IsSelfHosted; + + private DataSourceLocalDirectory CreateDataSource() => new() + { + Id = this.dataId, + Num = this.dataNum, + Name = this.dataName, + Type = DataSourceType.LOCAL_DIRECTORY, + EmbeddingId = this.dataEmbeddingId, + Path = this.dataPath, + }; + + private async Task Store() + { + await this.form.Validate(); + + // When the data is not valid, we don't store it: + if (!this.dataIsValid) + return; + + var addedDataSource = this.CreateDataSource(); + this.MudDialog.Close(DialogResult.Ok(addedDataSource)); + } + + private void Cancel() => this.MudDialog.Cancel(); +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor new file mode 100644 index 00000000..c60d32dc --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor @@ -0,0 +1,78 @@ + + + + @* ReSharper disable once CSharpWarnings::CS8974 *@ + + + + Select a file for this data source. The content of this file will be processed for the data source. + + + + + In order for the AI to be able to determine the appropriate data at any time, you must + choose an embedding method. + + + @foreach (var embedding in this.AvailableEmbeddings) + { + @embedding.Name + } + + + @if (!string.IsNullOrWhiteSpace(this.dataEmbeddingId)) + { + if (this.SelectedCloudEmbedding) + { + + @if (string.IsNullOrWhiteSpace(this.dataFilePath)) + { + @: Please note: the embedding you selected runs in the cloud. All your data will be sent to the cloud. + @: Please confirm that you have read and understood this. + } + else + { + @: Please note: the embedding you selected runs in the cloud. All your data within the + @: file '@this.dataFilePath' will be sent to the cloud. Please confirm that you have read + @: and understood this. + } + + + } + else + { + + The embedding you selected runs locally or in your organization. Your data is not sent to the cloud. + + } + } + + + + + Cancel + + @if(this.IsEditing) + { + @:Update + } + else + { + @:Add + } + + + \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs new file mode 100644 index 00000000..feaf5a79 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs @@ -0,0 +1,121 @@ +using AIStudio.Settings; +using AIStudio.Settings.DataModel; +using AIStudio.Tools.Validation; + +using Microsoft.AspNetCore.Components; + +namespace AIStudio.Dialogs; + +public partial class DataSourceLocalFileDialog : ComponentBase +{ + [CascadingParameter] + private MudDialogInstance MudDialog { get; set; } = null!; + + [Parameter] + public bool IsEditing { get; set; } + + [Parameter] + public DataSourceLocalFile DataSource { get; set; } + + [Parameter] + public IReadOnlyList> AvailableEmbeddings { get; set; } = []; + + [Inject] + private SettingsManager SettingsManager { get; init; } = null!; + + + private static readonly Dictionary SPELLCHECK_ATTRIBUTES = new(); + + private readonly DataSourceValidation dataSourceValidation; + + /// + /// The list of used data source names. We need this to check for uniqueness. + /// + private List UsedDataSourcesNames { get; set; } = []; + + private bool dataIsValid; + private string[] dataIssues = []; + private string dataEditingPreviousInstanceName = string.Empty; + + private uint dataNum; + private string dataId = Guid.NewGuid().ToString(); + private string dataName = string.Empty; + private bool dataUserAcknowledgedCloudEmbedding; + private string dataEmbeddingId = string.Empty; + private string dataFilePath = string.Empty; + + // We get the form reference from Blazor code to validate it manually: + private MudForm form = null!; + + public DataSourceLocalFileDialog() + { + this.dataSourceValidation = new() + { + GetSelectedCloudEmbedding = () => this.SelectedCloudEmbedding, + GetPreviousDataSourceName = () => this.dataEditingPreviousInstanceName, + GetUsedDataSourceNames = () => this.UsedDataSourcesNames, + }; + } + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + // Configure the spellchecking for the instance name input: + this.SettingsManager.InjectSpellchecking(SPELLCHECK_ATTRIBUTES); + + // Load the used instance names: + this.UsedDataSourcesNames = this.SettingsManager.ConfigurationData.DataSources.Select(x => x.Name.ToLowerInvariant()).ToList(); + + // When editing, we need to load the data: + if(this.IsEditing) + { + this.dataEditingPreviousInstanceName = this.DataSource.Name.ToLowerInvariant(); + this.dataNum = this.DataSource.Num; + this.dataId = this.DataSource.Id; + this.dataName = this.DataSource.Name; + this.dataEmbeddingId = this.DataSource.EmbeddingId; + this.dataFilePath = this.DataSource.FilePath; + } + + await base.OnInitializedAsync(); + } + + protected override async Task OnAfterRenderAsync(bool firstRender) + { + // Reset the validation when not editing and on the first render. + // We don't want to show validation errors when the user opens the dialog. + if(!this.IsEditing && firstRender) + this.form.ResetValidation(); + + await base.OnAfterRenderAsync(firstRender); + } + + #endregion + + private bool SelectedCloudEmbedding => !this.SettingsManager.ConfigurationData.EmbeddingProviders.FirstOrDefault(x => x.Id == this.dataEmbeddingId).IsSelfHosted; + + private DataSourceLocalFile CreateDataSource() => new() + { + Id = this.dataId, + Num = this.dataNum, + Name = this.dataName, + Type = DataSourceType.LOCAL_FILE, + EmbeddingId = this.dataEmbeddingId, + FilePath = this.dataFilePath, + }; + + private async Task Store() + { + await this.form.Validate(); + + // When the data is not valid, we don't store it: + if (!this.dataIsValid) + return; + + var addedDataSource = this.CreateDataSource(); + this.MudDialog.Close(DialogResult.Ok(addedDataSource)); + } + + private void Cancel() => this.MudDialog.Cancel(); +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs b/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs index 3a7b092b..14e8cc28 100644 --- a/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs @@ -197,8 +197,7 @@ public partial class EmbeddingProviderDialog : ComponentBase, ISecretId private async Task Store() { await this.form.Validate(); - if (!string.IsNullOrWhiteSpace(this.dataAPIKeyStorageIssue)) - this.dataAPIKeyStorageIssue = string.Empty; + this.dataAPIKeyStorageIssue = string.Empty; // When the data is not valid, we don't store it: if (!this.dataIsValid) diff --git a/app/MindWork AI Studio/MindWork AI Studio.csproj b/app/MindWork AI Studio/MindWork AI Studio.csproj index 0d6fc288..ccc96dff 100644 --- a/app/MindWork AI Studio/MindWork AI Studio.csproj +++ b/app/MindWork AI Studio/MindWork AI Studio.csproj @@ -53,6 +53,10 @@ + + + + diff --git a/app/MindWork AI Studio/Pages/Settings.razor b/app/MindWork AI Studio/Pages/Settings.razor index 4a004734..f09a180e 100644 --- a/app/MindWork AI Studio/Pages/Settings.razor +++ b/app/MindWork AI Studio/Pages/Settings.razor @@ -7,6 +7,7 @@ + diff --git a/app/MindWork AI Studio/Pages/Settings.razor.cs b/app/MindWork AI Studio/Pages/Settings.razor.cs index d06ab02e..6baf7f14 100644 --- a/app/MindWork AI Studio/Pages/Settings.razor.cs +++ b/app/MindWork AI Studio/Pages/Settings.razor.cs @@ -11,6 +11,7 @@ public partial class Settings : ComponentBase, IMessageBusReceiver, IDisposable private List> availableLLMProviders = new(); private List> availableEmbeddingProviders = new(); + private List> availableDataSources = new(); #region Overrides of ComponentBase diff --git a/app/MindWork AI Studio/Settings/DataModel/Data.cs b/app/MindWork AI Studio/Settings/DataModel/Data.cs index f6f08a5a..2dd099eb 100644 --- a/app/MindWork AI Studio/Settings/DataModel/Data.cs +++ b/app/MindWork AI Studio/Settings/DataModel/Data.cs @@ -25,6 +25,11 @@ public sealed class Data /// A collection of embedding providers configured. /// public List EmbeddingProviders { get; init; } = []; + + /// + /// A collection of data sources configured. + /// + public List DataSources { get; set; } = []; /// /// List of configured profiles. @@ -41,6 +46,11 @@ public sealed class Data /// public uint NextEmbeddingNum { get; set; } = 1; + /// + /// The next data source number to use. + /// + public uint NextDataSourceNum { get; set; } = 1; + /// /// The next profile number to use. /// diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs new file mode 100644 index 00000000..387accf0 --- /dev/null +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs @@ -0,0 +1,46 @@ +using ERI_Client.V1; + +// ReSharper disable InconsistentNaming +namespace AIStudio.Settings.DataModel; + +/// +/// An external data source, accessed via an ERI server, cf. https://github.com/MindWorkAI/ERI. +/// +public readonly record struct DataSourceERI_V1 : IERIDataSource +{ + public DataSourceERI_V1() + { + } + + /// + public uint Num { get; init; } + + /// + public string Id { get; init; } = Guid.Empty.ToString(); + + /// + public string Name { get; init; } = string.Empty; + + /// + public DataSourceType Type { get; init; } = DataSourceType.NONE; + + /// + /// The hostname of the ERI server. + /// + public string Hostname { get; init; } = string.Empty; + + /// + /// The port of the ERI server. + /// + public int Port { get; init; } + + /// + /// The authentication method to use. + /// + public AuthMethod AuthMethod { get; init; } = AuthMethod.NONE; + + /// + /// The username to use for authentication, when the auth. method is USERNAME_PASSWORD. + /// + public string Username { get; init; } = string.Empty; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalDirectory.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalDirectory.cs new file mode 100644 index 00000000..963b9ba1 --- /dev/null +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalDirectory.cs @@ -0,0 +1,31 @@ +namespace AIStudio.Settings.DataModel; + +/// +/// Represents a local directory as a data source. +/// +public readonly record struct DataSourceLocalDirectory : IInternalDataSource +{ + public DataSourceLocalDirectory() + { + } + + /// + public uint Num { get; init; } + + /// + public string Id { get; init; } = Guid.Empty.ToString(); + + /// + public string Name { get; init; } = string.Empty; + + /// + public DataSourceType Type { get; init; } = DataSourceType.NONE; + + /// + public string EmbeddingId { get; init; } = Guid.Empty.ToString(); + + /// + /// The path to the directory. + /// + public string Path { get; init; } = string.Empty; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalFile.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalFile.cs new file mode 100644 index 00000000..a6088190 --- /dev/null +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalFile.cs @@ -0,0 +1,31 @@ +namespace AIStudio.Settings.DataModel; + +/// +/// Represents one local file as a data source. +/// +public readonly record struct DataSourceLocalFile : IInternalDataSource +{ + public DataSourceLocalFile() + { + } + + /// + public uint Num { get; init; } + + /// + public string Id { get; init; } = Guid.Empty.ToString(); + + /// + public string Name { get; init; } = string.Empty; + + /// + public DataSourceType Type { get; init; } = DataSourceType.NONE; + + /// + public string EmbeddingId { get; init; } = Guid.Empty.ToString(); + + /// + /// The path to the file. + /// + public string FilePath { get; init; } = string.Empty; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceType.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceType.cs new file mode 100644 index 00000000..9c8b031f --- /dev/null +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceType.cs @@ -0,0 +1,27 @@ +namespace AIStudio.Settings.DataModel; + +/// +/// AI Studio data source types. +/// +public enum DataSourceType +{ + /// + /// No data source. + /// + NONE = 0, + + /// + /// One file on the local machine (or a network share). + /// + LOCAL_FILE, + + /// + /// A directory on the local machine (or a network share). + /// + LOCAL_DIRECTORY, + + /// + /// External data source accessed via an ERI server, cf. https://github.com/MindWorkAI/ERI. + /// + ERI_V1, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceTypeExtension.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceTypeExtension.cs new file mode 100644 index 00000000..a630a922 --- /dev/null +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceTypeExtension.cs @@ -0,0 +1,24 @@ +namespace AIStudio.Settings.DataModel; + +/// +/// Extension methods for data source types. +/// +public static class DataSourceTypeExtension +{ + /// + /// Get the display name of the data source type. + /// + /// The data source type. + /// The display name of the data source type. + public static string GetDisplayName(this DataSourceType type) + { + return type switch + { + DataSourceType.LOCAL_FILE => "Local File", + DataSourceType.LOCAL_DIRECTORY => "Local Directory", + DataSourceType.ERI_V1 => "External ERI Server (v1)", + + _ => "None", + }; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/IDataSource.cs b/app/MindWork AI Studio/Settings/IDataSource.cs new file mode 100644 index 00000000..28bc3b9c --- /dev/null +++ b/app/MindWork AI Studio/Settings/IDataSource.cs @@ -0,0 +1,35 @@ +using System.Text.Json.Serialization; + +using AIStudio.Settings.DataModel; + +namespace AIStudio.Settings; + +/// +/// The common interface for all data sources. +/// +[JsonPolymorphic(TypeDiscriminatorPropertyName = "$type_discriminator")] +[JsonDerivedType(typeof(DataSourceLocalDirectory), nameof(DataSourceType.LOCAL_DIRECTORY))] +[JsonDerivedType(typeof(DataSourceLocalFile), nameof(DataSourceType.LOCAL_FILE))] +[JsonDerivedType(typeof(DataSourceERI_V1), nameof(DataSourceType.ERI_V1))] +public interface IDataSource +{ + /// + /// The number of the data source. + /// + public uint Num { get; init; } + + /// + /// The unique identifier of the data source. + /// + public string Id { get; init; } + + /// + /// The name of the data source. + /// + public string Name { get; init; } + + /// + /// Which type of data source is this? + /// + public DataSourceType Type { get; init; } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/IERIDataSource.cs b/app/MindWork AI Studio/Settings/IERIDataSource.cs new file mode 100644 index 00000000..34874fcc --- /dev/null +++ b/app/MindWork AI Studio/Settings/IERIDataSource.cs @@ -0,0 +1,12 @@ +using ERI_Client.V1; + +namespace AIStudio.Settings; + +public interface IERIDataSource : IExternalDataSource +{ + public string Hostname { get; init; } + + public int Port { get; init; } + + public AuthMethod AuthMethod { get; init; } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/IExternalDataSource.cs b/app/MindWork AI Studio/Settings/IExternalDataSource.cs new file mode 100644 index 00000000..8a7c067c --- /dev/null +++ b/app/MindWork AI Studio/Settings/IExternalDataSource.cs @@ -0,0 +1,16 @@ +using System.Text.Json.Serialization; + +namespace AIStudio.Settings; + +public interface IExternalDataSource : IDataSource, ISecretId +{ + #region Implementation of ISecretId + + [JsonIgnore] + string ISecretId.SecretId => this.Id; + + [JsonIgnore] + string ISecretId.SecretName => this.Name; + + #endregion +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/IInternalDataSource.cs b/app/MindWork AI Studio/Settings/IInternalDataSource.cs new file mode 100644 index 00000000..0ffa7dea --- /dev/null +++ b/app/MindWork AI Studio/Settings/IInternalDataSource.cs @@ -0,0 +1,9 @@ +namespace AIStudio.Settings; + +public interface IInternalDataSource : IDataSource +{ + /// + /// The unique identifier of the embedding method used by this internal data source. + /// + public string EmbeddingId { get; init; } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/AuthMethodsV1Extensions.cs b/app/MindWork AI Studio/Tools/AuthMethodsV1Extensions.cs new file mode 100644 index 00000000..e26a20b5 --- /dev/null +++ b/app/MindWork AI Studio/Tools/AuthMethodsV1Extensions.cs @@ -0,0 +1,16 @@ +using ERI_Client.V1; + +namespace AIStudio.Tools; + +public static class AuthMethodsV1Extensions +{ + public static string DisplayName(this AuthMethod authMethod) => authMethod switch + { + AuthMethod.NONE => "None", + AuthMethod.USERNAME_PASSWORD => "Username & Password", + AuthMethod.KERBEROS => "SSO (Kerberos)", + AuthMethod.TOKEN => "Access Token", + + _ => "Unknown authentication method", + }; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/Rust/FileSelectionResponse.cs b/app/MindWork AI Studio/Tools/Rust/FileSelectionResponse.cs new file mode 100644 index 00000000..fd3bed6f --- /dev/null +++ b/app/MindWork AI Studio/Tools/Rust/FileSelectionResponse.cs @@ -0,0 +1,8 @@ +namespace AIStudio.Tools.Rust; + +/// +/// Data structure for selecting a file. +/// +/// Was the file selection canceled? +/// The selected file, if any. +public readonly record struct FileSelectionResponse(bool UserCancelled, string SelectedFilePath); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/Rust/PreviousFile.cs b/app/MindWork AI Studio/Tools/Rust/PreviousFile.cs new file mode 100644 index 00000000..217ea064 --- /dev/null +++ b/app/MindWork AI Studio/Tools/Rust/PreviousFile.cs @@ -0,0 +1,7 @@ +namespace AIStudio.Tools.Rust; + +/// +/// Data structure for selecting a file when a previous file was selected. +/// +/// The path of the previous file. +public readonly record struct PreviousFile(string FilePath); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RustService.APIKeys.cs b/app/MindWork AI Studio/Tools/RustService.APIKeys.cs new file mode 100644 index 00000000..1a3b4af7 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RustService.APIKeys.cs @@ -0,0 +1,76 @@ +using AIStudio.Tools.Rust; + +namespace AIStudio.Tools; + +public sealed partial class RustService +{ + /// + /// Try to get the API key for the given secret ID. + /// + /// The secret ID to get the API key for. + /// Indicates if we are trying to get the API key. In that case, we don't log errors. + /// The requested secret. + public async Task GetAPIKey(ISecretId secretId, bool isTrying = false) + { + var secretRequest = new SelectSecretRequest($"provider::{secretId.SecretId}::{secretId.SecretName}::api_key", Environment.UserName, isTrying); + var result = await this.http.PostAsJsonAsync("/secrets/get", secretRequest, this.jsonRustSerializerOptions); + if (!result.IsSuccessStatusCode) + { + if(!isTrying) + this.logger!.LogError($"Failed to get the API key for secret ID '{secretId.SecretId}' due to an API issue: '{result.StatusCode}'"); + return new RequestedSecret(false, new EncryptedText(string.Empty), "Failed to get the API key due to an API issue."); + } + + var secret = await result.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions); + if (!secret.Success && !isTrying) + this.logger!.LogError($"Failed to get the API key for secret ID '{secretId.SecretId}': '{secret.Issue}'"); + + return secret; + } + + /// + /// Try to store the API key for the given secret ID. + /// + /// The secret ID to store the API key for. + /// The API key to store. + /// The store secret response. + public async Task SetAPIKey(ISecretId secretId, string key) + { + var encryptedKey = await this.encryptor!.Encrypt(key); + var request = new StoreSecretRequest($"provider::{secretId.SecretId}::{secretId.SecretName}::api_key", Environment.UserName, encryptedKey); + var result = await this.http.PostAsJsonAsync("/secrets/store", request, this.jsonRustSerializerOptions); + if (!result.IsSuccessStatusCode) + { + this.logger!.LogError($"Failed to store the API key for secret ID '{secretId.SecretId}' due to an API issue: '{result.StatusCode}'"); + return new StoreSecretResponse(false, "Failed to get the API key due to an API issue."); + } + + var state = await result.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions); + if (!state.Success) + this.logger!.LogError($"Failed to store the API key for secret ID '{secretId.SecretId}': '{state.Issue}'"); + + return state; + } + + /// + /// Tries to delete the API key for the given secret ID. + /// + /// The secret ID to delete the API key for. + /// The delete secret response. + public async Task DeleteAPIKey(ISecretId secretId) + { + var request = new SelectSecretRequest($"provider::{secretId.SecretId}::{secretId.SecretName}::api_key", Environment.UserName, false); + var result = await this.http.PostAsJsonAsync("/secrets/delete", request, this.jsonRustSerializerOptions); + if (!result.IsSuccessStatusCode) + { + this.logger!.LogError($"Failed to delete the API key for secret ID '{secretId.SecretId}' due to an API issue: '{result.StatusCode}'"); + return new DeleteSecretResponse{Success = false, WasEntryFound = false, Issue = "Failed to delete the API key due to an API issue."}; + } + + var state = await result.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions); + if (!state.Success) + this.logger!.LogError($"Failed to delete the API key for secret ID '{secretId.SecretId}': '{state.Issue}'"); + + return state; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RustService.App.cs b/app/MindWork AI Studio/Tools/RustService.App.cs new file mode 100644 index 00000000..ea27f6d0 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RustService.App.cs @@ -0,0 +1,120 @@ +using System.Security.Cryptography; + +namespace AIStudio.Tools; + +public sealed partial class RustService +{ + public async Task GetAppPort() + { + Console.WriteLine("Trying to get app port from Rust runtime..."); + + // + // Note I: In the production environment, the Rust runtime is already running + // and listening on the given port. In the development environment, the IDE + // starts the Rust runtime in parallel with the .NET runtime. Since the + // Rust runtime needs some time to start, we have to wait for it to be ready. + // + const int MAX_TRIES = 160; + var tris = 0; + var wait4Try = TimeSpan.FromMilliseconds(250); + var url = new Uri($"https://127.0.0.1:{this.apiPort}/system/dotnet/port"); + while (tris++ < MAX_TRIES) + { + // + // Note II: We use a new HttpClient instance for each try to avoid + // .NET is caching the result. When we use the same HttpClient + // instance, we would always get the same result (403 forbidden), + // without even trying to connect to the Rust server. + // + + using var initialHttp = new HttpClient(new HttpClientHandler + { + // + // Note III: We have to create also a new HttpClientHandler instance + // for each try to avoid .NET is caching the result. This is necessary + // because it gets disposed when the HttpClient instance gets disposed. + // + ServerCertificateCustomValidationCallback = (_, certificate, _, _) => + { + if(certificate is null) + return false; + + var currentCertificateFingerprint = certificate.GetCertHashString(HashAlgorithmName.SHA256); + return currentCertificateFingerprint == this.certificateFingerprint; + } + }); + + initialHttp.DefaultRequestVersion = Version.Parse("2.0"); + initialHttp.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrHigher; + initialHttp.DefaultRequestHeaders.AddApiToken(); + + try + { + var response = await initialHttp.GetAsync(url); + if (!response.IsSuccessStatusCode) + { + Console.WriteLine($"Try {tris}/{MAX_TRIES} to get the app port from Rust runtime"); + await Task.Delay(wait4Try); + continue; + } + + var appPortContent = await response.Content.ReadAsStringAsync(); + var appPort = int.Parse(appPortContent); + Console.WriteLine($"Received app port from Rust runtime: '{appPort}'"); + return appPort; + } + catch (Exception e) + { + Console.WriteLine($"Error: Was not able to get the app port from Rust runtime: '{e.Message}'"); + Console.WriteLine(e.InnerException); + throw; + } + } + + Console.WriteLine("Failed to receive the app port from Rust runtime."); + return 0; + } + + public async Task AppIsReady() + { + const string URL = "/system/dotnet/ready"; + this.logger!.LogInformation("Notifying Rust runtime that the app is ready."); + try + { + var response = await this.http.GetAsync(URL); + if (!response.IsSuccessStatusCode) + { + this.logger!.LogError($"Failed to notify Rust runtime that the app is ready: '{response.StatusCode}'"); + } + } + catch (Exception e) + { + this.logger!.LogError(e, "Failed to notify the Rust runtime that the app is ready."); + throw; + } + } + + public async Task GetConfigDirectory() + { + var response = await this.http.GetAsync("/system/directories/config"); + if (!response.IsSuccessStatusCode) + { + this.logger!.LogError($"Failed to get the config directory from Rust: '{response.StatusCode}'"); + return string.Empty; + } + + return await response.Content.ReadAsStringAsync(); + } + + public async Task GetDataDirectory() + { + var response = await this.http.GetAsync("/system/directories/data"); + if (!response.IsSuccessStatusCode) + { + this.logger!.LogError($"Failed to get the data directory from Rust: '{response.StatusCode}'"); + return string.Empty; + } + + return await response.Content.ReadAsStringAsync(); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RustService.Clipboard.cs b/app/MindWork AI Studio/Tools/RustService.Clipboard.cs new file mode 100644 index 00000000..d3e6520a --- /dev/null +++ b/app/MindWork AI Studio/Tools/RustService.Clipboard.cs @@ -0,0 +1,50 @@ +using AIStudio.Tools.Rust; + +namespace AIStudio.Tools; + +public sealed partial class RustService +{ + /// + /// Tries to copy the given text to the clipboard. + /// + /// The snackbar to show the result. + /// The text to copy to the clipboard. + public async Task CopyText2Clipboard(ISnackbar snackbar, string text) + { + var message = "Successfully copied the text to your clipboard"; + var iconColor = Color.Error; + var severity = Severity.Error; + try + { + var encryptedText = await text.Encrypt(this.encryptor!); + var response = await this.http.PostAsync("/clipboard/set", new StringContent(encryptedText.EncryptedData)); + if (!response.IsSuccessStatusCode) + { + this.logger!.LogError($"Failed to copy the text to the clipboard due to an network error: '{response.StatusCode}'"); + message = "Failed to copy the text to your clipboard."; + return; + } + + var state = await response.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions); + if (!state.Success) + { + this.logger!.LogError("Failed to copy the text to the clipboard."); + message = "Failed to copy the text to your clipboard."; + return; + } + + iconColor = Color.Success; + severity = Severity.Success; + this.logger!.LogDebug("Successfully copied the text to the clipboard."); + } + finally + { + snackbar.Add(message, severity, config => + { + config.Icon = Icons.Material.Filled.ContentCopy; + config.IconSize = Size.Large; + config.IconColor = iconColor; + }); + } + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RustService.FileSystem.cs b/app/MindWork AI Studio/Tools/RustService.FileSystem.cs new file mode 100644 index 00000000..bd4c26a9 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RustService.FileSystem.cs @@ -0,0 +1,32 @@ +using AIStudio.Tools.Rust; + +namespace AIStudio.Tools; + +public sealed partial class RustService +{ + public async Task SelectDirectory(string title, string? initialDirectory = null) + { + PreviousDirectory? previousDirectory = initialDirectory is null ? null : new (initialDirectory); + var result = await this.http.PostAsJsonAsync($"/select/directory?title={title}", previousDirectory, this.jsonRustSerializerOptions); + if (!result.IsSuccessStatusCode) + { + this.logger!.LogError($"Failed to select a directory: '{result.StatusCode}'"); + return new DirectorySelectionResponse(true, string.Empty); + } + + return await result.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions); + } + + public async Task SelectFile(string title, string? initialFile = null) + { + PreviousFile? previousFile = initialFile is null ? null : new (initialFile); + var result = await this.http.PostAsJsonAsync($"/select/file?title={title}", previousFile, this.jsonRustSerializerOptions); + if (!result.IsSuccessStatusCode) + { + this.logger!.LogError($"Failed to select a file: '{result.StatusCode}'"); + return new FileSelectionResponse(true, string.Empty); + } + + return await result.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RustService.Secrets.cs b/app/MindWork AI Studio/Tools/RustService.Secrets.cs new file mode 100644 index 00000000..a70a1273 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RustService.Secrets.cs @@ -0,0 +1,76 @@ +using AIStudio.Tools.Rust; + +namespace AIStudio.Tools; + +public sealed partial class RustService +{ + /// + /// Try to get the secret data for the given secret ID. + /// + /// The secret ID to get the data for. + /// Indicates if we are trying to get the data. In that case, we don't log errors. + /// The requested secret. + public async Task GetSecret(ISecretId secretId, bool isTrying = false) + { + var secretRequest = new SelectSecretRequest($"secret::{secretId.SecretId}::{secretId.SecretName}", Environment.UserName, isTrying); + var result = await this.http.PostAsJsonAsync("/secrets/get", secretRequest, this.jsonRustSerializerOptions); + if (!result.IsSuccessStatusCode) + { + if(!isTrying) + this.logger!.LogError($"Failed to get the secret data for secret ID '{secretId.SecretId}' due to an API issue: '{result.StatusCode}'"); + return new RequestedSecret(false, new EncryptedText(string.Empty), "Failed to get the secret data due to an API issue."); + } + + var secret = await result.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions); + if (!secret.Success && !isTrying) + this.logger!.LogError($"Failed to get the secret data for secret ID '{secretId.SecretId}': '{secret.Issue}'"); + + return secret; + } + + /// + /// Try to store the secret data for the given secret ID. + /// + /// The secret ID to store the data for. + /// The data to store. + /// The store secret response. + public async Task SetSecret(ISecretId secretId, string secretData) + { + var encryptedSecret = await this.encryptor!.Encrypt(secretData); + var request = new StoreSecretRequest($"secret::{secretId.SecretId}::{secretId.SecretName}", Environment.UserName, encryptedSecret); + var result = await this.http.PostAsJsonAsync("/secrets/store", request, this.jsonRustSerializerOptions); + if (!result.IsSuccessStatusCode) + { + this.logger!.LogError($"Failed to store the secret data for secret ID '{secretId.SecretId}' due to an API issue: '{result.StatusCode}'"); + return new StoreSecretResponse(false, "Failed to get the secret data due to an API issue."); + } + + var state = await result.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions); + if (!state.Success) + this.logger!.LogError($"Failed to store the secret data for secret ID '{secretId.SecretId}': '{state.Issue}'"); + + return state; + } + + /// + /// Tries to delete the secret data for the given secret ID. + /// + /// The secret ID to delete the data for. + /// The delete secret response. + public async Task DeleteSecret(ISecretId secretId) + { + var request = new SelectSecretRequest($"secret::{secretId.SecretId}::{secretId.SecretName}", Environment.UserName, false); + var result = await this.http.PostAsJsonAsync("/secrets/delete", request, this.jsonRustSerializerOptions); + if (!result.IsSuccessStatusCode) + { + this.logger!.LogError($"Failed to delete the secret data for secret ID '{secretId.SecretId}' due to an API issue: '{result.StatusCode}'"); + return new DeleteSecretResponse{Success = false, WasEntryFound = false, Issue = "Failed to delete the secret data due to an API issue."}; + } + + var state = await result.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions); + if (!state.Success) + this.logger!.LogError($"Failed to delete the secret data for secret ID '{secretId.SecretId}': '{state.Issue}'"); + + return state; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RustService.Updates.cs b/app/MindWork AI Studio/Tools/RustService.Updates.cs new file mode 100644 index 00000000..edb14663 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RustService.Updates.cs @@ -0,0 +1,40 @@ +using AIStudio.Tools.Rust; + +namespace AIStudio.Tools; + +public sealed partial class RustService +{ + public async Task CheckForUpdate() + { + try + { + var cts = new CancellationTokenSource(TimeSpan.FromSeconds(45)); + var response = await this.http.GetFromJsonAsync("/updates/check", this.jsonRustSerializerOptions, cts.Token); + this.logger!.LogInformation($"Checked for an update: update available='{response.UpdateIsAvailable}'; error='{response.Error}'; next version='{response.NewVersion}'; changelog len='{response.Changelog.Length}'"); + return response; + } + catch (Exception e) + { + this.logger!.LogError(e, "Failed to check for an update."); + return new UpdateResponse + { + Error = true, + UpdateIsAvailable = false, + }; + } + } + + public async Task InstallUpdate() + { + try + { + var cts = new CancellationTokenSource(); + await this.http.GetAsync("/updates/install", cts.Token); + } + catch (Exception e) + { + Console.WriteLine(e); + throw; + } + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RustService.cs b/app/MindWork AI Studio/Tools/RustService.cs index 99476e52..08d68d31 100644 --- a/app/MindWork AI Studio/Tools/RustService.cs +++ b/app/MindWork AI Studio/Tools/RustService.cs @@ -1,8 +1,6 @@ using System.Security.Cryptography; using System.Text.Json; -using AIStudio.Tools.Rust; - // ReSharper disable NotAccessedPositionalProperty.Local namespace AIStudio.Tools; @@ -10,7 +8,7 @@ namespace AIStudio.Tools; /// /// Calling Rust functions. /// -public sealed class RustService : IDisposable +public sealed partial class RustService : IDisposable { private readonly HttpClient http; @@ -60,281 +58,6 @@ public sealed class RustService : IDisposable { this.encryptor = encryptionService; } - - public async Task GetAppPort() - { - Console.WriteLine("Trying to get app port from Rust runtime..."); - - // - // Note I: In the production environment, the Rust runtime is already running - // and listening on the given port. In the development environment, the IDE - // starts the Rust runtime in parallel with the .NET runtime. Since the - // Rust runtime needs some time to start, we have to wait for it to be ready. - // - const int MAX_TRIES = 160; - var tris = 0; - var wait4Try = TimeSpan.FromMilliseconds(250); - var url = new Uri($"https://127.0.0.1:{this.apiPort}/system/dotnet/port"); - while (tris++ < MAX_TRIES) - { - // - // Note II: We use a new HttpClient instance for each try to avoid - // .NET is caching the result. When we use the same HttpClient - // instance, we would always get the same result (403 forbidden), - // without even trying to connect to the Rust server. - // - - using var initialHttp = new HttpClient(new HttpClientHandler - { - // - // Note III: We have to create also a new HttpClientHandler instance - // for each try to avoid .NET is caching the result. This is necessary - // because it gets disposed when the HttpClient instance gets disposed. - // - ServerCertificateCustomValidationCallback = (_, certificate, _, _) => - { - if(certificate is null) - return false; - - var currentCertificateFingerprint = certificate.GetCertHashString(HashAlgorithmName.SHA256); - return currentCertificateFingerprint == this.certificateFingerprint; - } - }); - - initialHttp.DefaultRequestVersion = Version.Parse("2.0"); - initialHttp.DefaultVersionPolicy = HttpVersionPolicy.RequestVersionOrHigher; - initialHttp.DefaultRequestHeaders.AddApiToken(); - - try - { - var response = await initialHttp.GetAsync(url); - if (!response.IsSuccessStatusCode) - { - Console.WriteLine($"Try {tris}/{MAX_TRIES} to get the app port from Rust runtime"); - await Task.Delay(wait4Try); - continue; - } - - var appPortContent = await response.Content.ReadAsStringAsync(); - var appPort = int.Parse(appPortContent); - Console.WriteLine($"Received app port from Rust runtime: '{appPort}'"); - return appPort; - } - catch (Exception e) - { - Console.WriteLine($"Error: Was not able to get the app port from Rust runtime: '{e.Message}'"); - Console.WriteLine(e.InnerException); - throw; - } - } - - Console.WriteLine("Failed to receive the app port from Rust runtime."); - return 0; - } - - public async Task AppIsReady() - { - const string URL = "/system/dotnet/ready"; - this.logger!.LogInformation("Notifying Rust runtime that the app is ready."); - try - { - var response = await this.http.GetAsync(URL); - if (!response.IsSuccessStatusCode) - { - this.logger!.LogError($"Failed to notify Rust runtime that the app is ready: '{response.StatusCode}'"); - } - } - catch (Exception e) - { - this.logger!.LogError(e, "Failed to notify the Rust runtime that the app is ready."); - throw; - } - } - - public async Task GetConfigDirectory() - { - var response = await this.http.GetAsync("/system/directories/config"); - if (!response.IsSuccessStatusCode) - { - this.logger!.LogError($"Failed to get the config directory from Rust: '{response.StatusCode}'"); - return string.Empty; - } - - return await response.Content.ReadAsStringAsync(); - } - - public async Task GetDataDirectory() - { - var response = await this.http.GetAsync("/system/directories/data"); - if (!response.IsSuccessStatusCode) - { - this.logger!.LogError($"Failed to get the data directory from Rust: '{response.StatusCode}'"); - return string.Empty; - } - - return await response.Content.ReadAsStringAsync(); - } - - /// - /// Tries to copy the given text to the clipboard. - /// - /// The snackbar to show the result. - /// The text to copy to the clipboard. - public async Task CopyText2Clipboard(ISnackbar snackbar, string text) - { - var message = "Successfully copied the text to your clipboard"; - var iconColor = Color.Error; - var severity = Severity.Error; - try - { - var encryptedText = await text.Encrypt(this.encryptor!); - var response = await this.http.PostAsync("/clipboard/set", new StringContent(encryptedText.EncryptedData)); - if (!response.IsSuccessStatusCode) - { - this.logger!.LogError($"Failed to copy the text to the clipboard due to an network error: '{response.StatusCode}'"); - message = "Failed to copy the text to your clipboard."; - return; - } - - var state = await response.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions); - if (!state.Success) - { - this.logger!.LogError("Failed to copy the text to the clipboard."); - message = "Failed to copy the text to your clipboard."; - return; - } - - iconColor = Color.Success; - severity = Severity.Success; - this.logger!.LogDebug("Successfully copied the text to the clipboard."); - } - finally - { - snackbar.Add(message, severity, config => - { - config.Icon = Icons.Material.Filled.ContentCopy; - config.IconSize = Size.Large; - config.IconColor = iconColor; - }); - } - } - - public async Task CheckForUpdate() - { - try - { - var cts = new CancellationTokenSource(TimeSpan.FromSeconds(45)); - var response = await this.http.GetFromJsonAsync("/updates/check", this.jsonRustSerializerOptions, cts.Token); - this.logger!.LogInformation($"Checked for an update: update available='{response.UpdateIsAvailable}'; error='{response.Error}'; next version='{response.NewVersion}'; changelog len='{response.Changelog.Length}'"); - return response; - } - catch (Exception e) - { - this.logger!.LogError(e, "Failed to check for an update."); - return new UpdateResponse - { - Error = true, - UpdateIsAvailable = false, - }; - } - } - - public async Task InstallUpdate() - { - try - { - var cts = new CancellationTokenSource(); - await this.http.GetAsync("/updates/install", cts.Token); - } - catch (Exception e) - { - Console.WriteLine(e); - throw; - } - } - - /// - /// Try to get the API key for the given secret ID. - /// - /// The secret ID to get the API key for. - /// Indicates if we are trying to get the API key. In that case, we don't log errors. - /// The requested secret. - public async Task GetAPIKey(ISecretId secretId, bool isTrying = false) - { - var secretRequest = new SelectSecretRequest($"provider::{secretId.SecretId}::{secretId.SecretName}::api_key", Environment.UserName, isTrying); - var result = await this.http.PostAsJsonAsync("/secrets/get", secretRequest, this.jsonRustSerializerOptions); - if (!result.IsSuccessStatusCode) - { - if(!isTrying) - this.logger!.LogError($"Failed to get the API key for secret ID '{secretId.SecretId}' due to an API issue: '{result.StatusCode}'"); - return new RequestedSecret(false, new EncryptedText(string.Empty), "Failed to get the API key due to an API issue."); - } - - var secret = await result.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions); - if (!secret.Success && !isTrying) - this.logger!.LogError($"Failed to get the API key for secret ID '{secretId.SecretId}': '{secret.Issue}'"); - - return secret; - } - - /// - /// Try to store the API key for the given secret ID. - /// - /// The secret ID to store the API key for. - /// The API key to store. - /// The store secret response. - public async Task SetAPIKey(ISecretId secretId, string key) - { - var encryptedKey = await this.encryptor!.Encrypt(key); - var request = new StoreSecretRequest($"provider::{secretId.SecretId}::{secretId.SecretName}::api_key", Environment.UserName, encryptedKey); - var result = await this.http.PostAsJsonAsync("/secrets/store", request, this.jsonRustSerializerOptions); - if (!result.IsSuccessStatusCode) - { - this.logger!.LogError($"Failed to store the API key for secret ID '{secretId.SecretId}' due to an API issue: '{result.StatusCode}'"); - return new StoreSecretResponse(false, "Failed to get the API key due to an API issue."); - } - - var state = await result.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions); - if (!state.Success) - this.logger!.LogError($"Failed to store the API key for secret ID '{secretId.SecretId}': '{state.Issue}'"); - - return state; - } - - /// - /// Tries to delete the API key for the given secret ID. - /// - /// The secret ID to delete the API key for. - /// The delete secret response. - public async Task DeleteAPIKey(ISecretId secretId) - { - var request = new SelectSecretRequest($"provider::{secretId.SecretId}::{secretId.SecretName}::api_key", Environment.UserName, false); - var result = await this.http.PostAsJsonAsync("/secrets/delete", request, this.jsonRustSerializerOptions); - if (!result.IsSuccessStatusCode) - { - this.logger!.LogError($"Failed to delete the API key for secret ID '{secretId.SecretId}' due to an API issue: '{result.StatusCode}'"); - return new DeleteSecretResponse{Success = false, WasEntryFound = false, Issue = "Failed to delete the API key due to an API issue."}; - } - - var state = await result.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions); - if (!state.Success) - this.logger!.LogError($"Failed to delete the API key for secret ID '{secretId.SecretId}': '{state.Issue}'"); - - return state; - } - - public async Task SelectDirectory(string title, string? initialDirectory = null) - { - PreviousDirectory? previousDirectory = initialDirectory is null ? null : new (initialDirectory); - var result = await this.http.PostAsJsonAsync($"/select/directory?title={title}", previousDirectory, this.jsonRustSerializerOptions); - if (!result.IsSuccessStatusCode) - { - this.logger!.LogError($"Failed to select a directory: '{result.StatusCode}'"); - return new DirectorySelectionResponse(true, string.Empty); - } - - return await result.Content.ReadFromJsonAsync(this.jsonRustSerializerOptions); - } #region IDisposable diff --git a/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs b/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs new file mode 100644 index 00000000..2ba77270 --- /dev/null +++ b/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs @@ -0,0 +1,149 @@ +using ERI_Client.V1; + +namespace AIStudio.Tools.Validation; + +public sealed class DataSourceValidation +{ + public Func GetSecretStorageIssue { get; init; } = () => string.Empty; + + public Func GetPreviousDataSourceName { get; init; } = () => string.Empty; + + public Func> GetUsedDataSourceNames { get; init; } = () => []; + + public Func GetAuthMethod { get; init; } = () => AuthMethod.NONE; + + public Func GetSelectedCloudEmbedding { get; init; } = () => false; + + public Func GetTestedConnection { get; init; } = () => false; + + public Func GetTestedConnectionResult { get; init; } = () => false; + + public Func> GetAvailableAuthMethods { get; init; } = () => []; + + public string? ValidatingHostname(string hostname) + { + if(string.IsNullOrWhiteSpace(hostname)) + return "Please enter a hostname, e.g., http://localhost:1234"; + + if(!hostname.StartsWith("http://", StringComparison.InvariantCultureIgnoreCase) && !hostname.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase)) + return "The hostname must start with either http:// or https://"; + + if(!Uri.TryCreate(hostname, UriKind.Absolute, out _)) + return "The hostname is not a valid HTTP(S) URL."; + + return null; + } + + public string? ValidatePort(int port) + { + if(port is < 1 or > 65535) + return "The port must be between 1 and 65535."; + + return null; + } + + public string? ValidateUsername(string username) + { + if(this.GetAuthMethod() is not AuthMethod.USERNAME_PASSWORD) + return null; + + if(string.IsNullOrWhiteSpace(username)) + return "The username must not be empty."; + + return null; + } + + public string? ValidatingSecret(string secret) + { + var authMethod = this.GetAuthMethod(); + if(authMethod is AuthMethod.NONE or AuthMethod.KERBEROS) + return null; + + var secretStorageIssue = this.GetSecretStorageIssue(); + if(!string.IsNullOrWhiteSpace(secretStorageIssue)) + return secretStorageIssue; + + if (string.IsNullOrWhiteSpace(secret)) + return authMethod switch + { + AuthMethod.TOKEN => "Please enter your secure access token.", + AuthMethod.USERNAME_PASSWORD => "Please enter your password.", + + _ => "Please enter the secret necessary for authentication." + }; + + return null; + } + + public string? ValidatingName(string dataSourceName) + { + if(string.IsNullOrWhiteSpace(dataSourceName)) + return "The name must not be empty."; + + if (dataSourceName.Length > 40) + return "The name must not exceed 40 characters."; + + var lowerName = dataSourceName.ToLowerInvariant(); + if(lowerName != this.GetPreviousDataSourceName() && this.GetUsedDataSourceNames().Contains(lowerName)) + return "The name is already used by another data source. Please choose a different name."; + + return null; + } + + public string? ValidatePath(string path) + { + if(string.IsNullOrWhiteSpace(path)) + return "The path must not be empty. Please select a directory."; + + if(!Directory.Exists(path)) + return "The path does not exist. Please select a valid directory."; + + return null; + } + + public string? ValidateFilePath(string filePath) + { + if(string.IsNullOrWhiteSpace(filePath)) + return "The file path must not be empty. Please select a file."; + + if(!File.Exists(filePath)) + return "The file does not exist. Please select a valid file."; + + return null; + } + + public string? ValidateEmbeddingId(string embeddingId) + { + if(string.IsNullOrWhiteSpace(embeddingId)) + return "Please select an embedding provider."; + + return null; + } + + public string? ValidateUserAcknowledgedCloudEmbedding(bool value) + { + if(this.GetSelectedCloudEmbedding() && !value) + return "Please acknowledge that you are aware of the cloud embedding implications."; + + return null; + } + + public string? ValidateTestedConnection() + { + if(!this.GetTestedConnection()) + return "Please test the connection before saving."; + + if(!this.GetTestedConnectionResult()) + return "The connection test failed. Please check the connection settings."; + + return null; + } + + public string? ValidateAuthMethod(AuthMethod authMethod) + { + if(!this.GetAvailableAuthMethods().Contains(authMethod)) + return "Please select one valid authentication method."; + + return null; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/packages.lock.json b/app/MindWork AI Studio/packages.lock.json index 8ad3bbb5..d1c6dae4 100644 --- a/app/MindWork AI Studio/packages.lock.json +++ b/app/MindWork AI Studio/packages.lock.json @@ -205,6 +205,9 @@ "type": "Transitive", "resolved": "0.16.9", "contentHash": "7WaVMHklpT3Ye2ragqRIwlFRsb6kOk63BOGADV0fan3ulVfGLUYkDi5yNUsZS/7FVNkWbtHAlDLmu4WnHGfqvQ==" + }, + "ericlientv1": { + "type": "Project" } }, "net8.0/osx-arm64": {} diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md new file mode 100644 index 00000000..38c6e0f9 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md @@ -0,0 +1,3 @@ +# v0.9.26, build 201 (2025-01-xx xx:xx UTC) +- Added the ability to configure local and remote (ERI) data sources in the settings as a preview feature behind the RAG feature flag. +- Fixed a bug in the ERI server assistant that allowed an empty directory as a base directory for the code generation. \ No newline at end of file diff --git a/runtime/src/app_window.rs b/runtime/src/app_window.rs index e83b2b57..f6af44cd 100644 --- a/runtime/src/app_window.rs +++ b/runtime/src/app_window.rs @@ -270,4 +270,53 @@ pub struct PreviousDirectory { pub struct DirectorySelectionResponse { user_cancelled: bool, selected_directory: String, +} + +/// Let the user select a file. +#[post("/select/file?", data = "<previous_file>")] +pub fn select_file(_token: APIToken, title: &str, previous_file: Option<Json<PreviousFile>>) -> Json<FileSelectionResponse> { + let file_path = match previous_file { + Some(previous) => { + let previous_path = previous.file_path.as_str(); + FileDialogBuilder::new() + .set_title(title) + .set_directory(previous_path) + .pick_file() + }, + + None => { + FileDialogBuilder::new() + .set_title(title) + .pick_file() + }, + }; + + match file_path { + Some(path) => { + info!("User selected file: {path:?}"); + Json(FileSelectionResponse { + user_cancelled: false, + selected_file_path: path.to_str().unwrap().to_string(), + }) + }, + + None => { + info!("User cancelled file selection."); + Json(FileSelectionResponse { + user_cancelled: true, + selected_file_path: String::from(""), + }) + }, + } +} + +#[derive(Clone, Deserialize)] +pub struct PreviousFile { + file_path: String, +} + +#[derive(Serialize)] +pub struct FileSelectionResponse { + user_cancelled: bool, + selected_file_path: String, } \ No newline at end of file diff --git a/runtime/src/runtime_api.rs b/runtime/src/runtime_api.rs index 963900d7..26bbbf90 100644 --- a/runtime/src/runtime_api.rs +++ b/runtime/src/runtime_api.rs @@ -85,6 +85,7 @@ pub fn start_runtime_api() { crate::app_window::check_for_update, crate::app_window::install_update, crate::app_window::select_directory, + crate::app_window::select_file, crate::secret::get_secret, crate::secret::store_secret, crate::secret::delete_secret, From 48874d617aff22db1c11101a59e9645e8d4a2b35 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 13 Jan 2025 19:58:52 +0100 Subject: [PATCH 002/110] Added a confirmation dialog for deleting ERI server presets (#260) --- .../Assistants/ERI/AssistantERI.razor.cs | 10 ++++++++++ app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md | 1 + 2 files changed, 11 insertions(+) diff --git a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs index ca5b4f98..3c94a4cd 100644 --- a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs +++ b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs @@ -476,6 +476,16 @@ public partial class AssistantERI : AssistantBaseCore if(this.selectedERIServer is null) return; + var dialogParameters = new DialogParameters + { + { "Message", $"Are you sure you want to delete the ERI server preset '{this.selectedERIServer.ServerName}'?" }, + }; + + var dialogReference = await this.DialogService.ShowAsync<ConfirmDialog>("Delete ERI server preset", dialogParameters, DialogOptions.FULLSCREEN); + var dialogResult = await dialogReference.Result; + if (dialogResult is null || dialogResult.Canceled) + return; + this.SettingsManager.ConfigurationData.ERI.ERIServers.Remove(this.selectedERIServer); this.selectedERIServer = null; this.ResetForm(); diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md index 38c6e0f9..fbf3ff78 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md @@ -1,3 +1,4 @@ # v0.9.26, build 201 (2025-01-xx xx:xx UTC) - Added the ability to configure local and remote (ERI) data sources in the settings as a preview feature behind the RAG feature flag. +- Fixed the ERI server assistant to ask for confirmation before deleting a ERI server preset. - Fixed a bug in the ERI server assistant that allowed an empty directory as a base directory for the code generation. \ No newline at end of file From ae72c50236f72e2a6d50096cbc6a8017aabc4b10 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 13 Jan 2025 20:10:58 +0100 Subject: [PATCH 003/110] Fixed the embedding dialog to store the selected embedding model (#261) --- .../Dialogs/EmbeddingProviderDialog.razor.cs | 13 ++++++++++++- app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md | 3 ++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs b/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs index 14e8cc28..399c9b87 100644 --- a/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs @@ -112,13 +112,24 @@ public partial class EmbeddingProviderDialog : ComponentBase, ISecretId private EmbeddingProvider CreateEmbeddingProviderSettings() { var cleanedHostname = this.DataHostname.Trim(); + Model model = default; + if(this.DataLLMProvider is LLMProviders.SELF_HOSTED) + { + if (this.DataHost is Host.OLLAMA) + model = new Model(this.dataManuallyModel, null); + else if (this.DataHost is Host.LM_STUDIO) + model = this.DataModel; + } + else + model = this.DataModel; + return new() { Num = this.DataNum, Id = this.DataId, Name = this.DataName, UsedLLMProvider = this.DataLLMProvider, - Model = this.DataLLMProvider is LLMProviders.SELF_HOSTED ? new Model(this.dataManuallyModel, null) : this.DataModel, + Model = model, IsSelfHosted = this.DataLLMProvider is LLMProviders.SELF_HOSTED, Hostname = cleanedHostname.EndsWith('/') ? cleanedHostname[..^1] : cleanedHostname, Host = this.DataHost, diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md index fbf3ff78..c23e8400 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md @@ -1,4 +1,5 @@ # v0.9.26, build 201 (2025-01-xx xx:xx UTC) - Added the ability to configure local and remote (ERI) data sources in the settings as a preview feature behind the RAG feature flag. - Fixed the ERI server assistant to ask for confirmation before deleting a ERI server preset. -- Fixed a bug in the ERI server assistant that allowed an empty directory as a base directory for the code generation. \ No newline at end of file +- Fixed a bug in the ERI server assistant that allowed an empty directory as a base directory for the code generation. +- Fixed the embedding dialog to store the selected embedding model when using LM Studio as host. \ No newline at end of file From ebe00812e2d52aabeef3d109a1532f8f21a69e16 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 13 Jan 2025 20:20:40 +0100 Subject: [PATCH 004/110] Prepared release v0.9.26 (#262) --- README.md | 2 +- app/MindWork AI Studio/Components/Changelog.Logs.cs | 1 + app/MindWork AI Studio/packages.lock.json | 2 +- app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md | 2 +- metadata.txt | 10 +++++----- runtime/Cargo.lock | 2 +- runtime/Cargo.toml | 2 +- runtime/tauri.conf.json | 2 +- 8 files changed, 12 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index dc9f053d..d906b585 100644 --- a/README.md +++ b/README.md @@ -11,7 +11,7 @@ Things we are currently working on: - [x] ~~App: Add an option to show preview features (PR [#222](https://github.com/MindWorkAI/AI-Studio/pull/222))~~ - [x] ~~App: Configure embedding providers (PR [#224](https://github.com/MindWorkAI/AI-Studio/pull/224))~~ - [x] ~~App: Implement an [ERI](https://github.com/MindWorkAI/ERI) server coding assistant (PR [#231](https://github.com/MindWorkAI/AI-Studio/pull/231))~~ - - [ ] App: Management of data sources (local & external data via [ERI](https://github.com/MindWorkAI/ERI)) + - [x] ~~App: Management of data sources (local & external data via [ERI](https://github.com/MindWorkAI/ERI)) (PR [#259](https://github.com/MindWorkAI/AI-Studio/pull/259))~~ - [ ] Runtime: Extract data from txt / md / pdf / docx / xlsx files - [ ] (*Optional*) Runtime: Implement internal embedding provider through [fastembed-rs](https://github.com/Anush008/fastembed-rs) - [ ] App: Implement external embedding providers diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index ea205478..b8a63204 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,6 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ + new (201, "v0.9.26, build 201 (2025-01-13 19:11 UTC)", "v0.9.26.md"), new (200, "v0.9.25, build 200 (2025-01-04 18:33 UTC)", "v0.9.25.md"), new (199, "v0.9.24, build 199 (2025-01-04 11:40 UTC)", "v0.9.24.md"), new (198, "v0.9.23, build 198 (2025-01-02 19:39 UTC)", "v0.9.23.md"), diff --git a/app/MindWork AI Studio/packages.lock.json b/app/MindWork AI Studio/packages.lock.json index d1c6dae4..a4133218 100644 --- a/app/MindWork AI Studio/packages.lock.json +++ b/app/MindWork AI Studio/packages.lock.json @@ -210,6 +210,6 @@ "type": "Project" } }, - "net8.0/osx-arm64": {} + "net8.0/osx-x64": {} } } \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md index c23e8400..138a2392 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.26.md @@ -1,4 +1,4 @@ -# v0.9.26, build 201 (2025-01-xx xx:xx UTC) +# v0.9.26, build 201 (2025-01-13 19:11 UTC) - Added the ability to configure local and remote (ERI) data sources in the settings as a preview feature behind the RAG feature flag. - Fixed the ERI server assistant to ask for confirmation before deleting a ERI server preset. - Fixed a bug in the ERI server assistant that allowed an empty directory as a base directory for the code generation. diff --git a/metadata.txt b/metadata.txt index b43df068..75d83a3b 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ -0.9.25 -2025-01-04 18:33:07 UTC -200 +0.9.26 +2025-01-13 19:11:57 UTC +201 8.0.111 (commit f3835a7fb4) 8.0.11 (commit 9cb3b725e3) -1.83.0 (commit 90b35a623) +1.84.0 (commit 9fc6b4312) 7.15.0 1.8.1 -e4b1ea32fb6, release +ae72c50236f, release diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index a7c4a12f..66c38b95 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -2319,7 +2319,7 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mindwork-ai-studio" -version = "0.9.25" +version = "0.9.26" dependencies = [ "aes", "arboard", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index c208b1b6..a7ffac00 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindwork-ai-studio" -version = "0.9.25" +version = "0.9.26" edition = "2021" description = "MindWork AI Studio" authors = ["Thorsten Sommer"] diff --git a/runtime/tauri.conf.json b/runtime/tauri.conf.json index 7b802a59..7d5e28bc 100644 --- a/runtime/tauri.conf.json +++ b/runtime/tauri.conf.json @@ -6,7 +6,7 @@ }, "package": { "productName": "MindWork AI Studio", - "version": "0.9.25" + "version": "0.9.26" }, "tauri": { "allowlist": { From f50e0416401d311f375ba500d4e5b8d713c4e1ae Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 21 Jan 2025 09:13:16 +0100 Subject: [PATCH 005/110] Updated introduction (#264) --- README.md | 25 ++++++++++++------- .../Components/Vision.razor.cs | 14 +++++++---- app/MindWork AI Studio/Pages/Home.razor.cs | 5 ++-- 3 files changed, 28 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index d906b585..79aa3526 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # MindWork AI Studio +Are you new here? [Read here](#what-is-ai-studio) what AI Studio is. ## News Things we are currently working on: @@ -49,14 +50,17 @@ Features we have recently released: ![MindWork AI Studio - Home](documentation/AI%20Studio%20Home.png) ![MindWork AI Studio - Assistants](documentation/AI%20Studio%20Assistants.png) -MindWork AI Studio is a desktop application available for macOS, Windows, and Linux. It provides a unified chat interface for Large Language Models (LLMs). You bring your own API key for the respective LLM provider to use the models. The API keys are securely stored by the operating system. +MindWork AI Studio is a free desktop app for macOS, Windows, and Linux. It provides a unified user interface for interaction with Large Language Models (LLM). AI Studio also offers so-called assistants, where prompting is not necessary. You can think of AI Studio like an email program: you bring your own API key for the LLM of your choice and can then use these AI systems with AI Studio. Whether you want to use Google Gemini, OpenAI o1, or even your own local AI models. + +**Ready to get started 🤩?** [Download the appropriate setup for your operating system here](documentation/Setup.md). **Key advantages:** - **Free of charge**: The app is free to use, both for personal and commercial purposes. -- **Independence**: You are not tied to any single provider. Instead, you can choose the provider that best suits their needs. Right now, we support OpenAI (GPT4o etc.), Mistral, Anthropic (Claude), Google Gemini, xAI (Grok), and self-hosted models using [llama.cpp](https://github.com/ggerganov/llama.cpp), [ollama](https://github.com/ollama/ollama), [LM Studio](https://lmstudio.ai/), [Groq](https://groq.com/), or [Fireworks](https://fireworks.ai/). +- **Independence**: You are not tied to any single provider. Instead, you can choose the provider that best suits their needs. Right now, we support OpenAI (GPT4o, o1, etc.), Mistral, Anthropic (Claude), Google Gemini, xAI (Grok), and self-hosted models using [llama.cpp](https://github.com/ggerganov/llama.cpp), [ollama](https://github.com/ollama/ollama), [LM Studio](https://lmstudio.ai/), [Groq](https://groq.com/), or [Fireworks](https://fireworks.ai/). +- **Assistants**: You just want to quickly translate a text? AI Studio has so-called assistants for such and other tasks. No prompting is necessary when working with these assistants. - **Unrestricted usage**: Unlike services like ChatGPT, which impose limits after intensive use, MindWork AI Studio offers unlimited usage through the providers API. - **Cost-effective**: You only pay for what you use, which can be cheaper than monthly subscription services like ChatGPT Plus, especially if used infrequently. But beware, here be dragons: For extremely intensive usage, the API costs can be significantly higher. Unfortunately, providers currently do not offer a way to display current costs in the app. Therefore, check your account with the respective provider to see how your costs are developing. When available, use prepaid and set a cost limit. -- **Privacy**: The data entered into the app is not used for training by the providers since we are using the provider's API. +- **Privacy**: You can control which providers receive your data using the provider confidence settings. For example, you can set different protection levels for writing emails compared to general chats, etc. Additionally, most providers guarantee that they won't use your data to train new AI systems. - **Flexibility**: Choose the provider and model best suited for your current task. - **No bloatware**: The app requires minimal storage for installation and operates with low memory usage. Additionally, it has a minimal impact on system resources, which is beneficial for battery life. @@ -78,12 +82,15 @@ Your support, whether big or small, keeps the wheels turning and is deeply appre ## Planned Features Here's an exciting look at some of the features we're planning to add to AI Studio in future releases: -- **Integrating your data**: You should be able to integrate your data into AI Studio. For example, your PDF or Office files, or your Markdown notes. -- **Integration of enterprise data:** Soon, it will also be possible to integrate data from the corporate network using an interface that we have specified ([External Retrieval Interface](https://github.com/MindWorkAI/ERI), ERI for short). -- **Writing mode:** We want to integrate a writing mode that should support you in creating extensive works. We are thinking of comprehensive project proposals, tenders, or your next fantasy novel. -- **Browser usage:** We're trying to offer the features from AI Studio to you in the browser via a plugin, so we could use spell-checking or rewriting text directly in the browser. -- **Voice control:** You should be able to interact with the AI systems using your voice as well. To achieve this, we want to integrate voice input (speech-to-text) and output (text-to-speech). However, later on, it should also have a natural conversation flow, i.e., seamless conversation. -- **Email monitoring:** You should have the option to connect your email inboxes with AI Studio. The AI reads your emails and sends you a notification when something important happens. At the same time, you can access knowledge from your emails in your chats. +- **Integrating your data**: You'll be able to integrate your data into AI Studio, like your PDF or Office files, or your Markdown notes. +- **Integration of enterprise data:** It will soon be possible to integrate data from the corporate network using a specified interface ([External Retrieval Interface](https://github.com/MindWorkAI/ERI), ERI for short). This will likely require development work by the organization in question. +- **Useful assistants:** We'll develop more assistants for everyday tasks. +- **Writing mode:** We're integrating a writing mode to help you create extensive works, like comprehensive project proposals, tenders, or your next fantasy novel. +- **Specific requirements:** Want an assistant that suits your specific needs? We aim to offer a plugin architecture so organizations and enthusiasts can implement such ideas. +- **Voice control:** You'll interact with the AI systems using your voice. To achieve this, we want to integrate voice input (speech-to-text) and output (text-to-speech). However, later on, it should also have a natural conversation flow, i.e., seamless conversation. +- **Content creation:** There will be an interface for AI Studio to create content in other apps. You could, for example, create blog posts directly on the target platform or add entries to an internal knowledge management tool. This requires development work by the tool developers. +- **Email monitoring:** You can connect your email inboxes with AI Studio. The AI will read your emails and notify you of important events. You'll also be able to access knowledge from your emails in your chats. +- **Browser usage:** We're working on offering AI Studio features in your browser via a plugin, allowing, e.g., for spell-checking or text rewriting directly in the browser. Stay tuned for more updates and enhancements to make MindWork AI Studio even more powerful and versatile 🤩. diff --git a/app/MindWork AI Studio/Components/Vision.razor.cs b/app/MindWork AI Studio/Components/Vision.razor.cs index 9277c00a..2f7f2659 100644 --- a/app/MindWork AI Studio/Components/Vision.razor.cs +++ b/app/MindWork AI Studio/Components/Vision.razor.cs @@ -7,10 +7,14 @@ public partial class Vision : ComponentBase private static readonly TextItem[] ITEMS_VISION = [ new("Meet your needs", "Whatever your job or task is, MindWork AI Studio aims to meet your needs: whether you're a project manager, scientist, artist, author, software developer, or game developer."), - new("One stop shop", "The app will strive to fulfill all your AI needs: text-generation AI (LLM), image-generation AI, audio-generation AI (text-to-speech, potentially even text-to-music), and audio input (transcription, dictation). When there's a provider and an API available, we'll try to integrate it."), - new("Local file system", "When you wish, we aim to integrate your local system. Local documents could be incorporated using Retrieval-Augmented Generation (RAG), and we could directly save AI-generated content to your file system."), - new("Local AI systems", "Want to use AI systems locally and offline? We aim to make that possible too."), - new("Your AI systems", "Prefer to run your AI systems with providers like replicate.com? We plan to support that!"), - new("Assistants", "We aim to integrate specialized user interfaces as assistants. For example, a UI specifically for writing emails, or one designed for translating and correcting text, and more."), + new("Integrating your data", "You'll be able to integrate your data into AI Studio, like your PDF or Office files, or your Markdown notes."), + new("Integration of enterprise data", "It will soon be possible to integrate data from the corporate network using a specified interface (External Retrieval Interface, ERI for short). This will likely require development work by the organization in question."), + new("Useful assistants", "We'll develop more assistants for everyday tasks."), + new("Writing mode", "We're integrating a writing mode to help you create extensive works, like comprehensive project proposals, tenders, or your next fantasy novel."), + new("Specific requirements", "Want an assistant that suits your specific needs? We aim to offer a plugin architecture so organizations and enthusiasts can implement such ideas."), + new("Voice control", "You'll interact with the AI systems using your voice. To achieve this, we want to integrate voice input (speech-to-text) and output (text-to-speech). However, later on, it should also have a natural conversation flow, i.e., seamless conversation."), + new("Content creation", "There will be an interface for AI Studio to create content in other apps. You could, for example, create blog posts directly on the target platform or add entries to an internal knowledge management tool. This requires development work by the tool developers."), + new("Email monitoring", "You can connect your email inboxes with AI Studio. The AI will read your emails and notify you of important events. You'll also be able to access knowledge from your emails in your chats."), + new("Browser usage", "We're working on offering AI Studio features in your browser via a plugin, allowing, e.g., for spell-checking or text rewriting directly in the browser."), ]; } \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Home.razor.cs b/app/MindWork AI Studio/Pages/Home.razor.cs index 924767f1..2b2aa4a8 100644 --- a/app/MindWork AI Studio/Pages/Home.razor.cs +++ b/app/MindWork AI Studio/Pages/Home.razor.cs @@ -33,10 +33,11 @@ public partial class Home : ComponentBase private static readonly TextItem[] ITEMS_ADVANTAGES = [ new("Free of charge", "The app is free to use, both for personal and commercial purposes."), - new("Independence", "You are not tied to any single provider. Instead, you might choose the provider that best suits your needs. Right now, we support OpenAI (GPT4o etc.), Mistral, Anthropic (Claude), Google Gemini, xAI (Grok), and self-hosted models using llama.cpp, ollama, LM Studio, Groq, or Fireworks."), + new("Independence", "You are not tied to any single provider. Instead, you might choose the provider that best suits your needs. Right now, we support OpenAI (GPT4o, o1, etc.), Mistral, Anthropic (Claude), Google Gemini, xAI (Grok), and self-hosted models using llama.cpp, ollama, LM Studio, Groq, or Fireworks."), + new("Assistants", "You just want to quickly translate a text? AI Studio has so-called assistants for such and other tasks. No prompting is necessary when working with these assistants."), new("Unrestricted usage", "Unlike services like ChatGPT, which impose limits after intensive use, MindWork AI Studio offers unlimited usage through the providers API."), new("Cost-effective", "You only pay for what you use, which can be cheaper than monthly subscription services like ChatGPT Plus, especially if used infrequently. But beware, here be dragons: For extremely intensive usage, the API costs can be significantly higher. Unfortunately, providers currently do not offer a way to display current costs in the app. Therefore, check your account with the respective provider to see how your costs are developing. When available, use prepaid and set a cost limit."), - new("Privacy", "The data entered into the app is not used for training by the providers since we are using the provider's API."), + new("Privacy", "You can control which providers receive your data using the provider confidence settings. For example, you can set different protection levels for writing emails compared to general chats, etc. Additionally, most providers guarantee that they won't use your data to train new AI systems."), new("Flexibility", "Choose the provider and model best suited for your current task."), new("No bloatware", "The app requires minimal storage for installation and operates with low memory usage. Additionally, it has a minimal impact on system resources, which is beneficial for battery life."), ]; From 14caf550ec4186f5f7c9a6fddf4b53772554e9c1 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 21 Jan 2025 13:40:47 +0100 Subject: [PATCH 006/110] Improved the inner content scrolling to use the entire space available (#263) --- .../Assistants/AssistantBase.razor | 215 +++++++++--------- .../Components/ChatComponent.razor | 2 +- .../Components/InnerScrolling.razor | 6 +- .../Components/InnerScrolling.razor.cs | 19 +- app/MindWork AI Studio/Pages/About.razor | 120 +++++----- app/MindWork AI Studio/Pages/Assistants.razor | 92 ++++---- app/MindWork AI Studio/Pages/Chat.razor | 177 +++++++------- app/MindWork AI Studio/Pages/Home.razor | 68 +++--- app/MindWork AI Studio/Pages/Settings.razor | 56 ++--- app/MindWork AI Studio/Pages/Supporters.razor | 112 ++++----- app/MindWork AI Studio/Pages/Writer.razor | 104 ++++----- app/MindWork AI Studio/packages.lock.json | 2 +- app/MindWork AI Studio/wwwroot/app.css | 20 +- .../wwwroot/changelog/v0.9.27.md | 2 + 14 files changed, 509 insertions(+), 486 deletions(-) create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor b/app/MindWork AI Studio/Assistants/AssistantBase.razor index 5387d8ee..2390a23d 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor @@ -1,131 +1,134 @@ @using AIStudio.Chat -<MudText Typo="Typo.h3" Class="mb-2 mr-3"> - @(this.Title) -</MudText> +<div class="inner-scrolling-context"> -<InnerScrolling HeaderHeight="6em"> - <ChildContent> - <MudForm @ref="@(this.form)" @bind-IsValid="@(this.inputIsValid)" @bind-Errors="@(this.inputIssues)" FieldChanged="@this.TriggerFormChange" Class="pr-2"> - <MudText Typo="Typo.body1" Align="Align.Justify" Class="mb-6"> - @this.Description - </MudText> + <MudText Typo="Typo.h3" Class="mb-2 mr-3"> + @(this.Title) + </MudText> - @if (this.Body is not null) - { - <CascadingValue Value="@this"> - @this.Body - </CascadingValue> - - <MudButton Disabled="@this.SubmitDisabled" Variant="Variant.Filled" Class="mb-3" OnClick="() => this.SubmitAction()" Style="@this.SubmitButtonStyle"> - @this.SubmitText - </MudButton> - } - </MudForm> - <Issues IssuesData="@(this.inputIssues)"/> + <InnerScrolling> + <ChildContent> + <MudForm @ref="@(this.form)" @bind-IsValid="@(this.inputIsValid)" @bind-Errors="@(this.inputIssues)" FieldChanged="@this.TriggerFormChange" Class="pr-2"> + <MudText Typo="Typo.body1" Align="Align.Justify" Class="mb-6"> + @this.Description + </MudText> - @if (this.ShowDedicatedProgress && this.isProcessing) - { - <MudProgressLinear Color="Color.Primary" Indeterminate="true" Class="mb-6" /> - } - - <div id="@RESULT_DIV_ID" class="mr-2 mt-3"> - </div> - - <div id="@BEFORE_RESULT_DIV_ID" class="mt-3"> - </div> - - @if (this.ShowResult && !this.ShowEntireChatThread && this.resultingContentBlock is not null) - { - <ContentBlockComponent Role="@(this.resultingContentBlock.Role)" Type="@(this.resultingContentBlock.ContentType)" Time="@(this.resultingContentBlock.Time)" Content="@(this.resultingContentBlock.Content)"/> - } - - @if(this.ShowResult && this.ShowEntireChatThread && this.chatThread is not null) - { - foreach (var block in this.chatThread.Blocks.OrderBy(n => n.Time)) - { - @if (!block.HideFromUser) + @if (this.Body is not null) { - <ContentBlockComponent Role="@block.Role" Type="@block.ContentType" Time="@block.Time" Content="@block.Content"/> + <CascadingValue Value="@this"> + @this.Body + </CascadingValue> + + <MudButton Disabled="@this.SubmitDisabled" Variant="Variant.Filled" Class="mb-3" OnClick="() => this.SubmitAction()" Style="@this.SubmitButtonStyle"> + @this.SubmitText + </MudButton> } + </MudForm> + <Issues IssuesData="@(this.inputIssues)"/> + + @if (this.ShowDedicatedProgress && this.isProcessing) + { + <MudProgressLinear Color="Color.Primary" Indeterminate="true" Class="mb-6" /> } - } - - <div id="@AFTER_RESULT_DIV_ID" class="mt-3"> - </div> - </ChildContent> - <FooterContent> - <MudStack Row="@true" Wrap="Wrap.Wrap" Class="ma-1"> - @if (!this.FooterButtons.Any(x => x.Type is ButtonTypes.SEND_TO)) + <div id="@RESULT_DIV_ID" class="mr-2 mt-3"> + </div> + + <div id="@BEFORE_RESULT_DIV_ID" class="mt-3"> + </div> + + @if (this.ShowResult && !this.ShowEntireChatThread && this.resultingContentBlock is not null) { - @if (this.ShowSendTo) + <ContentBlockComponent Role="@(this.resultingContentBlock.Role)" Type="@(this.resultingContentBlock.ContentType)" Time="@(this.resultingContentBlock.Time)" Content="@(this.resultingContentBlock.Content)"/> + } + + @if(this.ShowResult && this.ShowEntireChatThread && this.chatThread is not null) + { + foreach (var block in this.chatThread.Blocks.OrderBy(n => n.Time)) { - <MudMenu StartIcon="@Icons.Material.Filled.Apps" EndIcon="@Icons.Material.Filled.KeyboardArrowDown" Label="Send to ..." Variant="Variant.Filled" Style="@this.GetSendToColor()" Class="rounded"> - @foreach (var assistant in Enum.GetValues<Components>().Where(n => n.AllowSendTo()).OrderBy(n => n.Name().Length)) - { - <MudMenuItem OnClick="() => this.SendToAssistant(assistant, new())"> - @assistant.Name() - </MudMenuItem> - } - </MudMenu> + @if (!block.HideFromUser) + { + <ContentBlockComponent Role="@block.Role" Type="@block.ContentType" Time="@block.Time" Content="@block.Content"/> + } } } - - @foreach (var button in this.FooterButtons) - { - switch (button) + + <div id="@AFTER_RESULT_DIV_ID" class="mt-3"> + </div> + </ChildContent> + <FooterContent> + <MudStack Row="@true" Wrap="Wrap.Wrap" Class="ma-1"> + + @if (!this.FooterButtons.Any(x => x.Type is ButtonTypes.SEND_TO)) { - case ButtonData buttonData when !string.IsNullOrWhiteSpace(buttonData.Tooltip): - <MudTooltip Text="@buttonData.Tooltip"> - <MudButton Variant="Variant.Filled" Color="@buttonData.Color" StartIcon="@GetButtonIcon(buttonData.Icon)" OnClick="async () => await buttonData.AsyncAction()"> - @buttonData.Text - </MudButton> - </MudTooltip> - break; - - case ButtonData buttonData: - <MudButton Variant="Variant.Filled" Color="@buttonData.Color" StartIcon="@GetButtonIcon(buttonData.Icon)" OnClick="async () => await buttonData.AsyncAction()"> - @buttonData.Text - </MudButton> - break; - - case SendToButton sendToButton: + @if (this.ShowSendTo) + { <MudMenu StartIcon="@Icons.Material.Filled.Apps" EndIcon="@Icons.Material.Filled.KeyboardArrowDown" Label="Send to ..." Variant="Variant.Filled" Style="@this.GetSendToColor()" Class="rounded"> @foreach (var assistant in Enum.GetValues<Components>().Where(n => n.AllowSendTo()).OrderBy(n => n.Name().Length)) { - <MudMenuItem OnClick="() => this.SendToAssistant(assistant, sendToButton)"> + <MudMenuItem OnClick="() => this.SendToAssistant(assistant, new())"> @assistant.Name() </MudMenuItem> } </MudMenu> - break; + } } - } - - @if (this.ShowCopyResult) - { - <MudButton Variant="Variant.Filled" StartIcon="@Icons.Material.Filled.ContentCopy" OnClick="() => this.CopyToClipboard()"> - Copy result - </MudButton> - } - @if (this.ShowReset) - { - <MudButton Variant="Variant.Filled" Style="@this.GetResetColor()" StartIcon="@Icons.Material.Filled.Refresh" OnClick="() => this.InnerResetForm()"> - Reset - </MudButton> - } + @foreach (var button in this.FooterButtons) + { + switch (button) + { + case ButtonData buttonData when !string.IsNullOrWhiteSpace(buttonData.Tooltip): + <MudTooltip Text="@buttonData.Tooltip"> + <MudButton Variant="Variant.Filled" Color="@buttonData.Color" StartIcon="@GetButtonIcon(buttonData.Icon)" OnClick="async () => await buttonData.AsyncAction()"> + @buttonData.Text + </MudButton> + </MudTooltip> + break; - @if (this.SettingsManager.ConfigurationData.LLMProviders.ShowProviderConfidence) - { - <ConfidenceInfo Mode="ConfidenceInfoMode.BUTTON" LLMProvider="@this.providerSettings.UsedLLMProvider"/> - } + case ButtonData buttonData: + <MudButton Variant="Variant.Filled" Color="@buttonData.Color" StartIcon="@GetButtonIcon(buttonData.Icon)" OnClick="async () => await buttonData.AsyncAction()"> + @buttonData.Text + </MudButton> + break; - @if (this.AllowProfiles && this.ShowProfileSelection) - { - <ProfileSelection MarginLeft="" @bind-CurrentProfile="@this.currentProfile"/> - } - </MudStack> - </FooterContent> -</InnerScrolling> \ No newline at end of file + case SendToButton sendToButton: + <MudMenu StartIcon="@Icons.Material.Filled.Apps" EndIcon="@Icons.Material.Filled.KeyboardArrowDown" Label="Send to ..." Variant="Variant.Filled" Style="@this.GetSendToColor()" Class="rounded"> + @foreach (var assistant in Enum.GetValues<Components>().Where(n => n.AllowSendTo()).OrderBy(n => n.Name().Length)) + { + <MudMenuItem OnClick="() => this.SendToAssistant(assistant, sendToButton)"> + @assistant.Name() + </MudMenuItem> + } + </MudMenu> + break; + } + } + + @if (this.ShowCopyResult) + { + <MudButton Variant="Variant.Filled" StartIcon="@Icons.Material.Filled.ContentCopy" OnClick="() => this.CopyToClipboard()"> + Copy result + </MudButton> + } + + @if (this.ShowReset) + { + <MudButton Variant="Variant.Filled" Style="@this.GetResetColor()" StartIcon="@Icons.Material.Filled.Refresh" OnClick="() => this.InnerResetForm()"> + Reset + </MudButton> + } + + @if (this.SettingsManager.ConfigurationData.LLMProviders.ShowProviderConfidence) + { + <ConfidenceInfo Mode="ConfidenceInfoMode.BUTTON" LLMProvider="@this.providerSettings.UsedLLMProvider"/> + } + + @if (this.AllowProfiles && this.ShowProfileSelection) + { + <ProfileSelection MarginLeft="" @bind-CurrentProfile="@this.currentProfile"/> + } + </MudStack> + </FooterContent> + </InnerScrolling> +</div> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor b/app/MindWork AI Studio/Components/ChatComponent.razor index 2b8ff2dc..ffd5c8f8 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor +++ b/app/MindWork AI Studio/Components/ChatComponent.razor @@ -3,7 +3,7 @@ @inherits MSGComponentBase -<InnerScrolling FillEntireHorizontalSpace="@true" @ref="@this.scrollingArea" HeaderHeight="12.3em" MinWidth="36em"> +<InnerScrolling FillEntireHorizontalSpace="@true" @ref="@this.scrollingArea" MinWidth="36em" Style="height: 100%"> <ChildContent> @if (this.ChatThread is not null) { diff --git a/app/MindWork AI Studio/Components/InnerScrolling.razor b/app/MindWork AI Studio/Components/InnerScrolling.razor index 5a2da661..6905bf2d 100644 --- a/app/MindWork AI Studio/Components/InnerScrolling.razor +++ b/app/MindWork AI Studio/Components/InnerScrolling.razor @@ -7,17 +7,17 @@ @this.HeaderContent </div> } - <div class="flex-auto overflow-auto"> + <div class="flex-auto overflow-auto mb-3"> @this.ChildContent - <div @ref="@this.AnchorAfterChildContent"> + <div style="max-height: 0.1em;" @ref="@this.AnchorAfterChildContent">   </div> </div> @if (this.FooterContent is not null) { - <MudPaper Class="pa-3 border-solid border rounded-lg"> + <MudPaper Class="pa-3 mb-3 border-solid border rounded-lg"> @this.FooterContent </MudPaper> } diff --git a/app/MindWork AI Studio/Components/InnerScrolling.razor.cs b/app/MindWork AI Studio/Components/InnerScrolling.razor.cs index 126317cd..3b483c4a 100644 --- a/app/MindWork AI Studio/Components/InnerScrolling.razor.cs +++ b/app/MindWork AI Studio/Components/InnerScrolling.razor.cs @@ -9,14 +9,6 @@ public partial class InnerScrolling : MSGComponentBase [Parameter] public bool FillEntireHorizontalSpace { get; set; } - /// <summary> - /// Set the height of anything above the scrolling content; usually a header. - /// What we do is calc(100vh - HeaderHeight). Means, you can use multiple measures like - /// 230px - 3em. Default is 3em. - /// </summary> - [Parameter] - public string HeaderHeight { get; set; } = "3em"; - [Parameter] public RenderFragment? HeaderContent { get; set; } @@ -34,6 +26,9 @@ public partial class InnerScrolling : MSGComponentBase [Parameter] public string? MinWidth { get; set; } + + [Parameter] + public string Style { get; set; } = string.Empty; [CascadingParameter] private MainLayout MainLayout { get; set; } = null!; @@ -74,12 +69,14 @@ public partial class InnerScrolling : MSGComponentBase #endregion - private string MinWidthStyle => string.IsNullOrWhiteSpace(this.MinWidth) ? string.Empty : $"min-width: {this.MinWidth};"; + private string MinWidthStyle => string.IsNullOrWhiteSpace(this.MinWidth) ? string.Empty : $"min-width: {this.MinWidth}; "; + + private string TerminatedStyles => string.IsNullOrWhiteSpace(this.Style) ? string.Empty : $"{this.Style}; "; - private string Styles => this.FillEntireHorizontalSpace ? $"height: calc(100vh - {this.HeaderHeight} - {this.MainLayout.AdditionalHeight}); overflow-x: auto; min-width: 0; {this.MinWidthStyle}" : $"height: calc(100vh - {this.HeaderHeight} - {this.MainLayout.AdditionalHeight}); flex-shrink: 0; {this.MinWidthStyle}"; - private string Classes => this.FillEntireHorizontalSpace ? $"{this.Class} d-flex flex-column flex-grow-1" : $"{this.Class} d-flex flex-column"; + private string Styles => $"flex-grow: 1; overflow: hidden; {this.TerminatedStyles}{this.MinWidthStyle}"; + public async Task ScrollToBottom() { await this.AnchorAfterChildContent.ScrollIntoViewAsync(this.JsRuntime); diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index 07f87804..60746420 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -1,64 +1,66 @@ @attribute [Route(Routes.ABOUT)] -<MudText Typo="Typo.h3" Class="mb-2">About MindWork AI Studio</MudText> +<div class="inner-scrolling-context"> + <MudText Typo="Typo.h3" Class="mb-2">About MindWork AI Studio</MudText> -<InnerScrolling HeaderHeight="6em"> - <MudExpansionPanels Class="mb-3" MultiExpansion="@false"> - <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Layers" HeaderText="Versions" IsExpanded="@true"> - <MudText> - The following list shows the versions of the MindWork AI Studio, the used compilers, build time, etc.: - </MudText> - <MudList T="string" Class="mb-3"> - <MudListItem T="string" Icon="@Icons.Material.Outlined.Chat" Text="@VersionApp"/> - <MudListItem T="string" Icon="@Icons.Material.Outlined.Timer" Text="@BuildTime"/> - <MudListItem T="string" Icon="@Icons.Material.Outlined.Build" Text="@VersionDotnetSdk"/> - <MudListItem T="string" Icon="@Icons.Material.Outlined.Memory" Text="@VersionDotnetRuntime"/> - <MudListItem T="string" Icon="@Icons.Material.Outlined.Build" Text="@VersionRust"/> - <MudListItem T="string" Icon="@Icons.Material.Outlined.Widgets" Text="@MudBlazorVersion"/> - <MudListItem T="string" Icon="@Icons.Material.Outlined.Memory" Text="@TauriVersion"/> - </MudList> - <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Update" OnClick="() => this.CheckForUpdate()"> - Check for updates - </MudButton> - </ExpansionPanel> - - <ExpansionPanel HeaderIcon="@Icons.Material.Filled.EventNote" HeaderText="Changelog"> - <Changelog/> - </ExpansionPanel> + <InnerScrolling> + <MudExpansionPanels Class="mb-3" MultiExpansion="@false"> + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Layers" HeaderText="Versions" IsExpanded="@true"> + <MudText> + The following list shows the versions of the MindWork AI Studio, the used compilers, build time, etc.: + </MudText> + <MudList T="string" Class="mb-3"> + <MudListItem T="string" Icon="@Icons.Material.Outlined.Chat" Text="@VersionApp"/> + <MudListItem T="string" Icon="@Icons.Material.Outlined.Timer" Text="@BuildTime"/> + <MudListItem T="string" Icon="@Icons.Material.Outlined.Build" Text="@VersionDotnetSdk"/> + <MudListItem T="string" Icon="@Icons.Material.Outlined.Memory" Text="@VersionDotnetRuntime"/> + <MudListItem T="string" Icon="@Icons.Material.Outlined.Build" Text="@VersionRust"/> + <MudListItem T="string" Icon="@Icons.Material.Outlined.Widgets" Text="@MudBlazorVersion"/> + <MudListItem T="string" Icon="@Icons.Material.Outlined.Memory" Text="@TauriVersion"/> + </MudList> + <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Update" OnClick="() => this.CheckForUpdate()"> + Check for updates + </MudButton> + </ExpansionPanel> + + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.EventNote" HeaderText="Changelog"> + <Changelog/> + </ExpansionPanel> - <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Engineering" HeaderText="Motivation"> - <Motivation/> - </ExpansionPanel> + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Engineering" HeaderText="Motivation"> + <Motivation/> + </ExpansionPanel> - <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Lightbulb" HeaderText="Vision"> - <Vision/> - </ExpansionPanel> - - <ExpansionPanel HeaderIcon="@Icons.Material.Filled.AutoAwesomeMotion" HeaderText="Used Open Source Projects"> - <MudGrid Spacing="1"> - <ThirdPartyComponent Name=".NET" Developer="Microsoft & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/dotnet/runtime/blob/main/LICENSE.TXT" RepositoryUrl="https://github.com/dotnet" UseCase="The C# language is used for the implementation of the user interface and the backend. To implement the user interface with C#, the Blazor technology from ASP.NET Core is used. All these technologies are integrated into the .NET SDK."/> - <ThirdPartyComponent Name="MudBlazor" Developer="Jonny Larsson, Meinrad Recheis & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/MudBlazor/MudBlazor/blob/dev/LICENSE" RepositoryUrl="https://github.com/MudBlazor/MudBlazor/" UseCase="Building on .NET, ASP.NET Core, and Blazor, MudBlazor is used as a library for designing and developing the user interface. It is a great project that significantly accelerates the development of advanced user interfaces with Blazor."/> - <ThirdPartyComponent Name="MudBlazor.Markdown" Developer="My Nihongo & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/MyNihongo/MudBlazor.Markdown/blob/main/LICENSE" RepositoryUrl="https://github.com/MyNihongo/MudBlazor.Markdown" UseCase="This component is used to render Markdown text. This is important because the LLM often responds with Markdown-formatted text, allowing us to present it in a way that is easier to read."/> - <ThirdPartyComponent Name="CodeBeam.MudBlazor.Extensions" Developer="Mehmet Can Karagöz & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/CodeBeamOrg/CodeBeam.MudBlazor.Extensions/blob/dev/LICENSE" RepositoryUrl="https://github.com/CodeBeamOrg/CodeBeam.MudBlazor.Extensions" UseCase="This library is used to extend the MudBlazor library. It provides additional components that are not part of the MudBlazor library."/> - <ThirdPartyComponent Name="Rust" Developer="Graydon Hoare, Rust Foundation, Rust developers & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/rust-lang/rust/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/rust-lang/rust" UseCase="The .NET backend cannot be started as a desktop app. Therefore, I use a second backend in Rust, which I call runtime. With Rust as the runtime, Tauri can be used to realize a typical desktop app. Thanks to Rust, this app can be offered for Windows, macOS, and Linux desktops. Rust is a great language for developing safe and high-performance software."/> - <ThirdPartyComponent Name="Tauri" Developer="Daniel Thompson-Yvetot, Lucas Nogueira, Tensor, Boscop, Serge Zaitsev, George Burton & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/tauri-apps/tauri/blob/dev/LICENSE_MIT" RepositoryUrl="https://github.com/tauri-apps/tauri" UseCase="Tauri is used to host the Blazor user interface. It is a great project that allows the creation of desktop applications using web technologies. I love Tauri!"/> - <ThirdPartyComponent Name="Rocket" Developer="Sergio Benitez & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/rwf2/Rocket/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/rwf2/Rocket" UseCase="We use Rocket to implement the runtime API. This is necessary because the runtime must be able to communicate with the user interface (IPC). Rocket is a great framework for implementing web APIs in Rust."/> - <ThirdPartyComponent Name="serde" Developer="Erick Tryzelaar, David Tolnay & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/serde-rs/serde/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/serde-rs/serde" UseCase="Now we have multiple systems, some developed in .NET and others in Rust. The data format JSON is responsible for translating data between both worlds (called data serialization and deserialization). Serde takes on this task in the Rust world. The counterpart in the .NET world is an integral part of .NET and is located in System.Text.Json."/> - <ThirdPartyComponent Name="keyring" Developer="Walther Chen, Daniel Brotsky & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/hwchen/keyring-rs/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/hwchen/keyring-rs" UseCase="In order to use any LLM, each user must store their so-called token for each LLM provider. This token must be kept secure, similar to a password. The safest way to do this is offered by operating systems like macOS, Windows, and Linux: They have mechanisms to store such data, if available, on special security hardware. Since this is currently not possible in .NET, we use this Rust library."/> - <ThirdPartyComponent Name="arboard" Developer="Artur Kovacs, Avi Weinstock, 1Password & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/1Password/arboard/blob/master/LICENSE-MIT.txt" RepositoryUrl="https://github.com/1Password/arboard" UseCase="To be able to use the responses of the LLM in other apps, we often use the clipboard of the respective operating system. Unfortunately, in .NET there is no solution that works with all operating systems. Therefore, I have opted for this library in Rust. This way, data transfer to other apps works on every system."/> - <ThirdPartyComponent Name="tokio" Developer="Alex Crichton & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/tokio-rs/tokio/blob/master/LICENSE" RepositoryUrl="https://github.com/tokio-rs/tokio" UseCase="Code in the Rust language can be specified as synchronous or asynchronous. Unlike .NET and the C# language, Rust cannot execute asynchronous code by itself. Rust requires support in the form of an executor for this. Tokio is one such executor."/> - <ThirdPartyComponent Name="flexi_logger" Developer="emabee & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/emabee/flexi_logger/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/emabee/flexi_logger" UseCase="This Rust library is used to output the app's messages to the terminal. This is helpful during development and troubleshooting. This feature is initially invisible; when the app is started via the terminal, the messages become visible."/> - <ThirdPartyComponent Name="rand" Developer="Rust developers & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/rust-random/rand/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/rust-random/rand" UseCase="We must generate random numbers, e.g., for securing the interprocess communication between the user interface and the runtime. The rand library is great for this purpose."/> - <ThirdPartyComponent Name="base64" Developer="Marshall Pierce, Alice Maz & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/marshallpierce/rust-base64/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/marshallpierce/rust-base64" UseCase="For some data transfers, we need to encode the data in base64. This Rust library is great for this purpose."/> - <ThirdPartyComponent Name="Rust Crypto" Developer="Artyom Pavlov, Tony Arcieri, Brian Warner, Arthur Gautier, Vlad Filippov, Friedel Ziegelmayer, Nicolas Stalder & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/RustCrypto/traits/blob/master/cipher/LICENSE-MIT" RepositoryUrl="https://github.com/RustCrypto" UseCase="When transferring sensitive data between Rust runtime and .NET app, we encrypt the data. We use some libraries from the Rust Crypto project for this purpose: cipher, aes, cbc, pbkdf2, hmac, and sha2. We are thankful for the great work of the Rust Crypto project."/> - <ThirdPartyComponent Name="rcgen" Developer="RustTLS developers, est31 & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/rustls/rcgen/blob/main/LICENSE" RepositoryUrl="https://github.com/rustls/rcgen" UseCase="For the secure communication between the user interface and the runtime, we need to create certificates. This Rust library is great for this purpose."/> - <ThirdPartyComponent Name="HtmlAgilityPack" Developer="ZZZ Projects & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/zzzprojects/html-agility-pack/blob/master/LICENSE" RepositoryUrl="https://github.com/zzzprojects/html-agility-pack" UseCase="We use the HtmlAgilityPack to extract content from the web. This is necessary, e.g., when you provide a URL as input for an assistant."/> - <ThirdPartyComponent Name="ReverseMarkdown" Developer="Babu Annamalai & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/mysticmind/reversemarkdown-net/blob/master/LICENSE" RepositoryUrl="https://github.com/mysticmind/reversemarkdown-net" UseCase="This library is used to convert HTML to Markdown. This is necessary, e.g., when you provide a URL as input for an assistant."/> - <ThirdPartyComponent Name="wikEd diff" Developer="Cacycle & Open Source Community" LicenseName="None (public domain)" LicenseUrl="https://en.wikipedia.org/wiki/User:Cacycle/diff#License" RepositoryUrl="https://en.wikipedia.org/wiki/User:Cacycle/diff" UseCase="This library is used to display the differences between two texts. This is necessary, e.g., for the grammar and spelling assistant."/> - </MudGrid> - </ExpansionPanel> - <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Verified" HeaderText="License: FSL-1.1-MIT"> - <MudMarkdown Value="@LICENSE" OverrideHeaderTypo="@Markdown.OverrideHeaderTypo"/> - </ExpansionPanel> - </MudExpansionPanels> -</InnerScrolling> \ No newline at end of file + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Lightbulb" HeaderText="Vision"> + <Vision/> + </ExpansionPanel> + + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.AutoAwesomeMotion" HeaderText="Used Open Source Projects"> + <MudGrid Spacing="1"> + <ThirdPartyComponent Name=".NET" Developer="Microsoft & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/dotnet/runtime/blob/main/LICENSE.TXT" RepositoryUrl="https://github.com/dotnet" UseCase="The C# language is used for the implementation of the user interface and the backend. To implement the user interface with C#, the Blazor technology from ASP.NET Core is used. All these technologies are integrated into the .NET SDK."/> + <ThirdPartyComponent Name="MudBlazor" Developer="Jonny Larsson, Meinrad Recheis & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/MudBlazor/MudBlazor/blob/dev/LICENSE" RepositoryUrl="https://github.com/MudBlazor/MudBlazor/" UseCase="Building on .NET, ASP.NET Core, and Blazor, MudBlazor is used as a library for designing and developing the user interface. It is a great project that significantly accelerates the development of advanced user interfaces with Blazor."/> + <ThirdPartyComponent Name="MudBlazor.Markdown" Developer="My Nihongo & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/MyNihongo/MudBlazor.Markdown/blob/main/LICENSE" RepositoryUrl="https://github.com/MyNihongo/MudBlazor.Markdown" UseCase="This component is used to render Markdown text. This is important because the LLM often responds with Markdown-formatted text, allowing us to present it in a way that is easier to read."/> + <ThirdPartyComponent Name="CodeBeam.MudBlazor.Extensions" Developer="Mehmet Can Karagöz & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/CodeBeamOrg/CodeBeam.MudBlazor.Extensions/blob/dev/LICENSE" RepositoryUrl="https://github.com/CodeBeamOrg/CodeBeam.MudBlazor.Extensions" UseCase="This library is used to extend the MudBlazor library. It provides additional components that are not part of the MudBlazor library."/> + <ThirdPartyComponent Name="Rust" Developer="Graydon Hoare, Rust Foundation, Rust developers & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/rust-lang/rust/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/rust-lang/rust" UseCase="The .NET backend cannot be started as a desktop app. Therefore, I use a second backend in Rust, which I call runtime. With Rust as the runtime, Tauri can be used to realize a typical desktop app. Thanks to Rust, this app can be offered for Windows, macOS, and Linux desktops. Rust is a great language for developing safe and high-performance software."/> + <ThirdPartyComponent Name="Tauri" Developer="Daniel Thompson-Yvetot, Lucas Nogueira, Tensor, Boscop, Serge Zaitsev, George Burton & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/tauri-apps/tauri/blob/dev/LICENSE_MIT" RepositoryUrl="https://github.com/tauri-apps/tauri" UseCase="Tauri is used to host the Blazor user interface. It is a great project that allows the creation of desktop applications using web technologies. I love Tauri!"/> + <ThirdPartyComponent Name="Rocket" Developer="Sergio Benitez & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/rwf2/Rocket/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/rwf2/Rocket" UseCase="We use Rocket to implement the runtime API. This is necessary because the runtime must be able to communicate with the user interface (IPC). Rocket is a great framework for implementing web APIs in Rust."/> + <ThirdPartyComponent Name="serde" Developer="Erick Tryzelaar, David Tolnay & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/serde-rs/serde/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/serde-rs/serde" UseCase="Now we have multiple systems, some developed in .NET and others in Rust. The data format JSON is responsible for translating data between both worlds (called data serialization and deserialization). Serde takes on this task in the Rust world. The counterpart in the .NET world is an integral part of .NET and is located in System.Text.Json."/> + <ThirdPartyComponent Name="keyring" Developer="Walther Chen, Daniel Brotsky & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/hwchen/keyring-rs/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/hwchen/keyring-rs" UseCase="In order to use any LLM, each user must store their so-called token for each LLM provider. This token must be kept secure, similar to a password. The safest way to do this is offered by operating systems like macOS, Windows, and Linux: They have mechanisms to store such data, if available, on special security hardware. Since this is currently not possible in .NET, we use this Rust library."/> + <ThirdPartyComponent Name="arboard" Developer="Artur Kovacs, Avi Weinstock, 1Password & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/1Password/arboard/blob/master/LICENSE-MIT.txt" RepositoryUrl="https://github.com/1Password/arboard" UseCase="To be able to use the responses of the LLM in other apps, we often use the clipboard of the respective operating system. Unfortunately, in .NET there is no solution that works with all operating systems. Therefore, I have opted for this library in Rust. This way, data transfer to other apps works on every system."/> + <ThirdPartyComponent Name="tokio" Developer="Alex Crichton & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/tokio-rs/tokio/blob/master/LICENSE" RepositoryUrl="https://github.com/tokio-rs/tokio" UseCase="Code in the Rust language can be specified as synchronous or asynchronous. Unlike .NET and the C# language, Rust cannot execute asynchronous code by itself. Rust requires support in the form of an executor for this. Tokio is one such executor."/> + <ThirdPartyComponent Name="flexi_logger" Developer="emabee & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/emabee/flexi_logger/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/emabee/flexi_logger" UseCase="This Rust library is used to output the app's messages to the terminal. This is helpful during development and troubleshooting. This feature is initially invisible; when the app is started via the terminal, the messages become visible."/> + <ThirdPartyComponent Name="rand" Developer="Rust developers & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/rust-random/rand/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/rust-random/rand" UseCase="We must generate random numbers, e.g., for securing the interprocess communication between the user interface and the runtime. The rand library is great for this purpose."/> + <ThirdPartyComponent Name="base64" Developer="Marshall Pierce, Alice Maz & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/marshallpierce/rust-base64/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/marshallpierce/rust-base64" UseCase="For some data transfers, we need to encode the data in base64. This Rust library is great for this purpose."/> + <ThirdPartyComponent Name="Rust Crypto" Developer="Artyom Pavlov, Tony Arcieri, Brian Warner, Arthur Gautier, Vlad Filippov, Friedel Ziegelmayer, Nicolas Stalder & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/RustCrypto/traits/blob/master/cipher/LICENSE-MIT" RepositoryUrl="https://github.com/RustCrypto" UseCase="When transferring sensitive data between Rust runtime and .NET app, we encrypt the data. We use some libraries from the Rust Crypto project for this purpose: cipher, aes, cbc, pbkdf2, hmac, and sha2. We are thankful for the great work of the Rust Crypto project."/> + <ThirdPartyComponent Name="rcgen" Developer="RustTLS developers, est31 & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/rustls/rcgen/blob/main/LICENSE" RepositoryUrl="https://github.com/rustls/rcgen" UseCase="For the secure communication between the user interface and the runtime, we need to create certificates. This Rust library is great for this purpose."/> + <ThirdPartyComponent Name="HtmlAgilityPack" Developer="ZZZ Projects & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/zzzprojects/html-agility-pack/blob/master/LICENSE" RepositoryUrl="https://github.com/zzzprojects/html-agility-pack" UseCase="We use the HtmlAgilityPack to extract content from the web. This is necessary, e.g., when you provide a URL as input for an assistant."/> + <ThirdPartyComponent Name="ReverseMarkdown" Developer="Babu Annamalai & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/mysticmind/reversemarkdown-net/blob/master/LICENSE" RepositoryUrl="https://github.com/mysticmind/reversemarkdown-net" UseCase="This library is used to convert HTML to Markdown. This is necessary, e.g., when you provide a URL as input for an assistant."/> + <ThirdPartyComponent Name="wikEd diff" Developer="Cacycle & Open Source Community" LicenseName="None (public domain)" LicenseUrl="https://en.wikipedia.org/wiki/User:Cacycle/diff#License" RepositoryUrl="https://en.wikipedia.org/wiki/User:Cacycle/diff" UseCase="This library is used to display the differences between two texts. This is necessary, e.g., for the grammar and spelling assistant."/> + </MudGrid> + </ExpansionPanel> + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Verified" HeaderText="License: FSL-1.1-MIT"> + <MudMarkdown Value="@LICENSE" OverrideHeaderTypo="@Markdown.OverrideHeaderTypo"/> + </ExpansionPanel> + </MudExpansionPanels> + </InnerScrolling> +</div> \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Assistants.razor b/app/MindWork AI Studio/Pages/Assistants.razor index 212f8b5a..9cef736d 100644 --- a/app/MindWork AI Studio/Pages/Assistants.razor +++ b/app/MindWork AI Studio/Pages/Assistants.razor @@ -1,51 +1,53 @@ @using AIStudio.Settings.DataModel @attribute [Route(Routes.ASSISTANTS)] -<MudText Typo="Typo.h3" Class="mb-2 mr-3"> - Assistants -</MudText> +<div class="inner-scrolling-context"> + <MudText Typo="Typo.h3" Class="mb-2 mr-3"> + Assistants + </MudText> -<InnerScrolling HeaderHeight="6em"> - - <MudText Typo="Typo.h4" Class="mb-2 mr-3"> - General - </MudText> - <MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3"> - <AssistantBlock Name="Text Summarizer" Description="Using a LLM to summarize a given text." Icon="@Icons.Material.Filled.TextSnippet" Link="@Routes.ASSISTANT_SUMMARIZER"/> - <AssistantBlock Name="Translation" Description="Translate text into another language." Icon="@Icons.Material.Filled.Translate" Link="@Routes.ASSISTANT_TRANSLATION"/> - <AssistantBlock Name="Grammar & Spelling" Description="Check grammar and spelling of a given text." Icon="@Icons.Material.Filled.Edit" Link="@Routes.ASSISTANT_GRAMMAR_SPELLING"/> - <AssistantBlock Name="Rewrite & Improve" Description="Rewrite and improve a given text for a chosen style." Icon="@Icons.Material.Filled.Edit" Link="@Routes.ASSISTANT_REWRITE"/> - <AssistantBlock Name="Synonyms" Description="Find synonyms for a given word or phrase." Icon="@Icons.Material.Filled.Spellcheck" Link="@Routes.ASSISTANT_SYNONYMS"/> - </MudStack> + <InnerScrolling> + + <MudText Typo="Typo.h4" Class="mb-2 mr-3"> + General + </MudText> + <MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3"> + <AssistantBlock Name="Text Summarizer" Description="Using a LLM to summarize a given text." Icon="@Icons.Material.Filled.TextSnippet" Link="@Routes.ASSISTANT_SUMMARIZER"/> + <AssistantBlock Name="Translation" Description="Translate text into another language." Icon="@Icons.Material.Filled.Translate" Link="@Routes.ASSISTANT_TRANSLATION"/> + <AssistantBlock Name="Grammar & Spelling" Description="Check grammar and spelling of a given text." Icon="@Icons.Material.Filled.Edit" Link="@Routes.ASSISTANT_GRAMMAR_SPELLING"/> + <AssistantBlock Name="Rewrite & Improve" Description="Rewrite and improve a given text for a chosen style." Icon="@Icons.Material.Filled.Edit" Link="@Routes.ASSISTANT_REWRITE"/> + <AssistantBlock Name="Synonyms" Description="Find synonyms for a given word or phrase." Icon="@Icons.Material.Filled.Spellcheck" Link="@Routes.ASSISTANT_SYNONYMS"/> + </MudStack> - <MudText Typo="Typo.h4" Class="mb-2 mr-3 mt-6"> - Business - </MudText> - <MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3"> - <AssistantBlock Name="E-Mail" Description="Generate an e-mail for a given context." Icon="@Icons.Material.Filled.Email" Link="@Routes.ASSISTANT_EMAIL"/> - <AssistantBlock Name="My Tasks" Description="Analyze a text or an email for tasks you need to complete." Icon="@Icons.Material.Filled.Task" Link="@Routes.ASSISTANT_MY_TASKS"/> - <AssistantBlock Name="Agenda Planner" Description="Generate an agenda for a given meeting, seminar, etc." Icon="@Icons.Material.Filled.CalendarToday" Link="@Routes.ASSISTANT_AGENDA"/> - <AssistantBlock Name="Job Posting" Description="Generate a job posting for a given job description." Icon="@Icons.Material.Filled.Work" Link="@Routes.ASSISTANT_JOB_POSTING"/> - <AssistantBlock Name="Legal Check" Description="Ask a question about a legal document." Icon="@Icons.Material.Filled.Gavel" Link="@Routes.ASSISTANT_LEGAL_CHECK"/> - <AssistantBlock Name="Icon Finder" Description="Using a LLM to find an icon for a given context." Icon="@Icons.Material.Filled.FindInPage" Link="@Routes.ASSISTANT_ICON_FINDER"/> - </MudStack> + <MudText Typo="Typo.h4" Class="mb-2 mr-3 mt-6"> + Business + </MudText> + <MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3"> + <AssistantBlock Name="E-Mail" Description="Generate an e-mail for a given context." Icon="@Icons.Material.Filled.Email" Link="@Routes.ASSISTANT_EMAIL"/> + <AssistantBlock Name="My Tasks" Description="Analyze a text or an email for tasks you need to complete." Icon="@Icons.Material.Filled.Task" Link="@Routes.ASSISTANT_MY_TASKS"/> + <AssistantBlock Name="Agenda Planner" Description="Generate an agenda for a given meeting, seminar, etc." Icon="@Icons.Material.Filled.CalendarToday" Link="@Routes.ASSISTANT_AGENDA"/> + <AssistantBlock Name="Job Posting" Description="Generate a job posting for a given job description." Icon="@Icons.Material.Filled.Work" Link="@Routes.ASSISTANT_JOB_POSTING"/> + <AssistantBlock Name="Legal Check" Description="Ask a question about a legal document." Icon="@Icons.Material.Filled.Gavel" Link="@Routes.ASSISTANT_LEGAL_CHECK"/> + <AssistantBlock Name="Icon Finder" Description="Using a LLM to find an icon for a given context." Icon="@Icons.Material.Filled.FindInPage" Link="@Routes.ASSISTANT_ICON_FINDER"/> + </MudStack> - <MudText Typo="Typo.h4" Class="mb-2 mr-3 mt-6"> - Learning - </MudText> - <MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3"> - <AssistantBlock Name="Bias of the Day" Description="Learn about one cognitive bias every day." Icon="@Icons.Material.Filled.Psychology" Link="@Routes.ASSISTANT_BIAS"/> - </MudStack> - - <MudText Typo="Typo.h4" Class="mb-2 mr-3 mt-6"> - Software Engineering - </MudText> - <MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3"> - <AssistantBlock Name="Coding" Description="Get coding and debugging support from a LLM." Icon="@Icons.Material.Filled.Code" Link="@Routes.ASSISTANT_CODING"/> - @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) - { - <AssistantBlock Name="ERI Server" Description="Generate an ERI server to integrate business systems." Icon="@Icons.Material.Filled.PrivateConnectivity" Link="@Routes.ASSISTANT_ERI"/> - } - </MudStack> - -</InnerScrolling> \ No newline at end of file + <MudText Typo="Typo.h4" Class="mb-2 mr-3 mt-6"> + Learning + </MudText> + <MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3"> + <AssistantBlock Name="Bias of the Day" Description="Learn about one cognitive bias every day." Icon="@Icons.Material.Filled.Psychology" Link="@Routes.ASSISTANT_BIAS"/> + </MudStack> + + <MudText Typo="Typo.h4" Class="mb-2 mr-3 mt-6"> + Software Engineering + </MudText> + <MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3"> + <AssistantBlock Name="Coding" Description="Get coding and debugging support from a LLM." Icon="@Icons.Material.Filled.Code" Link="@Routes.ASSISTANT_CODING"/> + @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) + { + <AssistantBlock Name="ERI Server" Description="Generate an ERI server to integrate business systems." Icon="@Icons.Material.Filled.PrivateConnectivity" Link="@Routes.ASSISTANT_ERI"/> + } + </MudStack> + + </InnerScrolling> +</div> \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Chat.razor b/app/MindWork AI Studio/Pages/Chat.razor index 2f56c2b5..8c345b4a 100644 --- a/app/MindWork AI Studio/Pages/Chat.razor +++ b/app/MindWork AI Studio/Pages/Chat.razor @@ -2,109 +2,100 @@ @using AIStudio.Settings.DataModel @inherits MSGComponentBase -<MudText Typo="Typo.h3" Class="mb-2 mr-3"> - @if (this.chatThread is not null && this.chatThread.WorkspaceId != Guid.Empty) - { - @($"Chat in Workspace \"{this.currentWorkspaceName}\"") - } - else - { - @("Temporary Chat") - } -</MudText> +<div class="inner-scrolling-context"> + + <MudText Typo="Typo.h3" Class="mb-2 mr-3"> + @if (this.chatThread is not null && this.chatThread.WorkspaceId != Guid.Empty) + { + @($"Chat in Workspace \"{this.currentWorkspaceName}\"") + } + else + { + @("Temporary Chat") + } + </MudText> -<ProviderSelection @bind-ProviderSettings="@this.providerSettings"/> -@if (this.AreWorkspacesVisible) -{ - <MudSplitter Dimension="@this.ReadSplitterPosition" DimensionChanged="this.SplitterChanged" EnableSlide="@this.AreWorkspacesVisible" EnableMargin="@false" StartContentStyle="margin-right: 1em;" BarStyle="" EndContentStyle="margin-left: 1em;"> - <StartContent> - @if (this.AreWorkspacesHidden) - { - <MudPaper Class="border border-solid rounded-lg"> - <MudTooltip Text="Show your workspaces" Placement="@TOOLBAR_TOOLTIP_PLACEMENT"> - <MudIconButton Size="Size.Large" Icon="@this.WorkspaceSidebarToggleIcon" OnClick="() => this.ToggleWorkspaceSidebar()"/> - </MudTooltip> - </MudPaper> - } - @if (this.SettingsManager.ConfigurationData.Workspace.StorageBehavior is not WorkspaceStorageBehavior.DISABLE_WORKSPACES) - { - @if ((this.SettingsManager.ConfigurationData.Workspace.DisplayBehavior is WorkspaceDisplayBehavior.TOGGLE_SIDEBAR && this.SettingsManager.ConfigurationData.Workspace.IsSidebarVisible) || this.SettingsManager.ConfigurationData.Workspace.DisplayBehavior is WorkspaceDisplayBehavior.SIDEBAR_ALWAYS_VISIBLE) + <ProviderSelection @bind-ProviderSettings="@this.providerSettings"/> + @if (this.AreWorkspacesVisible) + { + <MudSplitter Dimension="@this.ReadSplitterPosition" DimensionChanged="this.SplitterChanged" EnableSlide="@this.AreWorkspacesVisible" EnableMargin="@false" StartContentStyle="margin-right: 1em;" BarStyle="" EndContentStyle="margin-left: 1em;"> + <StartContent> + @if (this.SettingsManager.ConfigurationData.Workspace.DisplayBehavior is WorkspaceDisplayBehavior.TOGGLE_SIDEBAR && this.SettingsManager.ConfigurationData.Workspace.IsSidebarVisible) { - @if (this.SettingsManager.ConfigurationData.Workspace.DisplayBehavior is WorkspaceDisplayBehavior.TOGGLE_SIDEBAR && this.SettingsManager.ConfigurationData.Workspace.IsSidebarVisible) - { - <InnerScrolling HeaderHeight="12.3em" FillEntireHorizontalSpace="@true" Class="border border-solid rounded-lg" MinWidth="26em"> - <HeaderContent> - <MudTooltip Text="Hide your workspaces" Placement="@TOOLBAR_TOOLTIP_PLACEMENT"> - <MudIconButton Size="Size.Large" Icon="@this.WorkspaceSidebarToggleIcon" OnClick="() => this.ToggleWorkspaceSidebar()"/> - </MudTooltip> - </HeaderContent> - <ChildContent> - <Workspaces @ref="this.workspaces" @bind-CurrentChatThread="@this.chatThread" /> - </ChildContent> - </InnerScrolling> - } - else - { - <InnerScrolling HeaderHeight="12.3em" FillEntireHorizontalSpace="@true" Class="border border-solid rounded-lg" MinWidth="26em"> - <ChildContent> - <Workspaces @ref="this.workspaces" @bind-CurrentChatThread="@this.chatThread" /> - </ChildContent> - </InnerScrolling> - } + // Case: Sidebar can be toggled and is currently visible + <InnerScrolling FillEntireHorizontalSpace="@true" Class="border border-solid rounded-lg mb-3" MinWidth="26em"> + <HeaderContent> + <MudTooltip Text="Hide your workspaces" Placement="@TOOLBAR_TOOLTIP_PLACEMENT"> + <MudIconButton Size="Size.Large" Icon="@this.WorkspaceSidebarToggleIcon" OnClick="() => this.ToggleWorkspaceSidebar()"/> + </MudTooltip> + </HeaderContent> + <ChildContent> + <Workspaces @ref="this.workspaces" @bind-CurrentChatThread="@this.chatThread"/> + </ChildContent> + </InnerScrolling> } - } - </StartContent> - <EndContent> - + else + { + // Case: Sidebar is always visible + <InnerScrolling FillEntireHorizontalSpace="@true" Class="border border-solid rounded-lg mb-3" MinWidth="26em"> + <ChildContent> + <Workspaces @ref="this.workspaces" @bind-CurrentChatThread="@this.chatThread"/> + </ChildContent> + </InnerScrolling> + } + </StartContent> + <EndContent> + <ChatComponent + @bind-ChatThread="@this.chatThread" + @bind-Provider="@this.providerSettings" + Workspaces="@this.workspaces" + WorkspaceName="name => this.currentWorkspaceName = name"/> + </EndContent> + </MudSplitter> + } + else if (this.SettingsManager.ConfigurationData.Workspace.StorageBehavior is not WorkspaceStorageBehavior.DISABLE_WORKSPACES && this.SettingsManager.ConfigurationData.Workspace.DisplayBehavior is WorkspaceDisplayBehavior.TOGGLE_SIDEBAR) + { + // Case: Sidebar can be toggled and is currently hidden + <MudStack Row="@true" Style="width: 100%; overflow: hidden; height: 100%; flex-grow: 1; min-height: 0;"> + <MudPaper Class="border border-solid rounded-lg mb-3"> + <MudTooltip Text="Show your workspaces" Placement="@TOOLBAR_TOOLTIP_PLACEMENT"> + <MudIconButton Size="Size.Large" Icon="@this.WorkspaceSidebarToggleIcon" OnClick="() => this.ToggleWorkspaceSidebar()"/> + </MudTooltip> + </MudPaper> + <ChatComponent @bind-ChatThread="@this.chatThread" @bind-Provider="@this.providerSettings" Workspaces="@this.workspaces" - WorkspaceName="name => this.currentWorkspaceName = name" /> - - </EndContent> - </MudSplitter> -} -else if(this.SettingsManager.ConfigurationData.Workspace.StorageBehavior is not WorkspaceStorageBehavior.DISABLE_WORKSPACES && this.SettingsManager.ConfigurationData.Workspace.DisplayBehavior is WorkspaceDisplayBehavior.TOGGLE_SIDEBAR) -{ - <MudStack Row="@true" Style="width: 100%; overflow: hidden;"> - <MudPaper Class="border border-solid rounded-lg"> - <MudTooltip Text="Show your workspaces" Placement="@TOOLBAR_TOOLTIP_PLACEMENT"> - <MudIconButton Size="Size.Large" Icon="@this.WorkspaceSidebarToggleIcon" OnClick="() => this.ToggleWorkspaceSidebar()"/> - </MudTooltip> - </MudPaper> - + WorkspaceName="name => this.currentWorkspaceName = name"/> + </MudStack> + } + else + { + // Case: Workspaces are disabled or shown in an overlay <ChatComponent @bind-ChatThread="@this.chatThread" @bind-Provider="@this.providerSettings" Workspaces="@this.workspaces" WorkspaceName="name => this.currentWorkspaceName = name"/> - </MudStack> -} -else -{ - <ChatComponent - @bind-ChatThread="@this.chatThread" - @bind-Provider="@this.providerSettings" - Workspaces="@this.workspaces" - WorkspaceName="name => this.currentWorkspaceName = name"/> -} + } -@if ( - this.SettingsManager.ConfigurationData.Workspace.StorageBehavior != WorkspaceStorageBehavior.DISABLE_WORKSPACES - && this.SettingsManager.ConfigurationData.Workspace.DisplayBehavior is WorkspaceDisplayBehavior.TOGGLE_OVERLAY) -{ - <MudDrawer @bind-Open="@this.workspaceOverlayVisible" Width="40em" Height="100%" Anchor="Anchor.Start" Variant="DrawerVariant.Temporary" Elevation="1"> - <MudDrawerHeader> - <MudStack Row="@true" AlignItems="AlignItems.Center"> - <MudText Typo="Typo.h6" Class="mr-3"> - Your workspaces - </MudText> - <MudIconButton Icon="@Icons.Material.Filled.Close" Variant="Variant.Filled" Color="Color.Default" Size="Size.Small" OnClick="() => this.ToggleWorkspacesOverlay()"/> - </MudStack> - </MudDrawerHeader> - <MudDrawerContainer Class="ml-6"> - <Workspaces @ref="this.workspaces" @bind-CurrentChatThread="@this.chatThread" /> - </MudDrawerContainer> - </MudDrawer> -} \ No newline at end of file + @if ( + this.SettingsManager.ConfigurationData.Workspace.StorageBehavior != WorkspaceStorageBehavior.DISABLE_WORKSPACES + && this.SettingsManager.ConfigurationData.Workspace.DisplayBehavior is WorkspaceDisplayBehavior.TOGGLE_OVERLAY) + { + <MudDrawer @bind-Open="@this.workspaceOverlayVisible" Width="40em" Height="100%" Anchor="Anchor.Start" Variant="DrawerVariant.Temporary" Elevation="1"> + <MudDrawerHeader> + <MudStack Row="@true" AlignItems="AlignItems.Center"> + <MudText Typo="Typo.h6" Class="mr-3"> + Your workspaces + </MudText> + <MudIconButton Icon="@Icons.Material.Filled.Close" Variant="Variant.Filled" Color="Color.Default" Size="Size.Small" OnClick="() => this.ToggleWorkspacesOverlay()"/> + </MudStack> + </MudDrawerHeader> + <MudDrawerContainer Class="ml-6"> + <Workspaces @ref="this.workspaces" @bind-CurrentChatThread="@this.chatThread"/> + </MudDrawerContainer> + </MudDrawer> + } +</div> \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Home.razor b/app/MindWork AI Studio/Pages/Home.razor index a86b8372..de74a626 100644 --- a/app/MindWork AI Studio/Pages/Home.razor +++ b/app/MindWork AI Studio/Pages/Home.razor @@ -1,40 +1,42 @@ @attribute [Route(Routes.HOME)] -<MudImage Src="svg/banner.svg" /> -<MudText Typo="Typo.h3" Class="mt-2 mb-2">Let's get started</MudText> +<div class="inner-scrolling-context"> + <MudImage Src="svg/banner.svg" Style="max-height: 16em; width: 100%; object-fit: cover;" /> + <MudText Typo="Typo.h3" Class="mt-2 mb-2">Let's get started</MudText> -<InnerScrolling HeaderHeight="288px - 8em"> - <MudExpansionPanels Class="mb-3" MultiExpansion="@false"> + <InnerScrolling> + <MudExpansionPanels Class="mb-3" MultiExpansion="@false"> - <ExpansionPanel HeaderIcon="@Icons.Material.Filled.MenuBook" HeaderText="Introduction" IsExpanded="@true"> - <MudText Typo="Typo.h5" Class="mb-3"> - Welcome to MindWork AI Studio! - </MudText> - <MudText Typo="Typo.body1" Class="mb-3" Style="text-align: justify; hyphens: auto;"> - Thank you for considering MindWork AI Studio for your AI needs. This app is designed to help you harness - the power of Large Language Models (LLMs). Please note that this app doesn't come with an integrated - LLM. Instead, you will need to bring an API key from a suitable provider. - </MudText> - <MudText Typo="Typo.body1" Class="mb-3"> - Here's what makes MindWork AI Studio stand out: - </MudText> - <MudTextList Icon="@Icons.Material.Filled.CheckCircle" Clickable="@true" Items="@ITEMS_ADVANTAGES" Class="mb-3"/> - <MudText Typo="Typo.body1" Class="mb-3"> - We hope you enjoy using MindWork AI Studio to bring your AI projects to life! - </MudText> - </ExpansionPanel> + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.MenuBook" HeaderText="Introduction" IsExpanded="@true"> + <MudText Typo="Typo.h5" Class="mb-3"> + Welcome to MindWork AI Studio! + </MudText> + <MudText Typo="Typo.body1" Class="mb-3" Style="text-align: justify; hyphens: auto;"> + Thank you for considering MindWork AI Studio for your AI needs. This app is designed to help you harness + the power of Large Language Models (LLMs). Please note that this app doesn't come with an integrated + LLM. Instead, you will need to bring an API key from a suitable provider. + </MudText> + <MudText Typo="Typo.body1" Class="mb-3"> + Here's what makes MindWork AI Studio stand out: + </MudText> + <MudTextList Icon="@Icons.Material.Filled.CheckCircle" Clickable="@true" Items="@ITEMS_ADVANTAGES" Class="mb-3"/> + <MudText Typo="Typo.body1" Class="mb-3"> + We hope you enjoy using MindWork AI Studio to bring your AI projects to life! + </MudText> + </ExpansionPanel> - <ExpansionPanel HeaderIcon="@Icons.Material.Filled.EventNote" HeaderText="Last Changelog"> - <MudMarkdown Value="@this.LastChangeContent" OverrideHeaderTypo="@Markdown.OverrideHeaderTypo"/> - </ExpansionPanel> + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.EventNote" HeaderText="Last Changelog"> + <MudMarkdown Value="@this.LastChangeContent" OverrideHeaderTypo="@Markdown.OverrideHeaderTypo"/> + </ExpansionPanel> - <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Lightbulb" HeaderText="Vision"> - <Vision/> - </ExpansionPanel> - - <ExpansionPanel HeaderIcon="@Icons.Material.Filled.RocketLaunch" HeaderText="Quick Start Guide"> - <MudMarkdown OverrideHeaderTypo="@Markdown.OverrideHeaderTypo" Value="@QUICK_START_GUIDE"/> - </ExpansionPanel> + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Lightbulb" HeaderText="Vision"> + <Vision/> + </ExpansionPanel> + + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.RocketLaunch" HeaderText="Quick Start Guide"> + <MudMarkdown OverrideHeaderTypo="@Markdown.OverrideHeaderTypo" Value="@QUICK_START_GUIDE"/> + </ExpansionPanel> - </MudExpansionPanels> -</InnerScrolling> \ No newline at end of file + </MudExpansionPanels> + </InnerScrolling> +</div> \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Settings.razor b/app/MindWork AI Studio/Pages/Settings.razor index f09a180e..41c42983 100644 --- a/app/MindWork AI Studio/Pages/Settings.razor +++ b/app/MindWork AI Studio/Pages/Settings.razor @@ -1,31 +1,33 @@ @attribute [Route(Routes.SETTINGS)] @using AIStudio.Components.Settings -<MudText Typo="Typo.h3" Class="mb-12">Settings</MudText> +<div class="inner-scrolling-context"> + <MudText Typo="Typo.h3" Class="mb-12">Settings</MudText> -<InnerScrolling HeaderHeight="10em"> - <MudExpansionPanels Class="mb-3" MultiExpansion="@false"> - <SettingsPanelProviders @bind-AvailableLLMProviders="@this.availableLLMProviders" /> - <SettingsPanelEmbeddings AvailableLLMProvidersFunc="() => this.availableLLMProviders" @bind-AvailableEmbeddingProviders="@this.availableEmbeddingProviders" /> - <SettingsPanelDataSources AvailableLLMProvidersFunc="() => this.availableLLMProviders" AvailableEmbeddingsFunc="() => this.availableEmbeddingProviders" @bind-AvailableDataSources="@this.availableDataSources" /> - <SettingsPanelProfiles AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelApp AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelChat AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelWorkspaces AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelIconFinder AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelTranslation AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelCoding AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelERIServer AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelTextSummarizer AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelAgenda AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelGrammarSpelling AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelRewrite AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelWritingEMails AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelJobPostings AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelLegalCheck AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelSynonyms AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelMyTasks AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelAssistantBias AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelAgentContentCleaner AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - </MudExpansionPanels> -</InnerScrolling> \ No newline at end of file + <InnerScrolling> + <MudExpansionPanels Class="mb-3" MultiExpansion="@false"> + <SettingsPanelProviders @bind-AvailableLLMProviders="@this.availableLLMProviders" /> + <SettingsPanelEmbeddings AvailableLLMProvidersFunc="() => this.availableLLMProviders" @bind-AvailableEmbeddingProviders="@this.availableEmbeddingProviders" /> + <SettingsPanelDataSources AvailableLLMProvidersFunc="() => this.availableLLMProviders" AvailableEmbeddingsFunc="() => this.availableEmbeddingProviders" @bind-AvailableDataSources="@this.availableDataSources" /> + <SettingsPanelProfiles AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelApp AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelChat AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelWorkspaces AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelIconFinder AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelTranslation AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelCoding AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelERIServer AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelTextSummarizer AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelAgenda AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelGrammarSpelling AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelRewrite AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelWritingEMails AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelJobPostings AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelLegalCheck AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelSynonyms AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelMyTasks AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelAssistantBias AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelAgentContentCleaner AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + </MudExpansionPanels> + </InnerScrolling> +</div> \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Supporters.razor b/app/MindWork AI Studio/Pages/Supporters.razor index 6793d6d9..784cbcb4 100644 --- a/app/MindWork AI Studio/Pages/Supporters.razor +++ b/app/MindWork AI Studio/Pages/Supporters.razor @@ -1,63 +1,65 @@ @attribute [Route(Routes.SUPPORTERS)] -<MudText Typo="Typo.h3" Class="mb-2">Supporters</MudText> +<div class="inner-scrolling-context"> + <MudText Typo="Typo.h3" Class="mb-2">Supporters</MudText> -<InnerScrolling HeaderHeight="6em"> - - <div class="border-solid border-2 rounded-lg pa-3 mb-6"> - <MudText Typo="Typo.h4" Class="mb-2">Our Titans</MudText> - <MudText Typo="Typo.body1" Style="text-align: justify; hyphens: auto;" Class="mb-3"> - In this section, we highlight the titan supporters of MindWork AI Studio. Titans are prestigious companies that provide significant support to our mission. - </MudText> - <MudText Typo="Typo.body1" Style="text-align: justify; hyphens: auto;" Class="mb-3"> - For companies, sponsoring MindWork AI Studio is not only a way to support innovation but also a valuable opportunity for public relations and marketing. Your company's name and logo will be featured prominently, showcasing your commitment to using cutting-edge AI tools and enhancing your reputation as an innovative enterprise. - </MudText> - <MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@Icons.Material.Filled.Business" Variant="Variant.Filled" Target="_blank"> - Become our first Titan - </MudButton> - </div> - - <MudGrid Justify="Justify.Center" Spacing="2" Style="width: 100%;" Class="ma-0"> - <MudItem Class="pa-0 pr-2" xs="6"> - <MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3"> - <MudText Typo="Typo.h4" Class="mb-3 d-flex align-center"> - <MudIcon Icon="@Icons.Material.Filled.People" Size="Size.Large" class="mr-2"/> - Individual Contributors - </MudText> + <InnerScrolling> + + <div class="border-solid border-2 rounded-lg pa-3 mb-6"> + <MudText Typo="Typo.h4" Class="mb-2">Our Titans</MudText> + <MudText Typo="Typo.body1" Style="text-align: justify; hyphens: auto;" Class="mb-3"> + In this section, we highlight the titan supporters of MindWork AI Studio. Titans are prestigious companies that provide significant support to our mission. + </MudText> + <MudText Typo="Typo.body1" Style="text-align: justify; hyphens: auto;" Class="mb-3"> + For companies, sponsoring MindWork AI Studio is not only a way to support innovation but also a valuable opportunity for public relations and marketing. Your company's name and logo will be featured prominently, showcasing your commitment to using cutting-edge AI tools and enhancing your reputation as an innovative enterprise. + </MudText> + <MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@Icons.Material.Filled.Business" Variant="Variant.Filled" Target="_blank"> + Become our first Titan + </MudButton> + </div> + + <MudGrid Justify="Justify.Center" Spacing="2" Style="width: 100%;" Class="ma-0"> + <MudItem Class="pa-0 pr-2" xs="6"> + <MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3"> + <MudText Typo="Typo.h4" Class="mb-3 d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.People" Size="Size.Large" class="mr-2"/> + Individual Contributors + </MudText> - <MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@Icons.Material.Filled.People" Variant="Variant.Filled" Target="_blank"> - Become a contributor - </MudButton> - - <MudText Typo="Typo.h6" Class="mt-8"> - The first 10 supporters who make a monthly contribution: - </MudText> - <MudList T="string"> - <Supporter Name="richard-stanton" Type="SupporterType.INDIVIDUAL" URL="https://github.com/richard-stanton" Acknowledgment="Thank you, Richard, for being the first."/> - <Supporter Name="peerschuett" Type="SupporterType.INDIVIDUAL" URL="https://github.com/peerschuett" Acknowledgment="Thank you, Peer, for your courage in being the second person to support the project financially."/> - </MudList> + <MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@Icons.Material.Filled.People" Variant="Variant.Filled" Target="_blank"> + Become a contributor + </MudButton> + + <MudText Typo="Typo.h6" Class="mt-8"> + The first 10 supporters who make a monthly contribution: + </MudText> + <MudList T="string"> + <Supporter Name="richard-stanton" Type="SupporterType.INDIVIDUAL" URL="https://github.com/richard-stanton" Acknowledgment="Thank you, Richard, for being the first."/> + <Supporter Name="peerschuett" Type="SupporterType.INDIVIDUAL" URL="https://github.com/peerschuett" Acknowledgment="Thank you, Peer, for your courage in being the second person to support the project financially."/> + </MudList> - <MudText Typo="Typo.h6" Class="mt-8"> - The first 10 supporters who make a one-time contribution: - </MudText> - <MudList T="string"> - <Supporter Name="Bessieres" Type="SupporterType.INDIVIDUAL" URL="https://github.com/Bessieres" Acknowledgment="Thank you for being the first to contribute a one-time donation."/> - </MudList> - </MudPaper> - </MudItem> + <MudText Typo="Typo.h6" Class="mt-8"> + The first 10 supporters who make a one-time contribution: + </MudText> + <MudList T="string"> + <Supporter Name="Bessieres" Type="SupporterType.INDIVIDUAL" URL="https://github.com/Bessieres" Acknowledgment="Thank you for being the first to contribute a one-time donation."/> + </MudList> + </MudPaper> + </MudItem> - <MudItem xs="6" Class="pa-0 pl-2"> - <MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3"> - <MudText Typo="Typo.h4" Class="mb-3 d-flex align-center"> - <MudIcon Icon="@Icons.Material.Filled.Business" Size="Size.Large" class="mr-2"/> - Business Contributors - </MudText> + <MudItem xs="6" Class="pa-0 pl-2"> + <MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3"> + <MudText Typo="Typo.h4" Class="mb-3 d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.Business" Size="Size.Large" class="mr-2"/> + Business Contributors + </MudText> - <MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@Icons.Material.Filled.Business" Variant="Variant.Filled" Target="_blank"> - Become a contributor - </MudButton> - </MudPaper> - </MudItem> - </MudGrid> + <MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@Icons.Material.Filled.Business" Variant="Variant.Filled" Target="_blank"> + Become a contributor + </MudButton> + </MudPaper> + </MudItem> + </MudGrid> -</InnerScrolling> \ No newline at end of file + </InnerScrolling> +</div> \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Writer.razor b/app/MindWork AI Studio/Pages/Writer.razor index bf65c3e7..6108647b 100644 --- a/app/MindWork AI Studio/Pages/Writer.razor +++ b/app/MindWork AI Studio/Pages/Writer.razor @@ -1,57 +1,59 @@ @attribute [Route(Routes.WRITER)] @inherits MSGComponentBase -<MudText Typo="Typo.h3" Class="mb-2 mr-3"> - Writer -</MudText> +<div class="inner-scrolling-context"> + <MudText Typo="Typo.h3" Class="mb-2 mr-3"> + Writer + </MudText> -<PreviewExperimental/> + <PreviewExperimental/> -<ProviderSelection @bind-ProviderSettings="@this.providerSettings"/> -<InnerScrolling HeaderHeight="12.3em"> - <ChildContent> - <MudTextField - @ref="@this.textField" - T="string" - Label="Write your text" - @bind-Text="@this.userInput" - Immediate="@true" - Lines="16" - MaxLines="16" - Typo="Typo.body1" - Variant="Variant.Outlined" - InputMode="InputMode.text" - FullWidth="@true" - OnKeyDown="@this.InputKeyEvent" - UserAttributes="@USER_INPUT_ATTRIBUTES"/> + <ProviderSelection @bind-ProviderSettings="@this.providerSettings"/> + <InnerScrolling> + <ChildContent> + <MudTextField + @ref="@this.textField" + T="string" + Label="Write your text" + @bind-Text="@this.userInput" + Immediate="@true" + Lines="16" + MaxLines="16" + Typo="Typo.body1" + Variant="Variant.Outlined" + InputMode="InputMode.text" + FullWidth="@true" + OnKeyDown="@this.InputKeyEvent" + UserAttributes="@USER_INPUT_ATTRIBUTES"/> - <MudTextField - T="string" - Label="Your stage directions" - @bind-Text="@this.userDirection" - Immediate="@true" - Lines="4" - MaxLines="4" - Typo="Typo.body1" - Variant="Variant.Outlined" - InputMode="InputMode.text" - FullWidth="@true" - UserAttributes="@USER_INPUT_ATTRIBUTES"/> - </ChildContent> - <FooterContent> - @if (this.isStreaming) - { - <MudProgressLinear Color="Color.Primary" Indeterminate="true" Class="mb-6" /> - } - <MudTextField - T="string" - Label="Suggestion" - @bind-Text="@this.suggestion" - ReadOnly="@true" - Lines="3" - Typo="Typo.body1" - Variant="Variant.Outlined" - FullWidth="@true" - UserAttributes="@USER_INPUT_ATTRIBUTES"/> - </FooterContent> -</InnerScrolling> \ No newline at end of file + <MudTextField + T="string" + Label="Your stage directions" + @bind-Text="@this.userDirection" + Immediate="@true" + Lines="4" + MaxLines="4" + Typo="Typo.body1" + Variant="Variant.Outlined" + InputMode="InputMode.text" + FullWidth="@true" + UserAttributes="@USER_INPUT_ATTRIBUTES"/> + </ChildContent> + <FooterContent> + @if (this.isStreaming) + { + <MudProgressLinear Color="Color.Primary" Indeterminate="true" Class="mb-6" /> + } + <MudTextField + T="string" + Label="Suggestion" + @bind-Text="@this.suggestion" + ReadOnly="@true" + Lines="3" + Typo="Typo.body1" + Variant="Variant.Outlined" + FullWidth="@true" + UserAttributes="@USER_INPUT_ATTRIBUTES"/> + </FooterContent> + </InnerScrolling> +</div> \ No newline at end of file diff --git a/app/MindWork AI Studio/packages.lock.json b/app/MindWork AI Studio/packages.lock.json index a4133218..d1c6dae4 100644 --- a/app/MindWork AI Studio/packages.lock.json +++ b/app/MindWork AI Studio/packages.lock.json @@ -210,6 +210,6 @@ "type": "Project" } }, - "net8.0/osx-x64": {} + "net8.0/osx-arm64": {} } } \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/app.css b/app/MindWork AI Studio/wwwroot/app.css index 6257c7c7..e62b4f83 100644 --- a/app/MindWork AI Studio/wwwroot/app.css +++ b/app/MindWork AI Studio/wwwroot/app.css @@ -71,7 +71,25 @@ text-decoration-thickness: 2px; } -/* Fixed for MudBlazor, tooltips inside of navmenu */ +/* Fix for MudBlazor, tooltips inside of navmenu */ .mud-navmenu .mud-tooltip-root { display: initial !important; } + +/* Context div for inner scrolling component */ +.inner-scrolling-context { + display: flex; + flex-direction: column; + height: 100vh; +} + +/* Fixed MudSplitter inside context div for inner scrolling component */ +.inner-scrolling-context > .mud-splitter { + flex-grow: 1; + overflow: hidden; +} + +/* Fixed the slider part of MudSplitter inside context div for inner scrolling component */ +.inner-scrolling-context > .mud-splitter > .mud-slider > .mud-slider-container { + padding-bottom: 12px; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md new file mode 100644 index 00000000..141ed9d3 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md @@ -0,0 +1,2 @@ +# v0.9.27, build 202 (2025-01-xx xx:xx UTC) +- Improved the inner content scrolling to use the entire space available. \ No newline at end of file From ed14525390e70e2adcfae72f6c6f20de8157cd14 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 21 Jan 2025 13:49:44 +0100 Subject: [PATCH 007/110] Fixed hostname validation message for ERI data sources (#265) --- app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs b/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs index 2ba77270..f55f906a 100644 --- a/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs +++ b/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs @@ -23,7 +23,7 @@ public sealed class DataSourceValidation public string? ValidatingHostname(string hostname) { if(string.IsNullOrWhiteSpace(hostname)) - return "Please enter a hostname, e.g., http://localhost:1234"; + return "Please enter a hostname, e.g., http://localhost"; if(!hostname.StartsWith("http://", StringComparison.InvariantCultureIgnoreCase) && !hostname.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase)) return "The hostname must start with either http:// or https://"; From 1df1d3f3288797774634e70da165d5f372d8e8ee Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 21 Jan 2025 13:52:10 +0100 Subject: [PATCH 008/110] Updated changelog (#266) --- app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md index 141ed9d3..8d2b46ff 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md @@ -1,2 +1,3 @@ # v0.9.27, build 202 (2025-01-xx xx:xx UTC) -- Improved the inner content scrolling to use the entire space available. \ No newline at end of file +- Improved the inner content scrolling to use the entire space available. +- Fixed the hostname validation message for ERI v1 data sources. \ No newline at end of file From cf975f2a6c198abd60cc6fd045b4b7afe0f8774b Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 21 Jan 2025 14:20:03 +0100 Subject: [PATCH 009/110] Removed the "send to" button from the ERI server assistant (#267) --- app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs | 2 ++ app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs index 3c94a4cd..c5f0b289 100644 --- a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs +++ b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs @@ -299,6 +299,8 @@ public partial class AssistantERI : AssistantBaseCore protected override IReadOnlyList<IButtonData> FooterButtons => []; protected override bool ShowEntireChatThread => true; + + protected override bool ShowSendTo => false; protected override string SubmitText => "Create the ERI server"; diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md index 8d2b46ff..13aac2b0 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md @@ -1,3 +1,4 @@ # v0.9.27, build 202 (2025-01-xx xx:xx UTC) - Improved the inner content scrolling to use the entire space available. -- Fixed the hostname validation message for ERI v1 data sources. \ No newline at end of file +- Fixed the hostname validation message for ERI v1 data sources. +- Removed the "send to" button from the ERI server assistant, since it is not supported. \ No newline at end of file From be408a6aee6166346374e7daf9c3a584077b13b9 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 21 Jan 2025 15:36:22 +0100 Subject: [PATCH 010/110] Fixed message bus issues (#268) --- .../Assistants/AssistantBase.razor.cs | 2 ++ .../Components/AssistantBlock.razor.cs | 2 ++ .../Components/ChatComponent.razor.cs | 21 +++++++++++++++---- .../Components/ConfidenceInfo.razor.cs | 2 ++ .../Components/ConfigurationBase.razor.cs | 2 ++ .../ConfigurationProviderSelection.razor.cs | 2 ++ .../Components/InnerScrolling.razor.cs | 2 ++ .../Components/MSGComponentBase.cs | 2 ++ .../Layout/MainLayout.razor.cs | 2 ++ app/MindWork AI Studio/Pages/Chat.razor.cs | 4 ++++ .../Pages/Settings.razor.cs | 2 ++ app/MindWork AI Studio/Pages/Writer.razor.cs | 2 ++ .../Tools/IMessageBusReceiver.cs | 2 ++ .../Tools/Services/UpdateService.cs | 2 ++ .../wwwroot/changelog/v0.9.27.md | 2 ++ 15 files changed, 47 insertions(+), 4 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs index b589f8ff..8e5b60df 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs @@ -147,6 +147,8 @@ public abstract partial class AssistantBase : ComponentBase, IMessageBusReceiver #region Implementation of IMessageBusReceiver + public string ComponentName => nameof(AssistantBase); + public Task ProcessMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) { switch (triggeredEvent) diff --git a/app/MindWork AI Studio/Components/AssistantBlock.razor.cs b/app/MindWork AI Studio/Components/AssistantBlock.razor.cs index f79b7bda..2d109c61 100644 --- a/app/MindWork AI Studio/Components/AssistantBlock.razor.cs +++ b/app/MindWork AI Studio/Components/AssistantBlock.razor.cs @@ -44,6 +44,8 @@ public partial class AssistantBlock : ComponentBase, IMessageBusReceiver, IDispo #region Implementation of IMessageBusReceiver + public string ComponentName => nameof(AssistantBlock); + public Task ProcessMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) { switch (triggeredEvent) diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor.cs b/app/MindWork AI Studio/Components/ChatComponent.razor.cs index 5ca0ebdd..d9e597b0 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor.cs +++ b/app/MindWork AI Studio/Components/ChatComponent.razor.cs @@ -525,10 +525,20 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable this.isStreaming = false; this.hasUnsavedChanges = false; this.userInput = string.Empty; - this.currentWorkspaceId = this.ChatThread?.WorkspaceId ?? Guid.Empty; - this.currentWorkspaceName = this.ChatThread is null ? string.Empty : await WorkspaceBehaviour.LoadWorkspaceName(this.ChatThread.WorkspaceId); - this.WorkspaceName(this.currentWorkspaceName); - + + if (this.ChatThread is not null) + { + this.currentWorkspaceId = this.ChatThread.WorkspaceId; + this.currentWorkspaceName = await WorkspaceBehaviour.LoadWorkspaceName(this.ChatThread.WorkspaceId); + this.WorkspaceName(this.currentWorkspaceName); + } + else + { + this.currentWorkspaceId = Guid.Empty; + this.currentWorkspaceName = string.Empty; + this.WorkspaceName(this.currentWorkspaceName); + } + await this.SelectProviderWhenLoadingChat(); if (this.SettingsManager.ConfigurationData.Chat.ShowLatestMessageAfterLoading) { @@ -653,6 +663,8 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable #region Overrides of MSGComponentBase + public override string ComponentName => nameof(ChatComponent); + public override async Task ProcessIncomingMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default { switch (triggeredEvent) @@ -692,6 +704,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable public async ValueTask DisposeAsync() { + this.MessageBus.Unregister(this); if(this.SettingsManager.ConfigurationData.Workspace.StorageBehavior is WorkspaceStorageBehavior.STORE_CHATS_AUTOMATICALLY) { await this.SaveThread(); diff --git a/app/MindWork AI Studio/Components/ConfidenceInfo.razor.cs b/app/MindWork AI Studio/Components/ConfidenceInfo.razor.cs index a541b273..97db85f2 100644 --- a/app/MindWork AI Studio/Components/ConfidenceInfo.razor.cs +++ b/app/MindWork AI Studio/Components/ConfidenceInfo.razor.cs @@ -63,6 +63,8 @@ public partial class ConfidenceInfo : ComponentBase, IMessageBusReceiver, IDispo #region Implementation of IMessageBusReceiver + public string ComponentName => nameof(ConfidenceInfo); + public Task ProcessMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) { switch (triggeredEvent) diff --git a/app/MindWork AI Studio/Components/ConfigurationBase.razor.cs b/app/MindWork AI Studio/Components/ConfigurationBase.razor.cs index 6951c5e0..64217ffe 100644 --- a/app/MindWork AI Studio/Components/ConfigurationBase.razor.cs +++ b/app/MindWork AI Studio/Components/ConfigurationBase.razor.cs @@ -57,6 +57,8 @@ public partial class ConfigurationBase : ComponentBase, IMessageBusReceiver, IDi #region Implementation of IMessageBusReceiver + public string ComponentName => nameof(ConfigurationBase); + public Task ProcessMessage<TMsg>(ComponentBase? sendingComponent, Event triggeredEvent, TMsg? data) { switch (triggeredEvent) diff --git a/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs b/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs index 7e93e76c..debeae0c 100644 --- a/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs +++ b/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs @@ -60,6 +60,8 @@ public partial class ConfigurationProviderSelection : ComponentBase, IMessageBus #region Implementation of IMessageBusReceiver + public string ComponentName => nameof(ConfigurationProviderSelection); + public async Task ProcessMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) { switch (triggeredEvent) diff --git a/app/MindWork AI Studio/Components/InnerScrolling.razor.cs b/app/MindWork AI Studio/Components/InnerScrolling.razor.cs index 3b483c4a..29f4847b 100644 --- a/app/MindWork AI Studio/Components/InnerScrolling.razor.cs +++ b/app/MindWork AI Studio/Components/InnerScrolling.razor.cs @@ -50,6 +50,8 @@ public partial class InnerScrolling : MSGComponentBase #region Overrides of MSGComponentBase + public override string ComponentName => nameof(InnerScrolling); + public override Task ProcessIncomingMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default { switch (triggeredEvent) diff --git a/app/MindWork AI Studio/Components/MSGComponentBase.cs b/app/MindWork AI Studio/Components/MSGComponentBase.cs index 940ec78e..4dddb57d 100644 --- a/app/MindWork AI Studio/Components/MSGComponentBase.cs +++ b/app/MindWork AI Studio/Components/MSGComponentBase.cs @@ -24,6 +24,8 @@ public abstract class MSGComponentBase : ComponentBase, IDisposable, IMessageBus #region Implementation of IMessageBusReceiver + public abstract string ComponentName { get; } + public Task ProcessMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) { switch (triggeredEvent) diff --git a/app/MindWork AI Studio/Layout/MainLayout.razor.cs b/app/MindWork AI Studio/Layout/MainLayout.razor.cs index e18afe1d..47a09be7 100644 --- a/app/MindWork AI Studio/Layout/MainLayout.razor.cs +++ b/app/MindWork AI Studio/Layout/MainLayout.razor.cs @@ -136,6 +136,8 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, IDis #region Implementation of IMessageBusReceiver + public string ComponentName => nameof(MainLayout); + public async Task ProcessMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) { switch (triggeredEvent) diff --git a/app/MindWork AI Studio/Pages/Chat.razor.cs b/app/MindWork AI Studio/Pages/Chat.razor.cs index 8546b64d..1609a226 100644 --- a/app/MindWork AI Studio/Pages/Chat.razor.cs +++ b/app/MindWork AI Studio/Pages/Chat.razor.cs @@ -28,6 +28,8 @@ public partial class Chat : MSGComponentBase protected override async Task OnInitializedAsync() { + this.ApplyFilters([], [ Event.WORKSPACE_TOGGLE_OVERLAY ]); + this.splitterPosition = this.SettingsManager.ConfigurationData.Workspace.SplitterPosition; this.splitterSaveTimer.AutoReset = false; this.splitterSaveTimer.Elapsed += async (_, _) => @@ -74,6 +76,8 @@ public partial class Chat : MSGComponentBase #region Overrides of MSGComponentBase + public override string ComponentName => nameof(Chat); + public override Task ProcessIncomingMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default { switch (triggeredEvent) diff --git a/app/MindWork AI Studio/Pages/Settings.razor.cs b/app/MindWork AI Studio/Pages/Settings.razor.cs index 6baf7f14..600f4e93 100644 --- a/app/MindWork AI Studio/Pages/Settings.razor.cs +++ b/app/MindWork AI Studio/Pages/Settings.razor.cs @@ -28,6 +28,8 @@ public partial class Settings : ComponentBase, IMessageBusReceiver, IDisposable #region Implementation of IMessageBusReceiver + public string ComponentName => nameof(Settings); + public Task ProcessMessage<TMsg>(ComponentBase? sendingComponent, Event triggeredEvent, TMsg? data) { switch (triggeredEvent) diff --git a/app/MindWork AI Studio/Pages/Writer.razor.cs b/app/MindWork AI Studio/Pages/Writer.razor.cs index 7b6a8cf5..58160745 100644 --- a/app/MindWork AI Studio/Pages/Writer.razor.cs +++ b/app/MindWork AI Studio/Pages/Writer.razor.cs @@ -41,6 +41,8 @@ public partial class Writer : MSGComponentBase, IAsyncDisposable #region Overrides of MSGComponentBase + public override string ComponentName => nameof(Writer); + public override Task ProcessIncomingMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) where T : default { return Task.CompletedTask; diff --git a/app/MindWork AI Studio/Tools/IMessageBusReceiver.cs b/app/MindWork AI Studio/Tools/IMessageBusReceiver.cs index 019ce115..044e425b 100644 --- a/app/MindWork AI Studio/Tools/IMessageBusReceiver.cs +++ b/app/MindWork AI Studio/Tools/IMessageBusReceiver.cs @@ -4,6 +4,8 @@ namespace AIStudio.Tools; public interface IMessageBusReceiver { + public string ComponentName { get; } + public Task ProcessMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data); public Task<TResult?> ProcessMessageWithResult<TPayload, TResult>(ComponentBase? sendingComponent, Event triggeredEvent, TPayload? data); diff --git a/app/MindWork AI Studio/Tools/Services/UpdateService.cs b/app/MindWork AI Studio/Tools/Services/UpdateService.cs index 8de0690d..bfabc7a0 100644 --- a/app/MindWork AI Studio/Tools/Services/UpdateService.cs +++ b/app/MindWork AI Studio/Tools/Services/UpdateService.cs @@ -60,6 +60,8 @@ public sealed class UpdateService : BackgroundService, IMessageBusReceiver #region Implementation of IMessageBusReceiver + public string ComponentName => nameof(UpdateService); + public async Task ProcessMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) { switch (triggeredEvent) diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md index 13aac2b0..d77bbc9c 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md @@ -1,4 +1,6 @@ # v0.9.27, build 202 (2025-01-xx xx:xx UTC) - Improved the inner content scrolling to use the entire space available. +- Improved message process debugging. This helps to identify issues related to the message handling. - Fixed the hostname validation message for ERI v1 data sources. +- Fixed a memory leak in the chat component. - Removed the "send to" button from the ERI server assistant, since it is not supported. \ No newline at end of file From 1681405fb92057f5ad9dd913b775d4e2d2d57ac0 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 21 Jan 2025 18:58:20 +0100 Subject: [PATCH 011/110] Fixed an issue with the workspace title not being updated (#269) --- app/MindWork AI Studio/Pages/Chat.razor | 6 +++--- app/MindWork AI Studio/Pages/Chat.razor.cs | 6 ++++++ app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md | 1 + 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/app/MindWork AI Studio/Pages/Chat.razor b/app/MindWork AI Studio/Pages/Chat.razor index 8c345b4a..b77edf18 100644 --- a/app/MindWork AI Studio/Pages/Chat.razor +++ b/app/MindWork AI Studio/Pages/Chat.razor @@ -49,7 +49,7 @@ @bind-ChatThread="@this.chatThread" @bind-Provider="@this.providerSettings" Workspaces="@this.workspaces" - WorkspaceName="name => this.currentWorkspaceName = name"/> + WorkspaceName="name => this.UpdateWorkspaceName(name)"/> </EndContent> </MudSplitter> } @@ -67,7 +67,7 @@ @bind-ChatThread="@this.chatThread" @bind-Provider="@this.providerSettings" Workspaces="@this.workspaces" - WorkspaceName="name => this.currentWorkspaceName = name"/> + WorkspaceName="name => this.UpdateWorkspaceName(name)"/> </MudStack> } else @@ -77,7 +77,7 @@ @bind-ChatThread="@this.chatThread" @bind-Provider="@this.providerSettings" Workspaces="@this.workspaces" - WorkspaceName="name => this.currentWorkspaceName = name"/> + WorkspaceName="name => this.UpdateWorkspaceName(name)"/> } @if ( diff --git a/app/MindWork AI Studio/Pages/Chat.razor.cs b/app/MindWork AI Studio/Pages/Chat.razor.cs index 1609a226..3ee7ecc9 100644 --- a/app/MindWork AI Studio/Pages/Chat.razor.cs +++ b/app/MindWork AI Studio/Pages/Chat.razor.cs @@ -73,6 +73,12 @@ public partial class Chat : MSGComponentBase } private double ReadSplitterPosition => this.AreWorkspacesHidden ? 6 : this.splitterPosition; + + private void UpdateWorkspaceName(string workspaceName) + { + this.currentWorkspaceName = workspaceName; + this.StateHasChanged(); + } #region Overrides of MSGComponentBase diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md index d77bbc9c..1f51fbf1 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md @@ -3,4 +3,5 @@ - Improved message process debugging. This helps to identify issues related to the message handling. - Fixed the hostname validation message for ERI v1 data sources. - Fixed a memory leak in the chat component. +- Fixed an issue with the workspace title not being updated when a chat was moved to another workspace. - Removed the "send to" button from the ERI server assistant, since it is not supported. \ No newline at end of file From 09d67bc1c2069875b6ef34f725360da6fc8e7fa7 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 21 Jan 2025 19:12:36 +0100 Subject: [PATCH 012/110] Fixed the workspace name after re-rendering the chat component (#270) --- .../Components/ChatComponent.razor.cs | 12 ++++++++++-- app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md | 3 ++- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor.cs b/app/MindWork AI Studio/Components/ChatComponent.razor.cs index d9e597b0..e3c66aa1 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor.cs +++ b/app/MindWork AI Studio/Components/ChatComponent.razor.cs @@ -123,6 +123,13 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable this.mustLoadChat = true; this.Logger.LogInformation($"The loading of the chat '{this.loadChat.ChatId}' was deferred and will be loaded now."); } + + if (this.ChatThread is not null) + { + this.currentWorkspaceId = this.ChatThread.WorkspaceId; + this.currentWorkspaceName = await WorkspaceBehaviour.LoadWorkspaceName(this.ChatThread.WorkspaceId); + this.WorkspaceName(this.currentWorkspaceName); + } await this.SelectProviderWhenLoadingChat(); await base.OnInitializedAsync(); @@ -538,14 +545,15 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable this.currentWorkspaceName = string.Empty; this.WorkspaceName(this.currentWorkspaceName); } - + await this.SelectProviderWhenLoadingChat(); if (this.SettingsManager.ConfigurationData.Chat.ShowLatestMessageAfterLoading) { this.mustScrollToBottomAfterRender = true; this.scrollRenderCountdown = 2; - this.StateHasChanged(); } + + this.StateHasChanged(); } private async Task ResetState() diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md index 1f51fbf1..49f20500 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md @@ -3,5 +3,6 @@ - Improved message process debugging. This helps to identify issues related to the message handling. - Fixed the hostname validation message for ERI v1 data sources. - Fixed a memory leak in the chat component. -- Fixed an issue with the workspace title not being updated when a chat was moved to another workspace. +- Fixed an issue with the workspace title not being updated when a chat was moved to another workspace. +- Fixed an issue with the chat component not loading the current workspace name when the component was refreshed. - Removed the "send to" button from the ERI server assistant, since it is not supported. \ No newline at end of file From 940459ca467051b0dfee76ef22d091a83e0f4aa2 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 21 Jan 2025 19:22:26 +0100 Subject: [PATCH 013/110] Fixed an issue with tooltips at the bottom of the app (#271) --- app/MindWork AI Studio/Components/ChatComponent.razor.cs | 2 +- app/MindWork AI Studio/Components/ConfidenceInfo.razor | 2 +- app/MindWork AI Studio/Components/ProfileSelection.razor | 2 +- app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor.cs b/app/MindWork AI Studio/Components/ChatComponent.razor.cs index e3c66aa1..5a10625e 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor.cs +++ b/app/MindWork AI Studio/Components/ChatComponent.razor.cs @@ -40,7 +40,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable [Inject] private IDialogService DialogService { get; init; } = null!; - private const Placement TOOLBAR_TOOLTIP_PLACEMENT = Placement.Bottom; + private const Placement TOOLBAR_TOOLTIP_PLACEMENT = Placement.Top; private static readonly Dictionary<string, object?> USER_INPUT_ATTRIBUTES = new(); private Profile currentProfile = Profile.NO_PROFILE; diff --git a/app/MindWork AI Studio/Components/ConfidenceInfo.razor b/app/MindWork AI Studio/Components/ConfidenceInfo.razor index e43a4cbe..f120b919 100644 --- a/app/MindWork AI Studio/Components/ConfidenceInfo.razor +++ b/app/MindWork AI Studio/Components/ConfidenceInfo.razor @@ -1,6 +1,6 @@ @using AIStudio.Provider <div class="d-flex"> - <MudTooltip Text="Shows and hides the confidence card with information about the selected LLM provider."> + <MudTooltip Text="Shows and hides the confidence card with information about the selected LLM provider." Placement="Placement.Top"> @if (this.Mode is ConfidenceInfoMode.ICON) { <MudIconButton Icon="@Icons.Material.Filled.Security" Class="confidence-icon" Style="@this.LLMProvider.GetConfidence(this.SettingsManager).SetColorStyle(this.SettingsManager)" OnClick="@(() => this.ToggleConfidence())"/> diff --git a/app/MindWork AI Studio/Components/ProfileSelection.razor b/app/MindWork AI Studio/Components/ProfileSelection.razor index a832ec60..44f242bf 100644 --- a/app/MindWork AI Studio/Components/ProfileSelection.razor +++ b/app/MindWork AI Studio/Components/ProfileSelection.razor @@ -1,4 +1,4 @@ -<MudTooltip Text="You can switch between your profiles here"> +<MudTooltip Text="You can switch between your profiles here" Placement="Placement.Top"> <MudMenu StartIcon="@Icons.Material.Filled.Person4" EndIcon="@Icons.Material.Filled.KeyboardArrowDown" Label="@this.CurrentProfile.Name" Variant="Variant.Filled" Color="Color.Default" Class="@this.MarginClass"> @foreach (var profile in this.SettingsManager.ConfigurationData.Profiles.GetAllProfiles()) { diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md index 49f20500..1f525e5e 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md @@ -5,4 +5,5 @@ - Fixed a memory leak in the chat component. - Fixed an issue with the workspace title not being updated when a chat was moved to another workspace. - Fixed an issue with the chat component not loading the current workspace name when the component was refreshed. +- Fixed an issue with tooltips at the bottom of the app not being displayed as expected. - Removed the "send to" button from the ERI server assistant, since it is not supported. \ No newline at end of file From 9d71978febb8f7962a5938ef2dbc7a4b4626a93d Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 21 Jan 2025 19:28:09 +0100 Subject: [PATCH 014/110] Prepared release v0.9.27 (#272) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 1 + app/MindWork AI Studio/packages.lock.json | 8 ++++---- app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md | 2 +- metadata.txt | 8 ++++---- runtime/Cargo.lock | 2 +- runtime/Cargo.toml | 2 +- runtime/tauri.conf.json | 2 +- 7 files changed, 13 insertions(+), 12 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index b8a63204..8d95f65b 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,6 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ + new (202, "v0.9.27, build 202 (2025-01-21 18:24 UTC)", "v0.9.27.md"), new (201, "v0.9.26, build 201 (2025-01-13 19:11 UTC)", "v0.9.26.md"), new (200, "v0.9.25, build 200 (2025-01-04 18:33 UTC)", "v0.9.25.md"), new (199, "v0.9.24, build 199 (2025-01-04 11:40 UTC)", "v0.9.24.md"), diff --git a/app/MindWork AI Studio/packages.lock.json b/app/MindWork AI Studio/packages.lock.json index d1c6dae4..17d7a388 100644 --- a/app/MindWork AI Studio/packages.lock.json +++ b/app/MindWork AI Studio/packages.lock.json @@ -33,9 +33,9 @@ }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[8.0.11, )", - "resolved": "8.0.11", - "contentHash": "zk5lnZrYJgtuJG8L4v17Ej8rZ3PUcR2iweNV08BaO5LbYHIi2wNaVNcJoLxvqgQdnjLlKnCCfVGLDr6QHeAarQ==" + "requested": "[8.0.12, )", + "resolved": "8.0.12", + "contentHash": "FV4HnQ3JI15PHnJ5PGTbz+rYvrih42oLi/7UMIshNwCwUZhTq13UzrggtXk4ygrcMcN+4jsS6hhshx2p/Zd0ig==" }, "MudBlazor": { "type": "Direct", @@ -210,6 +210,6 @@ "type": "Project" } }, - "net8.0/osx-arm64": {} + "net8.0/osx-x64": {} } } \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md index 1f525e5e..f333796b 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.27.md @@ -1,4 +1,4 @@ -# v0.9.27, build 202 (2025-01-xx xx:xx UTC) +# v0.9.27, build 202 (2025-01-21 18:24 UTC) - Improved the inner content scrolling to use the entire space available. - Improved message process debugging. This helps to identify issues related to the message handling. - Fixed the hostname validation message for ERI v1 data sources. diff --git a/metadata.txt b/metadata.txt index 75d83a3b..4f94d540 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ -0.9.26 -2025-01-13 19:11:57 UTC -201 +0.9.27 +2025-01-21 18:24:04 UTC +202 8.0.111 (commit f3835a7fb4) 8.0.11 (commit 9cb3b725e3) 1.84.0 (commit 9fc6b4312) 7.15.0 1.8.1 -ae72c50236f, release +940459ca467, release diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index 66c38b95..651d0d89 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -2319,7 +2319,7 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mindwork-ai-studio" -version = "0.9.26" +version = "0.9.27" dependencies = [ "aes", "arboard", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index a7ffac00..0c4dd352 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindwork-ai-studio" -version = "0.9.26" +version = "0.9.27" edition = "2021" description = "MindWork AI Studio" authors = ["Thorsten Sommer"] diff --git a/runtime/tauri.conf.json b/runtime/tauri.conf.json index 7d5e28bc..c015ff1f 100644 --- a/runtime/tauri.conf.json +++ b/runtime/tauri.conf.json @@ -6,7 +6,7 @@ }, "package": { "productName": "MindWork AI Studio", - "version": "0.9.26" + "version": "0.9.27" }, "tauri": { "allowlist": { From c836bd7f3359b96f29d59e02906f3cbac60f51fd Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 9 Feb 2025 12:36:37 +0100 Subject: [PATCH 015/110] Added an information view to all data sources (#273) --- README.md | 2 +- app/ERIClientV1/Client.Generated.cs | 1277 ----------------- app/ERIClientV1/ERIClientV1.csproj | 10 - app/MindWork AI Studio.sln | 9 - .../Assistants/ERI/ERIVersionExtensions.cs | 2 +- .../Components/Changelog.razor.cs | 2 +- .../Settings/SettingsPanelDataSources.razor | 8 +- .../SettingsPanelDataSources.razor.cs | 36 +- .../Components/TextInfoLine.razor | 19 + .../Components/TextInfoLine.razor.cs | 50 + .../Components/TextInfoLines.razor | 20 + .../Components/TextInfoLines.razor.cs | 50 + .../Dialogs/DataSourceERI-V1InfoDialog.razor | 101 ++ .../DataSourceERI-V1InfoDialog.razor.cs | 178 +++ .../Dialogs/DataSourceERI_V1Dialog.razor | 2 +- .../Dialogs/DataSourceERI_V1Dialog.razor.cs | 55 +- .../DataSourceLocalDirectoryInfoDialog.razor | 52 + ...ataSourceLocalDirectoryInfoDialog.razor.cs | 112 ++ .../DataSourceLocalFileDialog.razor.cs | 1 - .../DataSourceLocalFileInfoDialog.razor | 39 + .../DataSourceLocalFileInfoDialog.razor.cs | 40 + .../MindWork AI Studio.csproj | 4 - app/MindWork AI Studio/Pages/Home.razor.cs | 2 +- .../Provider/BaseProvider.cs | 5 + .../Provider/Google/ProviderGoogle.cs | 4 +- .../Provider/Groq/ProviderGroq.cs | 4 +- .../Provider/Mistral/ProviderMistral.cs | 4 +- .../Provider/OpenAI/ProviderOpenAI.cs | 4 +- .../Provider/SelfHosted/ProviderSelfHosted.cs | 4 +- .../Provider/X/ProviderX.cs | 4 +- .../Settings/DataModel/DataSourceERI_V1.cs | 21 +- .../Settings/IERIDataSource.cs | 16 +- .../Tools/AuthMethodsV1Extensions.cs | 2 +- .../Tools/DirectoryInfoExtensions.cs | 66 + .../Tools/ERIClient/APIResponse.cs | 19 + .../Tools/ERIClient/DataModel/AuthField.cs | 13 + .../ERIClient/DataModel/AuthFieldMapping.cs | 8 + .../Tools/ERIClient/DataModel/AuthMethod.cs | 9 + .../Tools/ERIClient/DataModel/AuthResponse.cs | 9 + .../Tools/ERIClient/DataModel/AuthScheme.cs | 9 + .../Tools/ERIClient/DataModel/ChatThread.cs | 7 + .../Tools/ERIClient/DataModel/ContentBlock.cs | 12 + .../Tools/ERIClient/DataModel/ContentType.cs | 16 + .../Tools/ERIClient/DataModel/Context.cs | 27 + .../ERIClient/DataModel/DataSourceInfo.cs | 9 + .../ERIClient/DataModel/EmbeddingInfo.cs | 20 + .../Tools/ERIClient/DataModel/ProviderType.cs | 22 + .../DataModel/ProviderTypeExtensions.cs | 13 + .../ERIClient/DataModel/RetrievalInfo.cs | 20 + .../ERIClient/DataModel/RetrievalRequest.cs | 25 + .../Tools/ERIClient/DataModel/Role.cs | 15 + .../DataModel/SecurityRequirements.cs | 7 + .../Tools/ERIClient/ERIClientBase.cs | 36 + .../Tools/ERIClient/ERIClientFactory.cs | 14 + .../Tools/ERIClient/ERIClientV1.cs | 344 +++++ .../Tools/ERIClient/IERIClient.cs | 62 + .../Tools/FileInfoExtensions.cs | 17 + .../Tools/LongExtensions.cs | 22 + .../Tools/Validation/DataSourceValidation.cs | 2 +- app/MindWork AI Studio/packages.lock.json | 2 +- .../wwwroot/changelog/v0.9.28.md | 4 + 61 files changed, 1596 insertions(+), 1372 deletions(-) delete mode 100644 app/ERIClientV1/Client.Generated.cs delete mode 100644 app/ERIClientV1/ERIClientV1.csproj create mode 100644 app/MindWork AI Studio/Components/TextInfoLine.razor create mode 100644 app/MindWork AI Studio/Components/TextInfoLine.razor.cs create mode 100644 app/MindWork AI Studio/Components/TextInfoLines.razor create mode 100644 app/MindWork AI Studio/Components/TextInfoLines.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor create mode 100644 app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor create mode 100644 app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor create mode 100644 app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor.cs create mode 100644 app/MindWork AI Studio/Tools/DirectoryInfoExtensions.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/APIResponse.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthField.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthFieldMapping.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthMethod.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthResponse.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthScheme.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/ChatThread.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/ContentBlock.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/ContentType.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/Context.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/DataSourceInfo.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/EmbeddingInfo.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/ProviderType.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/ProviderTypeExtensions.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/RetrievalInfo.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/RetrievalRequest.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/Role.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/DataModel/SecurityRequirements.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/ERIClientFactory.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/ERIClientV1.cs create mode 100644 app/MindWork AI Studio/Tools/ERIClient/IERIClient.cs create mode 100644 app/MindWork AI Studio/Tools/FileInfoExtensions.cs create mode 100644 app/MindWork AI Studio/Tools/LongExtensions.cs create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md diff --git a/README.md b/README.md index 79aa3526..0ad1f280 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ Things we are currently working on: - [x] ~~App: Add an option to show preview features (PR [#222](https://github.com/MindWorkAI/AI-Studio/pull/222))~~ - [x] ~~App: Configure embedding providers (PR [#224](https://github.com/MindWorkAI/AI-Studio/pull/224))~~ - [x] ~~App: Implement an [ERI](https://github.com/MindWorkAI/ERI) server coding assistant (PR [#231](https://github.com/MindWorkAI/AI-Studio/pull/231))~~ - - [x] ~~App: Management of data sources (local & external data via [ERI](https://github.com/MindWorkAI/ERI)) (PR [#259](https://github.com/MindWorkAI/AI-Studio/pull/259))~~ + - [x] ~~App: Management of data sources (local & external data via [ERI](https://github.com/MindWorkAI/ERI)) (PR [#259](https://github.com/MindWorkAI/AI-Studio/pull/259), [#273](https://github.com/MindWorkAI/AI-Studio/pull/273))~~ - [ ] Runtime: Extract data from txt / md / pdf / docx / xlsx files - [ ] (*Optional*) Runtime: Implement internal embedding provider through [fastembed-rs](https://github.com/Anush008/fastembed-rs) - [ ] App: Implement external embedding providers diff --git a/app/ERIClientV1/Client.Generated.cs b/app/ERIClientV1/Client.Generated.cs deleted file mode 100644 index 96698e16..00000000 --- a/app/ERIClientV1/Client.Generated.cs +++ /dev/null @@ -1,1277 +0,0 @@ -//---------------------- -// <auto-generated> -// Generated using the NSwag toolchain v14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) -// </auto-generated> -//---------------------- - -#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 612 // Disable "CS0612 '...' is obsolete" -#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" -#pragma warning disable 8604 // Disable "CS8604 Possible null reference argument for parameter" -#pragma warning disable 8625 // Disable "CS8625 Cannot convert null literal to non-nullable reference type" - -namespace ERI_Client.V1 -{ - using System = global::System; - - [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class Client - { - private System.Net.Http.HttpClient _httpClient; - private static System.Lazy<System.Text.Json.JsonSerializerOptions> _settings = new System.Lazy<System.Text.Json.JsonSerializerOptions>(CreateSerializerSettings, true); - - public Client(System.Net.Http.HttpClient httpClient) - { - _httpClient = httpClient; - } - - private static System.Text.Json.JsonSerializerOptions CreateSerializerSettings() - { - var settings = new System.Text.Json.JsonSerializerOptions(); - UpdateJsonSerializerSettings(settings); - return settings; - } - - protected System.Text.Json.JsonSerializerOptions JsonSerializerSettings { get { return _settings.Value; } } - - static partial void UpdateJsonSerializerSettings(System.Text.Json.JsonSerializerOptions 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); - - /// <remarks> - /// Get the available authentication methods. - /// </remarks> - /// <returns>OK</returns> - /// <exception cref="ApiException">A server side error occurred.</exception> - public virtual System.Threading.Tasks.Task<System.Collections.Generic.ICollection<AuthScheme>> GetAuthMethodsAsync() - { - return GetAuthMethodsAsync(System.Threading.CancellationToken.None); - } - - /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> - /// <remarks> - /// Get the available authentication methods. - /// </remarks> - /// <returns>OK</returns> - /// <exception cref="ApiException">A server side error occurred.</exception> - public virtual async System.Threading.Tasks.Task<System.Collections.Generic.ICollection<AuthScheme>> GetAuthMethodsAsync(System.Threading.CancellationToken cancellationToken) - { - 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")); - - var urlBuilder_ = new System.Text.StringBuilder(); - - // Operation Path: "auth/methods" - urlBuilder_.Append("auth/methods"); - - 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_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>(); - foreach (var item_ in response_.Headers) - headers_[item_.Key] = item_.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<System.Collections.Generic.ICollection<AuthScheme>>(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(); - } - } - - /// <remarks> - /// Authenticate with the data source to get a token for further requests. - /// </remarks> - /// <returns>OK</returns> - /// <exception cref="ApiException">A server side error occurred.</exception> - public virtual System.Threading.Tasks.Task<AuthResponse> AuthenticateAsync(AuthMethod authMethod) - { - return AuthenticateAsync(authMethod, System.Threading.CancellationToken.None); - } - - /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> - /// <remarks> - /// Authenticate with the data source to get a token for further requests. - /// </remarks> - /// <returns>OK</returns> - /// <exception cref="ApiException">A server side error occurred.</exception> - public virtual async System.Threading.Tasks.Task<AuthResponse> AuthenticateAsync(AuthMethod authMethod, System.Threading.CancellationToken cancellationToken) - { - if (authMethod == null) - throw new System.ArgumentNullException("authMethod"); - - 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")); - - var urlBuilder_ = new System.Text.StringBuilder(); - - // Operation Path: "auth" - urlBuilder_.Append("auth"); - urlBuilder_.Append('?'); - urlBuilder_.Append(System.Uri.EscapeDataString("authMethod")).Append('=').Append(System.Uri.EscapeDataString(ConvertToString(authMethod, System.Globalization.CultureInfo.InvariantCulture))).Append('&'); - urlBuilder_.Length--; - - 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_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>(); - foreach (var item_ in response_.Headers) - headers_[item_.Key] = item_.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<AuthResponse>(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(); - } - } - - /// <remarks> - /// Get information about the data source. - /// </remarks> - /// <returns>OK</returns> - /// <exception cref="ApiException">A server side error occurred.</exception> - public virtual System.Threading.Tasks.Task<DataSourceInfo> GetDataSourceInfoAsync() - { - return GetDataSourceInfoAsync(System.Threading.CancellationToken.None); - } - - /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> - /// <remarks> - /// Get information about the data source. - /// </remarks> - /// <returns>OK</returns> - /// <exception cref="ApiException">A server side error occurred.</exception> - public virtual async System.Threading.Tasks.Task<DataSourceInfo> GetDataSourceInfoAsync(System.Threading.CancellationToken cancellationToken) - { - 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")); - - var urlBuilder_ = new System.Text.StringBuilder(); - - // Operation Path: "dataSource" - urlBuilder_.Append("dataSource"); - - 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_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>(); - foreach (var item_ in response_.Headers) - headers_[item_.Key] = item_.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<DataSourceInfo>(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(); - } - } - - /// <remarks> - /// Get information about the used embedding(s). - /// </remarks> - /// <returns>OK</returns> - /// <exception cref="ApiException">A server side error occurred.</exception> - public virtual System.Threading.Tasks.Task<System.Collections.Generic.ICollection<EmbeddingInfo>> GetEmbeddingInfoAsync() - { - return GetEmbeddingInfoAsync(System.Threading.CancellationToken.None); - } - - /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> - /// <remarks> - /// Get information about the used embedding(s). - /// </remarks> - /// <returns>OK</returns> - /// <exception cref="ApiException">A server side error occurred.</exception> - public virtual async System.Threading.Tasks.Task<System.Collections.Generic.ICollection<EmbeddingInfo>> GetEmbeddingInfoAsync(System.Threading.CancellationToken cancellationToken) - { - 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")); - - var urlBuilder_ = new System.Text.StringBuilder(); - - // Operation Path: "embedding/info" - urlBuilder_.Append("embedding/info"); - - 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_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>(); - foreach (var item_ in response_.Headers) - headers_[item_.Key] = item_.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<System.Collections.Generic.ICollection<EmbeddingInfo>>(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(); - } - } - - /// <remarks> - /// Get information about the retrieval processes implemented by this data source. - /// </remarks> - /// <returns>OK</returns> - /// <exception cref="ApiException">A server side error occurred.</exception> - public virtual System.Threading.Tasks.Task<System.Collections.Generic.ICollection<RetrievalInfo>> GetRetrievalInfoAsync() - { - return GetRetrievalInfoAsync(System.Threading.CancellationToken.None); - } - - /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> - /// <remarks> - /// Get information about the retrieval processes implemented by this data source. - /// </remarks> - /// <returns>OK</returns> - /// <exception cref="ApiException">A server side error occurred.</exception> - public virtual async System.Threading.Tasks.Task<System.Collections.Generic.ICollection<RetrievalInfo>> GetRetrievalInfoAsync(System.Threading.CancellationToken cancellationToken) - { - 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")); - - var urlBuilder_ = new System.Text.StringBuilder(); - - // Operation Path: "retrieval/info" - urlBuilder_.Append("retrieval/info"); - - 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_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>(); - foreach (var item_ in response_.Headers) - headers_[item_.Key] = item_.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<System.Collections.Generic.ICollection<RetrievalInfo>>(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(); - } - } - - /// <remarks> - /// Retrieve information from the data source. - /// </remarks> - /// <returns>OK</returns> - /// <exception cref="ApiException">A server side error occurred.</exception> - public virtual System.Threading.Tasks.Task<System.Collections.Generic.ICollection<Context>> RetrieveAsync(RetrievalRequest body) - { - return RetrieveAsync(body, System.Threading.CancellationToken.None); - } - - /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> - /// <remarks> - /// Retrieve information from the data source. - /// </remarks> - /// <returns>OK</returns> - /// <exception cref="ApiException">A server side error occurred.</exception> - public virtual async System.Threading.Tasks.Task<System.Collections.Generic.ICollection<Context>> RetrieveAsync(RetrievalRequest body, System.Threading.CancellationToken cancellationToken) - { - if (body == null) - throw new System.ArgumentNullException("body"); - - var client_ = _httpClient; - var disposeClient_ = false; - try - { - using (var request_ = new System.Net.Http.HttpRequestMessage()) - { - var json_ = System.Text.Json.JsonSerializer.SerializeToUtf8Bytes(body, _settings.Value); - var content_ = new System.Net.Http.ByteArrayContent(json_); - 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")); - - var urlBuilder_ = new System.Text.StringBuilder(); - - // Operation Path: "retrieval" - urlBuilder_.Append("retrieval"); - - 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_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>(); - foreach (var item_ in response_.Headers) - headers_[item_.Key] = item_.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<System.Collections.Generic.ICollection<Context>>(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(); - } - } - - /// <remarks> - /// Get the security requirements for this data source. - /// </remarks> - /// <returns>OK</returns> - /// <exception cref="ApiException">A server side error occurred.</exception> - public virtual System.Threading.Tasks.Task<SecurityRequirements> GetSecurityRequirementsAsync() - { - return GetSecurityRequirementsAsync(System.Threading.CancellationToken.None); - } - - /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> - /// <remarks> - /// Get the security requirements for this data source. - /// </remarks> - /// <returns>OK</returns> - /// <exception cref="ApiException">A server side error occurred.</exception> - public virtual async System.Threading.Tasks.Task<SecurityRequirements> GetSecurityRequirementsAsync(System.Threading.CancellationToken cancellationToken) - { - 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")); - - var urlBuilder_ = new System.Text.StringBuilder(); - - // Operation Path: "security/requirements" - urlBuilder_.Append("security/requirements"); - - 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_ = new System.Collections.Generic.Dictionary<string, System.Collections.Generic.IEnumerable<string>>(); - foreach (var item_ in response_.Headers) - headers_[item_.Key] = item_.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<SecurityRequirements>(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(); - } - } - - protected struct ObjectResponseResult<T> - { - 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<ObjectResponseResult<T>> ReadObjectResponseAsync<T>(System.Net.Http.HttpResponseMessage response, System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> headers, System.Threading.CancellationToken cancellationToken) - { - if (response == null || response.Content == null) - { - return new ObjectResponseResult<T>(default(T), string.Empty); - } - - if (ReadResponseAsString) - { - var responseText = await response.Content.ReadAsStringAsync().ConfigureAwait(false); - try - { - var typedBody = System.Text.Json.JsonSerializer.Deserialize<T>(responseText, JsonSerializerSettings); - return new ObjectResponseResult<T>(typedBody, responseText); - } - catch (System.Text.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)) - { - var typedBody = await System.Text.Json.JsonSerializer.DeserializeAsync<T>(responseStream, JsonSerializerSettings, cancellationToken).ConfigureAwait(false); - return new ObjectResponseResult<T>(typedBody, string.Empty); - } - } - catch (System.Text.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 is string[]) - { - return string.Join(",", (string[])value); - } - else if (value.GetType().IsArray) - { - var valueArray = (System.Array)value; - var valueTextArray = new string[valueArray.Length]; - for (var i = 0; i < valueArray.Length; i++) - { - valueTextArray[i] = ConvertToString(valueArray.GetValue(i), cultureInfo); - } - return string.Join(",", valueTextArray); - } - - var result = System.Convert.ToString(value, cultureInfo); - return result == null ? "" : result; - } - } - - /// <summary> - /// An authentication field. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public enum AuthField - { - - [System.Runtime.Serialization.EnumMember(Value = @"NONE")] - NONE = 0, - - [System.Runtime.Serialization.EnumMember(Value = @"USERNAME")] - USERNAME = 1, - - [System.Runtime.Serialization.EnumMember(Value = @"PASSWORD")] - PASSWORD = 2, - - [System.Runtime.Serialization.EnumMember(Value = @"TOKEN")] - TOKEN = 3, - - [System.Runtime.Serialization.EnumMember(Value = @"KERBEROS_TICKET")] - KERBEROS_TICKET = 4, - - } - - /// <summary> - /// The mapping between an AuthField and the field name in the authentication request. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class AuthFieldMapping - { - - [System.Text.Json.Serialization.JsonPropertyName("authField")] - [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] - public AuthField AuthField { get; set; } - - /// <summary> - /// The field name in the authentication request. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("fieldName")] - public string FieldName { get; set; } - - } - - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public enum AuthMethod - { - - [System.Runtime.Serialization.EnumMember(Value = @"NONE")] - NONE = 0, - - [System.Runtime.Serialization.EnumMember(Value = @"KERBEROS")] - KERBEROS = 1, - - [System.Runtime.Serialization.EnumMember(Value = @"USERNAME_PASSWORD")] - USERNAME_PASSWORD = 2, - - [System.Runtime.Serialization.EnumMember(Value = @"TOKEN")] - TOKEN = 3, - - } - - /// <summary> - /// The response to an authentication request. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class AuthResponse - { - /// <summary> - /// True, when the authentication was successful. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("success")] - public bool Success { get; set; } - - /// <summary> - /// The token to use for further requests. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("token")] - public string Token { get; set; } - - /// <summary> - /// When the authentication was not successful, this contains the reason. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("message")] - public string Message { get; set; } - - } - - /// <summary> - /// Describes one authentication scheme for this data source. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class AuthScheme - { - - [System.Text.Json.Serialization.JsonPropertyName("authMethod")] - [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] - public AuthMethod AuthMethod { get; set; } - - /// <summary> - /// A list of field mappings for the authentication method. The client must know, - /// <br/> e.g., how the password field is named in the request. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("authFieldMappings")] - public System.Collections.Generic.ICollection<AuthFieldMapping> AuthFieldMappings { get; set; } - - } - - /// <summary> - /// A chat thread, which is a list of content blocks. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class ChatThread - { - /// <summary> - /// The content blocks in this chat thread. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("contentBlocks")] - public System.Collections.Generic.ICollection<ContentBlock> ContentBlocks { get; set; } - - } - - /// <summary> - /// A block of content of a chat thread. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class ContentBlock - { - /// <summary> - /// The content of the block. Remember that images and other media are base64 encoded. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("content")] - public string Content { get; set; } - - [System.Text.Json.Serialization.JsonPropertyName("role")] - [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] - public Role Role { get; set; } - - [System.Text.Json.Serialization.JsonPropertyName("type")] - [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] - public ContentType Type { get; set; } - - } - - /// <summary> - /// The type of content. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public enum ContentType - { - - [System.Runtime.Serialization.EnumMember(Value = @"NONE")] - NONE = 0, - - [System.Runtime.Serialization.EnumMember(Value = @"UNKNOWN")] - UNKNOWN = 1, - - [System.Runtime.Serialization.EnumMember(Value = @"TEXT")] - TEXT = 2, - - [System.Runtime.Serialization.EnumMember(Value = @"IMAGE")] - IMAGE = 3, - - [System.Runtime.Serialization.EnumMember(Value = @"VIDEO")] - VIDEO = 4, - - [System.Runtime.Serialization.EnumMember(Value = @"AUDIO")] - AUDIO = 5, - - [System.Runtime.Serialization.EnumMember(Value = @"SPEECH")] - SPEECH = 6, - - } - - /// <summary> - /// Matching context returned by the data source as a result of a retrieval request. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class Context - { - /// <summary> - /// The name of the source, e.g., a document name, database name, - /// <br/> collection name, etc. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("name")] - public string Name { get; set; } - - /// <summary> - /// What are the contents of the source? For example, is it a - /// <br/> dictionary, a book chapter, business concept, a paper, etc. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("category")] - public string Category { get; set; } - - /// <summary> - /// The path to the content, e.g., a URL, a file path, a path in a - /// <br/> graph database, etc. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("path")] - public string Path { get; set; } - - [System.Text.Json.Serialization.JsonPropertyName("type")] - [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] - public ContentType Type { get; set; } - - /// <summary> - /// The content that matched the user prompt. For text, you - /// <br/> return the matched text and, e.g., three words before and after it. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("matchedContent")] - public string MatchedContent { get; set; } - - /// <summary> - /// The surrounding content of the matched content. - /// <br/> For text, you may return, e.g., one sentence or paragraph before and after - /// <br/> the matched content. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("surroundingContent")] - public System.Collections.Generic.ICollection<string> SurroundingContent { get; set; } - - /// <summary> - /// Links to related content, e.g., links to Wikipedia articles, - /// <br/> links to sources, etc. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("links")] - public System.Collections.Generic.ICollection<string> Links { get; set; } - - } - - /// <summary> - /// Information about the data source. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class DataSourceInfo - { - /// <summary> - /// The name of the data source, e.g., "Internal Organization Documents." - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("name")] - public string Name { get; set; } - - /// <summary> - /// A short description of the data source. What kind of data does it contain? - /// <br/> What is the data source used for? - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("description")] - public string Description { get; set; } - - } - - /// <summary> - /// Represents information about the used embedding for this data source. The purpose of this information is to give the - /// <br/>interested user an idea of what kind of embedding is used and what it does. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class EmbeddingInfo - { - /// <summary> - /// What kind of embedding is used. For example, "Transformer Embedding," "Contextual Word - /// <br/> Embedding," "Graph Embedding," etc. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("embeddingType")] - public string EmbeddingType { get; set; } - - /// <summary> - /// Name the embedding used. This can be a library, a framework, or the name of the used - /// <br/> algorithm. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("embeddingName")] - public string EmbeddingName { get; set; } - - /// <summary> - /// A short description of the embedding. Describe what the embedding is doing. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("description")] - public string Description { get; set; } - - /// <summary> - /// Describe when the embedding is used. For example, when the user prompt contains certain - /// <br/> keywords, or anytime? - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("usedWhen")] - public string UsedWhen { get; set; } - - /// <summary> - /// A link to the embedding's documentation or the source code. Might be null. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("link")] - public string Link { get; set; } - - } - - /// <summary> - /// Known types of providers that can process data. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public enum ProviderType - { - - [System.Runtime.Serialization.EnumMember(Value = @"NONE")] - NONE = 0, - - [System.Runtime.Serialization.EnumMember(Value = @"ANY")] - ANY = 1, - - [System.Runtime.Serialization.EnumMember(Value = @"SELF_HOSTED")] - SELF_HOSTED = 2, - - } - - /// <summary> - /// Information about a retrieval process, which this data source implements. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class RetrievalInfo - { - /// <summary> - /// A unique identifier for the retrieval process. This can be a GUID, a unique name, or an increasing integer. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("id")] - public string Id { get; set; } - - /// <summary> - /// The name of the retrieval process, e.g., "Keyword-Based Wikipedia Article Retrieval". - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("name")] - public string Name { get; set; } - - /// <summary> - /// A short description of the retrieval process. What kind of retrieval process is it? - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("description")] - public string Description { get; set; } - - /// <summary> - /// A link to the retrieval process's documentation, paper, Wikipedia article, or the source code. Might be null. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("link")] - public string Link { get; set; } - - /// <summary> - /// A dictionary that describes the parameters of the retrieval process. The key is the parameter name, - /// <br/> and the value is a description of the parameter. Although each parameter will be sent as a string, the description should indicate the - /// <br/> expected type and range, e.g., 0.0 to 1.0 for a float parameter. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("parametersDescription")] - public System.Collections.Generic.IDictionary<string, string> ParametersDescription { get; set; } - - /// <summary> - /// A list of embeddings used in this retrieval process. It might be empty in case no embedding is used. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("embeddings")] - public System.Collections.Generic.ICollection<EmbeddingInfo> Embeddings { get; set; } - - } - - /// <summary> - /// The retrieval request sent by AI Studio. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class RetrievalRequest - { - /// <summary> - /// The latest user prompt that AI Studio received. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("latestUserPrompt")] - public string LatestUserPrompt { get; set; } - - [System.Text.Json.Serialization.JsonPropertyName("latestUserPromptType")] - [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] - public ContentType LatestUserPromptType { get; set; } - - [System.Text.Json.Serialization.JsonPropertyName("thread")] - public ChatThread Thread { get; set; } - - /// <summary> - /// Optional. The ID of the retrieval process that the data source should use. - /// <br/> When null, the data source chooses an appropriate retrieval process. Selecting a retrieval process is optional - /// <br/> for AI Studio users. Most users do not specify a retrieval process. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("retrievalProcessId")] - public string RetrievalProcessId { get; set; } - - /// <summary> - /// A dictionary of parameters that the data source should use for the retrieval process. - /// <br/> Although each parameter will be sent as a string, the retrieval process specifies the expected type and range. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("parameters")] - public System.Collections.Generic.IDictionary<string, string> Parameters { get; set; } - - /// <summary> - /// The maximum number of matches that the data source should return. AI Studio uses - /// <br/> any value below 1 to indicate that the data source should return as many matches as appropriate. - /// </summary> - - [System.Text.Json.Serialization.JsonPropertyName("maxMatches")] - public int MaxMatches { get; set; } - - } - - /// <summary> - /// Possible roles of any chat thread. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public enum Role - { - - [System.Runtime.Serialization.EnumMember(Value = @"NONE")] - NONE = 0, - - [System.Runtime.Serialization.EnumMember(Value = @"UNKNOW")] - UNKNOW = 1, - - [System.Runtime.Serialization.EnumMember(Value = @"SYSTEM")] - SYSTEM = 2, - - [System.Runtime.Serialization.EnumMember(Value = @"USER")] - USER = 3, - - [System.Runtime.Serialization.EnumMember(Value = @"AI")] - AI = 4, - - [System.Runtime.Serialization.EnumMember(Value = @"AGENT")] - AGENT = 5, - - } - - /// <summary> - /// Represents the security requirements for this data source. - /// </summary> - [System.CodeDom.Compiler.GeneratedCode("NJsonSchema", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class SecurityRequirements - { - - [System.Text.Json.Serialization.JsonPropertyName("allowedProviderType")] - [System.Text.Json.Serialization.JsonConverter(typeof(System.Text.Json.Serialization.JsonStringEnumConverter))] - public ProviderType AllowedProviderType { get; set; } - - } - - - - [System.CodeDom.Compiler.GeneratedCode("NSwag", "14.0.3.0 (NJsonSchema v11.0.0.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<string, System.Collections.Generic.IEnumerable<string>> Headers { get; private set; } - - public ApiException(string message, int statusCode, string response, System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> 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", "14.0.3.0 (NJsonSchema v11.0.0.0 (Newtonsoft.Json v13.0.0.0))")] - public partial class ApiException<TResult> : ApiException - { - public TResult Result { get; private set; } - - public ApiException(string message, int statusCode, string response, System.Collections.Generic.IReadOnlyDictionary<string, System.Collections.Generic.IEnumerable<string>> headers, TResult result, System.Exception innerException) - : base(message, statusCode, response, headers, innerException) - { - Result = result; - } - } - -} - -#pragma warning restore 108 -#pragma warning restore 114 -#pragma warning restore 472 -#pragma warning restore 612 -#pragma warning restore 1573 -#pragma warning restore 1591 -#pragma warning restore 8073 -#pragma warning restore 3016 -#pragma warning restore 8603 -#pragma warning restore 8604 -#pragma warning restore 8625 \ No newline at end of file diff --git a/app/ERIClientV1/ERIClientV1.csproj b/app/ERIClientV1/ERIClientV1.csproj deleted file mode 100644 index 8ca0662e..00000000 --- a/app/ERIClientV1/ERIClientV1.csproj +++ /dev/null @@ -1,10 +0,0 @@ -<Project Sdk="Microsoft.NET.Sdk"> - - <PropertyGroup> - <TargetFramework>net8.0</TargetFramework> - <LangVersion>latest</LangVersion> - <ImplicitUsings>enable</ImplicitUsings> - <Nullable>enable</Nullable> - </PropertyGroup> - -</Project> diff --git a/app/MindWork AI Studio.sln b/app/MindWork AI Studio.sln index 6bf20b24..ef02b517 100644 --- a/app/MindWork AI Studio.sln +++ b/app/MindWork AI Studio.sln @@ -2,10 +2,6 @@ Microsoft Visual Studio Solution File, Format Version 12.00 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MindWork AI Studio", "MindWork AI Studio\MindWork AI Studio.csproj", "{059FDFCC-7D0B-474E-9F20-B9C437DF1CDD}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "ERIClients", "ERIClients", "{5C2AF789-287B-4FCB-B675-7273D8CD4579}" -EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ERIClientV1", "ERIClientV1\ERIClientV1.csproj", "{9E35A273-0FA6-4BD5-8880-A1DDAC106926}" -EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -16,12 +12,7 @@ Global {059FDFCC-7D0B-474E-9F20-B9C437DF1CDD}.Debug|Any CPU.Build.0 = Debug|Any CPU {059FDFCC-7D0B-474E-9F20-B9C437DF1CDD}.Release|Any CPU.ActiveCfg = Release|Any CPU {059FDFCC-7D0B-474E-9F20-B9C437DF1CDD}.Release|Any CPU.Build.0 = Release|Any CPU - {9E35A273-0FA6-4BD5-8880-A1DDAC106926}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {9E35A273-0FA6-4BD5-8880-A1DDAC106926}.Debug|Any CPU.Build.0 = Debug|Any CPU - {9E35A273-0FA6-4BD5-8880-A1DDAC106926}.Release|Any CPU.ActiveCfg = Release|Any CPU - {9E35A273-0FA6-4BD5-8880-A1DDAC106926}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution - {9E35A273-0FA6-4BD5-8880-A1DDAC106926} = {5C2AF789-287B-4FCB-B675-7273D8CD4579} EndGlobalSection EndGlobal diff --git a/app/MindWork AI Studio/Assistants/ERI/ERIVersionExtensions.cs b/app/MindWork AI Studio/Assistants/ERI/ERIVersionExtensions.cs index c7ef7c16..99631e14 100644 --- a/app/MindWork AI Studio/Assistants/ERI/ERIVersionExtensions.cs +++ b/app/MindWork AI Studio/Assistants/ERI/ERIVersionExtensions.cs @@ -7,7 +7,7 @@ public static class ERIVersionExtensions try { var url = version.SpecificationURL(); - var response = await httpClient.GetAsync(url); + using var response = await httpClient.GetAsync(url); return await response.Content.ReadAsStringAsync(); } catch diff --git a/app/MindWork AI Studio/Components/Changelog.razor.cs b/app/MindWork AI Studio/Components/Changelog.razor.cs index c90a46c6..bba8b8a5 100644 --- a/app/MindWork AI Studio/Components/Changelog.razor.cs +++ b/app/MindWork AI Studio/Components/Changelog.razor.cs @@ -23,7 +23,7 @@ public partial class Changelog : ComponentBase private async Task ReadLogAsync() { - var response = await this.HttpClient.GetAsync($"changelog/{this.SelectedLog.Filename}"); + using var response = await this.HttpClient.GetAsync($"changelog/{this.SelectedLog.Filename}"); this.LogContent = await response.Content.ReadAsStringAsync(); } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor index 3f19bf9f..506c63b9 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor @@ -1,4 +1,3 @@ -@using AIStudio.Settings @using AIStudio.Settings.DataModel @inherits SettingsPanelBase @@ -37,12 +36,7 @@ <MudTd>@this.GetEmbeddingName(context)</MudTd> <MudTd Style="text-align: left;"> - @if (context is IERIDataSource) - { - @* <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Info" Class="ma-2" OnClick="() => this.ShowInformation(context)"> *@ - @* Show Information *@ - @* </MudButton> *@ - } + <MudIconButton Variant="Variant.Filled" Color="Color.Info" Icon="@Icons.Material.Filled.Info" Class="ma-2" OnClick="() => this.ShowInformation(context)"/> <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" Class="ma-2" OnClick="() => this.EditDataSource(context)"> Edit </MudButton> diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor.cs index 03124527..6f7e74b8 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor.cs +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor.cs @@ -1,8 +1,7 @@ using AIStudio.Dialogs; using AIStudio.Settings; using AIStudio.Settings.DataModel; - -using ERI_Client.V1; +using AIStudio.Tools.ERIClient.DataModel; using Microsoft.AspNetCore.Components; @@ -216,10 +215,37 @@ public partial class SettingsPanelDataSources : SettingsPanelBase } } - private Task ShowInformation(IDataSource dataSource) + private async Task ShowInformation(IDataSource dataSource) { - #warning Implement the information dialog for ERI data sources. - return Task.CompletedTask; + switch (dataSource) + { + case DataSourceLocalFile localFile: + var localFileDialogParameters = new DialogParameters<DataSourceLocalFileInfoDialog> + { + { x => x.DataSource, localFile }, + }; + + await this.DialogService.ShowAsync<DataSourceLocalFileInfoDialog>("Local File Data Source Information", localFileDialogParameters, DialogOptions.FULLSCREEN); + break; + + case DataSourceLocalDirectory localDirectory: + var localDirectoryDialogParameters = new DialogParameters<DataSourceLocalDirectoryInfoDialog> + { + { x => x.DataSource, localDirectory }, + }; + + await this.DialogService.ShowAsync<DataSourceLocalDirectoryInfoDialog>("Local Directory Data Source Information", localDirectoryDialogParameters, DialogOptions.FULLSCREEN); + break; + + case DataSourceERI_V1 eriV1DataSource: + var eriV1DialogParameters = new DialogParameters<DataSourceERI_V1InfoDialog> + { + { x => x.DataSource, eriV1DataSource }, + }; + + await this.DialogService.ShowAsync<DataSourceERI_V1InfoDialog>("ERI v1 Data Source Information", eriV1DialogParameters, DialogOptions.FULLSCREEN); + break; + } } private async Task UpdateDataSources() diff --git a/app/MindWork AI Studio/Components/TextInfoLine.razor b/app/MindWork AI Studio/Components/TextInfoLine.razor new file mode 100644 index 00000000..5e5de4da --- /dev/null +++ b/app/MindWork AI Studio/Components/TextInfoLine.razor @@ -0,0 +1,19 @@ +<MudStack Row="@true" AlignItems="AlignItems.Center"> + <MudTextField + T="string" + ReadOnly="@true" + Label="@this.Label" + Text="@this.Value" + Variant="Variant.Outlined" + Margin="Margin.Dense" + Adornment="Adornment.Start" + AdornmentIcon="@this.Icon" + UserAttributes="@USER_INPUT_ATTRIBUTES" /> + + @if (this.ShowingCopyButton) + { + <MudTooltip Text="@this.ClipboardTooltip"> + <MudIconButton Icon="@Icons.Material.Filled.ContentCopy" Size="Size.Medium" OnClick="@(() => this.CopyToClipboard(this.Value))"/> + </MudTooltip> + } +</MudStack> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/TextInfoLine.razor.cs b/app/MindWork AI Studio/Components/TextInfoLine.razor.cs new file mode 100644 index 00000000..4c4e6409 --- /dev/null +++ b/app/MindWork AI Studio/Components/TextInfoLine.razor.cs @@ -0,0 +1,50 @@ +using AIStudio.Settings; + +using Microsoft.AspNetCore.Components; + +namespace AIStudio.Components; + +public partial class TextInfoLine : ComponentBase +{ + [Parameter] + public string Label { get; set; } = string.Empty; + + [Parameter] + public string Icon { get; set; } = Icons.Material.Filled.Info; + + [Parameter] + public string Value { get; set; } = string.Empty; + + [Parameter] + public string ClipboardTooltipSubject { get; set; } = "the text"; + + [Parameter] + public bool ShowingCopyButton { get; set; } = true; + + [Inject] + private RustService RustService { get; init; } = null!; + + [Inject] + private ISnackbar Snackbar { get; init; } = null!; + + [Inject] + private SettingsManager SettingsManager { get; init; } = null!; + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + // Configure the spellchecking for the user input: + this.SettingsManager.InjectSpellchecking(USER_INPUT_ATTRIBUTES); + + await base.OnInitializedAsync(); + } + + #endregion + + private static readonly Dictionary<string, object?> USER_INPUT_ATTRIBUTES = new(); + + private string ClipboardTooltip => $"Copy {this.ClipboardTooltipSubject} to the clipboard"; + + private async Task CopyToClipboard(string content) => await this.RustService.CopyText2Clipboard(this.Snackbar, content); +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/TextInfoLines.razor b/app/MindWork AI Studio/Components/TextInfoLines.razor new file mode 100644 index 00000000..02dadb48 --- /dev/null +++ b/app/MindWork AI Studio/Components/TextInfoLines.razor @@ -0,0 +1,20 @@ +<MudStack Row="@true" AlignItems="AlignItems.Start"> + <MudTextField + T="string" + ReadOnly="@true" + Label="@this.Label" + Text="@this.Value" + Variant="Variant.Outlined" + Margin="Margin.Dense" + Lines="3" + MaxLines="@this.MaxLines" + AutoGrow="@true" + UserAttributes="@USER_INPUT_ATTRIBUTES" /> + + @if (this.ShowingCopyButton) + { + <MudTooltip Text="@this.ClipboardTooltip"> + <MudIconButton Icon="@Icons.Material.Filled.ContentCopy" Size="Size.Medium" OnClick="@(() => this.CopyToClipboard(this.Value))"/> + </MudTooltip> + } +</MudStack> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/TextInfoLines.razor.cs b/app/MindWork AI Studio/Components/TextInfoLines.razor.cs new file mode 100644 index 00000000..64d5924d --- /dev/null +++ b/app/MindWork AI Studio/Components/TextInfoLines.razor.cs @@ -0,0 +1,50 @@ +using AIStudio.Settings; + +using Microsoft.AspNetCore.Components; + +namespace AIStudio.Components; + +public partial class TextInfoLines : ComponentBase +{ + [Parameter] + public string Label { get; set; } = string.Empty; + + [Parameter] + public string Value { get; set; } = string.Empty; + + [Parameter] + public string ClipboardTooltipSubject { get; set; } = "the text"; + + [Parameter] + public int MaxLines { get; set; } = 30; + + [Parameter] + public bool ShowingCopyButton { get; set; } = true; + + [Inject] + private RustService RustService { get; init; } = null!; + + [Inject] + private ISnackbar Snackbar { get; init; } = null!; + + [Inject] + private SettingsManager SettingsManager { get; init; } = null!; + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + // Configure the spellchecking for the user input: + this.SettingsManager.InjectSpellchecking(USER_INPUT_ATTRIBUTES); + + await base.OnInitializedAsync(); + } + + #endregion + + private static readonly Dictionary<string, object?> USER_INPUT_ATTRIBUTES = new(); + + private string ClipboardTooltip => $"Copy {this.ClipboardTooltipSubject} to the clipboard"; + + private async Task CopyToClipboard(string content) => await this.RustService.CopyText2Clipboard(this.Snackbar, content); +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor new file mode 100644 index 00000000..a1ebe82d --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor @@ -0,0 +1,101 @@ +@using AIStudio.Tools.ERIClient.DataModel +<MudDialog> + <DialogContent> + + <MudText Typo="Typo.h5"> + Common data source information + </MudText> + + <TextInfoLine Icon="@Icons.Material.Filled.Tag" Label="Data source name" Value="@this.DataSource.Name" ClipboardTooltipSubject="the data source name"/> + <TextInfoLine Icon="@Icons.Material.Filled.NetworkCheck" Label="ERI server hostname" Value="@this.DataSource.Hostname" ClipboardTooltipSubject="the ERI server hostname"/> + <TextInfoLine Icon="@Icons.Material.Filled.Tag" Label="ERI server port" Value="@this.Port" ClipboardTooltipSubject="the ERI server port"/> + + @if (!this.IsConnectionEncrypted()) + { + <MudJustifiedText Typo="Typo.body1" Color="Color.Error" Class="mb-3"> + Please note: the connection to the ERI v1 server is not encrypted. This means that all + data sent to the server is transmitted in plain text. Please ask the ERI server administrator + to enable encryption. + </MudJustifiedText> + } + + @if (this.DataSource.AuthMethod is AuthMethod.USERNAME_PASSWORD) + { + <TextInfoLine Icon="@Icons.Material.Filled.Person2" Label="Username" Value="@this.DataSource.Username" ClipboardTooltipSubject="the username"/> + } + + <TextInfoLines Label="Server description" MaxLines="14" Value="@this.serverDescription" ClipboardTooltipSubject="the server description"/> + <TextInfoLines Label="Security requirements" MaxLines="3" Value="@this.securityRequirements.Explain()" ClipboardTooltipSubject="the security requirements"/> + + <MudText Typo="Typo.h5" Class="mt-6"> + Retrieval information + </MudText> + @if (!this.retrievalInfoformation.Any()) + { + <MudJustifiedText Typo="Typo.body1" Color="Color.Info" Class="mb-3"> + The data source does not provide any retrieval information. + </MudJustifiedText> + } + else + { + <MudExpansionPanels Class="mb-3"> + @for (var index = 0; index < this.retrievalInfoformation.Count; index++) + { + var info = this.retrievalInfoformation[index]; + <ExpansionPanel HeaderText="@this.RetrievalName(info)" HeaderIcon="@Icons.Material.Filled.Info" IsExpanded="index == 0"> + <TextInfoLines Label="Description" MaxLines="14" Value="@info.Description" ClipboardTooltipSubject="the retrieval description"/> + <TextInfoLines Label="Parameters" MaxLines="14" Value="@this.RetrievalParameters(info)" ClipboardTooltipSubject="the retrieval parameters"/> + + @if (!string.IsNullOrWhiteSpace(info.Link)) + { + <MudButton Href="@info.Link" Target="_blank" Class="mt-3" Color="Color.Primary" StartIcon="@Icons.Material.Filled.OpenInNew"> + Open web link, show more information + </MudButton> + } + + <MudText Typo="Typo.h6" Class="mt-3"> + Embeddings + </MudText> + @if (!info.Embeddings.Any()) + { + <MudJustifiedText Typo="Typo.body1" Color="Color.Info" Class="mb-3"> + The data source does not provide any embedding information. + </MudJustifiedText> + } + else + { + <MudExpansionPanels> + @for (var embeddingIndex = 0; embeddingIndex < info.Embeddings.Count; embeddingIndex++) + { + var embedding = info.Embeddings[embeddingIndex]; + <ExpansionPanel HeaderText="@embedding.EmbeddingName" HeaderIcon="@Icons.Material.Filled.Info" IsExpanded="embeddingIndex == 0"> + <TextInfoLine Icon="@Icons.Material.Filled.FormatShapes" Label="Type" Value="@embedding.EmbeddingType" ClipboardTooltipSubject="the embedding type"/> + <TextInfoLines Label="Description" MaxLines="14" Value="@embedding.Description" ClipboardTooltipSubject="the embedding description"/> + <TextInfoLines Label="When to use" MaxLines="3" Value="@embedding.UsedWhen" ClipboardTooltipSubject="when is the embedding used"/> + + @if (!string.IsNullOrWhiteSpace(embedding.Link)) + { + <MudButton Href="@embedding.Link" Target="_blank" Class="mt-3" Color="Color.Primary" StartIcon="@Icons.Material.Filled.OpenInNew"> + Open web link, show more information + </MudButton> + } + </ExpansionPanel> + } + </MudExpansionPanels> + } + </ExpansionPanel> + } + </MudExpansionPanels> + } + + <Issues IssuesData="@this.dataIssues"/> + </DialogContent> + <DialogActions> + @if (this.IsOperationInProgress) + { + <MudProgressLinear Color="Color.Primary" Indeterminate="true" Class="ml-5 mr-5"/> + } + <MudButton OnClick="@this.GetERIMetadata" Variant="Variant.Filled" Color="Color.Info">Reload</MudButton> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs new file mode 100644 index 00000000..304c4f67 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs @@ -0,0 +1,178 @@ +// ReSharper disable InconsistentNaming + +using System.Text; + +using AIStudio.Assistants.ERI; +using AIStudio.Settings.DataModel; +using AIStudio.Tools.ERIClient; +using AIStudio.Tools.ERIClient.DataModel; + +using Microsoft.AspNetCore.Components; + +using RetrievalInfo = AIStudio.Tools.ERIClient.DataModel.RetrievalInfo; + +namespace AIStudio.Dialogs; + +public partial class DataSourceERI_V1InfoDialog : ComponentBase, IAsyncDisposable, ISecretId +{ + [CascadingParameter] + private MudDialogInstance MudDialog { get; set; } = null!; + + [Parameter] + public DataSourceERI_V1 DataSource { get; set; } + + [Inject] + private RustService RustService { get; init; } = null!; + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + this.eriServerTasks.Add(this.GetERIMetadata()); + await base.OnInitializedAsync(); + } + + #endregion + + private readonly CancellationTokenSource cts = new(); + private readonly List<Task> eriServerTasks = new(); + private readonly List<string> dataIssues = []; + + private string serverDescription = string.Empty; + private ProviderType securityRequirements = ProviderType.NONE; + private IReadOnlyList<RetrievalInfo> retrievalInfoformation = []; + + private bool IsOperationInProgress { get; set; } = true; + + private bool IsConnectionEncrypted() => this.DataSource.Hostname.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase); + + private string Port => this.DataSource.Port == 0 ? string.Empty : $"{this.DataSource.Port}"; + + private string RetrievalName(RetrievalInfo retrievalInfo) + { + var hasId = !string.IsNullOrWhiteSpace(retrievalInfo.Id); + var hasName = !string.IsNullOrWhiteSpace(retrievalInfo.Name); + + if (hasId && hasName) + return $"[{retrievalInfo.Id}] {retrievalInfo.Name}"; + + if (hasId) + return $"[{retrievalInfo.Id}] Unnamed retrieval process"; + + return hasName ? retrievalInfo.Name : "Unnamed retrieval process"; + } + + private string RetrievalParameters(RetrievalInfo retrievalInfo) + { + var parameters = retrievalInfo.ParametersDescription; + if (parameters is null || parameters.Count == 0) + return "This retrieval process has no parameters."; + + var sb = new StringBuilder(); + foreach (var (paramName, description) in parameters) + { + sb.Append("Parameter: "); + sb.AppendLine(paramName); + sb.AppendLine(description); + sb.AppendLine(); + } + + return sb.ToString(); + } + + private async Task GetERIMetadata() + { + this.dataIssues.Clear(); + + try + { + this.IsOperationInProgress = true; + this.StateHasChanged(); + + using var client = ERIClientFactory.Get(ERIVersion.V1, this.DataSource); + if(client is null) + { + this.dataIssues.Add("Failed to connect to the ERI v1 server. The server is not supported."); + return; + } + + var loginResult = await client.AuthenticateAsync(this.DataSource, this.RustService); + if (!loginResult.Successful) + { + this.dataIssues.Add(loginResult.Message); + return; + } + + var dataSourceInfo = await client.GetDataSourceInfoAsync(this.cts.Token); + if (!dataSourceInfo.Successful) + { + this.dataIssues.Add(dataSourceInfo.Message); + return; + } + + this.serverDescription = dataSourceInfo.Data.Description; + + var securityRequirementsResult = await client.GetSecurityRequirementsAsync(this.cts.Token); + if (!securityRequirementsResult.Successful) + { + this.dataIssues.Add(securityRequirementsResult.Message); + return; + } + + this.securityRequirements = securityRequirementsResult.Data.AllowedProviderType; + + var retrievalInfoResult = await client.GetRetrievalInfoAsync(this.cts.Token); + if (!retrievalInfoResult.Successful) + { + this.dataIssues.Add(retrievalInfoResult.Message); + return; + } + + this.retrievalInfoformation = retrievalInfoResult.Data ?? []; + + this.StateHasChanged(); + } + catch (Exception e) + { + this.dataIssues.Add($"Failed to connect to the ERI v1 server. The message was: {e.Message}"); + } + finally + { + this.IsOperationInProgress = false; + this.StateHasChanged(); + } + } + + private void Close() + { + this.cts.Cancel(); + this.MudDialog.Close(); + } + + #region Implementation of ISecretId + + public string SecretId => this.DataSource.Id; + + public string SecretName => this.DataSource.Name; + + #endregion + + #region Implementation of IDisposable + + public async ValueTask DisposeAsync() + { + try + { + await this.cts.CancelAsync(); + await Task.WhenAll(this.eriServerTasks); + + this.cts.Dispose(); + } + catch + { + // ignored + } + } + + #endregion +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor index 64e307b9..ac40ffa5 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor @@ -1,4 +1,4 @@ -@using ERI_Client.V1 +@using AIStudio.Tools.ERIClient.DataModel <MudDialog> <DialogContent> <MudForm @ref="@this.form" @bind-IsValid="@this.dataIsValid" @bind-Errors="@this.dataIssues"> diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs index 1e4eaf7d..aaa4dac1 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs @@ -1,9 +1,10 @@ +using AIStudio.Assistants.ERI; using AIStudio.Settings; using AIStudio.Settings.DataModel; +using AIStudio.Tools.ERIClient; +using AIStudio.Tools.ERIClient.DataModel; using AIStudio.Tools.Validation; -using ERI_Client.V1; - using Microsoft.AspNetCore.Components; // ReSharper disable InconsistentNaming @@ -43,7 +44,6 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId private string[] dataIssues = []; private string dataSecretStorageIssue = string.Empty; private string dataEditingPreviousInstanceName = string.Empty; - private HttpClient? httpClient; private List<AuthMethod> availableAuthMethods = []; private bool connectionTested; private bool connectionSuccessfulTested; @@ -167,31 +167,38 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId { try { - this.httpClient = new HttpClient + var cts = new CancellationTokenSource(TimeSpan.FromSeconds(14)); + var dataSource = new DataSourceERI_V1 { - BaseAddress = new Uri($"{this.dataHostname}:{this.dataPort}"), - Timeout = TimeSpan.FromSeconds(5), + Hostname = this.dataHostname, + Port = this.dataPort }; - - using (this.httpClient) + + using var client = ERIClientFactory.Get(ERIVersion.V1, dataSource); + if(client is null) { - var client = new Client(this.httpClient); - var authSchemes = await client.GetAuthMethodsAsync(); - if (authSchemes is null) - { - await this.form.Validate(); - - Array.Resize(ref this.dataIssues, this.dataIssues.Length + 1); - this.dataIssues[^1] = "Failed to connect to the ERI v1 server. The server did not respond."; - return; - } - - this.availableAuthMethods = authSchemes.Select(n => n.AuthMethod).ToList(); - - this.connectionTested = true; - this.connectionSuccessfulTested = true; - this.Logger.LogInformation("Connection to the ERI v1 server was successful tested."); + await this.form.Validate(); + + Array.Resize(ref this.dataIssues, this.dataIssues.Length + 1); + this.dataIssues[^1] = "Failed to connect to the ERI v1 server. The server is not supported."; + return; } + + var authSchemes = await client.GetAuthMethodsAsync(cts.Token); + if (!authSchemes.Successful) + { + await this.form.Validate(); + + Array.Resize(ref this.dataIssues, this.dataIssues.Length + 1); + this.dataIssues[^1] = authSchemes.Message; + return; + } + + this.availableAuthMethods = authSchemes.Data!.Select(n => n.AuthMethod).ToList(); + + this.connectionTested = true; + this.connectionSuccessfulTested = true; + this.Logger.LogInformation("Connection to the ERI v1 server was successful tested."); } catch (Exception e) { diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor new file mode 100644 index 00000000..cbd951dc --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor @@ -0,0 +1,52 @@ +<MudDialog> + <DialogContent> + <TextInfoLine Icon="@Icons.Material.Filled.Tag" Label="Data source name" Value="@this.DataSource.Name" ClipboardTooltipSubject="the data source name"/> + + <TextInfoLine Icon="@Icons.Material.Filled.FolderOpen" Label="Path" Value="@this.DataSource.Path" ClipboardTooltipSubject="this path"/> + @if (!this.IsDirectoryAvailable) + { + <MudJustifiedText Typo="Typo.body1" Color="Color.Error" Class="mb-3"> + The directory chosen for the data source does not exist anymore. Please edit the data source and correct the path. + </MudJustifiedText> + } + else + { + <MudJustifiedText Typo="Typo.body1" Color="Color.Tertiary" Class="mb-3"> + The directory chosen for the data source exists. + </MudJustifiedText> + } + + <TextInfoLine Icon="@Icons.Material.Filled.Layers" Label="Embedding name" Value="@this.embeddingProvider.Name" ClipboardTooltipSubject="the embedding name"/> + @if (this.IsCloudEmbedding) + { + <MudJustifiedText Typo="Typo.body1" Color="Color.Error" Class="mb-3"> + The embedding runs in the cloud. All your data from the folder '@this.DataSource.Path' and all its subdirectories + will be sent to the cloud. + </MudJustifiedText> + } + else + { + <MudJustifiedText Typo="Typo.body1" Color="Color.Tertiary" Class="mb-3"> + The embedding runs locally or in your organization. Your data is not sent to the cloud. + </MudJustifiedText> + } + + <TextInfoLine Icon="@Icons.Material.Filled.SquareFoot" Label="Number of files" Value="@this.NumberFilesInDirectory" ClipboardTooltipSubject="the number of files in the directory"/> + <TextInfoLines Label="Files list" MaxLines="14" Value="@this.directoryFiles.ToString()" ClipboardTooltipSubject="the files list"/> + @if (this.directorySizeNumFiles > 100) + { + <MudJustifiedText Typo="Typo.body1" Color="Color.Warning" Class="mb-3"> + For performance reasons, only the first 100 files are shown. The directory contains @this.NumberFilesInDirectory files in total. + </MudJustifiedText> + } + + <TextInfoLine Icon="@Icons.Material.Filled.SquareFoot" Label="Total directory size" Value="@this.directorySizeBytes.FileSize()" ClipboardTooltipSubject="the total directory size"/> + </DialogContent> + <DialogActions> + @if (this.IsOperationInProgress) + { + <MudProgressLinear Color="Color.Primary" Indeterminate="true" Class="ml-5 mr-5"/> + } + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor.cs new file mode 100644 index 00000000..ee525e01 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor.cs @@ -0,0 +1,112 @@ +using System.Text; + +using AIStudio.Settings; +using AIStudio.Settings.DataModel; + +using Microsoft.AspNetCore.Components; + +using Timer = System.Timers.Timer; + +namespace AIStudio.Dialogs; + +public partial class DataSourceLocalDirectoryInfoDialog : ComponentBase, IAsyncDisposable +{ + [CascadingParameter] + private MudDialogInstance MudDialog { get; set; } = null!; + + [Parameter] + public DataSourceLocalDirectory DataSource { get; set; } + + [Inject] + private SettingsManager SettingsManager { get; init; } = null!; + + private readonly Timer refreshTimer = new(TimeSpan.FromSeconds(1.6)) + { + AutoReset = true, + }; + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + this.embeddingProvider = this.SettingsManager.ConfigurationData.EmbeddingProviders.FirstOrDefault(x => x.Id == this.DataSource.EmbeddingId); + this.directoryInfo = new DirectoryInfo(this.DataSource.Path); + + if (this.directoryInfo.Exists) + { + this.directorySizeTask = this.directoryInfo.DetermineContentSize(this.UpdateDirectorySize, this.UpdateDirectoryFiles, this.UpdateFileList, MAX_FILES_TO_SHOW, this.DirectoryOperationDone, this.cts.Token); + this.refreshTimer.Elapsed += (_, _) => this.InvokeAsync(this.StateHasChanged); + this.refreshTimer.Start(); + } + + await base.OnInitializedAsync(); + } + + #endregion + + private const int MAX_FILES_TO_SHOW = 100; + + private readonly CancellationTokenSource cts = new(); + + private EmbeddingProvider embeddingProvider; + private DirectoryInfo directoryInfo = null!; + private long directorySizeBytes; + private long directorySizeNumFiles; + private readonly StringBuilder directoryFiles = new(); + private Task directorySizeTask = Task.CompletedTask; + + private bool IsOperationInProgress { get; set; } = true; + + private bool IsCloudEmbedding => !this.embeddingProvider.IsSelfHosted; + + private bool IsDirectoryAvailable => this.directoryInfo.Exists; + + private void UpdateFileList(string file) + { + this.directoryFiles.Append("- "); + this.directoryFiles.AppendLine(file); + } + + private void UpdateDirectorySize(long size) + { + this.directorySizeBytes = size; + } + + private void UpdateDirectoryFiles(long numFiles) => this.directorySizeNumFiles = numFiles; + + private void DirectoryOperationDone() + { + this.refreshTimer.Stop(); + this.IsOperationInProgress = false; + this.InvokeAsync(this.StateHasChanged); + } + + private string NumberFilesInDirectory => $"{this.directorySizeNumFiles:###,###,###,###}"; + + private void Close() + { + this.cts.Cancel(); + this.MudDialog.Close(); + } + + #region Implementation of IDisposable + + public async ValueTask DisposeAsync() + { + try + { + await this.cts.CancelAsync(); + await this.directorySizeTask; + + this.cts.Dispose(); + this.refreshTimer.Stop(); + this.refreshTimer.Dispose(); + } + catch + { + // ignored + } + } + + #endregion +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs index feaf5a79..6a2cd14d 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs @@ -23,7 +23,6 @@ public partial class DataSourceLocalFileDialog : ComponentBase [Inject] private SettingsManager SettingsManager { get; init; } = null!; - private static readonly Dictionary<string, object?> SPELLCHECK_ATTRIBUTES = new(); private readonly DataSourceValidation dataSourceValidation; diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor new file mode 100644 index 00000000..6fb4b12c --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor @@ -0,0 +1,39 @@ +<MudDialog> + <DialogContent> + <TextInfoLine Icon="@Icons.Material.Filled.Tag" Label="Data source name" Value="@this.DataSource.Name" ClipboardTooltipSubject="the data source name"/> + + <TextInfoLine Icon="@Icons.Material.Filled.FolderOpen" Label="File path" Value="@this.DataSource.FilePath" ClipboardTooltipSubject="this path"/> + @if (!this.IsFileAvailable) + { + <MudJustifiedText Typo="Typo.body1" Color="Color.Error" Class="mb-3"> + The file chosen for the data source does not exist anymore. Please edit the data source and choose another file or correct the path. + </MudJustifiedText> + } + else + { + <MudJustifiedText Typo="Typo.body1" Color="Color.Tertiary" Class="mb-3"> + The file chosen for the data source exists. + </MudJustifiedText> + } + + <TextInfoLine Icon="@Icons.Material.Filled.Layers" Label="Embedding name" Value="@this.embeddingProvider.Name" ClipboardTooltipSubject="the embedding name"/> + @if (this.IsCloudEmbedding) + { + <MudJustifiedText Typo="Typo.body1" Color="Color.Error" Class="mb-3"> + The embedding runs in the cloud. All your data within the + file '@this.DataSource.FilePath' will be sent to the cloud. + </MudJustifiedText> + } + else + { + <MudJustifiedText Typo="Typo.body1" Color="Color.Tertiary" Class="mb-3"> + The embedding runs locally or in your organization. Your data is not sent to the cloud. + </MudJustifiedText> + } + + <TextInfoLine Icon="@Icons.Material.Filled.SquareFoot" Label="File size" Value="@this.FileSize" ClipboardTooltipSubject="the file size"/> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor.cs new file mode 100644 index 00000000..a4a5c4a3 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor.cs @@ -0,0 +1,40 @@ +using AIStudio.Settings; +using AIStudio.Settings.DataModel; + +using Microsoft.AspNetCore.Components; + +namespace AIStudio.Dialogs; + +public partial class DataSourceLocalFileInfoDialog : ComponentBase +{ + [CascadingParameter] + private MudDialogInstance MudDialog { get; set; } = null!; + + [Parameter] + public DataSourceLocalFile DataSource { get; set; } + + [Inject] + private SettingsManager SettingsManager { get; init; } = null!; + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + this.embeddingProvider = this.SettingsManager.ConfigurationData.EmbeddingProviders.FirstOrDefault(x => x.Id == this.DataSource.EmbeddingId); + this.fileInfo = new FileInfo(this.DataSource.FilePath); + await base.OnInitializedAsync(); + } + + #endregion + + private EmbeddingProvider embeddingProvider; + private FileInfo fileInfo = null!; + + private bool IsCloudEmbedding => !this.embeddingProvider.IsSelfHosted; + + private bool IsFileAvailable => this.fileInfo.Exists; + + private string FileSize => this.fileInfo.FileSize(); + + private void Close() => this.MudDialog.Close(); +} \ No newline at end of file diff --git a/app/MindWork AI Studio/MindWork AI Studio.csproj b/app/MindWork AI Studio/MindWork AI Studio.csproj index ccc96dff..0d6fc288 100644 --- a/app/MindWork AI Studio/MindWork AI Studio.csproj +++ b/app/MindWork AI Studio/MindWork AI Studio.csproj @@ -53,10 +53,6 @@ <PackageReference Include="ReverseMarkdown" Version="4.6.0" /> </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\ERIClientV1\ERIClientV1.csproj" /> - </ItemGroup> - <!-- Read the meta data file --> <Target Name="ReadMetaData" BeforeTargets="BeforeBuild"> <Error Text="The ../../metadata.txt file was not found!" Condition="!Exists('../../metadata.txt')" /> diff --git a/app/MindWork AI Studio/Pages/Home.razor.cs b/app/MindWork AI Studio/Pages/Home.razor.cs index 2b2aa4a8..5b8d63e4 100644 --- a/app/MindWork AI Studio/Pages/Home.razor.cs +++ b/app/MindWork AI Studio/Pages/Home.razor.cs @@ -26,7 +26,7 @@ public partial class Home : ComponentBase private async Task ReadLastChangeAsync() { var latest = Changelog.LOGS.MaxBy(n => n.Build); - var response = await this.HttpClient.GetAsync($"changelog/{latest.Filename}"); + using var response = await this.HttpClient.GetAsync($"changelog/{latest.Filename}"); this.LastChangeContent = await response.Content.ReadAsStringAsync(); } diff --git a/app/MindWork AI Studio/Provider/BaseProvider.cs b/app/MindWork AI Studio/Provider/BaseProvider.cs index 25143834..2899e4f5 100644 --- a/app/MindWork AI Studio/Provider/BaseProvider.cs +++ b/app/MindWork AI Studio/Provider/BaseProvider.cs @@ -103,9 +103,14 @@ public abstract class BaseProvider : IProvider, ISecretId { using var request = await requestBuilder(); + // // Send the request with the ResponseHeadersRead option. // This allows us to read the stream as soon as the headers are received. // This is important because we want to stream the responses. + // + // Please notice: We do not dispose the response here. The caller is responsible + // for disposing the response object. This is important because the response + // object is used to read the stream. var nextResponse = await this.httpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, token); if (nextResponse.IsSuccessStatusCode) { diff --git a/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs b/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs index e0d5da77..942cb245 100644 --- a/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs +++ b/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs @@ -136,8 +136,8 @@ public class ProviderGoogle(ILogger logger) : BaseProvider("https://generativela if (secretKey is null) return default; - var request = new HttpRequestMessage(HttpMethod.Get, $"models?key={secretKey}"); - var response = await this.httpClient.SendAsync(request, token); + using var request = new HttpRequestMessage(HttpMethod.Get, $"models?key={secretKey}"); + using var response = await this.httpClient.SendAsync(request, token); if(!response.IsSuccessStatusCode) return default; diff --git a/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs b/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs index 2fc7e88f..f32a31b5 100644 --- a/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs +++ b/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs @@ -127,10 +127,10 @@ public class ProviderGroq(ILogger logger) : BaseProvider("https://api.groq.com/o if (secretKey is null) return []; - var request = new HttpRequestMessage(HttpMethod.Get, "models"); + using var request = new HttpRequestMessage(HttpMethod.Get, "models"); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", secretKey); - var response = await this.httpClient.SendAsync(request, token); + using var response = await this.httpClient.SendAsync(request, token); if(!response.IsSuccessStatusCode) return []; diff --git a/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs b/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs index ebde4c7b..024f60d3 100644 --- a/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs +++ b/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs @@ -138,10 +138,10 @@ public sealed class ProviderMistral(ILogger logger) : BaseProvider("https://api. if (secretKey is null) return default; - var request = new HttpRequestMessage(HttpMethod.Get, "models"); + using var request = new HttpRequestMessage(HttpMethod.Get, "models"); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", secretKey); - var response = await this.httpClient.SendAsync(request, token); + using var response = await this.httpClient.SendAsync(request, token); if(!response.IsSuccessStatusCode) return default; diff --git a/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs b/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs index 6ddeeabc..ed092174 100644 --- a/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs +++ b/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs @@ -154,10 +154,10 @@ public sealed class ProviderOpenAI(ILogger logger) : BaseProvider("https://api.o if (secretKey is null) return []; - var request = new HttpRequestMessage(HttpMethod.Get, "models"); + using var request = new HttpRequestMessage(HttpMethod.Get, "models"); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", secretKey); - var response = await this.httpClient.SendAsync(request, token); + using var response = await this.httpClient.SendAsync(request, token); if(!response.IsSuccessStatusCode) return []; diff --git a/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs b/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs index 3abda28c..4ba45c6b 100644 --- a/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs +++ b/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs @@ -154,11 +154,11 @@ public sealed class ProviderSelfHosted(ILogger logger, Host host, string hostnam } }; - var lmStudioRequest = new HttpRequestMessage(HttpMethod.Get, "models"); + using var lmStudioRequest = new HttpRequestMessage(HttpMethod.Get, "models"); if(secretKey is not null) lmStudioRequest.Headers.Authorization = new AuthenticationHeaderValue("Bearer", apiKeyProvisional); - var lmStudioResponse = await this.httpClient.SendAsync(lmStudioRequest, token); + using var lmStudioResponse = await this.httpClient.SendAsync(lmStudioRequest, token); if(!lmStudioResponse.IsSuccessStatusCode) return []; diff --git a/app/MindWork AI Studio/Provider/X/ProviderX.cs b/app/MindWork AI Studio/Provider/X/ProviderX.cs index c915c964..a8334c8d 100644 --- a/app/MindWork AI Studio/Provider/X/ProviderX.cs +++ b/app/MindWork AI Studio/Provider/X/ProviderX.cs @@ -127,10 +127,10 @@ public sealed class ProviderX(ILogger logger) : BaseProvider("https://api.x.ai/v if (secretKey is null) return []; - var request = new HttpRequestMessage(HttpMethod.Get, "models"); + using var request = new HttpRequestMessage(HttpMethod.Get, "models"); request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", secretKey); - var response = await this.httpClient.SendAsync(request, token); + using var response = await this.httpClient.SendAsync(request, token); if(!response.IsSuccessStatusCode) return []; diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs index 387accf0..addec256 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs @@ -1,6 +1,7 @@ -using ERI_Client.V1; - // ReSharper disable InconsistentNaming + +using AIStudio.Tools.ERIClient.DataModel; + namespace AIStudio.Settings.DataModel; /// <summary> @@ -24,23 +25,15 @@ public readonly record struct DataSourceERI_V1 : IERIDataSource /// <inheritdoc /> public DataSourceType Type { get; init; } = DataSourceType.NONE; - /// <summary> - /// The hostname of the ERI server. - /// </summary> + /// <inheritdoc /> public string Hostname { get; init; } = string.Empty; - /// <summary> - /// The port of the ERI server. - /// </summary> + /// <inheritdoc /> public int Port { get; init; } - /// <summary> - /// The authentication method to use. - /// </summary> + /// <inheritdoc /> public AuthMethod AuthMethod { get; init; } = AuthMethod.NONE; - /// <summary> - /// The username to use for authentication, when the auth. method is USERNAME_PASSWORD. - /// </summary> + /// <inheritdoc /> public string Username { get; init; } = string.Empty; } \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/IERIDataSource.cs b/app/MindWork AI Studio/Settings/IERIDataSource.cs index 34874fcc..0d917d18 100644 --- a/app/MindWork AI Studio/Settings/IERIDataSource.cs +++ b/app/MindWork AI Studio/Settings/IERIDataSource.cs @@ -1,12 +1,26 @@ -using ERI_Client.V1; +using AIStudio.Tools.ERIClient.DataModel; namespace AIStudio.Settings; public interface IERIDataSource : IExternalDataSource { + /// <summary> + /// The hostname of the ERI server. + /// </summary> public string Hostname { get; init; } + /// <summary> + /// The port of the ERI server. + /// </summary> public int Port { get; init; } + /// <summary> + /// The authentication method to use. + /// </summary> public AuthMethod AuthMethod { get; init; } + + /// <summary> + /// The username to use for authentication, when the auth. method is USERNAME_PASSWORD. + /// </summary> + public string Username { get; init; } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/AuthMethodsV1Extensions.cs b/app/MindWork AI Studio/Tools/AuthMethodsV1Extensions.cs index e26a20b5..4d11017a 100644 --- a/app/MindWork AI Studio/Tools/AuthMethodsV1Extensions.cs +++ b/app/MindWork AI Studio/Tools/AuthMethodsV1Extensions.cs @@ -1,4 +1,4 @@ -using ERI_Client.V1; +using AIStudio.Tools.ERIClient.DataModel; namespace AIStudio.Tools; diff --git a/app/MindWork AI Studio/Tools/DirectoryInfoExtensions.cs b/app/MindWork AI Studio/Tools/DirectoryInfoExtensions.cs new file mode 100644 index 00000000..70adcab7 --- /dev/null +++ b/app/MindWork AI Studio/Tools/DirectoryInfoExtensions.cs @@ -0,0 +1,66 @@ +namespace AIStudio.Tools; + +public static class DirectoryInfoExtensions +{ + private static readonly EnumerationOptions ENUMERATION_OPTIONS = new() + { + IgnoreInaccessible = true, + RecurseSubdirectories = true, + ReturnSpecialDirectories = false, + }; + + /// <summary> + /// Determines the size of the directory and all its subdirectories, as well as the number of files. When desired, + /// it can report the found files up to a certain limit. + /// </summary> + /// <remarks> + /// You might set reportMaxFiles to a negative value to report all files. Any positive value will limit the number + /// of reported files. The cancellation token can be used to stop the operation. The cancellation operation is also able + /// to cancel slow operations, e.g., when the directory is on a slow network drive. + /// + /// After stopping the operation, the total size and number of files are reported as they were at the time of cancellation. + /// + /// Please note that the entire operation is done on a background thread. Thus, when reporting the found files or the + /// current total size, you need to use the appropriate dispatcher to update the UI. Usually, you can use the InvokeAsync + /// method to update the UI from a background thread. + /// </remarks> + /// <param name="directoryInfo">The root directory to determine the size of.</param> + /// <param name="reportCurrentTotalSize">The callback to report the current total size of the directory.</param> + /// <param name="reportCurrentNumFiles">The callback to report the current number of files found.</param> + /// <param name="reportNextFile">The callback to report the next file found. The file name is relative to the root directory.</param> + /// <param name="reportMaxFiles">The maximum number of files to report. A negative value reports all files.</param> + /// <param name="done">The callback to report that the operation is done.</param> + /// <param name="cancellationToken">The cancellation token to stop the operation.</param> + public static async Task DetermineContentSize(this DirectoryInfo directoryInfo, Action<long> reportCurrentTotalSize, Action<long> reportCurrentNumFiles, Action<string> reportNextFile, int reportMaxFiles = -1, Action? done = null, CancellationToken cancellationToken = default) + { + var rootDirectoryLen = directoryInfo.FullName.Length; + long totalSize = 0; + long numFiles = 0; + + await Task.Factory.StartNew(() => { + foreach (var file in directoryInfo.EnumerateFiles("*", ENUMERATION_OPTIONS)) + { + if (cancellationToken.IsCancellationRequested) + return; + + totalSize += file.Length; + numFiles++; + + if (numFiles % 100 == 0) + { + reportCurrentTotalSize(totalSize); + reportCurrentNumFiles(numFiles); + } + + if (reportMaxFiles < 0 || numFiles <= reportMaxFiles) + reportNextFile(file.FullName[rootDirectoryLen..]); + } + }, cancellationToken, TaskCreationOptions.LongRunning, TaskScheduler.Default); + + reportCurrentTotalSize(totalSize); + reportCurrentNumFiles(numFiles); + + if(done is not null) + done(); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/APIResponse.cs b/app/MindWork AI Studio/Tools/ERIClient/APIResponse.cs new file mode 100644 index 00000000..1f82914c --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/APIResponse.cs @@ -0,0 +1,19 @@ +namespace AIStudio.Tools.ERIClient; + +public sealed class APIResponse<T> +{ + /// <summary> + /// Was the API call successful? + /// </summary> + public bool Successful { get; set; } + + /// <summary> + /// When the API call was not successful, this will contain the error message. + /// </summary> + public string Message { get; set; } = string.Empty; + + /// <summary> + /// The data returned by the API call. + /// </summary> + public T? Data { get; set; } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthField.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthField.cs new file mode 100644 index 00000000..89727430 --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthField.cs @@ -0,0 +1,13 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// An authentication field. +/// </summary> +public enum AuthField +{ + NONE, + USERNAME, + PASSWORD, + TOKEN, + KERBEROS_TICKET, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthFieldMapping.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthFieldMapping.cs new file mode 100644 index 00000000..e11c3d9f --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthFieldMapping.cs @@ -0,0 +1,8 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// The mapping between an AuthField and the field name in the authentication request. +/// </summary> +/// <param name="AuthField">The AuthField that is mapped to the field name.</param> +/// <param name="FieldName">The field name in the authentication request.</param> +public record AuthFieldMapping(AuthField AuthField, string FieldName); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthMethod.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthMethod.cs new file mode 100644 index 00000000..7494ce9b --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthMethod.cs @@ -0,0 +1,9 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +public enum AuthMethod +{ + NONE, + KERBEROS, + USERNAME_PASSWORD, + TOKEN, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthResponse.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthResponse.cs new file mode 100644 index 00000000..cdc325dd --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthResponse.cs @@ -0,0 +1,9 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// The response to an authentication request. +/// </summary> +/// <param name="Success">True, when the authentication was successful.</param> +/// <param name="Token">The token to use for further requests.</param> +/// <param name="Message">When the authentication was not successful, this contains the reason.</param> +public readonly record struct AuthResponse(bool Success, string? Token, string? Message); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthScheme.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthScheme.cs new file mode 100644 index 00000000..bde0175b --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/AuthScheme.cs @@ -0,0 +1,9 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// Describes one authentication scheme for this data source. +/// </summary> +/// <param name="AuthMethod">The method used for authentication, e.g., "API Key," "Username/Password," etc.</param> +/// <param name="AuthFieldMappings">A list of field mappings for the authentication method. The client must know, +/// e.g., how the password field is named in the request.</param> +public readonly record struct AuthScheme(AuthMethod AuthMethod, List<AuthFieldMapping> AuthFieldMappings); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/ChatThread.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/ChatThread.cs new file mode 100644 index 00000000..8d6a0983 --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/ChatThread.cs @@ -0,0 +1,7 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// A chat thread, which is a list of content blocks. +/// </summary> +/// <param name="ContentBlocks">The content blocks in this chat thread.</param> +public readonly record struct ChatThread(List<ContentBlock> ContentBlocks); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/ContentBlock.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/ContentBlock.cs new file mode 100644 index 00000000..0a46d3b5 --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/ContentBlock.cs @@ -0,0 +1,12 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// A block of content of a chat thread. +/// </summary> +/// <remarks> +/// Images and other media are base64 encoded. +/// </remarks> +/// <param name="Content">The content of the block. Remember that images and other media are base64 encoded.</param> +/// <param name="Role">The role of the content in the chat thread.</param> +/// <param name="Type">The type of the content, e.g., text, image, video, etc.</param> +public readonly record struct ContentBlock(string Content, Role Role, ContentType Type); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/ContentType.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/ContentType.cs new file mode 100644 index 00000000..14203728 --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/ContentType.cs @@ -0,0 +1,16 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// The type of content. +/// </summary> +public enum ContentType +{ + NONE, + UNKNOWN, + + TEXT, + IMAGE, + VIDEO, + AUDIO, + SPEECH, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/Context.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/Context.cs new file mode 100644 index 00000000..fb5c13f5 --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/Context.cs @@ -0,0 +1,27 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// Matching context returned by the data source as a result of a retrieval request. +/// </summary> +/// <param name="Name">The name of the source, e.g., a document name, database name, +/// collection name, etc.</param> +/// <param name="Category">What are the contents of the source? For example, is it a +/// dictionary, a book chapter, business concept, a paper, etc.</param> +/// <param name="Path">The path to the content, e.g., a URL, a file path, a path in a +/// graph database, etc.</param> +/// <param name="Type">The type of the content, e.g., text, image, video, audio, speech, etc.</param> +/// <param name="MatchedContent">The content that matched the user prompt. For text, you +/// return the matched text and, e.g., three words before and after it.</param> +/// <param name="SurroundingContent">The surrounding content of the matched content. +/// For text, you may return, e.g., one sentence or paragraph before and after +/// the matched content.</param> +/// <param name="Links">Links to related content, e.g., links to Wikipedia articles, +/// links to sources, etc.</param> +public readonly record struct Context( + string Name, + string Category, + string? Path, + ContentType Type, + string MatchedContent, + string[] SurroundingContent, + string[] Links); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/DataSourceInfo.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/DataSourceInfo.cs new file mode 100644 index 00000000..07a8f92e --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/DataSourceInfo.cs @@ -0,0 +1,9 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// Information about the data source. +/// </summary> +/// <param name="Name">The name of the data source, e.g., "Internal Organization Documents."</param> +/// <param name="Description">A short description of the data source. What kind of data does it contain? +/// What is the data source used for?</param> +public readonly record struct DataSourceInfo(string Name, string Description); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/EmbeddingInfo.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/EmbeddingInfo.cs new file mode 100644 index 00000000..47285126 --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/EmbeddingInfo.cs @@ -0,0 +1,20 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// Represents information about the used embedding for this data source. The purpose of this information is to give the +/// interested user an idea of what kind of embedding is used and what it does. +/// </summary> +/// <param name="EmbeddingType">What kind of embedding is used. For example, "Transformer Embedding," "Contextual Word +/// Embedding," "Graph Embedding," etc.</param> +/// <param name="EmbeddingName">Name the embedding used. This can be a library, a framework, or the name of the used +/// algorithm.</param> +/// <param name="Description">A short description of the embedding. Describe what the embedding is doing.</param> +/// <param name="UsedWhen">Describe when the embedding is used. For example, when the user prompt contains certain +/// keywords, or anytime?</param> +/// <param name="Link">A link to the embedding's documentation or the source code. Might be null.</param> +public readonly record struct EmbeddingInfo( + string EmbeddingType, + string EmbeddingName, + string Description, + string UsedWhen, + string? Link); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/ProviderType.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/ProviderType.cs new file mode 100644 index 00000000..008811f8 --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/ProviderType.cs @@ -0,0 +1,22 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// Known types of providers that can process data. +/// </summary> +public enum ProviderType +{ + /// <summary> + /// The related data is not allowed to be sent to any provider. + /// </summary> + NONE, + + /// <summary> + /// The related data can be sent to any provider. + /// </summary> + ANY, + + /// <summary> + /// The related data can be sent to a provider that is hosted by the same organization, either on-premises or locally. + /// </summary> + SELF_HOSTED, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/ProviderTypeExtensions.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/ProviderTypeExtensions.cs new file mode 100644 index 00000000..ecdbcc19 --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/ProviderTypeExtensions.cs @@ -0,0 +1,13 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +public static class ProviderTypeExtensions +{ + public static string Explain(this ProviderType providerType) => providerType switch + { + ProviderType.NONE => "The related data is not allowed to be sent to any LLM provider. This means that this data source cannot be used at the moment.", + ProviderType.ANY => "The related data can be sent to any provider, regardless of where it is hosted (cloud or self-hosted).", + ProviderType.SELF_HOSTED => "The related data can be sent to a provider that is hosted by the same organization, either on-premises or locally. Cloud-based providers are not allowed.", + + _ => "Unknown configuration. This data source cannot be used at the moment.", + }; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/RetrievalInfo.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/RetrievalInfo.cs new file mode 100644 index 00000000..cdd71a6b --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/RetrievalInfo.cs @@ -0,0 +1,20 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// Information about a retrieval process, which this data source implements. +/// </summary> +/// <param name="Id">A unique identifier for the retrieval process. This can be a GUID, a unique name, or an increasing integer.</param> +/// <param name="Name">The name of the retrieval process, e.g., "Keyword-Based Wikipedia Article Retrieval".</param> +/// <param name="Description">A short description of the retrieval process. What kind of retrieval process is it?</param> +/// <param name="Link">A link to the retrieval process's documentation, paper, Wikipedia article, or the source code. Might be null.</param> +/// <param name="ParametersDescription">A dictionary that describes the parameters of the retrieval process. The key is the parameter name, +/// and the value is a description of the parameter. Although each parameter will be sent as a string, the description should indicate the +/// expected type and range, e.g., 0.0 to 1.0 for a float parameter.</param> +/// <param name="Embeddings">A list of embeddings used in this retrieval process. It might be empty in case no embedding is used.</param> +public readonly record struct RetrievalInfo( + string Id, + string Name, + string Description, + string? Link, + Dictionary<string, string>? ParametersDescription, + List<EmbeddingInfo> Embeddings); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/RetrievalRequest.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/RetrievalRequest.cs new file mode 100644 index 00000000..abeac50b --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/RetrievalRequest.cs @@ -0,0 +1,25 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// The retrieval request sent by AI Studio. +/// </summary> +/// <remarks> +/// Images and other media are base64 encoded. +/// </remarks> +/// <param name="LatestUserPrompt">The latest user prompt that AI Studio received.</param> +/// <param name="LatestUserPromptType">The type of the latest user prompt, e.g., text, image, etc.</param> +/// <param name="Thread">The chat thread that the user is currently in.</param> +/// <param name="RetrievalProcessId">Optional. The ID of the retrieval process that the data source should use. +/// When null, the data source chooses an appropriate retrieval process. Selecting a retrieval process is optional +/// for AI Studio users. Most users do not specify a retrieval process.</param> +/// <param name="Parameters">A dictionary of parameters that the data source should use for the retrieval process. +/// Although each parameter will be sent as a string, the retrieval process specifies the expected type and range.</param> +/// <param name="MaxMatches">The maximum number of matches that the data source should return. AI Studio uses +/// any value below 1 to indicate that the data source should return as many matches as appropriate.</param> +public readonly record struct RetrievalRequest( + string LatestUserPrompt, + ContentType LatestUserPromptType, + ChatThread Thread, + string? RetrievalProcessId, + Dictionary<string, string>? Parameters, + int MaxMatches); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/Role.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/Role.cs new file mode 100644 index 00000000..f19376f7 --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/Role.cs @@ -0,0 +1,15 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// Possible roles of any chat thread. +/// </summary> +public enum Role +{ + NONE, + UNKNOW, + + SYSTEM, + USER, + AI, + AGENT, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/SecurityRequirements.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/SecurityRequirements.cs new file mode 100644 index 00000000..aa4df1f5 --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/SecurityRequirements.cs @@ -0,0 +1,7 @@ +namespace AIStudio.Tools.ERIClient.DataModel; + +/// <summary> +/// Represents the security requirements for this data source. +/// </summary> +/// <param name="AllowedProviderType">Which provider types are allowed to process the data?</param> +public readonly record struct SecurityRequirements(ProviderType AllowedProviderType); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs b/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs new file mode 100644 index 00000000..1906a0d5 --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs @@ -0,0 +1,36 @@ +using System.Text.Json; +using System.Text.Json.Serialization; + +namespace AIStudio.Tools.ERIClient; + +public abstract class ERIClientBase(string baseAddress) : IDisposable +{ + protected static readonly JsonSerializerOptions JSON_OPTIONS = new() + { + WriteIndented = true, + AllowTrailingCommas = true, + PropertyNamingPolicy = null, + DictionaryKeyPolicy = JsonNamingPolicy.CamelCase, + PropertyNameCaseInsensitive = true, + Converters = + { + new JsonStringEnumConverter(JsonNamingPolicy.SnakeCaseUpper), + } + }; + + protected readonly HttpClient httpClient = new() + { + BaseAddress = new Uri(baseAddress), + }; + + protected string securityToken = string.Empty; + + #region Implementation of IDisposable + + public void Dispose() + { + this.httpClient.Dispose(); + } + + #endregion +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/ERIClientFactory.cs b/app/MindWork AI Studio/Tools/ERIClient/ERIClientFactory.cs new file mode 100644 index 00000000..28581646 --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/ERIClientFactory.cs @@ -0,0 +1,14 @@ +using AIStudio.Assistants.ERI; +using AIStudio.Settings; + +namespace AIStudio.Tools.ERIClient; + +public static class ERIClientFactory +{ + public static IERIClient? Get(ERIVersion version, IERIDataSource dataSource) => version switch + { + ERIVersion.V1 => new ERIClientV1($"{dataSource.Hostname}:{dataSource.Port}"), + + _ => null + }; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/ERIClientV1.cs b/app/MindWork AI Studio/Tools/ERIClient/ERIClientV1.cs new file mode 100644 index 00000000..62e3f556 --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/ERIClientV1.cs @@ -0,0 +1,344 @@ +using System.Text; +using System.Text.Json; + +using AIStudio.Settings; +using AIStudio.Tools.ERIClient.DataModel; + +namespace AIStudio.Tools.ERIClient; + +public class ERIClientV1(string baseAddress) : ERIClientBase(baseAddress), IERIClient +{ + #region Implementation of IERIClient + + public async Task<APIResponse<List<AuthScheme>>> GetAuthMethodsAsync(CancellationToken cancellationToken = default) + { + using var response = await this.httpClient.GetAsync("/auth/methods", cancellationToken); + if(!response.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to retrieve the authentication methods: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + }; + } + + var authMethods = await response.Content.ReadFromJsonAsync<List<AuthScheme>>(JSON_OPTIONS, cancellationToken); + if(authMethods is null) + { + return new() + { + Successful = false, + Message = "Failed to retrieve the authentication methods: the ERI server did not return a valid response." + }; + } + + return new() + { + Successful = true, + Data = authMethods + }; + } + + public async Task<APIResponse<AuthResponse>> AuthenticateAsync(IERIDataSource dataSource, RustService rustService, CancellationToken cancellationToken = default) + { + var authMethod = dataSource.AuthMethod; + var username = dataSource.Username; + switch (dataSource.AuthMethod) + { + case AuthMethod.NONE: + using (var request = new HttpRequestMessage(HttpMethod.Post, $"auth?authMethod={authMethod}")) + { + using var noneAuthResponse = await this.httpClient.SendAsync(request, cancellationToken); + if(!noneAuthResponse.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to authenticate with the ERI server. Code: {noneAuthResponse.StatusCode}, Reason: {noneAuthResponse.ReasonPhrase}" + }; + } + + var noneAuthResult = await noneAuthResponse.Content.ReadFromJsonAsync<AuthResponse>(JSON_OPTIONS, cancellationToken); + if(noneAuthResult == default) + { + return new() + { + Successful = false, + Message = "Failed to authenticate with the ERI server: the response was invalid." + }; + } + + this.securityToken = noneAuthResult.Token ?? string.Empty; + return new() + { + Successful = true, + Data = noneAuthResult + }; + } + + case AuthMethod.USERNAME_PASSWORD: + var passwordResponse = await rustService.GetSecret(dataSource); + if (!passwordResponse.Success) + { + return new() + { + Successful = false, + Message = "Failed to retrieve the password." + }; + } + + var password = await passwordResponse.Secret.Decrypt(Program.ENCRYPTION); + using (var request = new HttpRequestMessage(HttpMethod.Post, $"auth?authMethod={authMethod}")) + { + // We must send both values inside the header. The username field is named 'user'. + // The password field is named 'password'. + request.Headers.Add("user", username); + request.Headers.Add("password", password); + + using var usernamePasswordAuthResponse = await this.httpClient.SendAsync(request, cancellationToken); + if(!usernamePasswordAuthResponse.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to authenticate with the ERI server. Code: {usernamePasswordAuthResponse.StatusCode}, Reason: {usernamePasswordAuthResponse.ReasonPhrase}" + }; + } + + var usernamePasswordAuthResult = await usernamePasswordAuthResponse.Content.ReadFromJsonAsync<AuthResponse>(JSON_OPTIONS, cancellationToken); + if(usernamePasswordAuthResult == default) + { + return new() + { + Successful = false, + Message = "Failed to authenticate with the server: the response was invalid." + }; + } + + this.securityToken = usernamePasswordAuthResult.Token ?? string.Empty; + return new() + { + Successful = true, + Data = usernamePasswordAuthResult + }; + } + + case AuthMethod.TOKEN: + var tokenResponse = await rustService.GetSecret(dataSource); + if (!tokenResponse.Success) + { + return new() + { + Successful = false, + Message = "Failed to retrieve the access token." + }; + } + + var token = await tokenResponse.Secret.Decrypt(Program.ENCRYPTION); + using (var request = new HttpRequestMessage(HttpMethod.Post, $"auth?authMethod={authMethod}")) + { + request.Headers.Add("Authorization", $"Bearer {token}"); + + using var tokenAuthResponse = await this.httpClient.SendAsync(request, cancellationToken); + if(!tokenAuthResponse.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to authenticate with the ERI server. Code: {tokenAuthResponse.StatusCode}, Reason: {tokenAuthResponse.ReasonPhrase}" + }; + } + + var tokenAuthResult = await tokenAuthResponse.Content.ReadFromJsonAsync<AuthResponse>(JSON_OPTIONS, cancellationToken); + if(tokenAuthResult == default) + { + return new() + { + Successful = false, + Message = "Failed to authenticate with the ERI server: the response was invalid." + }; + } + + this.securityToken = tokenAuthResult.Token ?? string.Empty; + return new() + { + Successful = true, + Data = tokenAuthResult + }; + } + + default: + this.securityToken = string.Empty; + return new() + { + Successful = false, + Message = "The authentication method is not supported yet." + }; + } + } + + public async Task<APIResponse<DataSourceInfo>> GetDataSourceInfoAsync(CancellationToken cancellationToken = default) + { + using var request = new HttpRequestMessage(HttpMethod.Get, "/dataSource"); + request.Headers.Add("token", this.securityToken); + + using var response = await this.httpClient.SendAsync(request, cancellationToken); + if(!response.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to retrieve the data source information: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + }; + } + + var dataSourceInfo = await response.Content.ReadFromJsonAsync<DataSourceInfo>(JSON_OPTIONS, cancellationToken); + if(dataSourceInfo == default) + { + return new() + { + Successful = false, + Message = "Failed to retrieve the data source information: the ERI server did not return a valid response." + }; + } + + return new() + { + Successful = true, + Data = dataSourceInfo + }; + } + + public async Task<APIResponse<List<EmbeddingInfo>>> GetEmbeddingInfoAsync(CancellationToken cancellationToken = default) + { + using var request = new HttpRequestMessage(HttpMethod.Get, "/embedding/info"); + request.Headers.Add("token", this.securityToken); + + using var response = await this.httpClient.SendAsync(request, cancellationToken); + if(!response.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to retrieve the embedding information: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + }; + } + + var embeddingInfo = await response.Content.ReadFromJsonAsync<List<EmbeddingInfo>>(JSON_OPTIONS, cancellationToken); + if(embeddingInfo is null) + { + return new() + { + Successful = false, + Message = "Failed to retrieve the embedding information: the ERI server did not return a valid response." + }; + } + + return new() + { + Successful = true, + Data = embeddingInfo + }; + } + + public async Task<APIResponse<List<RetrievalInfo>>> GetRetrievalInfoAsync(CancellationToken cancellationToken = default) + { + using var request = new HttpRequestMessage(HttpMethod.Get, "/retrieval/info"); + request.Headers.Add("token", this.securityToken); + + using var response = await this.httpClient.SendAsync(request, cancellationToken); + if(!response.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to retrieve the retrieval information: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + }; + } + + var retrievalInfo = await response.Content.ReadFromJsonAsync<List<RetrievalInfo>>(JSON_OPTIONS, cancellationToken); + if(retrievalInfo is null) + { + return new() + { + Successful = false, + Message = "Failed to retrieve the retrieval information: the ERI server did not return a valid response." + }; + } + + return new() + { + Successful = true, + Data = retrievalInfo + }; + } + + public async Task<APIResponse<List<Context>>> ExecuteRetrievalAsync(RetrievalRequest request, CancellationToken cancellationToken = default) + { + using var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/retrieval"); + requestMessage.Headers.Add("token", this.securityToken); + + using var content = new StringContent(JsonSerializer.Serialize(request, JSON_OPTIONS), Encoding.UTF8, "application/json"); + requestMessage.Content = content; + + using var response = await this.httpClient.SendAsync(requestMessage, cancellationToken); + if(!response.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to execute the retrieval request: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + }; + } + + var contexts = await response.Content.ReadFromJsonAsync<List<Context>>(JSON_OPTIONS, cancellationToken); + if(contexts is null) + { + return new() + { + Successful = false, + Message = "Failed to execute the retrieval request: the ERI server did not return a valid response." + }; + } + + return new() + { + Successful = true, + Data = contexts + }; + } + + public async Task<APIResponse<SecurityRequirements>> GetSecurityRequirementsAsync(CancellationToken cancellationToken = default) + { + using var request = new HttpRequestMessage(HttpMethod.Get, "/security/requirements"); + request.Headers.Add("token", this.securityToken); + + using var response = await this.httpClient.SendAsync(request, cancellationToken); + if(!response.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to retrieve the security requirements: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + }; + } + + var securityRequirements = await response.Content.ReadFromJsonAsync<SecurityRequirements>(JSON_OPTIONS, cancellationToken); + if(securityRequirements == default) + { + return new() + { + Successful = false, + Message = "Failed to retrieve the security requirements: the ERI server did not return a valid response." + }; + } + + return new() + { + Successful = true, + Data = securityRequirements + }; + } + + #endregion +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/IERIClient.cs b/app/MindWork AI Studio/Tools/ERIClient/IERIClient.cs new file mode 100644 index 00000000..9cf27fbf --- /dev/null +++ b/app/MindWork AI Studio/Tools/ERIClient/IERIClient.cs @@ -0,0 +1,62 @@ +using AIStudio.Settings; +using AIStudio.Tools.ERIClient.DataModel; + +namespace AIStudio.Tools.ERIClient; + +public interface IERIClient : IDisposable +{ + /// <summary> + /// Retrieves the available authentication methods from the ERI server. + /// </summary> + /// <remarks> + /// No authentication is required to retrieve the available authentication methods. + /// </remarks> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>The available authentication methods.</returns> + public Task<APIResponse<List<AuthScheme>>> GetAuthMethodsAsync(CancellationToken cancellationToken = default); + + /// <summary> + /// Authenticate the user to the ERI server. + /// </summary> + /// <param name="dataSource">The data source to use.</param> + /// <param name="rustService">The Rust service.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>The authentication response.</returns> + public Task<APIResponse<AuthResponse>> AuthenticateAsync(IERIDataSource dataSource, RustService rustService, CancellationToken cancellationToken = default); + + /// <summary> + /// Retrieves the data source information from the ERI server. + /// </summary> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>The data source information.</returns> + public Task<APIResponse<DataSourceInfo>> GetDataSourceInfoAsync(CancellationToken cancellationToken = default); + + /// <summary> + /// Retrieves the embedding information from the ERI server. + /// </summary> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>A list of embedding information.</returns> + public Task<APIResponse<List<EmbeddingInfo>>> GetEmbeddingInfoAsync(CancellationToken cancellationToken = default); + + /// <summary> + /// Retrieves the retrieval information from the ERI server. + /// </summary> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>A list of retrieval information.</returns> + public Task<APIResponse<List<RetrievalInfo>>> GetRetrievalInfoAsync(CancellationToken cancellationToken = default); + + /// <summary> + /// Executes a retrieval request on the ERI server. + /// </summary> + /// <param name="request">The retrieval request.</param> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>The retrieved contexts to use for augmentation and generation.</returns> + public Task<APIResponse<List<Context>>> ExecuteRetrievalAsync(RetrievalRequest request, CancellationToken cancellationToken = default); + + /// <summary> + /// Retrieves the security requirements from the ERI server. + /// </summary> + /// <param name="cancellationToken">The cancellation token.</param> + /// <returns>The security requirements.</returns> + public Task<APIResponse<SecurityRequirements>> GetSecurityRequirementsAsync(CancellationToken cancellationToken = default); +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/FileInfoExtensions.cs b/app/MindWork AI Studio/Tools/FileInfoExtensions.cs new file mode 100644 index 00000000..c3002624 --- /dev/null +++ b/app/MindWork AI Studio/Tools/FileInfoExtensions.cs @@ -0,0 +1,17 @@ +namespace AIStudio.Tools; + +public static class FileInfoExtensions +{ + /// <summary> + /// Returns the file size in human-readable format. + /// </summary> + /// <param name="fileInfo">The file info object.</param> + /// <returns>The file size in human-readable format.</returns> + public static string FileSize(this FileInfo fileInfo) + { + if (!fileInfo.Exists) + return "N/A"; + + return fileInfo.Length.FileSize(); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/LongExtensions.cs b/app/MindWork AI Studio/Tools/LongExtensions.cs new file mode 100644 index 00000000..3209e47a --- /dev/null +++ b/app/MindWork AI Studio/Tools/LongExtensions.cs @@ -0,0 +1,22 @@ +namespace AIStudio.Tools; + +public static class LongExtensions +{ + /// <summary> + /// Formats the file size in a human-readable format. + /// </summary> + /// <param name="sizeBytes">The size in bytes.</param> + /// <returns>The formatted file size.</returns> + public static string FileSize(this long sizeBytes) + { + string[] sizes = { "B", "kB", "MB", "GB", "TB" }; + var order = 0; + while (sizeBytes >= 1024 && order < sizes.Length - 1) + { + order++; + sizeBytes /= 1024; + } + + return $"{sizeBytes:0.##} {sizes[order]}"; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs b/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs index f55f906a..cdd2f131 100644 --- a/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs +++ b/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs @@ -1,4 +1,4 @@ -using ERI_Client.V1; +using AIStudio.Tools.ERIClient.DataModel; namespace AIStudio.Tools.Validation; diff --git a/app/MindWork AI Studio/packages.lock.json b/app/MindWork AI Studio/packages.lock.json index 17d7a388..2941da3d 100644 --- a/app/MindWork AI Studio/packages.lock.json +++ b/app/MindWork AI Studio/packages.lock.json @@ -210,6 +210,6 @@ "type": "Project" } }, - "net8.0/osx-x64": {} + "net8.0/osx-arm64": {} } } \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md new file mode 100644 index 00000000..29875ade --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md @@ -0,0 +1,4 @@ +# v0.9.28, build 203 (2025-0x-xx xx:xx UTC) +- Added an information view to all data sources to the data source configuration page. The data source configuration is a preview feature behind the RAG feature flag. +- Added a ERI ((E)xternal (R)etrieval (I)nterface) client for communication with any ERI server. +- Improved the resource handling when loading models. \ No newline at end of file From ad3d8cbb3a265eb5396d9879553813d7cffc3c96 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 9 Feb 2025 13:10:20 +0100 Subject: [PATCH 016/110] Updated OpenSSL dependency to fix potential security issues (#275) --- runtime/Cargo.lock | 9 +++++---- runtime/Cargo.toml | 1 + 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index 651d0d89..268ab7d7 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -2331,6 +2331,7 @@ dependencies = [ "keyring", "log", "once_cell", + "openssl", "pbkdf2", "rand 0.8.5", "rand_chacha 0.3.1", @@ -2745,9 +2746,9 @@ dependencies = [ [[package]] name = "openssl" -version = "0.10.66" +version = "0.10.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9529f4786b70a3e8c61e11179af17ab6188ad8d0ded78c5529441ed39d4bd9c1" +checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" dependencies = [ "bitflags 2.6.0", "cfg-if", @@ -2786,9 +2787,9 @@ dependencies = [ [[package]] name = "openssl-sys" -version = "0.9.103" +version = "0.9.105" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f9e8deee91df40a943c71b917e5874b951d32a802526c85721ce3b776c929d6" +checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" dependencies = [ "cc", "libc", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 0c4dd352..47a4e34b 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -33,6 +33,7 @@ rcgen = { version = "0.13.2", features = ["pem"] } # Fixes security vulnerability downstream, where the upstream is not fixed yet: url = "2.5" +openssl = "0.10.70" [target.'cfg(target_os = "linux")'.dependencies] # See issue https://github.com/tauri-apps/tauri/issues/4470 From 6040e88dadb828755b0edd12c47f56e71b8b4e0e Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 9 Feb 2025 15:04:07 +0100 Subject: [PATCH 017/110] Updated the supporter page (#276) --- app/MindWork AI Studio/Pages/Supporters.razor | 140 +++++++++++------- .../wwwroot/changelog/v0.9.28.md | 2 + 2 files changed, 90 insertions(+), 52 deletions(-) diff --git a/app/MindWork AI Studio/Pages/Supporters.razor b/app/MindWork AI Studio/Pages/Supporters.razor index 784cbcb4..33179dfc 100644 --- a/app/MindWork AI Studio/Pages/Supporters.razor +++ b/app/MindWork AI Studio/Pages/Supporters.razor @@ -2,64 +2,100 @@ <div class="inner-scrolling-context"> <MudText Typo="Typo.h3" Class="mb-2">Supporters</MudText> - <InnerScrolling> + + <MudExpansionPanels> - <div class="border-solid border-2 rounded-lg pa-3 mb-6"> - <MudText Typo="Typo.h4" Class="mb-2">Our Titans</MudText> - <MudText Typo="Typo.body1" Style="text-align: justify; hyphens: auto;" Class="mb-3"> - In this section, we highlight the titan supporters of MindWork AI Studio. Titans are prestigious companies that provide significant support to our mission. - </MudText> - <MudText Typo="Typo.body1" Style="text-align: justify; hyphens: auto;" Class="mb-3"> - For companies, sponsoring MindWork AI Studio is not only a way to support innovation but also a valuable opportunity for public relations and marketing. Your company's name and logo will be featured prominently, showcasing your commitment to using cutting-edge AI tools and enhancing your reputation as an innovative enterprise. - </MudText> - <MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@Icons.Material.Filled.Business" Variant="Variant.Filled" Target="_blank"> - Become our first Titan - </MudButton> - </div> - - <MudGrid Justify="Justify.Center" Spacing="2" Style="width: 100%;" Class="ma-0"> - <MudItem Class="pa-0 pr-2" xs="6"> - <MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3"> - <MudText Typo="Typo.h4" Class="mb-3 d-flex align-center"> - <MudIcon Icon="@Icons.Material.Filled.People" Size="Size.Large" class="mr-2"/> - Individual Contributors + <ExpansionPanel HeaderText="Financial Support" IsExpanded="@true" HeaderIcon="@Icons.Material.Filled.AttachMoney"> + <div class="border-solid border-2 rounded-lg pa-3 mb-6"> + <MudText Typo="Typo.h4" Class="mb-2">Our Titans</MudText> + <MudText Typo="Typo.body1" Style="text-align: justify; hyphens: auto;" Class="mb-3"> + In this section, we highlight the titan supporters of MindWork AI Studio. Titans are prestigious companies that provide significant support to our mission. </MudText> - - <MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@Icons.Material.Filled.People" Variant="Variant.Filled" Target="_blank"> - Become a contributor - </MudButton> - - <MudText Typo="Typo.h6" Class="mt-8"> - The first 10 supporters who make a monthly contribution: + <MudText Typo="Typo.body1" Style="text-align: justify; hyphens: auto;" Class="mb-3"> + For companies, sponsoring MindWork AI Studio is not only a way to support innovation but also a valuable opportunity for public relations and marketing. Your company's name and logo will be featured prominently, showcasing your commitment to using cutting-edge AI tools and enhancing your reputation as an innovative enterprise. </MudText> - <MudList T="string"> - <Supporter Name="richard-stanton" Type="SupporterType.INDIVIDUAL" URL="https://github.com/richard-stanton" Acknowledgment="Thank you, Richard, for being the first."/> - <Supporter Name="peerschuett" Type="SupporterType.INDIVIDUAL" URL="https://github.com/peerschuett" Acknowledgment="Thank you, Peer, for your courage in being the second person to support the project financially."/> - </MudList> - - <MudText Typo="Typo.h6" Class="mt-8"> - The first 10 supporters who make a one-time contribution: - </MudText> - <MudList T="string"> - <Supporter Name="Bessieres" Type="SupporterType.INDIVIDUAL" URL="https://github.com/Bessieres" Acknowledgment="Thank you for being the first to contribute a one-time donation."/> - </MudList> - </MudPaper> - </MudItem> - - <MudItem xs="6" Class="pa-0 pl-2"> - <MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3"> - <MudText Typo="Typo.h4" Class="mb-3 d-flex align-center"> - <MudIcon Icon="@Icons.Material.Filled.Business" Size="Size.Large" class="mr-2"/> - Business Contributors - </MudText> - <MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@Icons.Material.Filled.Business" Variant="Variant.Filled" Target="_blank"> - Become a contributor + Become our first Titan </MudButton> - </MudPaper> - </MudItem> - </MudGrid> + </div> + <MudGrid Justify="Justify.Center" Spacing="2" Style="width: 100%;" Class="ma-0"> + <MudItem Class="pa-0 pr-2" xs="6"> + <MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3"> + <MudText Typo="Typo.h4" Class="mb-3 d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.People" Size="Size.Large" class="mr-2"/> + Individual Contributors + </MudText> + + <MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@Icons.Material.Filled.People" Variant="Variant.Filled" Target="_blank"> + Become a contributor + </MudButton> + + <MudText Typo="Typo.h6" Class="mt-8"> + The first 10 supporters who make a monthly contribution: + </MudText> + <MudList T="string"> + <Supporter Name="richard-stanton" Type="SupporterType.INDIVIDUAL" URL="https://github.com/richard-stanton" Acknowledgment="Thank you, Richard, for being the first."/> + <Supporter Name="peerschuett" Type="SupporterType.INDIVIDUAL" URL="https://github.com/peerschuett" Acknowledgment="Thank you, Peer, for your courage in being the second person to support the project financially."/> + <Supporter Name="donework" Type="SupporterType.INDIVIDUAL" URL="https://github.com/donework" Acknowledgment="Thanks Dominic for being the third supporter."/> + </MudList> + + <MudText Typo="Typo.h6" Class="mt-8"> + The first 10 supporters who make a one-time contribution: + </MudText> + <MudList T="string"> + <Supporter Name="Bessieres" Type="SupporterType.INDIVIDUAL" URL="https://github.com/Bessieres" Acknowledgment="Thank you for being the first to contribute a one-time donation."/> + </MudList> + </MudPaper> + </MudItem> + + <MudItem xs="6" Class="pa-0 pl-2"> + <MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3"> + <MudText Typo="Typo.h4" Class="mb-3 d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.Business" Size="Size.Large" class="mr-2"/> + Business Contributors + </MudText> + + <MudButton Href="https://github.com/sponsors/MindWorkAI" StartIcon="@Icons.Material.Filled.Business" Variant="Variant.Filled" Target="_blank"> + Become a contributor + </MudButton> + </MudPaper> + </MudItem> + </MudGrid> + </ExpansionPanel> + + <ExpansionPanel HeaderText="Content Contributors" HeaderIcon="@Icons.Material.Filled.Code"> + + <MudGrid Justify="Justify.Center" Spacing="2" Style="width: 100%;" Class="ma-0"> + <MudItem Class="pa-0 pr-2" xs="6"> + <MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3"> + <MudText Typo="Typo.h4" Class="mb-3 d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.Code" Size="Size.Large" class="mr-2"/> + Code Contributions + </MudText> + + <MudList T="string"> + <Supporter Name="DevNullx64" Type="SupporterType.INDIVIDUAL" URL="https://github.com/DevNullx64" Acknowledgment="Thanks Luc for your build script contribution."/> + </MudList> + </MudPaper> + </MudItem> + + <MudItem Class="pa-0 pr-2" xs="6"> + <MudPaper Elevation="3" Class="border-solid border rounded-lg pa-3"> + <MudText Typo="Typo.h4" Class="mb-3 d-flex align-start"> + <MudIcon Icon="@Icons.Material.Filled.Image" Size="Size.Large" class="mr-2"/> + Moderation, Design, Wiki, and Documentation + </MudText> + + <MudList T="string"> + <Supporter Name="KeSah001" Type="SupporterType.INDIVIDUAL" URL="https://github.com/KeSah001" Acknowledgment="Thank you very much, Kerstin, for taking care of creating the Wiki."/> + </MudList> + </MudPaper> + </MudItem> + </MudGrid> + </ExpansionPanel> + + </MudExpansionPanels> </InnerScrolling> </div> \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md index 29875ade..e3286aa9 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md @@ -1,4 +1,6 @@ # v0.9.28, build 203 (2025-0x-xx xx:xx UTC) - Added an information view to all data sources to the data source configuration page. The data source configuration is a preview feature behind the RAG feature flag. - Added a ERI ((E)xternal (R)etrieval (I)nterface) client for communication with any ERI server. +- Added `donework` as financial supporter. Thank you, Dominic! +- Added content contributors to the supporter page. We thank Luc (`DevNullx64`) for his build script contribution as well as Kerstin (`KeSah001`) for creating the Wiki pages. - Improved the resource handling when loading models. \ No newline at end of file From 78315195cb539922fc8380cf94814cf202320283 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 9 Feb 2025 16:25:40 +0100 Subject: [PATCH 018/110] Improved build script (#277) --- app/MindWork AI Studio/Pages/Supporters.razor | 1 + app/MindWork AI Studio/build.nu | 8 ++++++-- app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md | 3 ++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/app/MindWork AI Studio/Pages/Supporters.razor b/app/MindWork AI Studio/Pages/Supporters.razor index 33179dfc..d1fc2d3d 100644 --- a/app/MindWork AI Studio/Pages/Supporters.razor +++ b/app/MindWork AI Studio/Pages/Supporters.razor @@ -77,6 +77,7 @@ <MudList T="string"> <Supporter Name="DevNullx64" Type="SupporterType.INDIVIDUAL" URL="https://github.com/DevNullx64" Acknowledgment="Thanks Luc for your build script contribution."/> + <Supporter Name="SolsticeSpectrum" Type="SupporterType.INDIVIDUAL" URL="https://github.com/SolsticeSpectrum" Acknowledgment="Thanks for your build script contribution."/> </MudList> </MudPaper> </MudItem> diff --git a/app/MindWork AI Studio/build.nu b/app/MindWork AI Studio/build.nu index c37da507..d2819e7e 100755 --- a/app/MindWork AI Studio/build.nu +++ b/app/MindWork AI Studio/build.nu @@ -164,7 +164,11 @@ def get_rids []: nothing -> list { } def get_os []: nothing -> string { - (sys host).name | str downcase + let os = (sys host).name | str downcase + if $os =~ "linux" { + return "linux" + } + $os } def update_build_time []: nothing -> nothing { @@ -215,7 +219,7 @@ def update_rust_version []: nothing -> nothing { mut meta_lines = open --raw ../../metadata.txt | lines mut rust_version = $meta_lines.5 - let rust_data = (^rustc -Vv) | parse --regex 'rustc (?<version>[0-9.]+) \((?<commit>[a-zA-Z0-9]+)' + let rust_data = (^rustc -Vv) | parse --regex 'rustc (?<version>[0-9.]+)(?:-nightly)? \((?<commit>[a-zA-Z0-9]+)' let version = $rust_data.version.0 let commit = $rust_data.commit.0 diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md index e3286aa9..bac59bf9 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md @@ -3,4 +3,5 @@ - Added a ERI ((E)xternal (R)etrieval (I)nterface) client for communication with any ERI server. - Added `donework` as financial supporter. Thank you, Dominic! - Added content contributors to the supporter page. We thank Luc (`DevNullx64`) for his build script contribution as well as Kerstin (`KeSah001`) for creating the Wiki pages. -- Improved the resource handling when loading models. \ No newline at end of file +- Improved the resource handling when loading models. +- Improved the build script to support Arch Linux and other Linux distributions, along with Rust nightly environments. Thanks `SolsticeSpectrum` for the contribution. \ No newline at end of file From c0b7016c3a4757efd44b897791ecddb6ea5f57f7 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 9 Feb 2025 16:59:26 +0100 Subject: [PATCH 019/110] Added the assistant option to select the default app provider (#278) --- .../Components/ConfigurationProviderSelection.razor.cs | 3 +++ .../Components/Settings/SettingsPanelApp.razor | 2 +- .../Components/Settings/SettingsPanelChat.razor | 2 +- app/MindWork AI Studio/Tools/Components.cs | 1 + app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md | 1 + 5 files changed, 7 insertions(+), 2 deletions(-) diff --git a/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs b/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs index debeae0c..e9a9f9b0 100644 --- a/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs +++ b/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs @@ -49,6 +49,9 @@ public partial class ConfigurationProviderSelection : ComponentBase, IMessageBus private IEnumerable<ConfigurationSelectData<string>> FilteredData() { + if(this.Component is not Tools.Components.NONE and not Tools.Components.APP_SETTINGS) + yield return new("Use app default", string.Empty); + var minimumLevel = this.SettingsManager.GetMinimumConfidenceLevel(this.Component); foreach (var providerId in this.Data) { diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelApp.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelApp.razor index 5cdb3263..e67aaf5f 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelApp.razor +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelApp.razor @@ -19,6 +19,6 @@ } } - <ConfigurationProviderSelection Data="@this.AvailableLLMProvidersFunc()" SelectedValue="@(() => this.SettingsManager.ConfigurationData.App.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.App.PreselectedProvider = selectedValue)" HelpText="@(() => "Would you like to set one provider as the default for the entire app? When you configure a different provider for an assistant, it will always take precedence.")"/> + <ConfigurationProviderSelection Component="Components.APP_SETTINGS" Data="@this.AvailableLLMProvidersFunc()" SelectedValue="@(() => this.SettingsManager.ConfigurationData.App.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.App.PreselectedProvider = selectedValue)" HelpText="@(() => "Would you like to set one provider as the default for the entire app? When you configure a different provider for an assistant, it will always take precedence.")"/> <ConfigurationSelect OptionDescription="Preselect one of your profiles?" SelectedValue="@(() => this.SettingsManager.ConfigurationData.App.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.App.PreselectedProfile = selectedValue)" OptionHelp="Would you like to set one of your profiles as the default for the entire app? When you configure a different profile for an assistant, it will always take precedence."/> </ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelChat.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelChat.razor index 602af631..4f677ae3 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelChat.razor +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelChat.razor @@ -9,7 +9,7 @@ <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> <ConfigurationOption OptionDescription="Preselect chat options?" LabelOn="Chat options are preselected" LabelOff="No chat options are preselected" State="@(() => this.SettingsManager.ConfigurationData.Chat.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Chat.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect chat options. This is might be useful when you prefer a specific provider."/> - <ConfigurationProviderSelection Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.Chat.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Chat.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Chat.PreselectedProvider = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.CHAT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.Chat.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Chat.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Chat.PreselectedProvider = selectedValue)"/> <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Chat.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Chat.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Chat.PreselectedProfile = selectedValue)" OptionHelp="Would you like to set one of your profiles as the default for chats?"/> </MudPaper> </ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/Components.cs b/app/MindWork AI Studio/Tools/Components.cs index c910b7ce..4faa55a8 100644 --- a/app/MindWork AI Studio/Tools/Components.cs +++ b/app/MindWork AI Studio/Tools/Components.cs @@ -20,4 +20,5 @@ public enum Components ERI_ASSISTANT, CHAT, + APP_SETTINGS, } \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md index bac59bf9..83ad9cd2 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md @@ -1,6 +1,7 @@ # v0.9.28, build 203 (2025-0x-xx xx:xx UTC) - Added an information view to all data sources to the data source configuration page. The data source configuration is a preview feature behind the RAG feature flag. - Added a ERI ((E)xternal (R)etrieval (I)nterface) client for communication with any ERI server. +- Added the option to select the default app provider in the assistant settings under provider selection. Thank you, Peer (`peerschuett`), for reporting the issue. - Added `donework` as financial supporter. Thank you, Dominic! - Added content contributors to the supporter page. We thank Luc (`DevNullx64`) for his build script contribution as well as Kerstin (`KeSah001`) for creating the Wiki pages. - Improved the resource handling when loading models. From c9474c55b7ad0982b33eb50e1a8bd0c1a1967f49 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 9 Feb 2025 18:06:24 +0100 Subject: [PATCH 020/110] Prepared release v0.9.28 (#279) --- .../Components/Changelog.Logs.cs | 1 + .../MindWork AI Studio.csproj | 4 +- app/MindWork AI Studio/build.nu | 34 ++++---- app/MindWork AI Studio/packages.lock.json | 27 +++--- .../wwwroot/changelog/v0.9.28.md | 5 +- metadata.txt | 16 ++-- runtime/Cargo.lock | 87 ++++++++++++++++++- runtime/Cargo.toml | 6 +- runtime/src/api_token.rs | 2 +- runtime/src/encryption.rs | 2 +- runtime/tauri.conf.json | 2 +- 11 files changed, 133 insertions(+), 53 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index 8d95f65b..5d700c8f 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,6 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ + new (203, "v0.9.28, build 203 (2025-02-09 16:33 UTC)", "v0.9.28.md"), new (202, "v0.9.27, build 202 (2025-01-21 18:24 UTC)", "v0.9.27.md"), new (201, "v0.9.26, build 201 (2025-01-13 19:11 UTC)", "v0.9.26.md"), new (200, "v0.9.25, build 200 (2025-01-04 18:33 UTC)", "v0.9.25.md"), diff --git a/app/MindWork AI Studio/MindWork AI Studio.csproj b/app/MindWork AI Studio/MindWork AI Studio.csproj index 0d6fc288..4caca35d 100644 --- a/app/MindWork AI Studio/MindWork AI Studio.csproj +++ b/app/MindWork AI Studio/MindWork AI Studio.csproj @@ -47,8 +47,8 @@ <ItemGroup> <PackageReference Include="CodeBeam.MudBlazor.Extensions" Version="7.1.0" /> <PackageReference Include="HtmlAgilityPack" Version="1.11.72" /> - <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.0" /> - <PackageReference Include="MudBlazor" Version="7.15.0" /> + <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.1" /> + <PackageReference Include="MudBlazor" Version="7.16.0" /> <PackageReference Include="MudBlazor.Markdown" Version="7.14.0" /> <PackageReference Include="ReverseMarkdown" Version="4.6.0" /> </ItemGroup> diff --git a/app/MindWork AI Studio/build.nu b/app/MindWork AI Studio/build.nu index d2819e7e..cf69e3e6 100755 --- a/app/MindWork AI Studio/build.nu +++ b/app/MindWork AI Studio/build.nu @@ -2,11 +2,11 @@ def main [] {} -def are_assets_exist [rid: string]: string -> bool { +def are_assets_exist [rid: string] { $"bin/release/net8.0/($rid)/publish/wwwroot/_content/MudBlazor/MudBlazor.min.css" | path exists } -def "main help" []: nothing -> nothing { +def "main help" [] { print "Usage: nu build.nu [action]" print "" print "Optional Actions:" @@ -26,7 +26,7 @@ def "main help" []: nothing -> nothing { print "" } -def "main prepare" [action: string]: string -> nothing { +def "main prepare" [action: string] { if (update_app_version $action) { main fix_web_assets inc_build_number @@ -36,7 +36,7 @@ def "main prepare" [action: string]: string -> nothing { } } -def "main metadata" []: nothing -> nothing { +def "main metadata" [] { update_dotnet_version update_rust_version update_mudblazor_version @@ -46,7 +46,7 @@ def "main metadata" []: nothing -> nothing { update_license_year "Pages/About.razor.cs" } -def "main fix_web_assets" []: nothing -> nothing { +def "main fix_web_assets" [] { # Get the matching RIDs for the current OS: let rids = get_rids @@ -70,7 +70,7 @@ def "main fix_web_assets" []: nothing -> nothing { } } -def "main publish" []: nothing -> nothing { +def "main publish" [] { main metadata @@ -139,7 +139,7 @@ def "main publish" []: nothing -> nothing { print "Building done." } -def get_rids []: nothing -> list { +def get_rids [] { # Define the list of RIDs to build for, cf. https://learn.microsoft.com/en-us/dotnet/core/rid-catalog: let rids = ["win-x64", "win-arm64", "linux-x64", "linux-arm64", "osx-arm64", "osx-x64"] @@ -163,7 +163,7 @@ def get_rids []: nothing -> list { $rids } -def get_os []: nothing -> string { +def get_os [] { let os = (sys host).name | str downcase if $os =~ "linux" { return "linux" @@ -171,7 +171,7 @@ def get_os []: nothing -> string { $os } -def update_build_time []: nothing -> nothing { +def update_build_time [] { mut meta_lines = open --raw ../../metadata.txt | lines mut build_time = $meta_lines.1 @@ -183,7 +183,7 @@ def update_build_time []: nothing -> nothing { $meta_lines | save --raw --force ../../metadata.txt } -def inc_build_number []: nothing -> nothing { +def inc_build_number [] { mut meta_lines = open --raw ../../metadata.txt | lines mut build_number = $meta_lines.2 | into int @@ -195,7 +195,7 @@ def inc_build_number []: nothing -> nothing { $meta_lines | save --raw --force ../../metadata.txt } -def update_dotnet_version []: nothing -> nothing { +def update_dotnet_version [] { mut meta_lines = open --raw ../../metadata.txt | lines mut dotnet_sdk_version = $meta_lines.3 mut dotnet_version = $meta_lines.4 @@ -215,7 +215,7 @@ def update_dotnet_version []: nothing -> nothing { $meta_lines | save --raw --force ../../metadata.txt } -def update_rust_version []: nothing -> nothing { +def update_rust_version [] { mut meta_lines = open --raw ../../metadata.txt | lines mut rust_version = $meta_lines.5 @@ -229,7 +229,7 @@ def update_rust_version []: nothing -> nothing { $meta_lines | save --raw --force ../../metadata.txt } -def update_mudblazor_version []: nothing -> nothing { +def update_mudblazor_version [] { mut meta_lines = open --raw ../../metadata.txt | lines mut mudblazor_version = $meta_lines.6 @@ -242,7 +242,7 @@ def update_mudblazor_version []: nothing -> nothing { $meta_lines | save --raw --force ../../metadata.txt } -def update_tauri_version []: nothing -> nothing { +def update_tauri_version [] { mut meta_lines = open --raw ../../metadata.txt | lines mut tauri_version = $meta_lines.7 @@ -276,7 +276,7 @@ def update_license_year [licence_file: string] { $updated_license_text | save --raw --force $licence_file } -def update_app_version [action: string]: string -> bool { +def update_app_version [action: string] { mut meta_lines = open --raw ../../metadata.txt | lines mut app_version = $meta_lines.0 @@ -321,7 +321,7 @@ def update_app_version [action: string]: string -> bool { return true } -def update_project_commit_hash []: nothing -> nothing { +def update_project_commit_hash [] { mut meta_lines = open --raw ../../metadata.txt | lines mut commit_hash = $meta_lines.8 @@ -356,7 +356,7 @@ def update_project_commit_hash []: nothing -> nothing { $meta_lines | save --raw --force ../../metadata.txt } -def update_changelog []: nothing -> nothing { +def update_changelog [] { # Get all changelog files: let all_changelog_files = glob wwwroot/changelog/*.md diff --git a/app/MindWork AI Studio/packages.lock.json b/app/MindWork AI Studio/packages.lock.json index 2941da3d..d070220f 100644 --- a/app/MindWork AI Studio/packages.lock.json +++ b/app/MindWork AI Studio/packages.lock.json @@ -24,11 +24,11 @@ }, "Microsoft.Extensions.FileProviders.Embedded": { "type": "Direct", - "requested": "[9.0.0, )", - "resolved": "9.0.0", - "contentHash": "6Ev1goLIvggLF6uCs6oZvdr9JM+2b1Zj+4FLdBWNW5iw3tm2BymVIb0yMsjnQTBWL7YUmqVWH3u45hSqOfvuqg==", + "requested": "[9.0.1, )", + "resolved": "9.0.1", + "contentHash": "Pnw9plviwRguhVxHjthooumWH8yUxfF54tuu/+VoVBOuqBmzu6VUnn4NGf3eVkEO1k5q2nihOIAQL/7UMemSmQ==", "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "9.0.0" + "Microsoft.Extensions.FileProviders.Abstractions": "9.0.1" } }, "Microsoft.NET.ILLink.Tasks": { @@ -39,9 +39,9 @@ }, "MudBlazor": { "type": "Direct", - "requested": "[7.15.0, )", - "resolved": "7.15.0", - "contentHash": "b2+hO7ZTGwsGhu9SoowuNe2ETeF1GzExpg/hIYR++rSh+vy4v/QD0iOsrATWv3LdFJXSgk3d1+XIr5srW3jBiA==", + "requested": "[7.16.0, )", + "resolved": "7.16.0", + "contentHash": "68bEFn7MLCyOB4yYxtvZG+AA+bZbxBDcIOhnSVFrHrAg8LLXVw1LxHCp9EyRktlREpnoAO1JxINp+5WeHc9Z4w==", "dependencies": { "Microsoft.AspNetCore.Components": "8.0.8", "Microsoft.AspNetCore.Components.Web": "8.0.8", @@ -147,10 +147,10 @@ }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "uK439QzYR0q2emLVtYzwyK3x+T5bTY4yWsd/k/ZUS9LR6Sflp8MIdhGXW8kQCd86dQD4tLqvcbLkku8qHY263Q==", + "resolved": "9.0.1", + "contentHash": "DguZYt1DWL05+8QKWL3b6bW7A2pC5kYFMY5iXM6W2M23jhvcNa8v6AU8PvVJBcysxHwr9/jax0agnwoBumsSwg==", "dependencies": { - "Microsoft.Extensions.Primitives": "9.0.0" + "Microsoft.Extensions.Primitives": "9.0.1" } }, "Microsoft.Extensions.Localization": { @@ -188,8 +188,8 @@ }, "Microsoft.Extensions.Primitives": { "type": "Transitive", - "resolved": "9.0.0", - "contentHash": "N3qEBzmLMYiASUlKxxFIISP4AiwuPTHF5uCh+2CWSwwzAJiIYx0kBJsS30cp1nvhSySFAVi30jecD307jV+8Kg==" + "resolved": "9.0.1", + "contentHash": "bHtTesA4lrSGD1ZUaMIx6frU3wyy0vYtTa/hM6gGQu5QNrydObv8T5COiGUWsisflAfmsaFOe9Xvw5NSO99z0g==" }, "Microsoft.JSInterop": { "type": "Transitive", @@ -205,9 +205,6 @@ "type": "Transitive", "resolved": "0.16.9", "contentHash": "7WaVMHklpT3Ye2ragqRIwlFRsb6kOk63BOGADV0fan3ulVfGLUYkDi5yNUsZS/7FVNkWbtHAlDLmu4WnHGfqvQ==" - }, - "ericlientv1": { - "type": "Project" } }, "net8.0/osx-arm64": {} diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md index 83ad9cd2..62e2a05c 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.28.md @@ -1,8 +1,9 @@ -# v0.9.28, build 203 (2025-0x-xx xx:xx UTC) +# v0.9.28, build 203 (2025-02-09 16:33 UTC) - Added an information view to all data sources to the data source configuration page. The data source configuration is a preview feature behind the RAG feature flag. - Added a ERI ((E)xternal (R)etrieval (I)nterface) client for communication with any ERI server. - Added the option to select the default app provider in the assistant settings under provider selection. Thank you, Peer (`peerschuett`), for reporting the issue. - Added `donework` as financial supporter. Thank you, Dominic! - Added content contributors to the supporter page. We thank Luc (`DevNullx64`) for his build script contribution as well as Kerstin (`KeSah001`) for creating the Wiki pages. - Improved the resource handling when loading models. -- Improved the build script to support Arch Linux and other Linux distributions, along with Rust nightly environments. Thanks `SolsticeSpectrum` for the contribution. \ No newline at end of file +- Improved the build script to support Arch Linux and other Linux distributions, along with Rust nightly environments. Thanks `SolsticeSpectrum` for the contribution. +- Upgraded the dependencies Rust, .NET, OpenSSL, MudBlazor, `rand`, `rand_chacha`, and others to the latest usable versions. \ No newline at end of file diff --git a/metadata.txt b/metadata.txt index 4f94d540..c1855471 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ -0.9.27 -2025-01-21 18:24:04 UTC -202 -8.0.111 (commit f3835a7fb4) -8.0.11 (commit 9cb3b725e3) -1.84.0 (commit 9fc6b4312) -7.15.0 +0.9.28 +2025-02-09 16:33:40 UTC +203 +8.0.112 (commit f7cd007b9d) +8.0.12 (commit 89ef51c5d8) +1.84.1 (commit e71f9a9a9) +7.16.0 1.8.1 -940459ca467, release +6da4cf1425f, release diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index 268ab7d7..eb8863a8 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -1310,6 +1310,18 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", +] + [[package]] name = "gimli" version = "0.29.0" @@ -2319,7 +2331,7 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mindwork-ai-studio" -version = "0.9.27" +version = "0.9.28" dependencies = [ "aes", "arboard", @@ -2333,8 +2345,8 @@ dependencies = [ "once_cell", "openssl", "pbkdf2", - "rand 0.8.5", - "rand_chacha 0.3.1", + "rand 0.9.0", + "rand_chacha 0.9.0", "rcgen", "reqwest 0.12.4", "rocket", @@ -3238,6 +3250,17 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.0", + "zerocopy", +] + [[package]] name = "rand_chacha" version = "0.2.2" @@ -3258,6 +3281,16 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.0", +] + [[package]] name = "rand_core" version = "0.5.1" @@ -3276,6 +3309,16 @@ dependencies = [ "getrandom 0.2.15", ] +[[package]] +name = "rand_core" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" +dependencies = [ + "getrandom 0.3.1", + "zerocopy", +] + [[package]] name = "rand_hc" version = "0.2.0" @@ -5025,6 +5068,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" version = "0.2.92" @@ -5625,6 +5677,15 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.6.0", +] + [[package]] name = "write16" version = "1.0.0" @@ -5766,6 +5827,26 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zerocopy" +version = "0.8.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa91407dacce3a68c56de03abe2760159582b846c6a4acd2f456618087f12713" +dependencies = [ + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.8.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06718a168365cad3d5ff0bb133aad346959a2074bd4a85c121255a11304a8626" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.93", +] + [[package]] name = "zerofrom" version = "0.1.5" diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 47a4e34b..2dbacbd9 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindwork-ai-studio" -version = "0.9.27" +version = "0.9.28" edition = "2021" description = "MindWork AI Studio" authors = ["Thorsten Sommer"] @@ -20,8 +20,8 @@ flexi_logger = "0.29.8" log = { version = "0.4", features = ["kv"] } once_cell = "1.20" rocket = { version = "0.5.1", features = ["json", "tls"] } -rand = "0.8" -rand_chacha = "0.3.1" +rand = "0.9" +rand_chacha = "0.9" base64 = "0.22.1" cipher = { version = "0.4.4", features = ["std"] } aes = "0.8.4" diff --git a/runtime/src/api_token.rs b/runtime/src/api_token.rs index 3fe1f182..31759185 100644 --- a/runtime/src/api_token.rs +++ b/runtime/src/api_token.rs @@ -8,7 +8,7 @@ use rocket::request::FromRequest; /// The API token used to authenticate requests. pub static API_TOKEN: Lazy<APIToken> = Lazy::new(|| { let mut token = [0u8; 32]; - let mut rng = rand_chacha::ChaChaRng::from_entropy(); + let mut rng = rand_chacha::ChaChaRng::from_os_rng(); rng.fill_bytes(&mut token); let token = APIToken::from_bytes(token.to_vec()); diff --git a/runtime/src/encryption.rs b/runtime/src/encryption.rs index d28dbf27..632915d7 100644 --- a/runtime/src/encryption.rs +++ b/runtime/src/encryption.rs @@ -32,7 +32,7 @@ pub static ENCRYPTION: Lazy<Encryption> = Lazy::new(|| { // We use a cryptographically secure pseudo-random number generator // to generate the secret password & salt. ChaCha20Rng is the algorithm // of our choice: - let mut rng = rand_chacha::ChaChaRng::from_entropy(); + let mut rng = rand_chacha::ChaChaRng::from_os_rng(); // Fill the secret key & salt with random bytes: rng.fill_bytes(&mut secret_key); diff --git a/runtime/tauri.conf.json b/runtime/tauri.conf.json index c015ff1f..66f35bf2 100644 --- a/runtime/tauri.conf.json +++ b/runtime/tauri.conf.json @@ -6,7 +6,7 @@ }, "package": { "productName": "MindWork AI Studio", - "version": "0.9.27" + "version": "0.9.28" }, "tauri": { "allowlist": { From e973b51f7597337fbc3e19cfc2728156c6377ed3 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 9 Feb 2025 19:01:51 +0100 Subject: [PATCH 021/110] Fixed Tauri TLS build issue caused by OpenSSL dependency (#280) --- runtime/Cargo.lock | 196 +++++++++++++++++++++++++++++++++------------ runtime/Cargo.toml | 6 +- 2 files changed, 151 insertions(+), 51 deletions(-) diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index eb8863a8..22a915fe 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -325,9 +325,9 @@ checksum = "8f1fe948ff07f4bd06c30984e69f5b4899c516a3ef74f34df92a2df2ab535495" [[package]] name = "bytes" -version = "1.6.1" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a12916984aab3fa6e39d655a33e09c0071eb36d6ab3aea5c2d78551f1df6d952" +checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" dependencies = [ "serde", ] @@ -1718,6 +1718,23 @@ dependencies = [ "want", ] +[[package]] +name = "hyper-rustls" +version = "0.27.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" +dependencies = [ + "futures-util", + "http 1.1.0", + "hyper 1.4.1", + "hyper-util", + "rustls 0.23.22", + "rustls-pki-types", + "tokio", + "tokio-rustls 0.26.1", + "tower-service", +] + [[package]] name = "hyper-tls" version = "0.5.0" @@ -1749,9 +1766,9 @@ dependencies = [ [[package]] name = "hyper-util" -version = "0.1.6" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3ab92f4f49ee4fb4f997c784b7a2e0fa70050211e0b6a287f898c3c9785ca956" +checksum = "df2dcfbe0677734ab2f3ffa7fa7bfd4706bfdc1ef393f2ee30184aed67e631b4" dependencies = [ "bytes", "futures-channel", @@ -1762,7 +1779,6 @@ dependencies = [ "pin-project-lite", "socket2", "tokio", - "tower", "tower-service", "tracing", ] @@ -2348,7 +2364,7 @@ dependencies = [ "rand 0.9.0", "rand_chacha 0.9.0", "rcgen", - "reqwest 0.12.4", + "reqwest 0.12.12", "rocket", "serde", "serde_json", @@ -3063,26 +3079,6 @@ dependencies = [ "siphasher", ] -[[package]] -name = "pin-project" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.93", -] - [[package]] name = "pin-project-lite" version = "0.2.14" @@ -3477,8 +3473,8 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", - "system-configuration", + "sync_wrapper 0.1.2", + "system-configuration 0.5.1", "tokio", "tokio-native-tls", "tokio-util", @@ -3493,9 +3489,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.12.4" +version = "0.12.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "566cafdd92868e0939d3fb961bd0dc25fcfaaed179291093b3d43e6b3150ea10" +checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "base64 0.22.1", "bytes", @@ -3507,6 +3503,7 @@ dependencies = [ "http-body 1.0.1", "http-body-util", "hyper 1.4.1", + "hyper-rustls", "hyper-tls 0.6.0", "hyper-util", "ipnet", @@ -3521,16 +3518,17 @@ dependencies = [ "serde", "serde_json", "serde_urlencoded", - "sync_wrapper", - "system-configuration", + "sync_wrapper 1.0.2", + "system-configuration 0.6.1", "tokio", "tokio-native-tls", + "tower", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "winreg 0.52.0", + "windows-registry", ] [[package]] @@ -3645,7 +3643,7 @@ dependencies = [ "percent-encoding", "pin-project-lite", "ref-cast", - "rustls", + "rustls 0.21.12", "rustls-pemfile 1.0.4", "serde", "smallvec", @@ -3653,7 +3651,7 @@ dependencies = [ "state 0.6.0", "time", "tokio", - "tokio-rustls", + "tokio-rustls 0.24.1", "uncased", ] @@ -3693,10 +3691,23 @@ checksum = "3f56a14d1f48b391359b22f731fd4bd7e43c97f3c50eee276f3aa09c94784d3e" dependencies = [ "log", "ring", - "rustls-webpki", + "rustls-webpki 0.101.7", "sct", ] +[[package]] +name = "rustls" +version = "0.23.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" +dependencies = [ + "once_cell", + "rustls-pki-types", + "rustls-webpki 0.102.8", + "subtle", + "zeroize", +] + [[package]] name = "rustls-pemfile" version = "1.0.4" @@ -3718,9 +3729,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.7.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "976295e77ce332211c0d24d92c0e83e50f5c5f046d11082cea19f3df13a3562d" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" [[package]] name = "rustls-webpki" @@ -3732,6 +3743,17 @@ dependencies = [ "untrusted", ] +[[package]] +name = "rustls-webpki" +version = "0.102.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64ca1bc8749bd4cf37b5ce386cc146580777b4e8572c7b97baf22c83f444bee9" +dependencies = [ + "ring", + "rustls-pki-types", + "untrusted", +] + [[package]] name = "rustversion" version = "1.0.17" @@ -4153,9 +4175,9 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "subtle" -version = "2.4.1" +version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6bdef32e8150c2a081110b42772ffe7d7c9032b606bc226c8260fd97e0976601" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" @@ -4185,6 +4207,15 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +[[package]] +name = "sync_wrapper" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + [[package]] name = "synstructure" version = "0.13.1" @@ -4204,7 +4235,18 @@ checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" dependencies = [ "bitflags 1.3.2", "core-foundation 0.9.4", - "system-configuration-sys", + "system-configuration-sys 0.5.0", +] + +[[package]] +name = "system-configuration" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" +dependencies = [ + "bitflags 2.6.0", + "core-foundation 0.9.4", + "system-configuration-sys 0.6.0", ] [[package]] @@ -4217,6 +4259,16 @@ dependencies = [ "libc", ] +[[package]] +name = "system-configuration-sys" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "system-deps" version = "5.0.0" @@ -4709,7 +4761,17 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c28327cf380ac148141087fbfb9de9d7bd4e84ab5d2c28fbc911d753de8a7081" dependencies = [ - "rustls", + "rustls 0.21.12", + "tokio", +] + +[[package]] +name = "tokio-rustls" +version = "0.26.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f6d0975eaace0cf0fcadee4e4aaa5da15b5c079146f2cffb67c113be122bf37" +dependencies = [ + "rustls 0.23.22", "tokio", ] @@ -4807,14 +4869,14 @@ dependencies = [ [[package]] name = "tower" -version = "0.4.13" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", - "pin-project", "pin-project-lite", + "sync_wrapper 1.0.2", "tokio", "tower-layer", "tower-service", @@ -4822,15 +4884,15 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.2" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" @@ -5359,6 +5421,36 @@ version = "0.39.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9ee5e275231f07c6e240d14f34e1b635bf1faa1c76c57cfd59a5cdb9848e4278" +[[package]] +name = "windows-registry" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e400001bb720a623c1c69032f8e3e4cf09984deec740f007dd2b03ec864804b0" +dependencies = [ + "windows-result", + "windows-strings", + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-result" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d1043d8214f791817bab27572aaa8af63732e11bf84aa21a45a78d6c317ae0e" +dependencies = [ + "windows-targets 0.52.6", +] + +[[package]] +name = "windows-strings" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4cd9b125c486025df0eabcb585e62173c6c9eddcec5d117d3b6e8c30e2ee4d10" +dependencies = [ + "windows-result", + "windows-targets 0.52.6", +] + [[package]] name = "windows-sys" version = "0.42.0" @@ -5868,6 +5960,12 @@ dependencies = [ "synstructure", ] +[[package]] +name = "zeroize" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + [[package]] name = "zerovec" version = "0.10.4" diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 2dbacbd9..8ad53635 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -33,11 +33,13 @@ rcgen = { version = "0.13.2", features = ["pem"] } # Fixes security vulnerability downstream, where the upstream is not fixed yet: url = "2.5" -openssl = "0.10.70" [target.'cfg(target_os = "linux")'.dependencies] # See issue https://github.com/tauri-apps/tauri/issues/4470 -reqwest = { version = "0.12", features = ["native-tls-vendored"] } +reqwest = { version = "0.12.12", features = ["native-tls-vendored"] } + +# Fixes security vulnerability downstream, where the upstream is not fixed yet: +openssl = "0.10.70" [features] custom-protocol = ["tauri/custom-protocol"] From 954cf449397c6afda1351e00d47131e4fef9a7d5 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 10 Feb 2025 18:49:22 +0100 Subject: [PATCH 022/110] Added retrieval integration, part I (#281) --- README.md | 2 +- app/MindWork AI Studio/Agents/AgentBase.cs | 14 +- .../Assistants/AssistantBase.razor.cs | 13 +- .../Chat/ContentBlockComponent.razor | 4 +- app/MindWork AI Studio/Chat/ContentImage.cs | 13 +- .../Chat/ContentImageSource.cs | 8 + app/MindWork AI Studio/Chat/ContentText.cs | 14 +- app/MindWork AI Studio/Chat/IContent.cs | 2 +- .../Components/ChatComponent.razor.cs | 15 +- app/MindWork AI Studio/Pages/Writer.razor.cs | 14 +- .../Tools/RAG/IRetrievalContext.cs | 45 ++++++ .../Tools/RAG/RetrievalContentCategory.cs | 12 ++ .../RAG/RetrievalContentCategoryExtensions.cs | 24 +++ .../Tools/RAG/RetrievalContentType.cs | 105 +++++++++++++ .../RAG/RetrievalContentTypeExtensions.cs | 141 ++++++++++++++++++ .../Tools/RAG/RetrievalImageContext.cs | 38 +++++ .../Tools/RAG/RetrievalTextContext.cs | 43 ++++++ .../wwwroot/changelog/v0.9.29.md | 1 + 18 files changed, 477 insertions(+), 31 deletions(-) create mode 100644 app/MindWork AI Studio/Chat/ContentImageSource.cs create mode 100644 app/MindWork AI Studio/Tools/RAG/IRetrievalContext.cs create mode 100644 app/MindWork AI Studio/Tools/RAG/RetrievalContentCategory.cs create mode 100644 app/MindWork AI Studio/Tools/RAG/RetrievalContentCategoryExtensions.cs create mode 100644 app/MindWork AI Studio/Tools/RAG/RetrievalContentType.cs create mode 100644 app/MindWork AI Studio/Tools/RAG/RetrievalContentTypeExtensions.cs create mode 100644 app/MindWork AI Studio/Tools/RAG/RetrievalImageContext.cs create mode 100644 app/MindWork AI Studio/Tools/RAG/RetrievalTextContext.cs create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md diff --git a/README.md b/README.md index 0ad1f280..ebd2b5e8 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Things we are currently working on: - [ ] App: Implement the process to vectorize one local file using embeddings - [ ] Runtime: Integration of the vector database [LanceDB](https://github.com/lancedb/lancedb) - [ ] App: Implement the continuous process of vectorizing data - - [ ] App: Define a common retrieval context interface for the integration of RAG processes in chats + - [x] ~~App: Define a common retrieval context interface for the integration of RAG processes in chats (PR [#281](https://github.com/MindWorkAI/AI-Studio/pull/281))~~ - [ ] App: Define a common augmentation interface for the integration of RAG processes in chats - [ ] App: Integrate data sources in chats diff --git a/app/MindWork AI Studio/Agents/AgentBase.cs b/app/MindWork AI Studio/Agents/AgentBase.cs index 8028a864..639fa99c 100644 --- a/app/MindWork AI Studio/Agents/AgentBase.cs +++ b/app/MindWork AI Studio/Agents/AgentBase.cs @@ -13,6 +13,8 @@ public abstract class AgentBase(ILogger<AgentBase> logger, SettingsManager setti protected ThreadSafeRandom RNG { get; init; } = rng; protected ILogger<AgentBase> Logger { get; init; } = logger; + + protected IContent? lastUserPrompt; /// <summary> /// Represents the type or category of this agent. @@ -63,15 +65,17 @@ public abstract class AgentBase(ILogger<AgentBase> logger, SettingsManager setti protected DateTimeOffset AddUserRequest(ChatThread thread, string request) { var time = DateTimeOffset.Now; + this.lastUserPrompt = new ContentText + { + Text = request, + }; + thread.Blocks.Add(new ContentBlock { Time = time, ContentType = ContentType.TEXT, Role = ChatRole.USER, - Content = new ContentText - { - Text = request, - }, + Content = this.lastUserPrompt, }); return time; @@ -103,6 +107,6 @@ public abstract class AgentBase(ILogger<AgentBase> logger, SettingsManager setti // Use the selected provider to get the AI response. // By awaiting this line, we wait for the entire // content to be streamed. - await aiText.CreateFromProviderAsync(providerSettings.CreateProvider(this.Logger), this.SettingsManager, providerSettings.Model, thread); + await aiText.CreateFromProviderAsync(providerSettings.CreateProvider(this.Logger), this.SettingsManager, providerSettings.Model, this.lastUserPrompt, thread); } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs index 8e5b60df..63867ff6 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs @@ -97,6 +97,7 @@ public abstract partial class AssistantBase : ComponentBase, IMessageBusReceiver protected bool inputIsValid; protected Profile currentProfile = Profile.NO_PROFILE; protected ChatThread? chatThread; + protected IContent? lastUserPrompt; private readonly Timer formChangeTimer = new(TimeSpan.FromSeconds(1.6)); @@ -242,16 +243,18 @@ public abstract partial class AssistantBase : ComponentBase, IMessageBusReceiver protected DateTimeOffset AddUserRequest(string request, bool hideContentFromUser = false) { var time = DateTimeOffset.Now; + this.lastUserPrompt = new ContentText + { + Text = request, + }; + this.chatThread!.Blocks.Add(new ContentBlock { Time = time, ContentType = ContentType.TEXT, HideFromUser = hideContentFromUser, Role = ChatRole.USER, - Content = new ContentText - { - Text = request, - }, + Content = this.lastUserPrompt, }); return time; @@ -287,7 +290,7 @@ public abstract partial class AssistantBase : ComponentBase, IMessageBusReceiver // Use the selected provider to get the AI response. // By awaiting this line, we wait for the entire // content to be streamed. - await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.SettingsManager, this.providerSettings.Model, this.chatThread); + await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.SettingsManager, this.providerSettings.Model, this.lastUserPrompt, this.chatThread); this.isProcessing = false; this.StateHasChanged(); diff --git a/app/MindWork AI Studio/Chat/ContentBlockComponent.razor b/app/MindWork AI Studio/Chat/ContentBlockComponent.razor index ca61acc2..826cfdc0 100644 --- a/app/MindWork AI Studio/Chat/ContentBlockComponent.razor +++ b/app/MindWork AI Studio/Chat/ContentBlockComponent.razor @@ -78,9 +78,9 @@ break; case ContentType.IMAGE: - if (this.Content is ContentImage imageContent) + if (this.Content is ContentImage { SourceType: ContentImageSource.URL or ContentImageSource.LOCAL_PATH } imageContent) { - <MudImage Src="@imageContent.URL"/> + <MudImage Src="@imageContent.Source"/> } break; diff --git a/app/MindWork AI Studio/Chat/ContentImage.cs b/app/MindWork AI Studio/Chat/ContentImage.cs index 314ba93c..3a5fbd16 100644 --- a/app/MindWork AI Studio/Chat/ContentImage.cs +++ b/app/MindWork AI Studio/Chat/ContentImage.cs @@ -29,7 +29,7 @@ public sealed class ContentImage : IContent public Func<Task> StreamingEvent { get; set; } = () => Task.CompletedTask; /// <inheritdoc /> - public Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, Model chatModel, ChatThread chatChatThread, CancellationToken token = default) + public Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default) { throw new NotImplementedException(); } @@ -37,12 +37,15 @@ public sealed class ContentImage : IContent #endregion /// <summary> - /// The URL of the image. + /// The type of the image source. /// </summary> - public string URL { get; set; } = string.Empty; + /// <remarks> + /// Is the image source a URL, a local file path, a base64 string, etc.? + /// </remarks> + public required ContentImageSource SourceType { get; init; } /// <summary> - /// The local path of the image. + /// The image source. /// </summary> - public string LocalPath { get; set; } = string.Empty; + public required string Source { get; set; } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Chat/ContentImageSource.cs b/app/MindWork AI Studio/Chat/ContentImageSource.cs new file mode 100644 index 00000000..ec009661 --- /dev/null +++ b/app/MindWork AI Studio/Chat/ContentImageSource.cs @@ -0,0 +1,8 @@ +namespace AIStudio.Chat; + +public enum ContentImageSource +{ + URL, + LOCAL_PATH, + BASE64, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Chat/ContentText.cs b/app/MindWork AI Studio/Chat/ContentText.cs index f7cc62f6..20613910 100644 --- a/app/MindWork AI Studio/Chat/ContentText.cs +++ b/app/MindWork AI Studio/Chat/ContentText.cs @@ -35,11 +35,23 @@ public sealed class ContentText : IContent public Func<Task> StreamingEvent { get; set; } = () => Task.CompletedTask; /// <inheritdoc /> - public async Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, Model chatModel, ChatThread? chatThread, CancellationToken token = default) + public async Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, Model chatModel, IContent? lastPrompt, ChatThread? chatThread, CancellationToken token = default) { if(chatThread is null) return; + // + // Check if the user wants to bind any data sources to the chat: + // + + // + // Trigger the retrieval part of the (R)AG process: + // + + // + // Perform the augmentation of the R(A)G process: + // + // Store the last time we got a response. We use this later // to determine whether we should notify the UI about the // new content or not. Depends on the energy saving mode diff --git a/app/MindWork AI Studio/Chat/IContent.cs b/app/MindWork AI Studio/Chat/IContent.cs index 1feea520..987bada0 100644 --- a/app/MindWork AI Studio/Chat/IContent.cs +++ b/app/MindWork AI Studio/Chat/IContent.cs @@ -42,5 +42,5 @@ public interface IContent /// <summary> /// Uses the provider to create the content. /// </summary> - public Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, Model chatModel, ChatThread chatChatThread, CancellationToken token = default); + public Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default); } \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor.cs b/app/MindWork AI Studio/Components/ChatComponent.razor.cs index 5a10625e..466d2107 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor.cs +++ b/app/MindWork AI Studio/Components/ChatComponent.razor.cs @@ -295,8 +295,14 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable } var time = DateTimeOffset.Now; + IContent? lastUserPrompt; if (!reuseLastUserPrompt) { + lastUserPrompt = new ContentText + { + Text = this.userInput, + }; + // // Add the user message to the thread: // @@ -305,10 +311,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable Time = time, ContentType = ContentType.TEXT, Role = ChatRole.USER, - Content = new ContentText - { - Text = this.userInput, - }, + Content = lastUserPrompt, }); // Save the chat: @@ -319,6 +322,8 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable this.StateHasChanged(); } } + else + lastUserPrompt = this.ChatThread.Blocks.Last(x => x.Role is ChatRole.USER).Content; // // Add the AI response to the thread: @@ -360,7 +365,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable // Use the selected provider to get the AI response. // By awaiting this line, we wait for the entire // content to be streamed. - await aiText.CreateFromProviderAsync(this.Provider.CreateProvider(this.Logger), this.SettingsManager, this.Provider.Model, this.ChatThread, this.cancellationTokenSource.Token); + await aiText.CreateFromProviderAsync(this.Provider.CreateProvider(this.Logger), this.SettingsManager, this.Provider.Model, lastUserPrompt, this.ChatThread, this.cancellationTokenSource.Token); } this.cancellationTokenSource = null; diff --git a/app/MindWork AI Studio/Pages/Writer.razor.cs b/app/MindWork AI Studio/Pages/Writer.razor.cs index 58160745..60280d1e 100644 --- a/app/MindWork AI Studio/Pages/Writer.razor.cs +++ b/app/MindWork AI Studio/Pages/Writer.razor.cs @@ -106,17 +106,19 @@ public partial class Writer : MSGComponentBase, IAsyncDisposable }; var time = DateTimeOffset.Now; + var lastUserPrompt = new ContentText + { + // We use the maximum 160 characters from the end of the text: + Text = this.userInput.Length > 160 ? this.userInput[^160..] : this.userInput, + }; + this.chatThread.Blocks.Clear(); this.chatThread.Blocks.Add(new ContentBlock { Time = time, ContentType = ContentType.TEXT, Role = ChatRole.USER, - Content = new ContentText - { - // We use the maximum 160 characters from the end of the text: - Text = this.userInput.Length > 160 ? this.userInput[^160..] : this.userInput, - }, + Content = lastUserPrompt, }); var aiText = new ContentText @@ -137,7 +139,7 @@ public partial class Writer : MSGComponentBase, IAsyncDisposable this.isStreaming = true; this.StateHasChanged(); - await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.SettingsManager, this.providerSettings.Model, this.chatThread); + await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.SettingsManager, this.providerSettings.Model, lastUserPrompt, this.chatThread); this.suggestion = aiText.Text; this.isStreaming = false; diff --git a/app/MindWork AI Studio/Tools/RAG/IRetrievalContext.cs b/app/MindWork AI Studio/Tools/RAG/IRetrievalContext.cs new file mode 100644 index 00000000..27a03dfd --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/IRetrievalContext.cs @@ -0,0 +1,45 @@ +namespace AIStudio.Tools.RAG; + +/// <summary> +/// The common interface for any retrieval context. +/// </summary> +public interface IRetrievalContext +{ + /// <summary> + /// The name of the data source. + /// </summary> + /// <remarks> + /// Depending on the configuration, the AI is selecting the appropriate data source. + /// In order to inform the user about where the information is coming from, the data + /// source name is necessary. + /// </remarks> + public string DataSourceName { get; init; } + + /// <summary> + /// The category of the content, like e.g., text, audio, image, etc. + /// </summary> + public RetrievalContentCategory Category { get; init; } + + /// <summary> + /// What type of content is being retrieved? Like e.g., a project proposal, spreadsheet, art, etc. + /// </summary> + public RetrievalContentType Type { get; init; } + + /// <summary> + /// The path to the content, e.g., a URL, a file path, a path in a graph database, etc. + /// </summary> + public string Path { get; init; } + + /// <summary> + /// Links to related content, e.g., links to Wikipedia articles, links to sources, etc. + /// </summary> + /// <remarks> + /// Why would you need links for retrieval? You are right that not all retrieval + /// contexts need links. But think about a web search feature, where we want to + /// query a search engine and get back a list of links to the most relevant + /// matches. Think about a continuous web crawler that is constantly looking for + /// new information and adding it to the knowledge base. In these cases, links + /// are essential. + /// </remarks> + public IReadOnlyList<string> Links { get; init; } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/RetrievalContentCategory.cs b/app/MindWork AI Studio/Tools/RAG/RetrievalContentCategory.cs new file mode 100644 index 00000000..b3ee1bec --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/RetrievalContentCategory.cs @@ -0,0 +1,12 @@ +namespace AIStudio.Tools.RAG; + +public enum RetrievalContentCategory +{ + NONE, + UNKNOWN, + + TEXT, + IMAGE, + VIDEO, + AUDIO, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/RetrievalContentCategoryExtensions.cs b/app/MindWork AI Studio/Tools/RAG/RetrievalContentCategoryExtensions.cs new file mode 100644 index 00000000..e4dd2a78 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/RetrievalContentCategoryExtensions.cs @@ -0,0 +1,24 @@ +using AIStudio.Tools.ERIClient.DataModel; + +namespace AIStudio.Tools.RAG; + +public static class RetrievalContentCategoryExtensions +{ + /// <summary> + /// Converts an ERI content type to a common retrieval content category. + /// </summary> + /// <param name="contentType">The content type yielded by the ERI server.</param> + /// <returns>The corresponding retrieval content category.</returns> + public static RetrievalContentCategory ToRetrievalContentCategory(ContentType contentType) => contentType switch + { + ContentType.NONE => RetrievalContentCategory.NONE, + ContentType.UNKNOWN => RetrievalContentCategory.UNKNOWN, + ContentType.TEXT => RetrievalContentCategory.TEXT, + ContentType.IMAGE => RetrievalContentCategory.IMAGE, + ContentType.VIDEO => RetrievalContentCategory.VIDEO, + ContentType.AUDIO => RetrievalContentCategory.AUDIO, + ContentType.SPEECH => RetrievalContentCategory.AUDIO, + + _ => RetrievalContentCategory.UNKNOWN, + }; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/RetrievalContentType.cs b/app/MindWork AI Studio/Tools/RAG/RetrievalContentType.cs new file mode 100644 index 00000000..c8866118 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/RetrievalContentType.cs @@ -0,0 +1,105 @@ +namespace AIStudio.Tools.RAG; + +/// <summary> +/// The type of the retrieved content. +/// </summary> +public enum RetrievalContentType +{ + NOT_SPECIFIED, + UNKNOWN, + + // + // Text Content: + // + TEXT_DOCUMENT, + TEXT_ARTICLE, + TEXT_BOOK, + TEXT_CHAPTER, + TEXT_PAPER, + TEXT_THESIS, + TEXT_BUSINESS_CONCEPT, + TEXT_DICTIONARY, + TEXT_ENCYCLOPEDIA, + TEXT_GLOSSARY, + TEXT_JOURNAL, + TEXT_MAGAZINE, + TEXT_NEWSPAPER, + TEXT_REPORT, + TEXT_REVIEW, + TEXT_WEBSITE, + TEXT_IDEA, + TEXT_CONCEPT, + TEXT_DEFINITION, + TEXT_EXAMPLE, + TEXT_QUOTE, + TEXT_DRAFT, + TEXT_SCRIPT, + TEXT_TRANSCRIPT, + TEXT_SUBTITLE, + TEXT_CAPTION, + TEXT_DIALOGUE, + TEXT_PROJECT_PROPOSAL, + TEXT_PROJECT_PLAN, + TEXT_SPREADSHEET, + TEXT_PRESENTATION, + TEXT_MEETING_MINUTES, + TEXT_EMAIL, + TEXT_PROTOCOL, + + // + // Image Content: + // + IMAGE_PHOTO, + IMAGE_ILLUSTRATION, + IMAGE_DIAGRAM, + IMAGE_CHART, + IMAGE_ART, + IMAGE_DRAWING, + IMAGE_PAINTING, + IMAGE_SKETCH, + IMAGE_MAP, + IMAGE_CHARACTER, + IMAGE_SCENE, + IMAGE_LANDSCAPE, + IMAGE_PORTRAIT, + IMAGE_POSTER, + IMAGE_LOGO, + IMAGE_ICON, + IMAGE_SATELLITE_IMAGE, + + // + // Audio Content: + // + AUDIO_SPEECH, + AUDIO_PODCAST, + AUDIO_BOOK, + AUDIO_INTERVIEW, + AUDIO_LECTURE, + AUDIO_TALK, + AUDIO_SONG, + AUDIO_MUSIC, + AUDIO_SOUND, + AUDIO_CALL, + AUDIO_VOICE_ACTING, + AUDIO_DESCRIPTION, + AUDIO_GUIDE, + AUDIO_DIALOGUE, + + // + // Video Content: + // + VIDEO_MOVIE, + VIDEO_FILM, + VIDEO_TV_SHOW, + VIDEO_SERIES, + VIDEO_EPISODE, + VIDEO_DOCUMENTARY, + VIDEO_TUTORIAL, + VIDEO_LECTURE, + VIDEO_WEBINAR, + VIDEO_GAME, + VIDEO_ANIMATION, + VIDEO_CUTSCENE, + VIDEO_TRAILER, + VIDEO_ADVERTISEMENT, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/RetrievalContentTypeExtensions.cs b/app/MindWork AI Studio/Tools/RAG/RetrievalContentTypeExtensions.cs new file mode 100644 index 00000000..e591bf86 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/RetrievalContentTypeExtensions.cs @@ -0,0 +1,141 @@ +using AIStudio.Tools.ERIClient.DataModel; + +namespace AIStudio.Tools.RAG; + +public static class RetrievalContentTypeExtensions +{ + public static RetrievalContentType ToRetrievalContentType(Context eriContext) + { + // + // Right now, we have to parse the category string along the type enum to + // determine the common retrieval content type. In future ERI versions, we + // might use the same enum. + // + + var lowerCategory = eriContext.Category.ToLowerInvariant(); + var type = eriContext.Type; + return type switch + { + ContentType.TEXT when lowerCategory.Contains("book") => RetrievalContentType.TEXT_BOOK, + ContentType.TEXT when lowerCategory.Contains("paper") => RetrievalContentType.TEXT_PAPER, + ContentType.TEXT when lowerCategory.Contains("dictionary") => RetrievalContentType.TEXT_DICTIONARY, + ContentType.TEXT when lowerCategory.Contains("encyclopedia") => RetrievalContentType.TEXT_ENCYCLOPEDIA, + ContentType.TEXT when lowerCategory.Contains("glossary") => RetrievalContentType.TEXT_GLOSSARY, + ContentType.TEXT when lowerCategory.Contains("journal") => RetrievalContentType.TEXT_JOURNAL, + ContentType.TEXT when lowerCategory.Contains("magazine") => RetrievalContentType.TEXT_MAGAZINE, + ContentType.TEXT when lowerCategory.Contains("newspaper") => RetrievalContentType.TEXT_NEWSPAPER, + ContentType.TEXT when lowerCategory.Contains("report") => RetrievalContentType.TEXT_REPORT, + ContentType.TEXT when lowerCategory.Contains("review") => RetrievalContentType.TEXT_REVIEW, + ContentType.TEXT when lowerCategory.Contains("website") => RetrievalContentType.TEXT_WEBSITE, + ContentType.TEXT when lowerCategory.Contains("idea") => RetrievalContentType.TEXT_IDEA, + + ContentType.TEXT when lowerCategory.Contains("business concept") => RetrievalContentType.TEXT_BUSINESS_CONCEPT, + ContentType.TEXT when lowerCategory.Contains("concept") => RetrievalContentType.TEXT_CONCEPT, + + ContentType.TEXT when lowerCategory.Contains("definition") => RetrievalContentType.TEXT_DEFINITION, + ContentType.TEXT when lowerCategory.Contains("example") => RetrievalContentType.TEXT_EXAMPLE, + ContentType.TEXT when lowerCategory.Contains("quote") => RetrievalContentType.TEXT_QUOTE, + ContentType.TEXT when lowerCategory.Contains("article") => RetrievalContentType.TEXT_ARTICLE, + ContentType.TEXT when lowerCategory.Contains("chapter") => RetrievalContentType.TEXT_CHAPTER, + + ContentType.TEXT when lowerCategory.Contains("thesis") => RetrievalContentType.TEXT_THESIS, + ContentType.TEXT when lowerCategory.Contains("dissertation") => RetrievalContentType.TEXT_THESIS, + + ContentType.TEXT when lowerCategory.Contains("draft") => RetrievalContentType.TEXT_DRAFT, + ContentType.TEXT when lowerCategory.Contains("script") => RetrievalContentType.TEXT_SCRIPT, + ContentType.TEXT when lowerCategory.Contains("transcript") => RetrievalContentType.TEXT_TRANSCRIPT, + ContentType.TEXT when lowerCategory.Contains("subtitle") => RetrievalContentType.TEXT_SUBTITLE, + ContentType.TEXT when lowerCategory.Contains("caption") => RetrievalContentType.TEXT_CAPTION, + ContentType.TEXT when lowerCategory.Contains("dialogue") => RetrievalContentType.TEXT_DIALOGUE, + ContentType.TEXT when lowerCategory.Contains("project proposal") => RetrievalContentType.TEXT_PROJECT_PROPOSAL, + ContentType.TEXT when lowerCategory.Contains("project plan") => RetrievalContentType.TEXT_PROJECT_PLAN, + ContentType.TEXT when lowerCategory.Contains("spreadsheet") => RetrievalContentType.TEXT_SPREADSHEET, + + ContentType.TEXT when lowerCategory.Contains("presentation") => RetrievalContentType.TEXT_PRESENTATION, + ContentType.TEXT when lowerCategory.Contains("powerpoint") => RetrievalContentType.TEXT_PRESENTATION, + ContentType.TEXT when lowerCategory.Contains("slide") => RetrievalContentType.TEXT_PRESENTATION, + + ContentType.TEXT when lowerCategory.Contains("meeting minutes") => RetrievalContentType.TEXT_MEETING_MINUTES, + ContentType.TEXT when lowerCategory.Contains("email") => RetrievalContentType.TEXT_EMAIL, + ContentType.TEXT when lowerCategory.Contains("protocol") => RetrievalContentType.TEXT_PROTOCOL, + + ContentType.TEXT => RetrievalContentType.TEXT_DOCUMENT, + + + ContentType.IMAGE when lowerCategory.Contains("photo") => RetrievalContentType.IMAGE_PHOTO, + ContentType.IMAGE when lowerCategory.Contains("illustration") => RetrievalContentType.IMAGE_ILLUSTRATION, + ContentType.IMAGE when lowerCategory.Contains("diagram") => RetrievalContentType.IMAGE_DIAGRAM, + ContentType.IMAGE when lowerCategory.Contains("chart") => RetrievalContentType.IMAGE_CHART, + ContentType.IMAGE when lowerCategory.Contains("art") => RetrievalContentType.IMAGE_ART, + ContentType.IMAGE when lowerCategory.Contains("drawing") => RetrievalContentType.IMAGE_DRAWING, + ContentType.IMAGE when lowerCategory.Contains("painting") => RetrievalContentType.IMAGE_PAINTING, + ContentType.IMAGE when lowerCategory.Contains("sketch") => RetrievalContentType.IMAGE_SKETCH, + ContentType.IMAGE when lowerCategory.Contains("map") => RetrievalContentType.IMAGE_MAP, + ContentType.IMAGE when lowerCategory.Contains("scene") => RetrievalContentType.IMAGE_SCENE, + ContentType.IMAGE when lowerCategory.Contains("character") => RetrievalContentType.IMAGE_CHARACTER, + ContentType.IMAGE when lowerCategory.Contains("landscape") => RetrievalContentType.IMAGE_LANDSCAPE, + ContentType.IMAGE when lowerCategory.Contains("portrait") => RetrievalContentType.IMAGE_PORTRAIT, + ContentType.IMAGE when lowerCategory.Contains("poster") => RetrievalContentType.IMAGE_POSTER, + ContentType.IMAGE when lowerCategory.Contains("logo") => RetrievalContentType.IMAGE_LOGO, + ContentType.IMAGE when lowerCategory.Contains("icon") => RetrievalContentType.IMAGE_ICON, + + ContentType.IMAGE when lowerCategory.Contains("satellite") => RetrievalContentType.IMAGE_SATELLITE_IMAGE, + ContentType.IMAGE when lowerCategory.Contains("EO") => RetrievalContentType.IMAGE_SATELLITE_IMAGE, + ContentType.IMAGE when lowerCategory.Contains("earth observation") => RetrievalContentType.IMAGE_SATELLITE_IMAGE, + + ContentType.IMAGE => RetrievalContentType.NOT_SPECIFIED, + + + ContentType.AUDIO when lowerCategory.Contains("speech") => RetrievalContentType.AUDIO_SPEECH, + + ContentType.AUDIO when lowerCategory.Contains("podcast") => RetrievalContentType.AUDIO_PODCAST, + ContentType.SPEECH when lowerCategory.Contains("podcast") => RetrievalContentType.AUDIO_PODCAST, + + ContentType.AUDIO when lowerCategory.Contains("book") => RetrievalContentType.AUDIO_BOOK, + ContentType.SPEECH when lowerCategory.Contains("book") => RetrievalContentType.AUDIO_BOOK, + + ContentType.AUDIO when lowerCategory.Contains("interview") => RetrievalContentType.AUDIO_INTERVIEW, + ContentType.SPEECH when lowerCategory.Contains("interview") => RetrievalContentType.AUDIO_INTERVIEW, + + ContentType.AUDIO when lowerCategory.Contains("lecture") => RetrievalContentType.AUDIO_LECTURE, + ContentType.SPEECH when lowerCategory.Contains("lecture") => RetrievalContentType.AUDIO_LECTURE, + + ContentType.AUDIO when lowerCategory.Contains("talk") => RetrievalContentType.AUDIO_TALK, + ContentType.SPEECH when lowerCategory.Contains("talk") => RetrievalContentType.AUDIO_TALK, + + ContentType.AUDIO when lowerCategory.Contains("song") => RetrievalContentType.AUDIO_SONG, + ContentType.AUDIO when lowerCategory.Contains("music") => RetrievalContentType.AUDIO_MUSIC, + ContentType.AUDIO when lowerCategory.Contains("sound") => RetrievalContentType.AUDIO_SOUND, + ContentType.AUDIO when lowerCategory.Contains("call") => RetrievalContentType.AUDIO_CALL, + ContentType.AUDIO when lowerCategory.Contains("voice acting") => RetrievalContentType.AUDIO_VOICE_ACTING, + ContentType.AUDIO when lowerCategory.Contains("description") => RetrievalContentType.AUDIO_DESCRIPTION, + ContentType.AUDIO when lowerCategory.Contains("guide") => RetrievalContentType.AUDIO_GUIDE, + ContentType.AUDIO when lowerCategory.Contains("dialogue") => RetrievalContentType.AUDIO_DIALOGUE, + + ContentType.SPEECH => RetrievalContentType.AUDIO_SPEECH, + ContentType.AUDIO => RetrievalContentType.NOT_SPECIFIED, + + + ContentType.VIDEO when lowerCategory.Contains("movie") => RetrievalContentType.VIDEO_MOVIE, + ContentType.VIDEO when lowerCategory.Contains("film") => RetrievalContentType.VIDEO_FILM, + ContentType.VIDEO when lowerCategory.Contains("tv show") => RetrievalContentType.VIDEO_TV_SHOW, + ContentType.VIDEO when lowerCategory.Contains("series") => RetrievalContentType.VIDEO_SERIES, + ContentType.VIDEO when lowerCategory.Contains("episode") => RetrievalContentType.VIDEO_EPISODE, + ContentType.VIDEO when lowerCategory.Contains("documentary") => RetrievalContentType.VIDEO_DOCUMENTARY, + ContentType.VIDEO when lowerCategory.Contains("tutorial") => RetrievalContentType.VIDEO_TUTORIAL, + ContentType.VIDEO when lowerCategory.Contains("lecture") => RetrievalContentType.VIDEO_LECTURE, + ContentType.VIDEO when lowerCategory.Contains("webinar") => RetrievalContentType.VIDEO_WEBINAR, + ContentType.VIDEO when lowerCategory.Contains("game") => RetrievalContentType.VIDEO_GAME, + ContentType.VIDEO when lowerCategory.Contains("animation") => RetrievalContentType.VIDEO_ANIMATION, + ContentType.VIDEO when lowerCategory.Contains("cutscene") => RetrievalContentType.VIDEO_CUTSCENE, + ContentType.VIDEO when lowerCategory.Contains("trailer") => RetrievalContentType.VIDEO_TRAILER, + ContentType.VIDEO when lowerCategory.Contains("advertisement") => RetrievalContentType.VIDEO_ADVERTISEMENT, + + ContentType.VIDEO => RetrievalContentType.NOT_SPECIFIED, + + ContentType.NONE => RetrievalContentType.NOT_SPECIFIED, + ContentType.UNKNOWN => RetrievalContentType.UNKNOWN, + _ => RetrievalContentType.UNKNOWN, + }; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/RetrievalImageContext.cs b/app/MindWork AI Studio/Tools/RAG/RetrievalImageContext.cs new file mode 100644 index 00000000..37cadb98 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/RetrievalImageContext.cs @@ -0,0 +1,38 @@ +using AIStudio.Chat; + +namespace AIStudio.Tools.RAG; + +public sealed class RetrievalImageContext : IRetrievalContext +{ + #region Implementation of IRetrievalContext + + /// <inheritdoc /> + public required string DataSourceName { get; init; } + + /// <inheritdoc /> + public required RetrievalContentCategory Category { get; init; } + + /// <inheritdoc /> + public required RetrievalContentType Type { get; init; } + + /// <inheritdoc /> + public required string Path { get; init; } + + /// <inheritdoc /> + public IReadOnlyList<string> Links { get; init; } = []; + + #endregion + + /// <summary> + /// The type of the image source. + /// </summary> + /// <remarks> + /// Is the image source a URL, a local file path, a base64 string, etc.? + /// </remarks> + public required ContentImageSource SourceType { get; init; } + + /// <summary> + /// The image source. + /// </summary> + public required string Source { get; set; } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/RetrievalTextContext.cs b/app/MindWork AI Studio/Tools/RAG/RetrievalTextContext.cs new file mode 100644 index 00000000..9997e571 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/RetrievalTextContext.cs @@ -0,0 +1,43 @@ +namespace AIStudio.Tools.RAG; + +/// <summary> +/// The retrieval context for text data. +/// </summary> +public sealed class RetrievalTextContext : IRetrievalContext +{ + #region Implementation of IRetrievalContext + + /// <inheritdoc /> + public required string DataSourceName { get; init; } + + /// <inheritdoc /> + public required RetrievalContentCategory Category { get; init; } + + /// <inheritdoc /> + public required RetrievalContentType Type { get; init; } + + /// <inheritdoc /> + public required string Path { get; init; } + + /// <inheritdoc /> + public IReadOnlyList<string> Links { get; init; } = []; + + #endregion + + /// <summary> + /// The text content. + /// </summary> + /// <remarks> + /// Should contain the matched text and some small context around it. + /// </remarks> + public required string MatchedText { get; set; } + + /// <summary> + /// The surrounding content of the matched text. + /// </summary> + /// <remarks> + /// Might give the user some context about the matched text. + /// For example, one sentence or paragraph before and after the matched text. + /// </remarks> + public IReadOnlyList<string> SurroundingContent { get; set; } = []; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md new file mode 100644 index 00000000..ecb016a3 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md @@ -0,0 +1 @@ +# v0.9.29, build 204 (2025-02-xx xx:xx UTC) From f4780939fcc6aa9fc7bb197dd62ab82ff147b904 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 15 Feb 2025 15:41:12 +0100 Subject: [PATCH 023/110] Integrated data sources into any chat (#282) --- README.md | 2 +- app/MindWork AI Studio/Agents/AgentBase.cs | 7 +- .../Agents/AgentTextContentCleaner.cs | 3 +- .../Assistants/AssistantBase.razor | 2 +- .../Assistants/AssistantBase.razor.cs | 7 +- app/MindWork AI Studio/Chat/ChatThread.cs | 6 + .../Chat/ContentBlockComponent.razor.cs | 3 +- app/MindWork AI Studio/Chat/ContentImage.cs | 3 +- app/MindWork AI Studio/Chat/ContentText.cs | 41 +- app/MindWork AI Studio/Chat/IContent.cs | 3 +- .../Components/ChatComponent.razor | 7 +- .../Components/ChatComponent.razor.cs | 144 ++++- .../Components/ConfidenceInfo.razor | 4 +- .../Components/ConfidenceInfo.razor.cs | 2 +- .../Components/DataSourceSelection.razor | 93 ++++ .../Components/DataSourceSelection.razor.cs | 260 +++++++++ .../Components/DataSourceSelectionMode.cs | 23 + ...denceInfoMode.cs => PopoverTriggerMode.cs} | 2 +- .../Components/ProfileSelection.razor.cs | 5 +- .../Components/SelectDirectory.razor.cs | 1 + .../Components/SelectFile.razor.cs | 1 + .../Components/Settings/SettingsPanelBase.cs | 1 + .../Settings/SettingsPanelChat.razor | 7 + .../Components/TextInfoLine.razor.cs | 1 + .../Components/TextInfoLines.razor | 1 + .../Components/TextInfoLines.razor.cs | 13 + .../Dialogs/DataSourceERI-V1InfoDialog.razor | 5 +- .../DataSourceERI-V1InfoDialog.razor.cs | 1 + .../Dialogs/DataSourceERI_V1Dialog.razor | 8 + .../Dialogs/DataSourceERI_V1Dialog.razor.cs | 28 + .../DataSourceLocalDirectoryDialog.razor | 9 + .../DataSourceLocalDirectoryDialog.razor.cs | 3 + .../DataSourceLocalDirectoryInfoDialog.razor | 4 + .../Dialogs/DataSourceLocalFileDialog.razor | 8 + .../DataSourceLocalFileDialog.razor.cs | 3 + .../DataSourceLocalFileInfoDialog.razor | 3 + .../Dialogs/EmbeddingProviderDialog.razor.cs | 1 + .../Dialogs/ProviderDialog.razor.cs | 2 +- .../Layout/MainLayout.razor.cs | 1 - app/MindWork AI Studio/Pages/Writer.razor.cs | 6 +- app/MindWork AI Studio/Program.cs | 17 + .../Provider/BaseProvider.cs | 3 +- .../Settings/ConfigurationSelectData.cs | 6 + .../Settings/DataModel/DataChat.cs | 10 + .../Settings/DataModel/DataSourceERI_V1.cs | 3 + .../DataModel/DataSourceLocalDirectory.cs | 3 + .../Settings/DataModel/DataSourceLocalFile.cs | 3 + .../Settings/DataModel/DataSourceOptions.cs | 65 +++ .../Settings/DataModel/DataSourceSecurity.cs | 19 + .../DataModel/DataSourceSecurityExtensions.cs | 32 ++ ...nsions.cs => PreviewFeaturesExtensions.cs} | 2 +- .../DataModel/SendToChatDataSourceBehavior.cs | 7 + .../SendToChatDataSourceBehaviorExtensions.cs | 12 + .../Settings/IDataSource.cs | 5 + .../Tools/AllowedSelectedDataSources.cs | 13 + .../Tools/ERIClient/ERIClientV1.cs | 522 +++++++++++------- .../Tools/ERIClient/IERIClient.cs | 1 + .../Tools/Services/DataSourceService.cs | 209 +++++++ .../{ => Services}/RustService.APIKeys.cs | 2 +- .../Tools/{ => Services}/RustService.App.cs | 2 +- .../{ => Services}/RustService.Clipboard.cs | 2 +- .../{ => Services}/RustService.FileSystem.cs | 2 +- .../{ => Services}/RustService.Secrets.cs | 2 +- .../{ => Services}/RustService.Updates.cs | 2 +- .../Tools/{ => Services}/RustService.cs | 2 +- .../Tools/Services/UpdateService.cs | 35 +- app/MindWork AI Studio/Tools/TextColor.cs | 11 + .../Tools/TextColorExtensions.cs | 18 + .../Tools/Validation/DataSourceValidation.cs | 18 + .../wwwroot/changelog/v0.9.29.md | 4 + 70 files changed, 1506 insertions(+), 250 deletions(-) create mode 100644 app/MindWork AI Studio/Components/DataSourceSelection.razor create mode 100644 app/MindWork AI Studio/Components/DataSourceSelection.razor.cs create mode 100644 app/MindWork AI Studio/Components/DataSourceSelectionMode.cs rename app/MindWork AI Studio/Components/{ConfidenceInfoMode.cs => PopoverTriggerMode.cs} (63%) create mode 100644 app/MindWork AI Studio/Settings/DataModel/DataSourceOptions.cs create mode 100644 app/MindWork AI Studio/Settings/DataModel/DataSourceSecurity.cs create mode 100644 app/MindWork AI Studio/Settings/DataModel/DataSourceSecurityExtensions.cs rename app/MindWork AI Studio/Settings/DataModel/{PreviewFeatureExtensions.cs => PreviewFeaturesExtensions.cs} (93%) create mode 100644 app/MindWork AI Studio/Settings/DataModel/SendToChatDataSourceBehavior.cs create mode 100644 app/MindWork AI Studio/Settings/DataModel/SendToChatDataSourceBehaviorExtensions.cs create mode 100644 app/MindWork AI Studio/Tools/AllowedSelectedDataSources.cs create mode 100644 app/MindWork AI Studio/Tools/Services/DataSourceService.cs rename app/MindWork AI Studio/Tools/{ => Services}/RustService.APIKeys.cs (99%) rename app/MindWork AI Studio/Tools/{ => Services}/RustService.App.cs (99%) rename app/MindWork AI Studio/Tools/{ => Services}/RustService.Clipboard.cs (98%) rename app/MindWork AI Studio/Tools/{ => Services}/RustService.FileSystem.cs (97%) rename app/MindWork AI Studio/Tools/{ => Services}/RustService.Secrets.cs (99%) rename app/MindWork AI Studio/Tools/{ => Services}/RustService.Updates.cs (97%) rename app/MindWork AI Studio/Tools/{ => Services}/RustService.cs (98%) create mode 100644 app/MindWork AI Studio/Tools/TextColor.cs create mode 100644 app/MindWork AI Studio/Tools/TextColorExtensions.cs diff --git a/README.md b/README.md index ebd2b5e8..06469a01 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Things we are currently working on: - [ ] App: Implement the continuous process of vectorizing data - [x] ~~App: Define a common retrieval context interface for the integration of RAG processes in chats (PR [#281](https://github.com/MindWorkAI/AI-Studio/pull/281))~~ - [ ] App: Define a common augmentation interface for the integration of RAG processes in chats - - [ ] App: Integrate data sources in chats + - [x] ~~App: Integrate data sources in chats (PR [#282](https://github.com/MindWorkAI/AI-Studio/pull/282))~~ - Since September 2024: Experiments have been started on how we can work on long texts with AI Studio. Let's say you want to write a fantasy novel or create a complex project proposal and use LLM for support. The initial experiments were promising, but not yet satisfactory. We are testing further approaches until a satisfactory solution is found. The current state of our experiment is available as an experimental preview feature through your app configuration. Related PR: ~~[#167](https://github.com/MindWorkAI/AI-Studio/pull/167), [#226](https://github.com/MindWorkAI/AI-Studio/pull/226)~~. diff --git a/app/MindWork AI Studio/Agents/AgentBase.cs b/app/MindWork AI Studio/Agents/AgentBase.cs index 639fa99c..35c4f39f 100644 --- a/app/MindWork AI Studio/Agents/AgentBase.cs +++ b/app/MindWork AI Studio/Agents/AgentBase.cs @@ -1,13 +1,16 @@ using AIStudio.Chat; using AIStudio.Provider; using AIStudio.Settings; +using AIStudio.Tools.Services; // ReSharper disable MemberCanBePrivate.Global namespace AIStudio.Agents; -public abstract class AgentBase(ILogger<AgentBase> logger, SettingsManager settingsManager, ThreadSafeRandom rng) : IAgent +public abstract class AgentBase(ILogger<AgentBase> logger, SettingsManager settingsManager, DataSourceService dataSourceService, ThreadSafeRandom rng) : IAgent { + protected DataSourceService DataSourceService { get; init; } = dataSourceService; + protected SettingsManager SettingsManager { get; init; } = settingsManager; protected ThreadSafeRandom RNG { get; init; } = rng; @@ -107,6 +110,6 @@ public abstract class AgentBase(ILogger<AgentBase> logger, SettingsManager setti // Use the selected provider to get the AI response. // By awaiting this line, we wait for the entire // content to be streamed. - await aiText.CreateFromProviderAsync(providerSettings.CreateProvider(this.Logger), this.SettingsManager, providerSettings.Model, this.lastUserPrompt, thread); + await aiText.CreateFromProviderAsync(providerSettings.CreateProvider(this.Logger), this.SettingsManager, this.DataSourceService, providerSettings.Model, this.lastUserPrompt, thread); } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Agents/AgentTextContentCleaner.cs b/app/MindWork AI Studio/Agents/AgentTextContentCleaner.cs index e8d19aa8..d8e83817 100644 --- a/app/MindWork AI Studio/Agents/AgentTextContentCleaner.cs +++ b/app/MindWork AI Studio/Agents/AgentTextContentCleaner.cs @@ -1,9 +1,10 @@ using AIStudio.Chat; using AIStudio.Settings; +using AIStudio.Tools.Services; namespace AIStudio.Agents; -public sealed class AgentTextContentCleaner(ILogger<AgentBase> logger, SettingsManager settingsManager, ThreadSafeRandom rng) : AgentBase(logger, settingsManager, rng) +public sealed class AgentTextContentCleaner(ILogger<AgentBase> logger, SettingsManager settingsManager, DataSourceService dataSourceService, ThreadSafeRandom rng) : AgentBase(logger, settingsManager, dataSourceService, rng) { private static readonly ContentBlock EMPTY_BLOCK = new() { diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor b/app/MindWork AI Studio/Assistants/AssistantBase.razor index 2390a23d..90a86b0e 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor @@ -121,7 +121,7 @@ @if (this.SettingsManager.ConfigurationData.LLMProviders.ShowProviderConfidence) { - <ConfidenceInfo Mode="ConfidenceInfoMode.BUTTON" LLMProvider="@this.providerSettings.UsedLLMProvider"/> + <ConfidenceInfo Mode="PopoverTriggerMode.BUTTON" LLMProvider="@this.providerSettings.UsedLLMProvider"/> } @if (this.AllowProfiles && this.ShowProfileSelection) diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs index 63867ff6..e7dcba2a 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs @@ -1,12 +1,12 @@ using AIStudio.Chat; using AIStudio.Provider; using AIStudio.Settings; +using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; using MudBlazor.Utilities; -using RustService = AIStudio.Tools.RustService; using Timer = System.Timers.Timer; namespace AIStudio.Assistants; @@ -28,6 +28,9 @@ public abstract partial class AssistantBase : ComponentBase, IMessageBusReceiver [Inject] protected RustService RustService { get; init; } = null!; + [Inject] + protected DataSourceService DataSourceService { get; init; } = null!; + [Inject] protected NavigationManager NavigationManager { get; init; } = null!; @@ -290,7 +293,7 @@ public abstract partial class AssistantBase : ComponentBase, IMessageBusReceiver // Use the selected provider to get the AI response. // By awaiting this line, we wait for the entire // content to be streamed. - await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.SettingsManager, this.providerSettings.Model, this.lastUserPrompt, this.chatThread); + await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.SettingsManager, this.DataSourceService, this.providerSettings.Model, this.lastUserPrompt, this.chatThread); this.isProcessing = false; this.StateHasChanged(); diff --git a/app/MindWork AI Studio/Chat/ChatThread.cs b/app/MindWork AI Studio/Chat/ChatThread.cs index 4f4f5738..3e41161c 100644 --- a/app/MindWork AI Studio/Chat/ChatThread.cs +++ b/app/MindWork AI Studio/Chat/ChatThread.cs @@ -1,4 +1,5 @@ using AIStudio.Settings; +using AIStudio.Settings.DataModel; namespace AIStudio.Chat; @@ -27,6 +28,11 @@ public sealed record ChatThread /// </summary> public string SelectedProfile { get; set; } = string.Empty; + /// <summary> + /// The data source options for this chat thread. + /// </summary> + public DataSourceOptions DataSourceOptions { get; set; } = new(); + /// <summary> /// The name of the chat thread. Usually generated by an AI model or manually edited by the user. /// </summary> diff --git a/app/MindWork AI Studio/Chat/ContentBlockComponent.razor.cs b/app/MindWork AI Studio/Chat/ContentBlockComponent.razor.cs index 57975903..49e102a5 100644 --- a/app/MindWork AI Studio/Chat/ContentBlockComponent.razor.cs +++ b/app/MindWork AI Studio/Chat/ContentBlockComponent.razor.cs @@ -1,9 +1,8 @@ using AIStudio.Settings; +using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; -using RustService = AIStudio.Tools.RustService; - namespace AIStudio.Chat; /// <summary> diff --git a/app/MindWork AI Studio/Chat/ContentImage.cs b/app/MindWork AI Studio/Chat/ContentImage.cs index 3a5fbd16..0d831453 100644 --- a/app/MindWork AI Studio/Chat/ContentImage.cs +++ b/app/MindWork AI Studio/Chat/ContentImage.cs @@ -2,6 +2,7 @@ using System.Text.Json.Serialization; using AIStudio.Provider; using AIStudio.Settings; +using AIStudio.Tools.Services; namespace AIStudio.Chat; @@ -29,7 +30,7 @@ public sealed class ContentImage : IContent public Func<Task> StreamingEvent { get; set; } = () => Task.CompletedTask; /// <inheritdoc /> - public Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default) + public Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, DataSourceService dataSourceService, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default) { throw new NotImplementedException(); } diff --git a/app/MindWork AI Studio/Chat/ContentText.cs b/app/MindWork AI Studio/Chat/ContentText.cs index 20613910..19928b43 100644 --- a/app/MindWork AI Studio/Chat/ContentText.cs +++ b/app/MindWork AI Studio/Chat/ContentText.cs @@ -2,6 +2,7 @@ using System.Text.Json.Serialization; using AIStudio.Provider; using AIStudio.Settings; +using AIStudio.Tools.Services; namespace AIStudio.Chat; @@ -35,7 +36,7 @@ public sealed class ContentText : IContent public Func<Task> StreamingEvent { get; set; } = () => Task.CompletedTask; /// <inheritdoc /> - public async Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, Model chatModel, IContent? lastPrompt, ChatThread? chatThread, CancellationToken token = default) + public async Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, DataSourceService dataSourceService, Model chatModel, IContent? lastPrompt, ChatThread? chatThread, CancellationToken token = default) { if(chatThread is null) return; @@ -43,15 +44,35 @@ public sealed class ContentText : IContent // // Check if the user wants to bind any data sources to the chat: // - - // - // Trigger the retrieval part of the (R)AG process: - // - - // - // Perform the augmentation of the R(A)G process: - // - + if (chatThread.DataSourceOptions.IsEnabled()) + { + // + // When the user wants to bind data sources to the chat, we + // have to check if the data sources are available for the + // selected provider. Also, we have to check if any ERI + // data sources changed its security requirements. + // + List<IDataSource> preselectedDataSources = chatThread.DataSourceOptions.PreselectedDataSourceIds.Select(id => settings.ConfigurationData.DataSources.FirstOrDefault(ds => ds.Id == id)).Where(ds => ds is not null).ToList()!; + var dataSources = await dataSourceService.GetDataSources(provider, preselectedDataSources); + var selectedDataSources = dataSources.SelectedDataSources; + + // + // Should the AI select the data sources? + // + if (chatThread.DataSourceOptions.AutomaticDataSourceSelection) + { + // TODO: Start agent based on allowed data sources. + } + + // + // Trigger the retrieval part of the (R)AG process: + // + + // + // Perform the augmentation of the R(A)G process: + // + } + // Store the last time we got a response. We use this later // to determine whether we should notify the UI about the // new content or not. Depends on the energy saving mode diff --git a/app/MindWork AI Studio/Chat/IContent.cs b/app/MindWork AI Studio/Chat/IContent.cs index 987bada0..86189a2e 100644 --- a/app/MindWork AI Studio/Chat/IContent.cs +++ b/app/MindWork AI Studio/Chat/IContent.cs @@ -2,6 +2,7 @@ using System.Text.Json.Serialization; using AIStudio.Provider; using AIStudio.Settings; +using AIStudio.Tools.Services; namespace AIStudio.Chat; @@ -42,5 +43,5 @@ public interface IContent /// <summary> /// Uses the provider to create the content. /// </summary> - public Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default); + public Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, DataSourceService dataSourceService, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default); } \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor b/app/MindWork AI Studio/Components/ChatComponent.razor index ffd5c8f8..2ae6eb2a 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor +++ b/app/MindWork AI Studio/Components/ChatComponent.razor @@ -97,7 +97,7 @@ @if (this.SettingsManager.ConfigurationData.LLMProviders.ShowProviderConfidence) { - <ConfidenceInfo Mode="ConfidenceInfoMode.ICON" LLMProvider="@this.Provider.UsedLLMProvider"/> + <ConfidenceInfo Mode="PopoverTriggerMode.ICON" LLMProvider="@this.Provider.UsedLLMProvider"/> } @if (this.isStreaming && this.cancellationTokenSource is not null) @@ -108,6 +108,11 @@ } <ProfileSelection CurrentProfile="@this.currentProfile" CurrentProfileChanged="@this.ProfileWasChanged"/> + + @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) + { + <DataSourceSelection @ref="@this.dataSourceSelectionComponent" PopoverTriggerMode="PopoverTriggerMode.BUTTON" PopoverButtonClasses="ma-3" LLMProvider="@this.Provider" DataSourceOptions="@this.GetCurrentDataSourceOptions()" DataSourceOptionsChanged="@(async options => await this.SetCurrentDataSourceOptions(options))"/> + } </MudToolBar> </FooterContent> </InnerScrolling> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor.cs b/app/MindWork AI Studio/Components/ChatComponent.razor.cs index 466d2107..10b8bd79 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor.cs +++ b/app/MindWork AI Studio/Components/ChatComponent.razor.cs @@ -3,6 +3,7 @@ using AIStudio.Dialogs; using AIStudio.Provider; using AIStudio.Settings; using AIStudio.Settings.DataModel; +using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; @@ -40,9 +41,14 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable [Inject] private IDialogService DialogService { get; init; } = null!; + [Inject] + private DataSourceService DataSourceService { get; init; } = null!; + private const Placement TOOLBAR_TOOLTIP_PLACEMENT = Placement.Top; private static readonly Dictionary<string, object?> USER_INPUT_ATTRIBUTES = new(); + private DataSourceSelection? dataSourceSelectionComponent; + private DataSourceOptions earlyDataSourceOptions = new(); private Profile currentProfile = Profile.NO_PROFILE; private bool hasUnsavedChanges; private bool mustScrollToBottomAfterRender; @@ -66,21 +72,40 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable protected override async Task OnInitializedAsync() { + // Apply the filters for the message bus: this.ApplyFilters([], [ Event.HAS_CHAT_UNSAVED_CHANGES, Event.RESET_CHAT_STATE, Event.CHAT_STREAMING_DONE, Event.WORKSPACE_LOADED_CHAT_CHANGED ]); // Configure the spellchecking for the user input: this.SettingsManager.InjectSpellchecking(USER_INPUT_ATTRIBUTES); - + + // Get the preselected profile: this.currentProfile = this.SettingsManager.GetPreselectedProfile(Tools.Components.CHAT); + + // + // Check for deferred messages of the kind 'SEND_TO_CHAT', + // aka the user sends an assistant result to the chat: + // var deferredContent = MessageBus.INSTANCE.CheckDeferredMessages<ChatThread>(Event.SEND_TO_CHAT).FirstOrDefault(); if (deferredContent is not null) { + // + // Yes, the user sent an assistant result to the chat. + // + + // Use chat thread sent by the user: this.ChatThread = deferredContent; this.Logger.LogInformation($"The chat '{this.ChatThread.Name}' with {this.ChatThread.Blocks.Count} messages was deferred and will be rendered now."); await this.ChatThreadChanged.InvokeAsync(this.ChatThread); + // We know already that the chat thread is not null, + // but we have to check it again for the nullability + // for the compiler: if (this.ChatThread is not null) { + // + // Check if the chat thread has a name. If not, we + // generate the name now: + // if (string.IsNullOrWhiteSpace(this.ChatThread.Name)) { var firstUserBlock = this.ChatThread.Blocks.FirstOrDefault(x => x.Role == ChatRole.USER); @@ -94,12 +119,24 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable } } + // + // Check if the user wants to apply the standard chat data source options: + // + if (this.SettingsManager.ConfigurationData.Chat.SendToChatDataSourceBehavior is SendToChatDataSourceBehavior.APPLY_STANDARD_CHAT_DATA_SOURCE_OPTIONS) + this.ChatThread.DataSourceOptions = this.SettingsManager.ConfigurationData.Chat.PreselectedDataSourceOptions.CreateCopy(); + + // + // Check if the user wants to store the chat automatically: + // if (this.SettingsManager.ConfigurationData.Workspace.StorageBehavior is WorkspaceStorageBehavior.STORE_CHATS_AUTOMATICALLY) { this.autoSaveEnabled = true; this.mustStoreChat = true; - // Ensure the workspace exists: + // + // When a standard workspace is used, we have to ensure + // that the workspace is available: + // if(this.ChatThread.WorkspaceId == KnownWorkspaces.ERI_SERVER_WORKSPACE_ID) await WorkspaceBehaviour.EnsureERIServerWorkspace(); @@ -108,14 +145,38 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable } } } + else + { + // + // No, the user did not send an assistant result to the chat. + // + this.ApplyStandardDataSourceOptions(); + } + // + // Check if the user wants to show the latest message after loading: + // if (this.SettingsManager.ConfigurationData.Chat.ShowLatestMessageAfterLoading) { + // + // We cannot scroll to the bottom right now because the + // chat component is not rendered yet. We have to wait for + // the rendering process to finish. Thus, we set a flag + // to scroll to the bottom after the rendering process.: + // this.mustScrollToBottomAfterRender = true; this.scrollRenderCountdown = 4; this.StateHasChanged(); } + // + // Check if another component deferred the loading of a chat. + // + // This is used, e.g., for the bias-of-the-day component: + // when the bias for this day was already produced, the bias + // component sends a message to the chat component to load + // the chat with the bias: + // var deferredLoading = MessageBus.INSTANCE.CheckDeferredMessages<LoadChat>(Event.LOAD_CHAT).FirstOrDefault(); if (deferredLoading != default) { @@ -124,6 +185,11 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable this.Logger.LogInformation($"The loading of the chat '{this.loadChat.ChatId}' was deferred and will be loaded now."); } + // + // When for whatever reason we have a chat thread, we have to + // ensure that the corresponding workspace id is set and the + // workspace name is loaded: + // if (this.ChatThread is not null) { this.currentWorkspaceId = this.ChatThread.WorkspaceId; @@ -131,6 +197,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable this.WorkspaceName(this.currentWorkspaceName); } + // Select the correct provider: await this.SelectProviderWhenLoadingChat(); await base.OnInitializedAsync(); } @@ -204,6 +271,13 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable private string UserInputClass => this.SettingsManager.ConfigurationData.LLMProviders.ShowProviderConfidence ? "confidence-border" : string.Empty; + private void ApplyStandardDataSourceOptions() + { + var chatDefaultOptions = this.SettingsManager.ConfigurationData.Chat.PreselectedDataSourceOptions.CreateCopy(); + this.earlyDataSourceOptions = chatDefaultOptions; + this.dataSourceSelectionComponent?.ChangeOptionWithoutSaving(chatDefaultOptions); + } + private string ExtractThreadName(string firstUserInput) { // We select the first 10 words of the user input: @@ -231,8 +305,35 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable await this.ChatThreadChanged.InvokeAsync(this.ChatThread); } + private DataSourceOptions GetCurrentDataSourceOptions() + { + if (this.ChatThread is not null) + return this.ChatThread.DataSourceOptions; + + return this.earlyDataSourceOptions; + } + + private async Task SetCurrentDataSourceOptions(DataSourceOptions updatedOptions) + { + if (this.ChatThread is not null) + { + this.hasUnsavedChanges = true; + this.ChatThread.DataSourceOptions = updatedOptions; + if(this.SettingsManager.ConfigurationData.Workspace.StorageBehavior is WorkspaceStorageBehavior.STORE_CHATS_AUTOMATICALLY) + { + await this.SaveThread(); + this.hasUnsavedChanges = false; + } + } + else + this.earlyDataSourceOptions = updatedOptions; + } + private async Task InputKeyEvent(KeyboardEventArgs keyEvent) { + if(this.dataSourceSelectionComponent?.IsVisible ?? false) + this.dataSourceSelectionComponent.Hide(); + this.hasUnsavedChanges = true; var key = keyEvent.Code.ToLowerInvariant(); @@ -276,6 +377,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable SystemPrompt = SystemPrompts.DEFAULT, WorkspaceId = this.currentWorkspaceId, ChatId = Guid.NewGuid(), + DataSourceOptions = this.earlyDataSourceOptions, Name = this.ExtractThreadName(this.userInput), Seed = this.RNG.Next(), Blocks = [], @@ -365,7 +467,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable // Use the selected provider to get the AI response. // By awaiting this line, we wait for the entire // content to be streamed. - await aiText.CreateFromProviderAsync(this.Provider.CreateProvider(this.Logger), this.SettingsManager, this.Provider.Model, lastUserPrompt, this.ChatThread, this.cancellationTokenSource.Token); + await aiText.CreateFromProviderAsync(this.Provider.CreateProvider(this.Logger), this.SettingsManager, this.DataSourceService, this.Provider.Model, lastUserPrompt, this.ChatThread, this.cancellationTokenSource.Token); } this.cancellationTokenSource = null; @@ -412,6 +514,10 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable private async Task StartNewChat(bool useSameWorkspace = false, bool deletePreviousChat = false) { + // + // Want the user to manage the chat storage manually? In that case, we have to ask the user + // about possible data loss: + // if (this.SettingsManager.ConfigurationData.Workspace.StorageBehavior is WorkspaceStorageBehavior.STORE_CHATS_MANUALLY && this.hasUnsavedChanges) { var dialogParameters = new DialogParameters @@ -425,6 +531,9 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable return; } + // + // Delete the previous chat when desired and necessary: + // if (this.ChatThread is not null && deletePreviousChat) { string chatPath; @@ -439,10 +548,16 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable await this.Workspaces.DeleteChat(chatPath, askForConfirmation: false, unloadChat: true); } + // + // Reset our state: + // this.isStreaming = false; this.hasUnsavedChanges = false; this.userInput = string.Empty; + // + // Reset the LLM provider considering the user's settings: + // switch (this.SettingsManager.ConfigurationData.Chat.AddChatProviderBehavior) { case AddChatProviderBehavior.ADDED_CHATS_USE_DEFAULT_PROVIDER: @@ -461,8 +576,16 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable break; } + // + // Reset the chat thread or create a new one: + // if (!useSameWorkspace) { + // + // When the user wants to start a new chat outside the current workspace, + // we have to reset the workspace id and the workspace name. Also, we have + // to reset the chat thread: + // this.ChatThread = null; this.currentWorkspaceId = Guid.Empty; this.currentWorkspaceName = string.Empty; @@ -470,6 +593,11 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable } else { + // + // When the user wants to start a new chat in the same workspace, we have to + // reset the chat thread only. The workspace id and the workspace name remain + // the same: + // this.ChatThread = new() { SelectedProvider = this.Provider.Id, @@ -482,8 +610,11 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable Blocks = [], }; } - - this.userInput = string.Empty; + + // Now, we have to reset the data source options as well: + this.ApplyStandardDataSourceOptions(); + + // Notify the parent component about the change: await this.ChatThreadChanged.InvokeAsync(this.ChatThread); } @@ -543,12 +674,14 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable this.currentWorkspaceId = this.ChatThread.WorkspaceId; this.currentWorkspaceName = await WorkspaceBehaviour.LoadWorkspaceName(this.ChatThread.WorkspaceId); this.WorkspaceName(this.currentWorkspaceName); + this.dataSourceSelectionComponent?.ChangeOptionWithoutSaving(this.ChatThread.DataSourceOptions); } else { this.currentWorkspaceId = Guid.Empty; this.currentWorkspaceName = string.Empty; this.WorkspaceName(this.currentWorkspaceName); + this.ApplyStandardDataSourceOptions(); } await this.SelectProviderWhenLoadingChat(); @@ -572,6 +705,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable this.WorkspaceName(this.currentWorkspaceName); this.ChatThread = null; + this.ApplyStandardDataSourceOptions(); await this.ChatThreadChanged.InvokeAsync(this.ChatThread); } diff --git a/app/MindWork AI Studio/Components/ConfidenceInfo.razor b/app/MindWork AI Studio/Components/ConfidenceInfo.razor index f120b919..48a8becc 100644 --- a/app/MindWork AI Studio/Components/ConfidenceInfo.razor +++ b/app/MindWork AI Studio/Components/ConfidenceInfo.razor @@ -1,7 +1,7 @@ @using AIStudio.Provider <div class="d-flex"> <MudTooltip Text="Shows and hides the confidence card with information about the selected LLM provider." Placement="Placement.Top"> - @if (this.Mode is ConfidenceInfoMode.ICON) + @if (this.Mode is PopoverTriggerMode.ICON) { <MudIconButton Icon="@Icons.Material.Filled.Security" Class="confidence-icon" Style="@this.LLMProvider.GetConfidence(this.SettingsManager).SetColorStyle(this.SettingsManager)" OnClick="@(() => this.ToggleConfidence())"/> } @@ -20,7 +20,7 @@ <MudText Typo="Typo.h5">Confidence Card</MudText> </CardHeaderContent> </MudCardHeader> - <MudCardContent> + <MudCardContent Style="max-height: 50vh; overflow: auto;"> <MudText Typo="Typo.h6">Description</MudText> <MudMarkdown Value="@this.currentConfidence.Description"/> diff --git a/app/MindWork AI Studio/Components/ConfidenceInfo.razor.cs b/app/MindWork AI Studio/Components/ConfidenceInfo.razor.cs index 97db85f2..b586a2fe 100644 --- a/app/MindWork AI Studio/Components/ConfidenceInfo.razor.cs +++ b/app/MindWork AI Studio/Components/ConfidenceInfo.razor.cs @@ -8,7 +8,7 @@ namespace AIStudio.Components; public partial class ConfidenceInfo : ComponentBase, IMessageBusReceiver, IDisposable { [Parameter] - public ConfidenceInfoMode Mode { get; set; } = ConfidenceInfoMode.BUTTON; + public PopoverTriggerMode Mode { get; set; } = PopoverTriggerMode.BUTTON; [Parameter] public LLMProviders LLMProvider { get; set; } diff --git a/app/MindWork AI Studio/Components/DataSourceSelection.razor b/app/MindWork AI Studio/Components/DataSourceSelection.razor new file mode 100644 index 00000000..f9dff17b --- /dev/null +++ b/app/MindWork AI Studio/Components/DataSourceSelection.razor @@ -0,0 +1,93 @@ +@using AIStudio.Settings + +@if (this.SelectionMode is DataSourceSelectionMode.SELECTION_MODE) +{ + <div class="d-flex"> + <MudTooltip Text="Select the data sources you want to use here." Placement="Placement.Top"> + @if (this.PopoverTriggerMode is PopoverTriggerMode.ICON) + { + <MudIconButton Icon="@Icons.Material.Filled.Source" Class="@this.PopoverButtonClasses" OnClick="@(() => this.ToggleDataSourceSelection())"/> + } + else + { + <MudButton Variant="Variant.Filled" StartIcon="@Icons.Material.Filled.Source" Class="@this.PopoverButtonClasses" OnClick="@(() => this.ToggleDataSourceSelection())"> + Select data sources + </MudButton> + } + </MudTooltip> + + <MudPopover Open="@this.showDataSourceSelection" AnchorOrigin="Origin.TopLeft" TransformOrigin="Origin.BottomLeft" DropShadow="@true" Class="border-solid border-4 rounded-lg"> + <MudCard> + <MudCardHeader> + <CardHeaderContent> + <PreviewPrototype/> + <MudText Typo="Typo.h5">Data Source Selection</MudText> + </CardHeaderContent> + </MudCardHeader> + <MudCardContent Style="max-height: 60vh; overflow: auto;"> + @if (this.waitingForDataSources) + { + <MudSkeleton Width="30%" Height="42px;"/> + <MudSkeleton Width="80%"/> + <MudSkeleton Width="100%"/> + } + else if (this.showDataSourceSelection) + { + <MudTextSwitch Label="Are data sources enabled?" Value="@this.areDataSourcesEnabled" LabelOn="Yes, I want to use data sources." LabelOff="No, I don't want to use data sources." ValueChanged="@this.EnabledChanged"/> + @if (this.areDataSourcesEnabled) + { + <MudTextSwitch Label="AI-based data source selection" Value="@this.aiBasedSourceSelection" LabelOn="Yes, let the AI decide which data sources are needed." LabelOff="No, I manually decide which data source to use." ValueChanged="@this.AutoModeChanged"/> + <MudTextSwitch Label="AI-based data validation" Value="@this.aiBasedValidation" LabelOn="Yes, let the AI validate & filter the retrieved data." LabelOff="No, use all data retrieved from the data sources." ValueChanged="@this.ValidationModeChanged"/> + <MudField Label="Available Data Sources" Variant="Variant.Outlined" Class="mb-3" Disabled="@this.aiBasedSourceSelection"> + <MudList T="IDataSource" SelectionMode="MudBlazor.SelectionMode.MultiSelection" @bind-SelectedValues:get="@this.selectedDataSources" @bind-SelectedValues:set="@(x => this.SelectionChanged(x))" Style="max-height: 14em;"> + @foreach (var source in this.availableDataSources) + { + <MudListItem Value="@source"> + @source.Name + </MudListItem> + } + </MudList> + </MudField> + } + } + </MudCardContent> + <MudCardActions> + <MudButton Variant="Variant.Filled" OnClick="@(() => this.HideDataSourceSelection())"> + Close + </MudButton> + </MudCardActions> + </MudCard> + </MudPopover> + </div> +} +else if (this.SelectionMode is DataSourceSelectionMode.CONFIGURATION_MODE) +{ + <MudPaper Class="pa-3 mb-8 mt-3 border-dashed border rounded-lg"> + <PreviewPrototype/> + <MudText Typo="Typo.h5">Data Source Selection</MudText> + + @if (!string.IsNullOrWhiteSpace(this.ConfigurationHeaderMessage)) + { + <MudText Typo="Typo.body1"> + @this.ConfigurationHeaderMessage + </MudText> + } + + <MudTextSwitch Label="Are data sources enabled?" Value="@this.areDataSourcesEnabled" LabelOn="Yes, I want to use data sources." LabelOff="No, I don't want to use data sources." ValueChanged="@this.EnabledChanged"/> + @if (this.areDataSourcesEnabled) + { + <MudTextSwitch Label="AI-based data source selection" Value="@this.aiBasedSourceSelection" LabelOn="Yes, let the AI decide which data sources are needed." LabelOff="No, I manually decide which data source to use." ValueChanged="@this.AutoModeChanged"/> + <MudTextSwitch Label="AI-based data validation" Value="@this.aiBasedValidation" LabelOn="Yes, let the AI validate & filter the retrieved data." LabelOff="No, use all data retrieved from the data sources." ValueChanged="@this.ValidationModeChanged"/> + <MudField Label="Available Data Sources" Variant="Variant.Outlined" Class="mb-3" Disabled="@this.aiBasedSourceSelection"> + <MudList T="IDataSource" SelectionMode="MudBlazor.SelectionMode.MultiSelection" @bind-SelectedValues:get="@this.selectedDataSources" @bind-SelectedValues:set="@(x => this.SelectionChanged(x))"> + @foreach (var source in this.availableDataSources) + { + <MudListItem Value="@source"> + @source.Name + </MudListItem> + } + </MudList> + </MudField> + } + </MudPaper> +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs b/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs new file mode 100644 index 00000000..7b75bbd4 --- /dev/null +++ b/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs @@ -0,0 +1,260 @@ +using AIStudio.Settings; +using AIStudio.Settings.DataModel; +using AIStudio.Tools.Services; + +using Microsoft.AspNetCore.Components; + +namespace AIStudio.Components; + +public partial class DataSourceSelection : ComponentBase, IMessageBusReceiver, IDisposable +{ + [Parameter] + public DataSourceSelectionMode SelectionMode { get; set; } = DataSourceSelectionMode.SELECTION_MODE; + + [Parameter] + public PopoverTriggerMode PopoverTriggerMode { get; set; } = PopoverTriggerMode.BUTTON; + + [Parameter] + public string PopoverButtonClasses { get; set; } = string.Empty; + + [Parameter] + public required AIStudio.Settings.Provider LLMProvider { get; set; } + + [Parameter] + public required DataSourceOptions DataSourceOptions { get; set; } + + [Parameter] + public EventCallback<DataSourceOptions> DataSourceOptionsChanged { get; set; } + + [Parameter] + public string ConfigurationHeaderMessage { get; set; } = string.Empty; + + [Parameter] + public bool AutoSaveAppSettings { get; set; } + + [Inject] + private SettingsManager SettingsManager { get; init; } = null!; + + [Inject] + private MessageBus MessageBus { get; init; } = null!; + + [Inject] + private DataSourceService DataSourceService { get; init; } = null!; + + [Inject] + private ILogger<DataSourceSelection> Logger { get; init; } = null!; + + private bool internalChange; + private bool showDataSourceSelection; + private bool waitingForDataSources = true; + private IReadOnlyList<IDataSource> availableDataSources = []; + private IReadOnlyCollection<IDataSource> selectedDataSources = []; + private bool aiBasedSourceSelection; + private bool aiBasedValidation; + private bool areDataSourcesEnabled; + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + this.MessageBus.RegisterComponent(this); + this.MessageBus.ApplyFilters(this, [], [ Event.COLOR_THEME_CHANGED ]); + + // + // Load the settings: + // + this.aiBasedSourceSelection = this.DataSourceOptions.AutomaticDataSourceSelection; + this.aiBasedValidation = this.DataSourceOptions.AutomaticValidation; + this.areDataSourcesEnabled = !this.DataSourceOptions.DisableDataSources; + this.waitingForDataSources = this.areDataSourcesEnabled; + + // + // Preselect the data sources. Right now, we cannot filter + // the data sources. Later, when the component is shown, we + // will filter the data sources. + // + // Right before the preselection would be used to kick off the + // RAG process, we will filter the data sources as well. + // + var preselectedSources = new List<IDataSource>(this.DataSourceOptions.PreselectedDataSourceIds.Count); + foreach (var preselectedDataSourceId in this.DataSourceOptions.PreselectedDataSourceIds) + { + var dataSource = this.SettingsManager.ConfigurationData.DataSources.FirstOrDefault(ds => ds.Id == preselectedDataSourceId); + if (dataSource is not null) + preselectedSources.Add(dataSource); + } + + this.selectedDataSources = preselectedSources; + await base.OnInitializedAsync(); + } + + protected override async Task OnParametersSetAsync() + { + if (!this.internalChange) + { + this.aiBasedSourceSelection = this.DataSourceOptions.AutomaticDataSourceSelection; + this.aiBasedValidation = this.DataSourceOptions.AutomaticValidation; + this.areDataSourcesEnabled = !this.DataSourceOptions.DisableDataSources; + } + + switch (this.SelectionMode) + { + // + // In selection mode, we have to load & filter the data sources + // when the component is shown: + // + case DataSourceSelectionMode.SELECTION_MODE: + + // + // For external changes, we have to reload & filter + // the data sources: + // + if (this.showDataSourceSelection && !this.internalChange) + await this.LoadAndApplyFilters(); + else + this.internalChange = false; + + break; + + // + // In configuration mode, we have to load all data sources: + // + case DataSourceSelectionMode.CONFIGURATION_MODE: + this.availableDataSources = this.SettingsManager.ConfigurationData.DataSources; + break; + } + + await base.OnParametersSetAsync(); + } + + #endregion + + public void ChangeOptionWithoutSaving(DataSourceOptions options) + { + this.DataSourceOptions = options; + this.aiBasedSourceSelection = this.DataSourceOptions.AutomaticDataSourceSelection; + this.aiBasedValidation = this.DataSourceOptions.AutomaticValidation; + this.areDataSourcesEnabled = !this.DataSourceOptions.DisableDataSources; + this.selectedDataSources = this.SettingsManager.ConfigurationData.DataSources.Where(ds => this.DataSourceOptions.PreselectedDataSourceIds.Contains(ds.Id)).ToList(); + this.waitingForDataSources = false; + + // + // Remark: We do not apply the filters here. This is done later + // when either the parameters are changed or just before the + // RAG process is started (outside of this component). + // + // In fact, when we apply the filters here, multiple calls + // to the filter method would be made. We would get conflicts. + // + } + + public bool IsVisible => this.showDataSourceSelection; + + public void Hide() + { + this.showDataSourceSelection = false; + this.StateHasChanged(); + } + + private async Task LoadAndApplyFilters() + { + if(this.DataSourceOptions.DisableDataSources) + return; + + this.waitingForDataSources = true; + this.StateHasChanged(); + + // Load the data sources: + var sources = await this.DataSourceService.GetDataSources(this.LLMProvider, this.selectedDataSources); + this.availableDataSources = sources.AllowedDataSources; + this.selectedDataSources = sources.SelectedDataSources; + this.waitingForDataSources = false; + this.StateHasChanged(); + } + + private async Task EnabledChanged(bool state) + { + this.areDataSourcesEnabled = state; + this.DataSourceOptions.DisableDataSources = !this.areDataSourcesEnabled; + + await this.LoadAndApplyFilters(); + await this.OptionsChanged(); + this.StateHasChanged(); + } + + private async Task AutoModeChanged(bool state) + { + this.aiBasedSourceSelection = state; + this.DataSourceOptions.AutomaticDataSourceSelection = this.aiBasedSourceSelection; + + await this.OptionsChanged(); + } + + private async Task ValidationModeChanged(bool state) + { + this.aiBasedValidation = state; + this.DataSourceOptions.AutomaticValidation = this.aiBasedValidation; + + await this.OptionsChanged(); + } + + private async Task SelectionChanged(IReadOnlyCollection<IDataSource>? chosenDataSources) + { + this.selectedDataSources = chosenDataSources ?? []; + this.DataSourceOptions.PreselectedDataSourceIds = this.selectedDataSources.Select(ds => ds.Id).ToList(); + + await this.OptionsChanged(); + } + + private async Task OptionsChanged() + { + this.internalChange = true; + + await this.DataSourceOptionsChanged.InvokeAsync(this.DataSourceOptions); + + if(this.AutoSaveAppSettings) + await this.SettingsManager.StoreSettings(); + } + + private async Task ToggleDataSourceSelection() + { + this.showDataSourceSelection = !this.showDataSourceSelection; + if (this.showDataSourceSelection) + await this.LoadAndApplyFilters(); + } + + private void HideDataSourceSelection() => this.showDataSourceSelection = false; + + #region Implementation of IMessageBusReceiver + + public string ComponentName => nameof(ConfidenceInfo); + + public Task ProcessMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) + { + switch (triggeredEvent) + { + case Event.COLOR_THEME_CHANGED: + this.showDataSourceSelection = false; + this.StateHasChanged(); + break; + } + + return Task.CompletedTask; + } + + public Task<TResult?> ProcessMessageWithResult<TPayload, TResult>(ComponentBase? sendingComponent, Event triggeredEvent, TPayload? data) + { + return Task.FromResult<TResult?>(default); + } + + #endregion + + #region Implementation of IDisposable + + public void Dispose() + { + this.MessageBus.Unregister(this); + } + + #endregion +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/DataSourceSelectionMode.cs b/app/MindWork AI Studio/Components/DataSourceSelectionMode.cs new file mode 100644 index 00000000..e10a0136 --- /dev/null +++ b/app/MindWork AI Studio/Components/DataSourceSelectionMode.cs @@ -0,0 +1,23 @@ +namespace AIStudio.Components; + +public enum DataSourceSelectionMode +{ + /// <summary> + /// The user is selecting data sources for, e.g., the chat. + /// </summary> + /// <remarks> + /// In this case, we have to filter the data sources based on the + /// selected provider and check security requirements. + /// </remarks> + SELECTION_MODE, + + /// <summary> + /// The user is configuring the default data sources, e.g., for the chat. + /// </summary> + /// <remarks> + /// In this case, all data sources are available for selection. + /// They get filtered later based on the selected provider and + /// security requirements. + /// </remarks> + CONFIGURATION_MODE, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/ConfidenceInfoMode.cs b/app/MindWork AI Studio/Components/PopoverTriggerMode.cs similarity index 63% rename from app/MindWork AI Studio/Components/ConfidenceInfoMode.cs rename to app/MindWork AI Studio/Components/PopoverTriggerMode.cs index d7e63da6..c122e409 100644 --- a/app/MindWork AI Studio/Components/ConfidenceInfoMode.cs +++ b/app/MindWork AI Studio/Components/PopoverTriggerMode.cs @@ -1,6 +1,6 @@ namespace AIStudio.Components; -public enum ConfidenceInfoMode +public enum PopoverTriggerMode { BUTTON, ICON, diff --git a/app/MindWork AI Studio/Components/ProfileSelection.razor.cs b/app/MindWork AI Studio/Components/ProfileSelection.razor.cs index 55f2fa99..d2b41a57 100644 --- a/app/MindWork AI Studio/Components/ProfileSelection.razor.cs +++ b/app/MindWork AI Studio/Components/ProfileSelection.razor.cs @@ -14,11 +14,14 @@ public partial class ProfileSelection : ComponentBase [Parameter] public string MarginLeft { get; set; } = "ml-3"; + + [Parameter] + public string MarginRight { get; set; } = string.Empty; [Inject] private SettingsManager SettingsManager { get; init; } = null!; - private string MarginClass => $"{this.MarginLeft}"; + private string MarginClass => $"{this.MarginLeft} {this.MarginRight}"; private async Task SelectionChanged(Profile profile) { diff --git a/app/MindWork AI Studio/Components/SelectDirectory.razor.cs b/app/MindWork AI Studio/Components/SelectDirectory.razor.cs index 79bc18ef..a4ebbf8b 100644 --- a/app/MindWork AI Studio/Components/SelectDirectory.razor.cs +++ b/app/MindWork AI Studio/Components/SelectDirectory.razor.cs @@ -1,4 +1,5 @@ using AIStudio.Settings; +using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; diff --git a/app/MindWork AI Studio/Components/SelectFile.razor.cs b/app/MindWork AI Studio/Components/SelectFile.razor.cs index 5d1b7f04..d4a03ad5 100644 --- a/app/MindWork AI Studio/Components/SelectFile.razor.cs +++ b/app/MindWork AI Studio/Components/SelectFile.razor.cs @@ -1,4 +1,5 @@ using AIStudio.Settings; +using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelBase.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelBase.cs index f7f3a1d2..c3384167 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelBase.cs +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelBase.cs @@ -1,4 +1,5 @@ using AIStudio.Settings; +using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelChat.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelChat.razor index 4f677ae3..8b274405 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelChat.razor +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelChat.razor @@ -1,4 +1,5 @@ @using AIStudio.Settings +@using AIStudio.Settings.DataModel @inherits SettingsPanelBase <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Chat" HeaderText="Chat Options"> @@ -12,4 +13,10 @@ <ConfigurationProviderSelection Component="Components.CHAT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.Chat.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Chat.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Chat.PreselectedProvider = selectedValue)"/> <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Chat.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Chat.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Chat.PreselectedProfile = selectedValue)" OptionHelp="Would you like to set one of your profiles as the default for chats?"/> </MudPaper> + + @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) + { + <DataSourceSelection SelectionMode="DataSourceSelectionMode.CONFIGURATION_MODE" AutoSaveAppSettings="@true" @bind-DataSourceOptions="@this.SettingsManager.ConfigurationData.Chat.PreselectedDataSourceOptions" ConfigurationHeaderMessage="You can set default data sources and options for new chats. You can change these settings later for each individual chat."/> + <ConfigurationSelect OptionDescription="Apply default data source option when sending assistant results to chat" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Chat.SendToChatDataSourceBehavior)" Data="@ConfigurationSelectDataFactory.GetSendToChatDataSourceBehaviorData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Chat.SendToChatDataSourceBehavior = selectedValue)" OptionHelp="Do you want to apply the default data source options when sending assistant results to chat?"/> + } </ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/TextInfoLine.razor.cs b/app/MindWork AI Studio/Components/TextInfoLine.razor.cs index 4c4e6409..206fae4b 100644 --- a/app/MindWork AI Studio/Components/TextInfoLine.razor.cs +++ b/app/MindWork AI Studio/Components/TextInfoLine.razor.cs @@ -1,4 +1,5 @@ using AIStudio.Settings; +using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; diff --git a/app/MindWork AI Studio/Components/TextInfoLines.razor b/app/MindWork AI Studio/Components/TextInfoLines.razor index 02dadb48..68186316 100644 --- a/app/MindWork AI Studio/Components/TextInfoLines.razor +++ b/app/MindWork AI Studio/Components/TextInfoLines.razor @@ -9,6 +9,7 @@ Lines="3" MaxLines="@this.MaxLines" AutoGrow="@true" + Style="@this.GetColor()" UserAttributes="@USER_INPUT_ATTRIBUTES" /> @if (this.ShowingCopyButton) diff --git a/app/MindWork AI Studio/Components/TextInfoLines.razor.cs b/app/MindWork AI Studio/Components/TextInfoLines.razor.cs index 64d5924d..2427133c 100644 --- a/app/MindWork AI Studio/Components/TextInfoLines.razor.cs +++ b/app/MindWork AI Studio/Components/TextInfoLines.razor.cs @@ -1,4 +1,5 @@ using AIStudio.Settings; +using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; @@ -20,6 +21,9 @@ public partial class TextInfoLines : ComponentBase [Parameter] public bool ShowingCopyButton { get; set; } = true; + + [Parameter] + public TextColor Color { get; set; } = TextColor.DEFAULT; [Inject] private RustService RustService { get; init; } = null!; @@ -47,4 +51,13 @@ public partial class TextInfoLines : ComponentBase private string ClipboardTooltip => $"Copy {this.ClipboardTooltipSubject} to the clipboard"; private async Task CopyToClipboard(string content) => await this.RustService.CopyText2Clipboard(this.Snackbar, content); + + private string GetColor() + { + var htmlColorCode = this.Color.GetHTMLColor(this.SettingsManager); + if(string.IsNullOrWhiteSpace(htmlColorCode)) + return string.Empty; + + return $"color: {htmlColorCode} !important;"; + } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor index a1ebe82d..984d2e40 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor @@ -1,4 +1,6 @@ +@using AIStudio.Settings.DataModel @using AIStudio.Tools.ERIClient.DataModel + <MudDialog> <DialogContent> @@ -25,7 +27,8 @@ } <TextInfoLines Label="Server description" MaxLines="14" Value="@this.serverDescription" ClipboardTooltipSubject="the server description"/> - <TextInfoLines Label="Security requirements" MaxLines="3" Value="@this.securityRequirements.Explain()" ClipboardTooltipSubject="the security requirements"/> + <TextInfoLines Label="Security requirements of the data provider" MaxLines="3" Value="@this.securityRequirements.Explain()" ClipboardTooltipSubject="the security requirements of the data provider"/> + <TextInfoLines Label="Your security policy" MaxLines="3" Value="@this.DataSource.SecurityPolicy.ToInfoText()" Color="@this.DataSource.SecurityPolicy.GetColor()" ClipboardTooltipSubject="your security policy"/> <MudText Typo="Typo.h5" Class="mt-6"> Retrieval information diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs index 304c4f67..192347d0 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs @@ -6,6 +6,7 @@ using AIStudio.Assistants.ERI; using AIStudio.Settings.DataModel; using AIStudio.Tools.ERIClient; using AIStudio.Tools.ERIClient.DataModel; +using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor index ac40ffa5..fcc9fff0 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor @@ -1,3 +1,4 @@ +@using AIStudio.Settings.DataModel @using AIStudio.Tools.ERIClient.DataModel <MudDialog> <DialogContent> @@ -108,6 +109,13 @@ InputType="InputType.Password" UserAttributes="@SPELLCHECK_ATTRIBUTES"/> } + + <MudSelect @bind-Value="@this.dataSecurityPolicy" Text="@this.dataSecurityPolicy.ToSelectionText()" Label="Your security policy" Class="mb-3" OpenIcon="@Icons.Material.Filled.ExpandMore" AdornmentColor="Color.Info" Adornment="Adornment.Start" Validation="@this.dataSourceValidation.ValidateSecurityPolicy"> + @foreach (var policy in Enum.GetValues<DataSourceSecurity>()) + { + <MudSelectItem Value="@policy">@policy.ToSelectionText()</MudSelectItem> + } + </MudSelect> </MudForm> <Issues IssuesData="@this.dataIssues"/> diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs index aaa4dac1..e042f92a 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs @@ -3,6 +3,7 @@ using AIStudio.Settings; using AIStudio.Settings.DataModel; using AIStudio.Tools.ERIClient; using AIStudio.Tools.ERIClient.DataModel; +using AIStudio.Tools.Services; using AIStudio.Tools.Validation; using Microsoft.AspNetCore.Components; @@ -45,6 +46,8 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId private string dataSecretStorageIssue = string.Empty; private string dataEditingPreviousInstanceName = string.Empty; private List<AuthMethod> availableAuthMethods = []; + private DataSourceSecurity dataSecurityPolicy; + private SecurityRequirements dataSourceSecurityRequirements; private bool connectionTested; private bool connectionSuccessfulTested; @@ -71,6 +74,7 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId GetTestedConnection = () => this.connectionTested, GetTestedConnectionResult = () => this.connectionSuccessfulTested, GetAvailableAuthMethods = () => this.availableAuthMethods, + GetSecurityRequirements = () => this.dataSourceSecurityRequirements, }; } @@ -95,6 +99,7 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId this.dataPort = this.DataSource.Port; this.dataAuthMethod = this.DataSource.AuthMethod; this.dataUsername = this.DataSource.Username; + this.dataSecurityPolicy = this.DataSource.SecurityPolicy; if (this.dataAuthMethod is AuthMethod.TOKEN or AuthMethod.USERNAME_PASSWORD) { @@ -147,6 +152,7 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId AuthMethod = this.dataAuthMethod, Username = this.dataUsername, Type = DataSourceType.ERI_V1, + SecurityPolicy = this.dataSecurityPolicy, }; } @@ -196,6 +202,28 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId this.availableAuthMethods = authSchemes.Data!.Select(n => n.AuthMethod).ToList(); + var loginResult = await client.AuthenticateAsync(this.DataSource, this.RustService, cts.Token); + if (!loginResult.Successful) + { + await this.form.Validate(); + + Array.Resize(ref this.dataIssues, this.dataIssues.Length + 1); + this.dataIssues[^1] = loginResult.Message; + return; + } + + var securityRequirementsRequest = await client.GetSecurityRequirementsAsync(cts.Token); + if (!securityRequirementsRequest.Successful) + { + await this.form.Validate(); + + Array.Resize(ref this.dataIssues, this.dataIssues.Length + 1); + this.dataIssues[^1] = securityRequirementsRequest.Message; + return; + } + + this.dataSourceSecurityRequirements = securityRequirementsRequest.Data; + this.connectionTested = true; this.connectionSuccessfulTested = true; this.Logger.LogInformation("Connection to the ERI v1 server was successful tested."); diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor index 22d1c984..e7863285 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor @@ -1,3 +1,5 @@ +@using AIStudio.Settings.DataModel + <MudDialog> <DialogContent> <MudForm @ref="@this.form" @bind-IsValid="@this.dataIsValid" @bind-Errors="@this.dataIssues"> @@ -60,6 +62,13 @@ </MudJustifiedText> } } + + <MudSelect @bind-Value="@this.dataSecurityPolicy" Text="@this.dataSecurityPolicy.ToSelectionText()" Label="Your security policy" Class="mb-3" OpenIcon="@Icons.Material.Filled.ExpandMore" AdornmentColor="Color.Info" Adornment="Adornment.Start" Validation="@this.dataSourceValidation.ValidateSecurityPolicy"> + @foreach (var policy in Enum.GetValues<DataSourceSecurity>()) + { + <MudSelectItem Value="@policy">@policy.ToSelectionText()</MudSelectItem> + } + </MudSelect> </MudForm> <Issues IssuesData="@this.dataIssues"/> </DialogContent> diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor.cs index 9f1b4f1f..30cccbe5 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor.cs @@ -42,6 +42,7 @@ public partial class DataSourceLocalDirectoryDialog : ComponentBase private bool dataUserAcknowledgedCloudEmbedding; private string dataEmbeddingId = string.Empty; private string dataPath = string.Empty; + private DataSourceSecurity dataSecurityPolicy; // We get the form reference from Blazor code to validate it manually: private MudForm form = null!; @@ -75,6 +76,7 @@ public partial class DataSourceLocalDirectoryDialog : ComponentBase this.dataName = this.DataSource.Name; this.dataEmbeddingId = this.DataSource.EmbeddingId; this.dataPath = this.DataSource.Path; + this.dataSecurityPolicy = this.DataSource.SecurityPolicy; } await base.OnInitializedAsync(); @@ -102,6 +104,7 @@ public partial class DataSourceLocalDirectoryDialog : ComponentBase Type = DataSourceType.LOCAL_DIRECTORY, EmbeddingId = this.dataEmbeddingId, Path = this.dataPath, + SecurityPolicy = this.dataSecurityPolicy, }; private async Task Store() diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor index cbd951dc..a4b647b0 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor @@ -1,3 +1,5 @@ +@using AIStudio.Settings.DataModel + <MudDialog> <DialogContent> <TextInfoLine Icon="@Icons.Material.Filled.Tag" Label="Data source name" Value="@this.DataSource.Name" ClipboardTooltipSubject="the data source name"/> @@ -31,6 +33,8 @@ </MudJustifiedText> } + <TextInfoLines Label="Your security policy" MaxLines="3" Value="@this.DataSource.SecurityPolicy.ToInfoText()" Color="@this.DataSource.SecurityPolicy.GetColor()" ClipboardTooltipSubject="your security policy"/> + <TextInfoLine Icon="@Icons.Material.Filled.SquareFoot" Label="Number of files" Value="@this.NumberFilesInDirectory" ClipboardTooltipSubject="the number of files in the directory"/> <TextInfoLines Label="Files list" MaxLines="14" Value="@this.directoryFiles.ToString()" ClipboardTooltipSubject="the files list"/> @if (this.directorySizeNumFiles > 100) diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor index c60d32dc..ebd0a5bc 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor @@ -1,3 +1,4 @@ +@using AIStudio.Settings.DataModel <MudDialog> <DialogContent> <MudForm @ref="@this.form" @bind-IsValid="@this.dataIsValid" @bind-Errors="@this.dataIssues"> @@ -59,6 +60,13 @@ </MudJustifiedText> } } + + <MudSelect @bind-Value="@this.dataSecurityPolicy" Text="@this.dataSecurityPolicy.ToSelectionText()" Label="Your security policy" Class="mb-3" OpenIcon="@Icons.Material.Filled.ExpandMore" AdornmentColor="Color.Info" Adornment="Adornment.Start" Validation="@this.dataSourceValidation.ValidateSecurityPolicy"> + @foreach (var policy in Enum.GetValues<DataSourceSecurity>()) + { + <MudSelectItem Value="@policy">@policy.ToSelectionText()</MudSelectItem> + } + </MudSelect> </MudForm> <Issues IssuesData="@this.dataIssues"/> </DialogContent> diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs index 6a2cd14d..726f2113 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs @@ -42,6 +42,7 @@ public partial class DataSourceLocalFileDialog : ComponentBase private bool dataUserAcknowledgedCloudEmbedding; private string dataEmbeddingId = string.Empty; private string dataFilePath = string.Empty; + private DataSourceSecurity dataSecurityPolicy; // We get the form reference from Blazor code to validate it manually: private MudForm form = null!; @@ -75,6 +76,7 @@ public partial class DataSourceLocalFileDialog : ComponentBase this.dataName = this.DataSource.Name; this.dataEmbeddingId = this.DataSource.EmbeddingId; this.dataFilePath = this.DataSource.FilePath; + this.dataSecurityPolicy = this.DataSource.SecurityPolicy; } await base.OnInitializedAsync(); @@ -102,6 +104,7 @@ public partial class DataSourceLocalFileDialog : ComponentBase Type = DataSourceType.LOCAL_FILE, EmbeddingId = this.dataEmbeddingId, FilePath = this.dataFilePath, + SecurityPolicy = this.dataSecurityPolicy, }; private async Task Store() diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor index 6fb4b12c..0605ff93 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor @@ -1,3 +1,5 @@ +@using AIStudio.Settings.DataModel + <MudDialog> <DialogContent> <TextInfoLine Icon="@Icons.Material.Filled.Tag" Label="Data source name" Value="@this.DataSource.Name" ClipboardTooltipSubject="the data source name"/> @@ -31,6 +33,7 @@ </MudJustifiedText> } + <TextInfoLines Label="Your security policy" MaxLines="3" Value="@this.DataSource.SecurityPolicy.ToInfoText()" Color="@this.DataSource.SecurityPolicy.GetColor()" ClipboardTooltipSubject="your security policy"/> <TextInfoLine Icon="@Icons.Material.Filled.SquareFoot" Label="File size" Value="@this.FileSize" ClipboardTooltipSubject="the file size"/> </DialogContent> <DialogActions> diff --git a/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs b/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs index 399c9b87..759d9a17 100644 --- a/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs @@ -1,5 +1,6 @@ using AIStudio.Provider; using AIStudio.Settings; +using AIStudio.Tools.Services; using AIStudio.Tools.Validation; using Microsoft.AspNetCore.Components; diff --git a/app/MindWork AI Studio/Dialogs/ProviderDialog.razor.cs b/app/MindWork AI Studio/Dialogs/ProviderDialog.razor.cs index 87e5569e..a721b955 100644 --- a/app/MindWork AI Studio/Dialogs/ProviderDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/ProviderDialog.razor.cs @@ -1,11 +1,11 @@ using AIStudio.Provider; using AIStudio.Settings; +using AIStudio.Tools.Services; using AIStudio.Tools.Validation; using Microsoft.AspNetCore.Components; using Host = AIStudio.Provider.SelfHosted.Host; -using RustService = AIStudio.Tools.RustService; namespace AIStudio.Dialogs; diff --git a/app/MindWork AI Studio/Layout/MainLayout.razor.cs b/app/MindWork AI Studio/Layout/MainLayout.razor.cs index 47a09be7..b302b23e 100644 --- a/app/MindWork AI Studio/Layout/MainLayout.razor.cs +++ b/app/MindWork AI Studio/Layout/MainLayout.razor.cs @@ -8,7 +8,6 @@ using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Routing; using DialogOptions = AIStudio.Dialogs.DialogOptions; -using RustService = AIStudio.Tools.RustService; namespace AIStudio.Layout; diff --git a/app/MindWork AI Studio/Pages/Writer.razor.cs b/app/MindWork AI Studio/Pages/Writer.razor.cs index 60280d1e..7f95d7e3 100644 --- a/app/MindWork AI Studio/Pages/Writer.razor.cs +++ b/app/MindWork AI Studio/Pages/Writer.razor.cs @@ -1,6 +1,7 @@ using AIStudio.Chat; using AIStudio.Components; using AIStudio.Provider; +using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; @@ -14,6 +15,9 @@ public partial class Writer : MSGComponentBase, IAsyncDisposable [Inject] private ILogger<Chat> Logger { get; init; } = null!; + [Inject] + private DataSourceService DataSourceService { get; init; } = null!; + private static readonly Dictionary<string, object?> USER_INPUT_ATTRIBUTES = new(); private readonly Timer typeTimer = new(TimeSpan.FromMilliseconds(1_500)); @@ -139,7 +143,7 @@ public partial class Writer : MSGComponentBase, IAsyncDisposable this.isStreaming = true; this.StateHasChanged(); - await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.SettingsManager, this.providerSettings.Model, lastUserPrompt, this.chatThread); + await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.SettingsManager, this.DataSourceService, this.providerSettings.Model, lastUserPrompt, this.chatThread); this.suggestion = aiText.Text; this.isStreaming = false; diff --git a/app/MindWork AI Studio/Program.cs b/app/MindWork AI Studio/Program.cs index 0844cae7..b18bdd1d 100644 --- a/app/MindWork AI Studio/Program.cs +++ b/app/MindWork AI Studio/Program.cs @@ -115,6 +115,7 @@ internal sealed class Program builder.Services.AddMudMarkdownClipboardService<MarkdownClipboardService>(); builder.Services.AddSingleton<SettingsManager>(); builder.Services.AddSingleton<ThreadSafeRandom>(); + builder.Services.AddSingleton<DataSourceService>(); builder.Services.AddTransient<HTMLParser>(); builder.Services.AddTransient<AgentTextContentCleaner>(); builder.Services.AddHostedService<UpdateService>(); @@ -143,12 +144,18 @@ internal sealed class Program // Execute the builder to get the app: var app = builder.Build(); + // Get a program logger: + var programLogger = app.Services.GetRequiredService<ILogger<Program>>(); + programLogger.LogInformation("Starting the AI Studio server."); + // Initialize the encryption service: + programLogger.LogInformation("Initializing the encryption service."); var encryptionLogger = app.Services.GetRequiredService<ILogger<Encryption>>(); var encryption = new Encryption(encryptionLogger, secretPassword, secretKeySalt); var encryptionInitializer = encryption.Initialize(); // Set the logger for the Rust service: + programLogger.LogInformation("Initializing the Rust service."); var rustLogger = app.Services.GetRequiredService<ILogger<RustService>>(); rust.SetLogger(rustLogger); rust.SetEncryptor(encryption); @@ -156,6 +163,7 @@ internal sealed class Program RUST_SERVICE = rust; ENCRYPTION = encryption; + programLogger.LogInformation("Initialize internal file system."); app.Use(Redirect.HandlerContentAsync); #if DEBUG @@ -175,9 +183,18 @@ internal sealed class Program .AddInteractiveServerRenderMode(); var serverTask = app.RunAsync(); + programLogger.LogInformation("Server was started successfully."); await encryptionInitializer; await rust.AppIsReady(); + programLogger.LogInformation("The AI Studio server is ready."); + + TaskScheduler.UnobservedTaskException += (sender, taskArgs) => + { + programLogger.LogError(taskArgs.Exception, $"Unobserved task exception by sender '{sender ?? "n/a"}'."); + taskArgs.SetObserved(); + }; + await serverTask; } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Provider/BaseProvider.cs b/app/MindWork AI Studio/Provider/BaseProvider.cs index 2899e4f5..3ad4e8f2 100644 --- a/app/MindWork AI Studio/Provider/BaseProvider.cs +++ b/app/MindWork AI Studio/Provider/BaseProvider.cs @@ -4,8 +4,7 @@ using System.Text.Json; using AIStudio.Chat; using AIStudio.Settings; - -using RustService = AIStudio.Tools.RustService; +using AIStudio.Tools.Services; namespace AIStudio.Provider; diff --git a/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs b/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs index 3f6ec933..5a2b8f11 100644 --- a/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs +++ b/app/MindWork AI Studio/Settings/ConfigurationSelectData.cs @@ -94,6 +94,12 @@ public static class ConfigurationSelectDataFactory yield return new(source.GetPreviewDescription(), source); } + public static IEnumerable<ConfigurationSelectData<SendToChatDataSourceBehavior>> GetSendToChatDataSourceBehaviorData() + { + foreach (var behavior in Enum.GetValues<SendToChatDataSourceBehavior>()) + yield return new(behavior.Description(), behavior); + } + public static IEnumerable<ConfigurationSelectData<NavBehavior>> GetNavBehaviorData() { yield return new("Navigation expands on mouse hover", NavBehavior.EXPAND_ON_HOVER); diff --git a/app/MindWork AI Studio/Settings/DataModel/DataChat.cs b/app/MindWork AI Studio/Settings/DataModel/DataChat.cs index 8283150b..baf995fd 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataChat.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataChat.cs @@ -17,6 +17,11 @@ public sealed class DataChat /// </summary> public AddChatProviderBehavior AddChatProviderBehavior { get; set; } = AddChatProviderBehavior.ADDED_CHATS_USE_LATEST_PROVIDER; + /// <summary> + /// Defines the data source behavior when sending assistant results to a chat. + /// </summary> + public SendToChatDataSourceBehavior SendToChatDataSourceBehavior { get; set; } = SendToChatDataSourceBehavior.NO_DATA_SOURCES; + /// <summary> /// Preselect any chat options? /// </summary> @@ -31,6 +36,11 @@ public sealed class DataChat /// Preselect a profile? /// </summary> public string PreselectedProfile { get; set; } = string.Empty; + + /// <summary> + /// Should we preselect data sources options for a created chat? + /// </summary> + public DataSourceOptions PreselectedDataSourceOptions { get; set; } = new(); /// <summary> /// Should we show the latest message after loading? When false, we show the first (aka oldest) message. diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs index addec256..a9931e38 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs @@ -36,4 +36,7 @@ public readonly record struct DataSourceERI_V1 : IERIDataSource /// <inheritdoc /> public string Username { get; init; } = string.Empty; + + /// <inheritdoc /> + public DataSourceSecurity SecurityPolicy { get; init; } = DataSourceSecurity.NOT_SPECIFIED; } \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalDirectory.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalDirectory.cs index 963b9ba1..61c30d93 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalDirectory.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalDirectory.cs @@ -24,6 +24,9 @@ public readonly record struct DataSourceLocalDirectory : IInternalDataSource /// <inheritdoc /> public string EmbeddingId { get; init; } = Guid.Empty.ToString(); + /// <inheritdoc /> + public DataSourceSecurity SecurityPolicy { get; init; } = DataSourceSecurity.NOT_SPECIFIED; + /// <summary> /// The path to the directory. /// </summary> diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalFile.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalFile.cs index a6088190..571fb0a8 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalFile.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalFile.cs @@ -24,6 +24,9 @@ public readonly record struct DataSourceLocalFile : IInternalDataSource /// <inheritdoc /> public string EmbeddingId { get; init; } = Guid.Empty.ToString(); + /// <inheritdoc /> + public DataSourceSecurity SecurityPolicy { get; init; } = DataSourceSecurity.NOT_SPECIFIED; + /// <summary> /// The path to the file. /// </summary> diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceOptions.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceOptions.cs new file mode 100644 index 00000000..1def9887 --- /dev/null +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceOptions.cs @@ -0,0 +1,65 @@ +namespace AIStudio.Settings.DataModel; + +public sealed class DataSourceOptions +{ + /// <summary> + /// Whether data sources are disabled in this context. + /// </summary> + public bool DisableDataSources { get; set; } = true; + + /// <summary> + /// Whether the data sources should be selected automatically. + /// </summary> + /// <remarks> + /// When true, the appropriate data sources for the current prompt are + /// selected automatically. When false, the user has to select the + /// data sources manually. + /// + /// This setting does not affect the selection of the actual data + /// for augmentation. + /// </remarks> + public bool AutomaticDataSourceSelection { get; set; } + + /// <summary> + /// Whether the retrieved data should be validated for the current prompt. + /// </summary> + /// <remarks> + /// When true, the retrieved data is validated against the current prompt. + /// An AI will decide whether the data point is useful for answering the + /// prompt or not. + /// </remarks> + public bool AutomaticValidation { get; set; } + + /// <summary> + /// The preselected data source IDs. When these data sources are available + /// for the selected provider, they are pre-selected. + /// </summary> + public List<string> PreselectedDataSourceIds { get; set; } = []; + + /// <summary> + /// Returns true when data sources are enabled. + /// </summary> + /// <returns>True when data sources are enabled.</returns> + public bool IsEnabled() + { + if(this.DisableDataSources) + return false; + + if(this.AutomaticDataSourceSelection) + return true; + + return this.PreselectedDataSourceIds.Count > 0; + } + + /// <summary> + /// Creates a copy of the current data source options. + /// </summary> + /// <returns>A copy of the current data source options.</returns> + public DataSourceOptions CreateCopy() => new() + { + DisableDataSources = this.DisableDataSources, + AutomaticDataSourceSelection = this.AutomaticDataSourceSelection, + AutomaticValidation = this.AutomaticValidation, + PreselectedDataSourceIds = [..this.PreselectedDataSourceIds], + }; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceSecurity.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceSecurity.cs new file mode 100644 index 00000000..58caf457 --- /dev/null +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceSecurity.cs @@ -0,0 +1,19 @@ +namespace AIStudio.Settings.DataModel; + +public enum DataSourceSecurity +{ + /// <summary> + /// The security of the data source is not specified yet. + /// </summary> + NOT_SPECIFIED, + + /// <summary> + /// This data can be used with any LLM provider. + /// </summary> + ALLOW_ANY, + + /// <summary> + /// This data can only be used for self-hosted LLM providers. + /// </summary> + SELF_HOSTED, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceSecurityExtensions.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceSecurityExtensions.cs new file mode 100644 index 00000000..6e52d0fd --- /dev/null +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceSecurityExtensions.cs @@ -0,0 +1,32 @@ +namespace AIStudio.Settings.DataModel; + +public static class DataSourceSecurityExtensions +{ + public static string ToSelectionText(this DataSourceSecurity security) => security switch + { + DataSourceSecurity.NOT_SPECIFIED => "Please select a security policy", + + DataSourceSecurity.ALLOW_ANY => "This data source can be used with any LLM provider. Your data may be sent to a cloud-based provider.", + DataSourceSecurity.SELF_HOSTED => "This data source can only be used with a self-hosted LLM provider. Your data will not be sent to any cloud-based provider.", + + _ => "Unknown security policy" + }; + + public static string ToInfoText(this DataSourceSecurity security) => security switch + { + DataSourceSecurity.NOT_SPECIFIED => "The security of the data source is not specified yet. You cannot use this data source until you specify a security policy.", + + DataSourceSecurity.ALLOW_ANY => "This data source can be used with any LLM provider. Your data may be sent to a cloud-based provider.", + DataSourceSecurity.SELF_HOSTED => "This data source can only be used with a self-hosted LLM provider. Your data will not be sent to any cloud-based provider.", + + _ => "Unknown security policy" + }; + + public static TextColor GetColor(this DataSourceSecurity security) => security switch + { + DataSourceSecurity.ALLOW_ANY => TextColor.WARN, + DataSourceSecurity.SELF_HOSTED => TextColor.SUCCESS, + + _ => TextColor.ERROR + }; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/PreviewFeatureExtensions.cs b/app/MindWork AI Studio/Settings/DataModel/PreviewFeaturesExtensions.cs similarity index 93% rename from app/MindWork AI Studio/Settings/DataModel/PreviewFeatureExtensions.cs rename to app/MindWork AI Studio/Settings/DataModel/PreviewFeaturesExtensions.cs index a6e6cf0e..133d6538 100644 --- a/app/MindWork AI Studio/Settings/DataModel/PreviewFeatureExtensions.cs +++ b/app/MindWork AI Studio/Settings/DataModel/PreviewFeaturesExtensions.cs @@ -1,6 +1,6 @@ namespace AIStudio.Settings.DataModel; -public static class PreviewFeatureExtensions +public static class PreviewFeaturesExtensions { public static string GetPreviewDescription(this PreviewFeatures feature) => feature switch { diff --git a/app/MindWork AI Studio/Settings/DataModel/SendToChatDataSourceBehavior.cs b/app/MindWork AI Studio/Settings/DataModel/SendToChatDataSourceBehavior.cs new file mode 100644 index 00000000..fcbcaf4b --- /dev/null +++ b/app/MindWork AI Studio/Settings/DataModel/SendToChatDataSourceBehavior.cs @@ -0,0 +1,7 @@ +namespace AIStudio.Settings.DataModel; + +public enum SendToChatDataSourceBehavior +{ + NO_DATA_SOURCES, + APPLY_STANDARD_CHAT_DATA_SOURCE_OPTIONS, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/SendToChatDataSourceBehaviorExtensions.cs b/app/MindWork AI Studio/Settings/DataModel/SendToChatDataSourceBehaviorExtensions.cs new file mode 100644 index 00000000..3894ba2b --- /dev/null +++ b/app/MindWork AI Studio/Settings/DataModel/SendToChatDataSourceBehaviorExtensions.cs @@ -0,0 +1,12 @@ +namespace AIStudio.Settings.DataModel; + +public static class SendToChatDataSourceBehaviorExtensions +{ + public static string Description(this SendToChatDataSourceBehavior behavior) => behavior switch + { + SendToChatDataSourceBehavior.NO_DATA_SOURCES => "Use no data sources, when sending an assistant result to a chat", + SendToChatDataSourceBehavior.APPLY_STANDARD_CHAT_DATA_SOURCE_OPTIONS => "Apply standard chat data source options, when sending an assistant result to a chat", + + _ => "Unknown behavior", + }; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/IDataSource.cs b/app/MindWork AI Studio/Settings/IDataSource.cs index 28bc3b9c..72f4ad3c 100644 --- a/app/MindWork AI Studio/Settings/IDataSource.cs +++ b/app/MindWork AI Studio/Settings/IDataSource.cs @@ -32,4 +32,9 @@ public interface IDataSource /// Which type of data source is this? /// </summary> public DataSourceType Type { get; init; } + + /// <summary> + /// Which data security policy is applied to this data source? + /// </summary> + public DataSourceSecurity SecurityPolicy { get; init; } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/AllowedSelectedDataSources.cs b/app/MindWork AI Studio/Tools/AllowedSelectedDataSources.cs new file mode 100644 index 00000000..1aed9d1c --- /dev/null +++ b/app/MindWork AI Studio/Tools/AllowedSelectedDataSources.cs @@ -0,0 +1,13 @@ +using AIStudio.Settings; + +namespace AIStudio.Tools; + +/// <summary> +/// Contains both the allowed and selected data sources. +/// </summary> +/// <remarks> +/// The selected data sources are a subset of the allowed data sources. +/// </remarks> +/// <param name="AllowedDataSources">The allowed data sources.</param> +/// <param name="SelectedDataSources">The selected data sources, which are a subset of the allowed data sources.</param> +public readonly record struct AllowedSelectedDataSources(IReadOnlyList<IDataSource> AllowedDataSources, IReadOnlyList<IDataSource> SelectedDataSources); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ERIClient/ERIClientV1.cs b/app/MindWork AI Studio/Tools/ERIClient/ERIClientV1.cs index 62e3f556..c57d927a 100644 --- a/app/MindWork AI Studio/Tools/ERIClient/ERIClientV1.cs +++ b/app/MindWork AI Studio/Tools/ERIClient/ERIClientV1.cs @@ -3,6 +3,7 @@ using System.Text.Json; using AIStudio.Settings; using AIStudio.Tools.ERIClient.DataModel; +using AIStudio.Tools.Services; namespace AIStudio.Tools.ERIClient; @@ -12,332 +13,465 @@ public class ERIClientV1(string baseAddress) : ERIClientBase(baseAddress), IERIC public async Task<APIResponse<List<AuthScheme>>> GetAuthMethodsAsync(CancellationToken cancellationToken = default) { - using var response = await this.httpClient.GetAsync("/auth/methods", cancellationToken); - if(!response.IsSuccessStatusCode) + try + { + using var response = await this.httpClient.GetAsync("/auth/methods", cancellationToken); + if (!response.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to retrieve the authentication methods: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + }; + } + + var authMethods = await response.Content.ReadFromJsonAsync<List<AuthScheme>>(JSON_OPTIONS, cancellationToken); + if (authMethods is null) + { + return new() + { + Successful = false, + Message = "Failed to retrieve the authentication methods: the ERI server did not return a valid response." + }; + } + + return new() + { + Successful = true, + Data = authMethods + }; + } + catch (TaskCanceledException) { return new() { Successful = false, - Message = $"Failed to retrieve the authentication methods: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + Message = "Failed to retrieve the authentication methods: the request was canceled either by the user or due to a timeout." }; } - - var authMethods = await response.Content.ReadFromJsonAsync<List<AuthScheme>>(JSON_OPTIONS, cancellationToken); - if(authMethods is null) + catch (Exception e) { return new() { Successful = false, - Message = "Failed to retrieve the authentication methods: the ERI server did not return a valid response." + Message = $"Failed to retrieve the authentication methods due to an exception: {e.Message}" }; } - - return new() - { - Successful = true, - Data = authMethods - }; } public async Task<APIResponse<AuthResponse>> AuthenticateAsync(IERIDataSource dataSource, RustService rustService, CancellationToken cancellationToken = default) { - var authMethod = dataSource.AuthMethod; - var username = dataSource.Username; - switch (dataSource.AuthMethod) + try { - case AuthMethod.NONE: - using (var request = new HttpRequestMessage(HttpMethod.Post, $"auth?authMethod={authMethod}")) - { - using var noneAuthResponse = await this.httpClient.SendAsync(request, cancellationToken); - if(!noneAuthResponse.IsSuccessStatusCode) + var authMethod = dataSource.AuthMethod; + var username = dataSource.Username; + switch (dataSource.AuthMethod) + { + case AuthMethod.NONE: + using (var request = new HttpRequestMessage(HttpMethod.Post, $"auth?authMethod={authMethod}")) { + using var noneAuthResponse = await this.httpClient.SendAsync(request, cancellationToken); + if(!noneAuthResponse.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to authenticate with the ERI server. Code: {noneAuthResponse.StatusCode}, Reason: {noneAuthResponse.ReasonPhrase}" + }; + } + + var noneAuthResult = await noneAuthResponse.Content.ReadFromJsonAsync<AuthResponse>(JSON_OPTIONS, cancellationToken); + if(noneAuthResult == default) + { + return new() + { + Successful = false, + Message = "Failed to authenticate with the ERI server: the response was invalid." + }; + } + + this.securityToken = noneAuthResult.Token ?? string.Empty; return new() { - Successful = false, - Message = $"Failed to authenticate with the ERI server. Code: {noneAuthResponse.StatusCode}, Reason: {noneAuthResponse.ReasonPhrase}" + Successful = true, + Data = noneAuthResult }; } - - var noneAuthResult = await noneAuthResponse.Content.ReadFromJsonAsync<AuthResponse>(JSON_OPTIONS, cancellationToken); - if(noneAuthResult == default) - { - return new() - { - Successful = false, - Message = "Failed to authenticate with the ERI server: the response was invalid." - }; - } - - this.securityToken = noneAuthResult.Token ?? string.Empty; - return new() - { - Successful = true, - Data = noneAuthResult - }; - } - case AuthMethod.USERNAME_PASSWORD: - var passwordResponse = await rustService.GetSecret(dataSource); - if (!passwordResponse.Success) - { - return new() - { - Successful = false, - Message = "Failed to retrieve the password." - }; - } - - var password = await passwordResponse.Secret.Decrypt(Program.ENCRYPTION); - using (var request = new HttpRequestMessage(HttpMethod.Post, $"auth?authMethod={authMethod}")) - { - // We must send both values inside the header. The username field is named 'user'. - // The password field is named 'password'. - request.Headers.Add("user", username); - request.Headers.Add("password", password); - - using var usernamePasswordAuthResponse = await this.httpClient.SendAsync(request, cancellationToken); - if(!usernamePasswordAuthResponse.IsSuccessStatusCode) + case AuthMethod.USERNAME_PASSWORD: + var passwordResponse = await rustService.GetSecret(dataSource); + if (!passwordResponse.Success) { return new() { Successful = false, - Message = $"Failed to authenticate with the ERI server. Code: {usernamePasswordAuthResponse.StatusCode}, Reason: {usernamePasswordAuthResponse.ReasonPhrase}" + Message = "Failed to retrieve the password." }; } - - var usernamePasswordAuthResult = await usernamePasswordAuthResponse.Content.ReadFromJsonAsync<AuthResponse>(JSON_OPTIONS, cancellationToken); - if(usernamePasswordAuthResult == default) - { - return new() - { - Successful = false, - Message = "Failed to authenticate with the server: the response was invalid." - }; - } - - this.securityToken = usernamePasswordAuthResult.Token ?? string.Empty; - return new() - { - Successful = true, - Data = usernamePasswordAuthResult - }; - } - case AuthMethod.TOKEN: - var tokenResponse = await rustService.GetSecret(dataSource); - if (!tokenResponse.Success) - { - return new() + var password = await passwordResponse.Secret.Decrypt(Program.ENCRYPTION); + using (var request = new HttpRequestMessage(HttpMethod.Post, $"auth?authMethod={authMethod}")) { - Successful = false, - Message = "Failed to retrieve the access token." - }; - } + // We must send both values inside the header. The username field is named 'user'. + // The password field is named 'password'. + request.Headers.Add("user", username); + request.Headers.Add("password", password); - var token = await tokenResponse.Secret.Decrypt(Program.ENCRYPTION); - using (var request = new HttpRequestMessage(HttpMethod.Post, $"auth?authMethod={authMethod}")) - { - request.Headers.Add("Authorization", $"Bearer {token}"); + using var usernamePasswordAuthResponse = await this.httpClient.SendAsync(request, cancellationToken); + if(!usernamePasswordAuthResponse.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to authenticate with the ERI server. Code: {usernamePasswordAuthResponse.StatusCode}, Reason: {usernamePasswordAuthResponse.ReasonPhrase}" + }; + } - using var tokenAuthResponse = await this.httpClient.SendAsync(request, cancellationToken); - if(!tokenAuthResponse.IsSuccessStatusCode) + var usernamePasswordAuthResult = await usernamePasswordAuthResponse.Content.ReadFromJsonAsync<AuthResponse>(JSON_OPTIONS, cancellationToken); + if(usernamePasswordAuthResult == default) + { + return new() + { + Successful = false, + Message = "Failed to authenticate with the server: the response was invalid." + }; + } + + this.securityToken = usernamePasswordAuthResult.Token ?? string.Empty; + return new() + { + Successful = true, + Data = usernamePasswordAuthResult + }; + } + + case AuthMethod.TOKEN: + var tokenResponse = await rustService.GetSecret(dataSource); + if (!tokenResponse.Success) { return new() { Successful = false, - Message = $"Failed to authenticate with the ERI server. Code: {tokenAuthResponse.StatusCode}, Reason: {tokenAuthResponse.ReasonPhrase}" + Message = "Failed to retrieve the access token." }; } - - var tokenAuthResult = await tokenAuthResponse.Content.ReadFromJsonAsync<AuthResponse>(JSON_OPTIONS, cancellationToken); - if(tokenAuthResult == default) + + var token = await tokenResponse.Secret.Decrypt(Program.ENCRYPTION); + using (var request = new HttpRequestMessage(HttpMethod.Post, $"auth?authMethod={authMethod}")) { + request.Headers.Add("Authorization", $"Bearer {token}"); + + using var tokenAuthResponse = await this.httpClient.SendAsync(request, cancellationToken); + if(!tokenAuthResponse.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to authenticate with the ERI server. Code: {tokenAuthResponse.StatusCode}, Reason: {tokenAuthResponse.ReasonPhrase}" + }; + } + + var tokenAuthResult = await tokenAuthResponse.Content.ReadFromJsonAsync<AuthResponse>(JSON_OPTIONS, cancellationToken); + if(tokenAuthResult == default) + { + return new() + { + Successful = false, + Message = "Failed to authenticate with the ERI server: the response was invalid." + }; + } + + this.securityToken = tokenAuthResult.Token ?? string.Empty; return new() { - Successful = false, - Message = "Failed to authenticate with the ERI server: the response was invalid." + Successful = true, + Data = tokenAuthResult }; } - - this.securityToken = tokenAuthResult.Token ?? string.Empty; - return new() - { - Successful = true, - Data = tokenAuthResult - }; - } - default: - this.securityToken = string.Empty; - return new() - { - Successful = false, - Message = "The authentication method is not supported yet." - }; + default: + this.securityToken = string.Empty; + return new() + { + Successful = false, + Message = "The authentication method is not supported yet." + }; + } + } + catch(TaskCanceledException) + { + return new() + { + Successful = false, + Message = "Failed to authenticate with the ERI server: the request was canceled either by the user or due to a timeout." + }; + } + catch (Exception e) + { + return new() + { + Successful = false, + Message = $"Failed to authenticate with the ERI server due to an exception: {e.Message}" + }; } } public async Task<APIResponse<DataSourceInfo>> GetDataSourceInfoAsync(CancellationToken cancellationToken = default) { - using var request = new HttpRequestMessage(HttpMethod.Get, "/dataSource"); - request.Headers.Add("token", this.securityToken); + try + { + using var request = new HttpRequestMessage(HttpMethod.Get, "/dataSource"); + request.Headers.Add("token", this.securityToken); - using var response = await this.httpClient.SendAsync(request, cancellationToken); - if(!response.IsSuccessStatusCode) + using var response = await this.httpClient.SendAsync(request, cancellationToken); + if(!response.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to retrieve the data source information: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + }; + } + + var dataSourceInfo = await response.Content.ReadFromJsonAsync<DataSourceInfo>(JSON_OPTIONS, cancellationToken); + if(dataSourceInfo == default) + { + return new() + { + Successful = false, + Message = "Failed to retrieve the data source information: the ERI server did not return a valid response." + }; + } + + return new() + { + Successful = true, + Data = dataSourceInfo + }; + } + catch(TaskCanceledException) { return new() { Successful = false, - Message = $"Failed to retrieve the data source information: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + Message = "Failed to retrieve the data source information: the request was canceled either by the user or due to a timeout." }; } - - var dataSourceInfo = await response.Content.ReadFromJsonAsync<DataSourceInfo>(JSON_OPTIONS, cancellationToken); - if(dataSourceInfo == default) + catch (Exception e) { return new() { Successful = false, - Message = "Failed to retrieve the data source information: the ERI server did not return a valid response." + Message = $"Failed to retrieve the data source information due to an exception: {e.Message}" }; } - - return new() - { - Successful = true, - Data = dataSourceInfo - }; } public async Task<APIResponse<List<EmbeddingInfo>>> GetEmbeddingInfoAsync(CancellationToken cancellationToken = default) { - using var request = new HttpRequestMessage(HttpMethod.Get, "/embedding/info"); - request.Headers.Add("token", this.securityToken); + try + { + using var request = new HttpRequestMessage(HttpMethod.Get, "/embedding/info"); + request.Headers.Add("token", this.securityToken); - using var response = await this.httpClient.SendAsync(request, cancellationToken); - if(!response.IsSuccessStatusCode) + using var response = await this.httpClient.SendAsync(request, cancellationToken); + if(!response.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to retrieve the embedding information: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + }; + } + + var embeddingInfo = await response.Content.ReadFromJsonAsync<List<EmbeddingInfo>>(JSON_OPTIONS, cancellationToken); + if(embeddingInfo is null) + { + return new() + { + Successful = false, + Message = "Failed to retrieve the embedding information: the ERI server did not return a valid response." + }; + } + + return new() + { + Successful = true, + Data = embeddingInfo + }; + } + catch(TaskCanceledException) { return new() { Successful = false, - Message = $"Failed to retrieve the embedding information: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + Message = "Failed to retrieve the embedding information: the request was canceled either by the user or due to a timeout." }; } - - var embeddingInfo = await response.Content.ReadFromJsonAsync<List<EmbeddingInfo>>(JSON_OPTIONS, cancellationToken); - if(embeddingInfo is null) + catch (Exception e) { return new() { Successful = false, - Message = "Failed to retrieve the embedding information: the ERI server did not return a valid response." + Message = $"Failed to retrieve the embedding information due to an exception: {e.Message}" }; } - - return new() - { - Successful = true, - Data = embeddingInfo - }; } public async Task<APIResponse<List<RetrievalInfo>>> GetRetrievalInfoAsync(CancellationToken cancellationToken = default) { - using var request = new HttpRequestMessage(HttpMethod.Get, "/retrieval/info"); - request.Headers.Add("token", this.securityToken); + try + { + using var request = new HttpRequestMessage(HttpMethod.Get, "/retrieval/info"); + request.Headers.Add("token", this.securityToken); - using var response = await this.httpClient.SendAsync(request, cancellationToken); - if(!response.IsSuccessStatusCode) + using var response = await this.httpClient.SendAsync(request, cancellationToken); + if(!response.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to retrieve the retrieval information: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + }; + } + + var retrievalInfo = await response.Content.ReadFromJsonAsync<List<RetrievalInfo>>(JSON_OPTIONS, cancellationToken); + if(retrievalInfo is null) + { + return new() + { + Successful = false, + Message = "Failed to retrieve the retrieval information: the ERI server did not return a valid response." + }; + } + + return new() + { + Successful = true, + Data = retrievalInfo + }; + } + catch(TaskCanceledException) { return new() { Successful = false, - Message = $"Failed to retrieve the retrieval information: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + Message = "Failed to retrieve the retrieval information: the request was canceled either by the user or due to a timeout." }; } - - var retrievalInfo = await response.Content.ReadFromJsonAsync<List<RetrievalInfo>>(JSON_OPTIONS, cancellationToken); - if(retrievalInfo is null) + catch (Exception e) { return new() { Successful = false, - Message = "Failed to retrieve the retrieval information: the ERI server did not return a valid response." + Message = $"Failed to retrieve the retrieval information due to an exception: {e.Message}" }; } - - return new() - { - Successful = true, - Data = retrievalInfo - }; } public async Task<APIResponse<List<Context>>> ExecuteRetrievalAsync(RetrievalRequest request, CancellationToken cancellationToken = default) { - using var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/retrieval"); - requestMessage.Headers.Add("token", this.securityToken); + try + { + using var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/retrieval"); + requestMessage.Headers.Add("token", this.securityToken); - using var content = new StringContent(JsonSerializer.Serialize(request, JSON_OPTIONS), Encoding.UTF8, "application/json"); - requestMessage.Content = content; + using var content = new StringContent(JsonSerializer.Serialize(request, JSON_OPTIONS), Encoding.UTF8, "application/json"); + requestMessage.Content = content; - using var response = await this.httpClient.SendAsync(requestMessage, cancellationToken); - if(!response.IsSuccessStatusCode) + using var response = await this.httpClient.SendAsync(requestMessage, cancellationToken); + if(!response.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to execute the retrieval request: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + }; + } + + var contexts = await response.Content.ReadFromJsonAsync<List<Context>>(JSON_OPTIONS, cancellationToken); + if(contexts is null) + { + return new() + { + Successful = false, + Message = "Failed to execute the retrieval request: the ERI server did not return a valid response." + }; + } + + return new() + { + Successful = true, + Data = contexts + }; + } + catch(TaskCanceledException) { return new() { Successful = false, - Message = $"Failed to execute the retrieval request: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + Message = "Failed to execute the retrieval request: the request was canceled either by the user or due to a timeout." }; } - - var contexts = await response.Content.ReadFromJsonAsync<List<Context>>(JSON_OPTIONS, cancellationToken); - if(contexts is null) + catch (Exception e) { return new() { Successful = false, - Message = "Failed to execute the retrieval request: the ERI server did not return a valid response." + Message = $"Failed to execute the retrieval request due to an exception: {e.Message}" }; } - - return new() - { - Successful = true, - Data = contexts - }; } public async Task<APIResponse<SecurityRequirements>> GetSecurityRequirementsAsync(CancellationToken cancellationToken = default) { - using var request = new HttpRequestMessage(HttpMethod.Get, "/security/requirements"); - request.Headers.Add("token", this.securityToken); + try + { + using var request = new HttpRequestMessage(HttpMethod.Get, "/security/requirements"); + request.Headers.Add("token", this.securityToken); - using var response = await this.httpClient.SendAsync(request, cancellationToken); - if(!response.IsSuccessStatusCode) + using var response = await this.httpClient.SendAsync(request, cancellationToken); + if(!response.IsSuccessStatusCode) + { + return new() + { + Successful = false, + Message = $"Failed to retrieve the security requirements: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + }; + } + + var securityRequirements = await response.Content.ReadFromJsonAsync<SecurityRequirements>(JSON_OPTIONS, cancellationToken); + if(securityRequirements == default) + { + return new() + { + Successful = false, + Message = "Failed to retrieve the security requirements: the ERI server did not return a valid response." + }; + } + + return new() + { + Successful = true, + Data = securityRequirements + }; + } + catch(TaskCanceledException) { return new() { Successful = false, - Message = $"Failed to retrieve the security requirements: there was an issue communicating with the ERI server. Code: {response.StatusCode}, Reason: {response.ReasonPhrase}" + Message = "Failed to retrieve the security requirements: the request was canceled either by the user or due to a timeout." }; } - - var securityRequirements = await response.Content.ReadFromJsonAsync<SecurityRequirements>(JSON_OPTIONS, cancellationToken); - if(securityRequirements == default) + catch (Exception e) { return new() { Successful = false, - Message = "Failed to retrieve the security requirements: the ERI server did not return a valid response." + Message = $"Failed to retrieve the security requirements due to an exception: {e.Message}" }; } - - return new() - { - Successful = true, - Data = securityRequirements - }; } #endregion diff --git a/app/MindWork AI Studio/Tools/ERIClient/IERIClient.cs b/app/MindWork AI Studio/Tools/ERIClient/IERIClient.cs index 9cf27fbf..0408e8d3 100644 --- a/app/MindWork AI Studio/Tools/ERIClient/IERIClient.cs +++ b/app/MindWork AI Studio/Tools/ERIClient/IERIClient.cs @@ -1,5 +1,6 @@ using AIStudio.Settings; using AIStudio.Tools.ERIClient.DataModel; +using AIStudio.Tools.Services; namespace AIStudio.Tools.ERIClient; diff --git a/app/MindWork AI Studio/Tools/Services/DataSourceService.cs b/app/MindWork AI Studio/Tools/Services/DataSourceService.cs new file mode 100644 index 00000000..de593088 --- /dev/null +++ b/app/MindWork AI Studio/Tools/Services/DataSourceService.cs @@ -0,0 +1,209 @@ +using AIStudio.Assistants.ERI; +using AIStudio.Provider; +using AIStudio.Provider.SelfHosted; +using AIStudio.Settings; +using AIStudio.Settings.DataModel; +using AIStudio.Tools.ERIClient; +using AIStudio.Tools.ERIClient.DataModel; + +namespace AIStudio.Tools.Services; + +public sealed class DataSourceService +{ + private readonly RustService rustService; + private readonly SettingsManager settingsManager; + private readonly ILogger<DataSourceService> logger; + + public DataSourceService(SettingsManager settingsManager, ILogger<DataSourceService> logger, RustService rustService) + { + this.logger = logger; + this.rustService = rustService; + this.settingsManager = settingsManager; + + this.logger.LogInformation("The data source service has been initialized."); + } + + /// <summary> + /// Returns a list of data sources that are allowed for the selected LLM provider. + /// It also returns the data sources selected before when they are still allowed. + /// </summary> + /// <param name="selectedLLMProvider">The selected LLM provider.</param> + /// <param name="previousSelectedDataSources">The data sources selected before.</param> + /// <returns>The allowed data sources and the data sources selected before -- when they are still allowed.</returns> + public async Task<AllowedSelectedDataSources> GetDataSources(AIStudio.Settings.Provider selectedLLMProvider, IReadOnlyCollection<IDataSource>? previousSelectedDataSources = null) + { + // + // Case: Somehow the selected LLM provider was not set. The default provider + // does not mean anything. We cannot filter the data sources by any means. + // We return an empty list. Better safe than sorry. + // + if (selectedLLMProvider == default) + { + this.logger.LogWarning("The selected LLM provider is not set. We cannot filter the data sources by any means."); + return new([], []); + } + + return await this.GetDataSources(selectedLLMProvider.IsSelfHosted, previousSelectedDataSources); + } + + /// <summary> + /// Returns a list of data sources that are allowed for the selected LLM provider. + /// It also returns the data sources selected before when they are still allowed. + /// </summary> + /// <param name="selectedLLMProvider">The selected LLM provider.</param> + /// <param name="previousSelectedDataSources">The data sources selected before.</param> + /// <returns>The allowed data sources and the data sources selected before -- when they are still allowed.</returns> + public async Task<AllowedSelectedDataSources> GetDataSources(IProvider selectedLLMProvider, IReadOnlyCollection<IDataSource>? previousSelectedDataSources = null) + { + // + // Case: Somehow the selected LLM provider was not set. The default provider + // does not mean anything. We cannot filter the data sources by any means. + // We return an empty list. Better safe than sorry. + // + if (selectedLLMProvider is NoProvider) + { + this.logger.LogWarning("The selected LLM provider is the default provider. We cannot filter the data sources by any means."); + return new([], []); + } + + return await this.GetDataSources(selectedLLMProvider is ProviderSelfHosted, previousSelectedDataSources); + } + + private async Task<AllowedSelectedDataSources> GetDataSources(bool usingSelfHostedProvider, IReadOnlyCollection<IDataSource>? previousSelectedDataSources = null) + { + var allDataSources = this.settingsManager.ConfigurationData.DataSources; + var filteredDataSources = new List<IDataSource>(allDataSources.Count); + var filteredSelectedDataSources = new List<IDataSource>(previousSelectedDataSources?.Count ?? 0); + var tasks = new List<Task<IDataSource?>>(allDataSources.Count); + + // Start all checks in parallel: + foreach (var source in allDataSources) + tasks.Add(this.CheckOneDataSource(source, usingSelfHostedProvider)); + + // Wait for all checks and collect the results: + foreach (var task in tasks) + { + var source = await task; + if (source is not null) + { + filteredDataSources.Add(source); + if (previousSelectedDataSources is not null && previousSelectedDataSources.Contains(source)) + filteredSelectedDataSources.Add(source); + } + } + + return new(filteredDataSources, filteredSelectedDataSources); + } + + private async Task<IDataSource?> CheckOneDataSource(IDataSource source, bool usingSelfHostedProvider) + { + // + // Unfortunately, we have to live-check any ERI source for its security requirements. + // Because the ERI server operator might change the security requirements at any time. + // + SecurityRequirements? eriSourceRequirements = null; + if (source is DataSourceERI_V1 eriSource) + { + using var cancellationTokenSource = new CancellationTokenSource(TimeSpan.FromSeconds(6)); + using var client = ERIClientFactory.Get(ERIVersion.V1, eriSource); + if(client is null) + { + this.logger.LogError($"Could not create ERI client for source '{source.Name}' (id={source.Id}). We skip this source."); + return null; + } + + this.logger.LogInformation($"Authenticating with ERI source '{source.Name}' (id={source.Id})..."); + var loginResult = await client.AuthenticateAsync(eriSource, this.rustService, cancellationTokenSource.Token); + if (!loginResult.Successful) + { + this.logger.LogWarning($"Authentication with ERI source '{source.Name}' (id={source.Id}) failed. We skip this source. Reason: {loginResult.Message}"); + return null; + } + + this.logger.LogInformation($"Checking security requirements for ERI source '{source.Name}' (id={source.Id})..."); + var securityRequest = await client.GetSecurityRequirementsAsync(cancellationTokenSource.Token); + if (!securityRequest.Successful) + { + this.logger.LogWarning($"Could not retrieve security requirements for ERI source '{source.Name}' (id={source.Id}). We skip this source. Reason: {loginResult.Message}"); + return null; + } + + eriSourceRequirements = securityRequest.Data; + this.logger.LogInformation($"Security requirements for ERI source '{source.Name}' (id={source.Id}) retrieved successfully."); + } + + switch (source.SecurityPolicy) + { + case DataSourceSecurity.ALLOW_ANY: + + // + // Case: The data source allows any provider type. We want to use a self-hosted provider. + // There is no issue with this source. Accept it. + // + if(usingSelfHostedProvider) + return source; + + // + // Case: This is a local data source. When the source allows any provider type, we can use it. + // Accept it. + // + if(eriSourceRequirements is null) + return source; + + // + // Case: The ERI source requires a self-hosted provider. This misconfiguration happens + // when the ERI server operator changes the security requirements. The ERI server + // operator owns the data -- we have to respect their rules. We skip this source. + // + if (eriSourceRequirements is { AllowedProviderType: ProviderType.SELF_HOSTED }) + { + this.logger.LogWarning($"The ERI source '{source.Name}' (id={source.Id}) requires a self-hosted provider. We skip this source."); + return null; + } + + // + // Case: The ERI source allows any provider type. The data source configuration is correct. + // Accept it. + // + if(eriSourceRequirements is { AllowedProviderType: ProviderType.ANY }) + return source; + + // + // Case: Missing rules. We skip this source. Better safe than sorry. + // + this.logger.LogDebug($"The ERI source '{source.Name}' (id={source.Id}) was filtered out due to missing rules."); + return null; + + // + // Case: The data source requires a self-hosted provider. We want to use a self-hosted provider. + // There is no issue with this source. Accept it. + // + case DataSourceSecurity.SELF_HOSTED when usingSelfHostedProvider: + return source; + + // + // Case: The data source requires a self-hosted provider. We want to use a cloud provider. + // We skip this source. + // + case DataSourceSecurity.SELF_HOSTED when !usingSelfHostedProvider: + this.logger.LogWarning($"The data source '{source.Name}' (id={source.Id}) requires a self-hosted provider. We skip this source."); + return null; + + // + // Case: The data source did not specify a security policy. We skip this source. + // Better safe than sorry. + // + case DataSourceSecurity.NOT_SPECIFIED: + this.logger.LogWarning($"The data source '{source.Name}' (id={source.Id}) has no security policy. We skip this source."); + return null; + + // + // Case: Some developer forgot to implement a security policy. We skip this source. + // Better safe than sorry. + // + default: + this.logger.LogWarning($"The data source '{source.Name}' (id={source.Id}) was filtered out due unknown security policy."); + return null; + } + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RustService.APIKeys.cs b/app/MindWork AI Studio/Tools/Services/RustService.APIKeys.cs similarity index 99% rename from app/MindWork AI Studio/Tools/RustService.APIKeys.cs rename to app/MindWork AI Studio/Tools/Services/RustService.APIKeys.cs index 1a3b4af7..7b89fe9a 100644 --- a/app/MindWork AI Studio/Tools/RustService.APIKeys.cs +++ b/app/MindWork AI Studio/Tools/Services/RustService.APIKeys.cs @@ -1,6 +1,6 @@ using AIStudio.Tools.Rust; -namespace AIStudio.Tools; +namespace AIStudio.Tools.Services; public sealed partial class RustService { diff --git a/app/MindWork AI Studio/Tools/RustService.App.cs b/app/MindWork AI Studio/Tools/Services/RustService.App.cs similarity index 99% rename from app/MindWork AI Studio/Tools/RustService.App.cs rename to app/MindWork AI Studio/Tools/Services/RustService.App.cs index ea27f6d0..8671e897 100644 --- a/app/MindWork AI Studio/Tools/RustService.App.cs +++ b/app/MindWork AI Studio/Tools/Services/RustService.App.cs @@ -1,6 +1,6 @@ using System.Security.Cryptography; -namespace AIStudio.Tools; +namespace AIStudio.Tools.Services; public sealed partial class RustService { diff --git a/app/MindWork AI Studio/Tools/RustService.Clipboard.cs b/app/MindWork AI Studio/Tools/Services/RustService.Clipboard.cs similarity index 98% rename from app/MindWork AI Studio/Tools/RustService.Clipboard.cs rename to app/MindWork AI Studio/Tools/Services/RustService.Clipboard.cs index d3e6520a..9a1b6017 100644 --- a/app/MindWork AI Studio/Tools/RustService.Clipboard.cs +++ b/app/MindWork AI Studio/Tools/Services/RustService.Clipboard.cs @@ -1,6 +1,6 @@ using AIStudio.Tools.Rust; -namespace AIStudio.Tools; +namespace AIStudio.Tools.Services; public sealed partial class RustService { diff --git a/app/MindWork AI Studio/Tools/RustService.FileSystem.cs b/app/MindWork AI Studio/Tools/Services/RustService.FileSystem.cs similarity index 97% rename from app/MindWork AI Studio/Tools/RustService.FileSystem.cs rename to app/MindWork AI Studio/Tools/Services/RustService.FileSystem.cs index bd4c26a9..411400f1 100644 --- a/app/MindWork AI Studio/Tools/RustService.FileSystem.cs +++ b/app/MindWork AI Studio/Tools/Services/RustService.FileSystem.cs @@ -1,6 +1,6 @@ using AIStudio.Tools.Rust; -namespace AIStudio.Tools; +namespace AIStudio.Tools.Services; public sealed partial class RustService { diff --git a/app/MindWork AI Studio/Tools/RustService.Secrets.cs b/app/MindWork AI Studio/Tools/Services/RustService.Secrets.cs similarity index 99% rename from app/MindWork AI Studio/Tools/RustService.Secrets.cs rename to app/MindWork AI Studio/Tools/Services/RustService.Secrets.cs index a70a1273..b41806e1 100644 --- a/app/MindWork AI Studio/Tools/RustService.Secrets.cs +++ b/app/MindWork AI Studio/Tools/Services/RustService.Secrets.cs @@ -1,6 +1,6 @@ using AIStudio.Tools.Rust; -namespace AIStudio.Tools; +namespace AIStudio.Tools.Services; public sealed partial class RustService { diff --git a/app/MindWork AI Studio/Tools/RustService.Updates.cs b/app/MindWork AI Studio/Tools/Services/RustService.Updates.cs similarity index 97% rename from app/MindWork AI Studio/Tools/RustService.Updates.cs rename to app/MindWork AI Studio/Tools/Services/RustService.Updates.cs index edb14663..1686b777 100644 --- a/app/MindWork AI Studio/Tools/RustService.Updates.cs +++ b/app/MindWork AI Studio/Tools/Services/RustService.Updates.cs @@ -1,6 +1,6 @@ using AIStudio.Tools.Rust; -namespace AIStudio.Tools; +namespace AIStudio.Tools.Services; public sealed partial class RustService { diff --git a/app/MindWork AI Studio/Tools/RustService.cs b/app/MindWork AI Studio/Tools/Services/RustService.cs similarity index 98% rename from app/MindWork AI Studio/Tools/RustService.cs rename to app/MindWork AI Studio/Tools/Services/RustService.cs index 08d68d31..38fab8cc 100644 --- a/app/MindWork AI Studio/Tools/RustService.cs +++ b/app/MindWork AI Studio/Tools/Services/RustService.cs @@ -3,7 +3,7 @@ using System.Text.Json; // ReSharper disable NotAccessedPositionalProperty.Local -namespace AIStudio.Tools; +namespace AIStudio.Tools.Services; /// <summary> /// Calling Rust functions. diff --git a/app/MindWork AI Studio/Tools/Services/UpdateService.cs b/app/MindWork AI Studio/Tools/Services/UpdateService.cs index bfabc7a0..ecabbd7e 100644 --- a/app/MindWork AI Studio/Tools/Services/UpdateService.cs +++ b/app/MindWork AI Studio/Tools/Services/UpdateService.cs @@ -30,9 +30,15 @@ public sealed class UpdateService : BackgroundService, IMessageBusReceiver protected override async Task ExecuteAsync(CancellationToken stoppingToken) { + // + // Wait until the app is fully initialized. + // while (!stoppingToken.IsCancellationRequested && !IS_INITIALIZED) await Task.Delay(TimeSpan.FromSeconds(3), stoppingToken); + // + // Set the update interval based on the user's settings. + // this.updateInterval = this.settingsManager.ConfigurationData.App.UpdateBehavior switch { UpdateBehavior.NO_CHECK => Timeout.InfiniteTimeSpan, @@ -45,16 +51,35 @@ public sealed class UpdateService : BackgroundService, IMessageBusReceiver _ => TimeSpan.FromHours(1) }; + // + // When the user doesn't want to check for updates, we can + // return early. + // if(this.settingsManager.ConfigurationData.App.UpdateBehavior is UpdateBehavior.NO_CHECK) return; + // + // Check for updates at the beginning. The user aspects this when the app + // is started. + // await this.CheckForUpdate(); + + // + // Start the update loop. This will check for updates based on the + // user's settings. + // while (!stoppingToken.IsCancellationRequested) { await Task.Delay(this.updateInterval, stoppingToken); await this.CheckForUpdate(); } } + + public override async Task StopAsync(CancellationToken cancellationToken) + { + this.messageBus.Unregister(this); + await base.StopAsync(cancellationToken); + } #endregion @@ -79,16 +104,6 @@ public sealed class UpdateService : BackgroundService, IMessageBusReceiver #endregion - #region Overrides of BackgroundService - - public override async Task StopAsync(CancellationToken cancellationToken) - { - this.messageBus.Unregister(this); - await base.StopAsync(cancellationToken); - } - - #endregion - private async Task CheckForUpdate(bool notifyUserWhenNoUpdate = false) { if(!IS_INITIALIZED) diff --git a/app/MindWork AI Studio/Tools/TextColor.cs b/app/MindWork AI Studio/Tools/TextColor.cs new file mode 100644 index 00000000..d7531b56 --- /dev/null +++ b/app/MindWork AI Studio/Tools/TextColor.cs @@ -0,0 +1,11 @@ +namespace AIStudio.Tools; + +public enum TextColor +{ + DEFAULT, + + WARN, + ERROR, + SUCCESS, + INFO, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/TextColorExtensions.cs b/app/MindWork AI Studio/Tools/TextColorExtensions.cs new file mode 100644 index 00000000..eb70213b --- /dev/null +++ b/app/MindWork AI Studio/Tools/TextColorExtensions.cs @@ -0,0 +1,18 @@ +using AIStudio.Settings; + +namespace AIStudio.Tools; + +public static class TextColorExtensions +{ + public static string GetHTMLColor(this TextColor color, SettingsManager settingsManager) => color switch + { + TextColor.DEFAULT => string.Empty, + + TextColor.ERROR => settingsManager.IsDarkMode ? "#ff6c6c" : "#ff0000", + TextColor.WARN => settingsManager.IsDarkMode ? "#c7a009" : "#c7c000", + TextColor.SUCCESS => settingsManager.IsDarkMode ? "#08b342" : "#009933", + TextColor.INFO => settingsManager.IsDarkMode ? "#5279b8" : "#2d67c4", + + _ => string.Empty, + }; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs b/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs index cdd2f131..b3f85426 100644 --- a/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs +++ b/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs @@ -1,3 +1,4 @@ +using AIStudio.Settings.DataModel; using AIStudio.Tools.ERIClient.DataModel; namespace AIStudio.Tools.Validation; @@ -11,6 +12,8 @@ public sealed class DataSourceValidation public Func<IEnumerable<string>> GetUsedDataSourceNames { get; init; } = () => []; public Func<AuthMethod> GetAuthMethod { get; init; } = () => AuthMethod.NONE; + + public Func<SecurityRequirements?> GetSecurityRequirements { get; init; } = () => null; public Func<bool> GetSelectedCloudEmbedding { get; init; } = () => false; @@ -42,6 +45,21 @@ public sealed class DataSourceValidation return null; } + public string? ValidateSecurityPolicy(DataSourceSecurity securityPolicy) + { + if(securityPolicy is DataSourceSecurity.NOT_SPECIFIED) + return "Please select your security policy."; + + var dataSourceSecurity = this.GetSecurityRequirements(); + if (dataSourceSecurity is null) + return null; + + if(dataSourceSecurity.Value.AllowedProviderType is ProviderType.SELF_HOSTED && securityPolicy is not DataSourceSecurity.SELF_HOSTED) + return "This data source can only be used with a self-hosted LLM provider. Please change the security policy."; + + return null; + } + public string? ValidateUsername(string username) { if(this.GetAuthMethod() is not AuthMethod.USERNAME_PASSWORD) diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md index ecb016a3..d13c7687 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md @@ -1 +1,5 @@ # v0.9.29, build 204 (2025-02-xx xx:xx UTC) +- Added the possibility to select data sources for chats. This preview feature is hidden behind the RAG feature flag, check your app options in case you want to enable it. +- Added an option to all data sources to select a local security policy. This preview feature is hidden behind the RAG feature flag. +- Added an option to preselect data sources and options for new chats. This preview feature is hidden behind the RAG feature flag. +- Improved confidence card for small spaces. \ No newline at end of file From 657fda4961f4df3cf1b86f807cee381864f11b95 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 15 Feb 2025 15:53:58 +0100 Subject: [PATCH 024/110] Fixed a bug in which 'APP_SETTINGS' appeared in the "send to" menu (#283) --- app/MindWork AI Studio/Tools/ComponentsExtensions.cs | 1 + app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/MindWork AI Studio/Tools/ComponentsExtensions.cs b/app/MindWork AI Studio/Tools/ComponentsExtensions.cs index 0f8107cc..e0fdfd47 100644 --- a/app/MindWork AI Studio/Tools/ComponentsExtensions.cs +++ b/app/MindWork AI Studio/Tools/ComponentsExtensions.cs @@ -10,6 +10,7 @@ public static class ComponentsExtensions Components.NONE => false, Components.ERI_ASSISTANT => false, Components.BIAS_DAY_ASSISTANT => false, + Components.APP_SETTINGS => false, _ => true, }; diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md index d13c7687..ed82eea3 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md @@ -2,4 +2,5 @@ - Added the possibility to select data sources for chats. This preview feature is hidden behind the RAG feature flag, check your app options in case you want to enable it. - Added an option to all data sources to select a local security policy. This preview feature is hidden behind the RAG feature flag. - Added an option to preselect data sources and options for new chats. This preview feature is hidden behind the RAG feature flag. -- Improved confidence card for small spaces. \ No newline at end of file +- Improved confidence card for small spaces. +- Fixed a bug in which 'APP_SETTINGS' appeared as a valid destination in the "send to" menu. \ No newline at end of file From 98810ce8840b8a5f8b3dd336bc516e63851ec11a Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 17 Feb 2025 12:33:34 +0100 Subject: [PATCH 025/110] Added an agent to select the appropriate data sources for any prompt (#284) --- README.md | 2 +- app/MindWork AI Studio.sln.DotSettings | 2 + app/MindWork AI Studio/Agents/AgentBase.cs | 7 + .../Agents/AgentDataSourceSelection.cs | 416 ++++++++++++++++++ .../Agents/SelectedDataSource.cs | 9 + app/MindWork AI Studio/Chat/ChatThread.cs | 6 + app/MindWork AI Studio/Chat/ContentImage.cs | 58 +++ app/MindWork AI Studio/Chat/ContentText.cs | 146 +++++- .../Components/ChatComponent.razor | 2 +- .../Components/ChatComponent.razor.cs | 12 +- .../Components/DataSourceAgentSelected.cs | 25 ++ .../Components/DataSourceSelection.razor | 62 ++- .../Components/DataSourceSelection.razor.cs | 22 +- ...ettingsPanelAgentDataSourceSelection.razor | 11 + ...ingsPanelAgentDataSourceSelection.razor.cs | 3 + app/MindWork AI Studio/Pages/Settings.razor | 1 + app/MindWork AI Studio/Program.cs | 9 + .../Settings/DataModel/Data.cs | 2 + .../DataModel/DataAgentDataSourceSelection.cs | 14 + .../Settings/DataModel/DataSourceERI_V1.cs | 4 + .../Settings/IERIDataSource.cs | 6 + app/MindWork AI Studio/Tools/Event.cs | 3 + .../wwwroot/changelog/v0.9.29.md | 1 + 23 files changed, 802 insertions(+), 21 deletions(-) create mode 100644 app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs create mode 100644 app/MindWork AI Studio/Agents/SelectedDataSource.cs create mode 100644 app/MindWork AI Studio/Components/DataSourceAgentSelected.cs create mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelAgentDataSourceSelection.razor create mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelAgentDataSourceSelection.razor.cs create mode 100644 app/MindWork AI Studio/Settings/DataModel/DataAgentDataSourceSelection.cs diff --git a/README.md b/README.md index 06469a01..f66f60a4 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Things we are currently working on: - [ ] App: Implement the process to vectorize one local file using embeddings - [ ] Runtime: Integration of the vector database [LanceDB](https://github.com/lancedb/lancedb) - [ ] App: Implement the continuous process of vectorizing data - - [x] ~~App: Define a common retrieval context interface for the integration of RAG processes in chats (PR [#281](https://github.com/MindWorkAI/AI-Studio/pull/281))~~ + - [x] ~~App: Define a common retrieval context interface for the integration of RAG processes in chats (PR [#281](https://github.com/MindWorkAI/AI-Studio/pull/281), [#284](https://github.com/MindWorkAI/AI-Studio/pull/284))~~ - [ ] App: Define a common augmentation interface for the integration of RAG processes in chats - [x] ~~App: Integrate data sources in chats (PR [#282](https://github.com/MindWorkAI/AI-Studio/pull/282))~~ diff --git a/app/MindWork AI Studio.sln.DotSettings b/app/MindWork AI Studio.sln.DotSettings index c9d147b2..3f079302 100644 --- a/app/MindWork AI Studio.sln.DotSettings +++ b/app/MindWork AI Studio.sln.DotSettings @@ -5,6 +5,8 @@ <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LLM/@EntryIndexedValue">LLM</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LM/@EntryIndexedValue">LM</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MSG/@EntryIndexedValue">MSG</s:String> + <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RAG/@EntryIndexedValue">RAG</s:String> + <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UI/@EntryIndexedValue">UI</s:String> <s:Boolean x:Key="/Default/UserDictionary/Words/=groq/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=ollama/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=tauri_0027s/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary> \ No newline at end of file diff --git a/app/MindWork AI Studio/Agents/AgentBase.cs b/app/MindWork AI Studio/Agents/AgentBase.cs index 35c4f39f..53e41529 100644 --- a/app/MindWork AI Studio/Agents/AgentBase.cs +++ b/app/MindWork AI Studio/Agents/AgentBase.cs @@ -1,3 +1,5 @@ +using System.Text.Json; + using AIStudio.Chat; using AIStudio.Provider; using AIStudio.Settings; @@ -9,6 +11,11 @@ namespace AIStudio.Agents; public abstract class AgentBase(ILogger<AgentBase> logger, SettingsManager settingsManager, DataSourceService dataSourceService, ThreadSafeRandom rng) : IAgent { + protected static readonly JsonSerializerOptions JSON_SERIALIZER_OPTIONS = new() + { + PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower, + }; + protected DataSourceService DataSourceService { get; init; } = dataSourceService; protected SettingsManager SettingsManager { get; init; } = settingsManager; diff --git a/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs b/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs new file mode 100644 index 00000000..f42a4764 --- /dev/null +++ b/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs @@ -0,0 +1,416 @@ +using System.Text; +using System.Text.Json; + +using AIStudio.Chat; +using AIStudio.Provider; +using AIStudio.Settings; +using AIStudio.Settings.DataModel; +using AIStudio.Tools.ERIClient; +using AIStudio.Tools.Services; + +namespace AIStudio.Agents; + +public sealed class AgentDataSourceSelection (ILogger<AgentDataSourceSelection> logger, ILogger<AgentBase> baseLogger, SettingsManager settingsManager, DataSourceService dataSourceService, ThreadSafeRandom rng) : AgentBase(baseLogger, settingsManager, dataSourceService, rng) +{ + private static readonly ContentBlock EMPTY_BLOCK = new() + { + Content = null, + ContentType = ContentType.NONE, + Role = ChatRole.AGENT, + Time = DateTimeOffset.UtcNow, + }; + + private readonly List<ContentBlock> answers = new(); + + #region Overrides of AgentBase + + /// <inheritdoc /> + protected override Type Type => Type.SYSTEM; + + /// <inheritdoc /> + public override string Id => "Data Source Selection"; + + /// <inheritdoc /> + protected override string JobDescription => + """ + You receive a system and a user prompt, as well as a list of possible data sources as input. + Your task is to select the appropriate data sources for the given task. You may choose none, + one, or multiple sources, depending on what best fits the system and user prompt. You need + to estimate and assess which source, based on its description, might be helpful in + processing the prompts. + + Your response is a JSON list in the following format: + + ``` + [ + {"id": "The data source ID", "reason": "Why did you choose this source?", "confidence": 0.87}, + {"id": "The data source ID", "reason": "Why did you choose this source?", "confidence": 0.54} + ] + ``` + + You express your confidence as a floating-point number between 0.0 (maximum uncertainty) and + 1.0 (you are absolutely certain that this source is needed). + + The JSON schema is: + + ``` + { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "array", + "items": [ + { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "reason": { + "type": "string" + }, + "confidence": { + "type": "number" + } + }, + "required": [ + "id", + "reason", + "confidence" + ] + } + ] + } + ``` + + When no data source is needed, you return an empty JSON list `[]`. You do not ask any + follow-up questions. You do not address the user. Your response consists solely of + the JSON list. + """; + + /// <inheritdoc /> + protected override string SystemPrompt(string availableDataSources) => $""" + {this.JobDescription} + + {availableDataSources} + """; + + /// <inheritdoc /> + public override Settings.Provider? ProviderSettings { get; set; } + + /// <summary> + /// The data source selection agent does not work with context. Use + /// the process input method instead. + /// </summary> + /// <returns>The chat thread without any changes.</returns> + public override Task<ChatThread> ProcessContext(ChatThread chatThread, IDictionary<string, string> additionalData) => Task.FromResult(chatThread); + + /// <inheritdoc /> + public override async Task<ContentBlock> ProcessInput(ContentBlock input, IDictionary<string, string> additionalData) + { + if (input.Content is not ContentText text) + return EMPTY_BLOCK; + + if(text.InitialRemoteWait || text.IsStreaming) + return EMPTY_BLOCK; + + if(string.IsNullOrWhiteSpace(text.Text)) + return EMPTY_BLOCK; + + if(!additionalData.TryGetValue("availableDataSources", out var availableDataSources) || string.IsNullOrWhiteSpace(availableDataSources)) + return EMPTY_BLOCK; + + var thread = this.CreateChatThread(this.SystemPrompt(availableDataSources)); + var time = this.AddUserRequest(thread, text.Text); + await this.AddAIResponseAsync(thread, time); + + var answer = thread.Blocks[^1]; + + this.answers.Add(answer); + return answer; + } + + // <inheritdoc /> + public override Task<bool> MadeDecision(ContentBlock input) => Task.FromResult(true); + + // <inheritdoc /> + public override IReadOnlyCollection<ContentBlock> GetContext() => []; + + // <inheritdoc /> + public override IReadOnlyCollection<ContentBlock> GetAnswers() => this.answers; + + #endregion + + public async Task<List<SelectedDataSource>> PerformSelectionAsync(IProvider provider, IContent lastPrompt, ChatThread chatThread, AllowedSelectedDataSources dataSources, CancellationToken token = default) + { + logger.LogInformation("The AI should select the appropriate data sources."); + + // + // 1. Which LLM provider should the agent use? + // + + // We start with the provider currently selected by the user: + var agentProvider = this.SettingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == provider.Id); + + // If the user preselected an agent provider, we try to use this one: + if (this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectAgentOptions) + { + var configuredAgentProvider = this.SettingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectedAgentProvider); + + // If the configured agent provider is available, we use it: + if (configuredAgentProvider != default) + agentProvider = configuredAgentProvider; + } + + // Assign the provider settings to the agent: + logger.LogInformation($"The agent for the data source selection uses the provider '{agentProvider.InstanceName}' ({agentProvider.UsedLLMProvider.ToName()}, confidence={agentProvider.UsedLLMProvider.GetConfidence(this.SettingsManager).Level.GetName()})."); + this.ProviderSettings = agentProvider; + + // + // 2. Prepare the current system and user prompts as input for the agent: + // + var lastPromptContent = lastPrompt switch + { + ContentText text => text.Text, + + // Image prompts may be empty, e.g., when the image is too large: + ContentImage image => await image.AsBase64(token), + + // Other content types are not supported yet: + _ => string.Empty, + }; + + if (string.IsNullOrWhiteSpace(lastPromptContent)) + { + logger.LogWarning("The last prompt is empty. The AI cannot select data sources."); + return []; + } + + // + // 3. Prepare the allowed data sources as input for the agent: + // + var additionalData = new Dictionary<string, string>(); + logger.LogInformation("Preparing the list of allowed data sources for the agent to choose from."); + + // Notice: We do not dispose the Rust service here. The Rust service is a singleton + // and will be disposed when the application shuts down: + var rustService = Program.SERVICE_PROVIDER.GetService<RustService>()!; + + var sb = new StringBuilder(); + sb.AppendLine("The following data sources are available for selection:"); + foreach (var ds in dataSources.AllowedDataSources) + { + switch (ds) + { + case DataSourceLocalDirectory localDirectory: + sb.AppendLine($"- Id={ds.Id}, name='{localDirectory.Name}', type=local directory, path='{localDirectory.Path}'"); + break; + + case DataSourceLocalFile localFile: + sb.AppendLine($"- Id={ds.Id}, name='{localFile.Name}', type=local file, path='{localFile.FilePath}'"); + break; + + case IERIDataSource eriDataSource: + var eriServerDescription = string.Empty; + + try + { + // + // Call the ERI server to get the server description: + // + using var eriClient = ERIClientFactory.Get(eriDataSource.Version, eriDataSource)!; + var authResponse = await eriClient.AuthenticateAsync(eriDataSource, rustService, token); + if (authResponse.Successful) + { + var serverDescriptionResponse = await eriClient.GetDataSourceInfoAsync(token); + if (serverDescriptionResponse.Successful) + { + eriServerDescription = serverDescriptionResponse.Data.Description; + + // Remove all line breaks from the description: + eriServerDescription = eriServerDescription.Replace("\n", " ").Replace("\r", " "); + } + else + logger.LogWarning($"Was not able to retrieve the server description from the ERI data source '{eriDataSource.Name}'. Message: {serverDescriptionResponse.Message}"); + } + else + logger.LogWarning($"Was not able to authenticate with the ERI data source '{eriDataSource.Name}'. Message: {authResponse.Message}"); + } + catch (Exception e) + { + logger.LogWarning($"The ERI data source '{eriDataSource.Name}' is not available. Thus, we cannot retrieve the server description. Error: {e.Message}"); + } + + // + // Append the ERI data source to the list. Use the server description if available: + // + if (string.IsNullOrWhiteSpace(eriServerDescription)) + sb.AppendLine($"- Id={ds.Id}, name='{eriDataSource.Name}', type=external data source"); + else + sb.AppendLine($"- Id={ds.Id}, name='{eriDataSource.Name}', type=external data source, description='{eriServerDescription}'"); + + break; + } + } + + logger.LogInformation("Prepared the list of allowed data sources for the agent."); + additionalData.Add("availableDataSources", sb.ToString()); + + // + // 4. Let the agent select the data sources: + // + var prompt = $""" + The system prompt is: + + ``` + {chatThread.SystemPrompt} + ``` + + The user prompt is: + + ``` + {lastPromptContent} + ``` + """; + + // Call the agent: + var aiResponse = await this.ProcessInput(new ContentBlock + { + Time = DateTimeOffset.UtcNow, + ContentType = ContentType.TEXT, + Role = ChatRole.USER, + Content = new ContentText + { + Text = prompt, + }, + }, additionalData); + + if(aiResponse.Content is null) + { + logger.LogWarning("The agent did not return a response."); + return []; + } + + switch (aiResponse) + { + + // + // 5. Parse the agent response: + // + case { ContentType: ContentType.TEXT, Content: ContentText textContent }: + { + // + // What we expect is a JSON list of SelectedDataSource objects: + // + var selectedDataSourcesJson = textContent.Text; + + // + // We know how bad LLM may be in generating JSON without surrounding text. + // Thus, we expect the worst and try to extract the JSON list from the text: + // + var json = this.ExtractJson(selectedDataSourcesJson); + + try + { + var aiSelectedDataSources = JsonSerializer.Deserialize<List<SelectedDataSource>>(json, JSON_SERIALIZER_OPTIONS); + return aiSelectedDataSources ?? []; + } + catch + { + logger.LogWarning("The agent answered with an invalid or unexpected JSON format."); + return []; + } + } + + case { ContentType: ContentType.TEXT }: + logger.LogWarning("The agent answered with an unexpected inner content type."); + return []; + + case { ContentType: ContentType.NONE }: + logger.LogWarning("The agent did not return a response."); + return []; + + default: + logger.LogWarning($"The agent answered with an unexpected content type '{aiResponse.ContentType}'."); + return []; + } + } + + /// <summary> + /// Extracts the JSON list from the given text. The text may contain additional + /// information around the JSON list. The method tries to extract the JSON list + /// from the text. + /// </summary> + /// <remarks> + /// Algorithm: The method searches for the first line that contains only a '[' character. + /// Then, it searches for the first line that contains only a ']' character. The method + /// returns the text between these two lines (including the brackets). When the method + /// cannot find the JSON list, it returns an empty string. + /// <br/><br/> + /// This overload is using strings instead of spans. We can use this overload in any + /// async method. Thus, it is a wrapper around the span-based method. Yes, we are losing + /// the memory efficiency of the span-based method, but we still gain the performance + /// of the span-based method: the entire search algorithm is span-based. + /// </remarks> + /// <param name="text">The text that may contain the JSON list.</param> + /// <returns>The extracted JSON list.</returns> + private string ExtractJson(string text) => ExtractJson(text.AsSpan()).ToString(); + + /// <summary> + /// Extracts the JSON list from the given text. The text may contain additional + /// information around the JSON list. The method tries to extract the JSON list + /// from the text. + /// </summary> + /// <remarks> + /// Algorithm: The method searches for the first line that contains only a '[' character. + /// Then, it searches for the first line that contains only a ']' character. The method + /// returns the text between these two lines (including the brackets). When the method + /// cannot find the JSON list, it returns an empty string. + /// </remarks> + /// <param name="text">The text that may contain the JSON list.</param> + /// <returns>The extracted JSON list.</returns> + private static ReadOnlySpan<char> ExtractJson(ReadOnlySpan<char> text) + { + var startIndex = -1; + var endIndex = -1; + var foundStart = false; + var foundEnd = false; + var lineStart = 0; + + for (var i = 0; i <= text.Length; i++) + { + // Handle the end of the line or the end of the text: + if (i == text.Length || text[i] == '\n') + { + if (IsCharacterAloneInLine(text, lineStart, i, '[') && !foundStart) + { + startIndex = lineStart; + foundStart = true; + } + else if (IsCharacterAloneInLine(text, lineStart, i, ']') && foundStart && !foundEnd) + { + endIndex = i; + foundEnd = true; + break; + } + + lineStart = i + 1; + } + } + + if (foundStart && foundEnd) + { + // Adjust endIndex for slicing, ensuring it's within bounds: + return text.Slice(startIndex, Math.Min(text.Length, endIndex + 1) - startIndex); + } + + return ReadOnlySpan<char>.Empty; + } + + private static bool IsCharacterAloneInLine(ReadOnlySpan<char> text, int lineStart, int lineEnd, char character) + { + for (var i = lineStart; i < lineEnd; i++) + if (!char.IsWhiteSpace(text[i]) && text[i] != character) + return false; + + return true; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Agents/SelectedDataSource.cs b/app/MindWork AI Studio/Agents/SelectedDataSource.cs new file mode 100644 index 00000000..c8b7192d --- /dev/null +++ b/app/MindWork AI Studio/Agents/SelectedDataSource.cs @@ -0,0 +1,9 @@ +namespace AIStudio.Agents; + +/// <summary> +/// Represents a selected data source, chosen by the agent. +/// </summary> +/// <param name="Id">The data source ID.</param> +/// <param name="Reason">The reason for selecting the data source.</param> +/// <param name="Confidence">The confidence of the agent in the selection.</param> +public readonly record struct SelectedDataSource(string Id, string Reason, float Confidence); \ No newline at end of file diff --git a/app/MindWork AI Studio/Chat/ChatThread.cs b/app/MindWork AI Studio/Chat/ChatThread.cs index 3e41161c..7709db7e 100644 --- a/app/MindWork AI Studio/Chat/ChatThread.cs +++ b/app/MindWork AI Studio/Chat/ChatThread.cs @@ -1,3 +1,4 @@ +using AIStudio.Components; using AIStudio.Settings; using AIStudio.Settings.DataModel; @@ -33,6 +34,11 @@ public sealed record ChatThread /// </summary> public DataSourceOptions DataSourceOptions { get; set; } = new(); + /// <summary> + /// The AI-selected data sources for this chat thread. + /// </summary> + public IReadOnlyList<DataSourceAgentSelected> AISelectedDataSources { get; set; } = []; + /// <summary> /// The name of the chat thread. Usually generated by an AI model or manually edited by the user. /// </summary> diff --git a/app/MindWork AI Studio/Chat/ContentImage.cs b/app/MindWork AI Studio/Chat/ContentImage.cs index 0d831453..4e108df4 100644 --- a/app/MindWork AI Studio/Chat/ContentImage.cs +++ b/app/MindWork AI Studio/Chat/ContentImage.cs @@ -49,4 +49,62 @@ public sealed class ContentImage : IContent /// The image source. /// </summary> public required string Source { get; set; } + + /// <summary> + /// Read the image content as a base64 string. + /// </summary> + /// <remarks> + /// The images are directly converted to base64 strings. The maximum + /// size of the image is around 10 MB. If the image is larger, the method + /// returns an empty string. + /// + /// As of now, this method does no sort of image processing. LLMs usually + /// do not work with arbitrary image sizes. In the future, we might have + /// to resize the images before sending them to the model. + /// </remarks> + /// <param name="token">The cancellation token.</param> + /// <returns>The image content as a base64 string; might be empty.</returns> + public async Task<string> AsBase64(CancellationToken token = default) + { + switch (this.SourceType) + { + case ContentImageSource.BASE64: + return this.Source; + + case ContentImageSource.URL: + { + using var httpClient = new HttpClient(); + using var response = await httpClient.GetAsync(this.Source, HttpCompletionOption.ResponseHeadersRead, token); + if(response.IsSuccessStatusCode) + { + // Read the length of the content: + var lengthBytes = response.Content.Headers.ContentLength; + if(lengthBytes > 10_000_000) + return string.Empty; + + var bytes = await response.Content.ReadAsByteArrayAsync(token); + return Convert.ToBase64String(bytes); + } + + return string.Empty; + } + + case ContentImageSource.LOCAL_PATH: + if(File.Exists(this.Source)) + { + // Read the content length: + var length = new FileInfo(this.Source).Length; + if(length > 10_000_000) + return string.Empty; + + var bytes = await File.ReadAllBytesAsync(this.Source, token); + return Convert.ToBase64String(bytes); + } + + return string.Empty; + + default: + return string.Empty; + } + } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Chat/ContentText.cs b/app/MindWork AI Studio/Chat/ContentText.cs index 19928b43..c3b4625a 100644 --- a/app/MindWork AI Studio/Chat/ContentText.cs +++ b/app/MindWork AI Studio/Chat/ContentText.cs @@ -1,5 +1,7 @@ using System.Text.Json.Serialization; +using AIStudio.Agents; +using AIStudio.Components; using AIStudio.Provider; using AIStudio.Settings; using AIStudio.Tools.Services; @@ -41,11 +43,19 @@ public sealed class ContentText : IContent if(chatThread is null) return; + var logger = Program.SERVICE_PROVIDER.GetService<ILogger<ContentText>>()!; + // - // Check if the user wants to bind any data sources to the chat: + // 1. Check if the user wants to bind any data sources to the chat: // - if (chatThread.DataSourceOptions.IsEnabled()) + if (chatThread.DataSourceOptions.IsEnabled() && lastPrompt is not null) { + logger.LogInformation("Data sources are enabled for this chat."); + + // Across the different code-branches, we keep track of whether it + // makes sense to proceed with the RAG process: + var proceedWithRAG = true; + // // When the user wants to bind data sources to the chat, we // have to check if the data sources are available for the @@ -61,18 +71,146 @@ public sealed class ContentText : IContent // if (chatThread.DataSourceOptions.AutomaticDataSourceSelection) { - // TODO: Start agent based on allowed data sources. + // Get the agent for the data source selection: + var selectionAgent = Program.SERVICE_PROVIDER.GetService<AgentDataSourceSelection>()!; + + // Let the AI agent do its work: + IReadOnlyList<DataSourceAgentSelected> finalAISelection = []; + var aiSelectedDataSources = await selectionAgent.PerformSelectionAsync(provider, lastPrompt, chatThread, dataSources, token); + + // Check if the AI selected any data sources: + if(aiSelectedDataSources.Count is 0) + { + logger.LogWarning("The AI did not select any data sources. The RAG process is skipped."); + proceedWithRAG = false; + + // Send the selected data sources to the data source selection component. + // Then, the user can see which data sources were selected by the AI. + await MessageBus.INSTANCE.SendMessage(null, Event.RAG_AUTO_DATA_SOURCES_SELECTED, finalAISelection); + chatThread.AISelectedDataSources = finalAISelection; + } + else + { + // Log the selected data sources: + var selectedDataSourceInfo = aiSelectedDataSources.Select(ds => $"[Id={ds.Id}, reason={ds.Reason}, confidence={ds.Confidence}]").Aggregate((a, b) => $"'{a}', '{b}'"); + logger.LogInformation($"The AI selected the data sources automatically. {aiSelectedDataSources.Count} data source(s) are selected: {selectedDataSourceInfo}."); + + // + // Check how many data sources were hallucinated by the AI: + // + var totalAISelectedDataSources = aiSelectedDataSources.Count; + + // Filter out the data sources that are not available: + aiSelectedDataSources = aiSelectedDataSources.Where(x => settings.ConfigurationData.DataSources.FirstOrDefault(ds => ds.Id == x.Id) is not null).ToList(); + + // Store the real AI-selected data sources: + finalAISelection = aiSelectedDataSources.Select(x => new DataSourceAgentSelected { DataSource = settings.ConfigurationData.DataSources.First(ds => ds.Id == x.Id), AIDecision = x, Selected = false }).ToList(); + + var numHallucinatedSources = totalAISelectedDataSources - aiSelectedDataSources.Count; + if(numHallucinatedSources > 0) + logger.LogWarning($"The AI hallucinated {numHallucinatedSources} data source(s). We ignore them."); + + if (aiSelectedDataSources.Count > 3) + { + // + // We have more than 3 data sources. Let's filter by confidence. + // In order to do that, we must identify the lower and upper + // bounds of the confidence interval: + // + var confidenceValues = aiSelectedDataSources.Select(x => x.Confidence).ToList(); + var lowerBound = confidenceValues.Min(); + var upperBound = confidenceValues.Max(); + + // + // Next, we search for a threshold so that we have between 2 and 3 + // data sources. When not possible, we take all data sources. + // + var threshold = 0.0f; + + // Check the case where the confidence values are too close: + if (upperBound - lowerBound >= 0.01) + { + var previousThreshold = 0.0f; + for (var i = 0; i < 10; i++) + { + threshold = lowerBound + (upperBound - lowerBound) * i / 10; + var numMatches = aiSelectedDataSources.Count(x => x.Confidence >= threshold); + if (numMatches <= 1) + { + threshold = previousThreshold; + break; + } + + if (numMatches is <= 3 and >= 2) + break; + + previousThreshold = threshold; + } + } + + // + // Filter the data sources by the threshold: + // + aiSelectedDataSources = aiSelectedDataSources.Where(x => x.Confidence >= threshold).ToList(); + foreach (var dataSource in finalAISelection) + if(aiSelectedDataSources.Any(x => x.Id == dataSource.DataSource.Id)) + dataSource.Selected = true; + + logger.LogInformation($"The AI selected {aiSelectedDataSources.Count} data source(s) with a confidence of at least {threshold}."); + + // Transform the final data sources to the actual data sources: + selectedDataSources = aiSelectedDataSources.Select(x => settings.ConfigurationData.DataSources.FirstOrDefault(ds => ds.Id == x.Id)).Where(ds => ds is not null).ToList()!; + } + + // We have max. 3 data sources. We take all of them: + else + { + // Transform the selected data sources to the actual data sources: + selectedDataSources = aiSelectedDataSources.Select(x => settings.ConfigurationData.DataSources.FirstOrDefault(ds => ds.Id == x.Id)).Where(ds => ds is not null).ToList()!; + + // Mark the data sources as selected: + foreach (var dataSource in finalAISelection) + dataSource.Selected = true; + } + + // Send the selected data sources to the data source selection component. + // Then, the user can see which data sources were selected by the AI. + await MessageBus.INSTANCE.SendMessage(null, Event.RAG_AUTO_DATA_SOURCES_SELECTED, finalAISelection); + chatThread.AISelectedDataSources = finalAISelection; + } + } + else + { + // + // No, the user made the choice manually: + // + var selectedDataSourceInfo = selectedDataSources.Select(ds => ds.Name).Aggregate((a, b) => $"'{a}', '{b}'"); + logger.LogInformation($"The user selected the data sources manually. {selectedDataSources.Count} data source(s) are selected: {selectedDataSourceInfo}."); } + if(selectedDataSources.Count == 0) + { + logger.LogWarning("No data sources are selected. The RAG process is skipped."); + proceedWithRAG = false; + } + // // Trigger the retrieval part of the (R)AG process: // + if (proceedWithRAG) + { + + } // // Perform the augmentation of the R(A)G process: // + if (proceedWithRAG) + { + + } } - + // Store the last time we got a response. We use this later // to determine whether we should notify the UI about the // new content or not. Depends on the energy saving mode diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor b/app/MindWork AI Studio/Components/ChatComponent.razor index 2ae6eb2a..06dd07b2 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor +++ b/app/MindWork AI Studio/Components/ChatComponent.razor @@ -111,7 +111,7 @@ @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) { - <DataSourceSelection @ref="@this.dataSourceSelectionComponent" PopoverTriggerMode="PopoverTriggerMode.BUTTON" PopoverButtonClasses="ma-3" LLMProvider="@this.Provider" DataSourceOptions="@this.GetCurrentDataSourceOptions()" DataSourceOptionsChanged="@(async options => await this.SetCurrentDataSourceOptions(options))"/> + <DataSourceSelection @ref="@this.dataSourceSelectionComponent" PopoverTriggerMode="PopoverTriggerMode.BUTTON" PopoverButtonClasses="ma-3" LLMProvider="@this.Provider" DataSourceOptions="@this.GetCurrentDataSourceOptions()" DataSourceOptionsChanged="@(async options => await this.SetCurrentDataSourceOptions(options))" DataSourcesAISelected="@this.GetAgentSelectedDataSources()"/> } </MudToolBar> </FooterContent> diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor.cs b/app/MindWork AI Studio/Components/ChatComponent.razor.cs index 10b8bd79..7a25680b 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor.cs +++ b/app/MindWork AI Studio/Components/ChatComponent.razor.cs @@ -305,6 +305,14 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable await this.ChatThreadChanged.InvokeAsync(this.ChatThread); } + private IReadOnlyList<DataSourceAgentSelected> GetAgentSelectedDataSources() + { + if (this.ChatThread is null) + return []; + + return this.ChatThread.AISelectedDataSources; + } + private DataSourceOptions GetCurrentDataSourceOptions() { if (this.ChatThread is not null) @@ -481,6 +489,8 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable // Disable the stream state: this.isStreaming = false; + + // Update the UI: this.StateHasChanged(); } @@ -674,7 +684,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable this.currentWorkspaceId = this.ChatThread.WorkspaceId; this.currentWorkspaceName = await WorkspaceBehaviour.LoadWorkspaceName(this.ChatThread.WorkspaceId); this.WorkspaceName(this.currentWorkspaceName); - this.dataSourceSelectionComponent?.ChangeOptionWithoutSaving(this.ChatThread.DataSourceOptions); + this.dataSourceSelectionComponent?.ChangeOptionWithoutSaving(this.ChatThread.DataSourceOptions, this.ChatThread.AISelectedDataSources); } else { diff --git a/app/MindWork AI Studio/Components/DataSourceAgentSelected.cs b/app/MindWork AI Studio/Components/DataSourceAgentSelected.cs new file mode 100644 index 00000000..5108596b --- /dev/null +++ b/app/MindWork AI Studio/Components/DataSourceAgentSelected.cs @@ -0,0 +1,25 @@ +using AIStudio.Agents; +using AIStudio.Settings; + +namespace AIStudio.Components; + +/// <summary> +/// A data structure to combine the data source and the underlying AI decision. +/// </summary> +public sealed class DataSourceAgentSelected +{ + /// <summary> + /// The data source. + /// </summary> + public required IDataSource DataSource { get; set; } + + /// <summary> + /// The AI decision, which led to the selection of the data source. + /// </summary> + public required SelectedDataSource AIDecision { get; set; } + + /// <summary> + /// Indicates whether the data source is part of the final selection for the RAG process. + /// </summary> + public bool Selected { get; set; } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/DataSourceSelection.razor b/app/MindWork AI Studio/Components/DataSourceSelection.razor index f9dff17b..08160443 100644 --- a/app/MindWork AI Studio/Components/DataSourceSelection.razor +++ b/app/MindWork AI Studio/Components/DataSourceSelection.razor @@ -24,7 +24,7 @@ <MudText Typo="Typo.h5">Data Source Selection</MudText> </CardHeaderContent> </MudCardHeader> - <MudCardContent Style="max-height: 60vh; overflow: auto;"> + <MudCardContent Style="min-width: 24em; max-height: 60vh; max-width: 45vw; overflow: auto;"> @if (this.waitingForDataSources) { <MudSkeleton Width="30%" Height="42px;"/> @@ -38,16 +38,54 @@ { <MudTextSwitch Label="AI-based data source selection" Value="@this.aiBasedSourceSelection" LabelOn="Yes, let the AI decide which data sources are needed." LabelOff="No, I manually decide which data source to use." ValueChanged="@this.AutoModeChanged"/> <MudTextSwitch Label="AI-based data validation" Value="@this.aiBasedValidation" LabelOn="Yes, let the AI validate & filter the retrieved data." LabelOff="No, use all data retrieved from the data sources." ValueChanged="@this.ValidationModeChanged"/> - <MudField Label="Available Data Sources" Variant="Variant.Outlined" Class="mb-3" Disabled="@this.aiBasedSourceSelection"> - <MudList T="IDataSource" SelectionMode="MudBlazor.SelectionMode.MultiSelection" @bind-SelectedValues:get="@this.selectedDataSources" @bind-SelectedValues:set="@(x => this.SelectionChanged(x))" Style="max-height: 14em;"> - @foreach (var source in this.availableDataSources) - { - <MudListItem Value="@source"> - @source.Name - </MudListItem> - } - </MudList> - </MudField> + + @if (this.aiBasedSourceSelection is false || this.DataSourcesAISelected.Count == 0) + { + <MudField Label="Available Data Sources" Variant="Variant.Outlined" Class="mb-3" Disabled="@this.aiBasedSourceSelection"> + <MudList T="IDataSource" SelectionMode="@this.GetListSelectionMode()" @bind-SelectedValues:get="@this.selectedDataSources" @bind-SelectedValues:set="@(x => this.SelectionChanged(x))" Style="max-height: 14em;"> + @foreach (var source in this.availableDataSources) + { + <MudListItem Value="@source"> + @source.Name + </MudListItem> + } + </MudList> + </MudField> + } + else + { + <MudExpansionPanels MultiExpansion="@false" Class="mt-3" Style="max-height: 14em;"> + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.TouchApp" HeaderText="Available Data Sources"> + <MudList T="IDataSource" SelectionMode="MudBlazor.SelectionMode.SingleSelection" SelectedValues="@this.selectedDataSources" Style="max-height: 14em;"> + @foreach (var source in this.availableDataSources) + { + <MudListItem Value="@source"> + @source.Name + </MudListItem> + } + </MudList> + </ExpansionPanel> + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Filter" HeaderText="AI-Selected Data Sources"> + <MudList T="DataSourceAgentSelected" SelectionMode="MudBlazor.SelectionMode.MultiSelection" ReadOnly="@true" SelectedValues="@this.GetSelectedDataSourcesWithAI()" Style="max-height: 14em;"> + @foreach (var source in this.DataSourcesAISelected) + { + <MudListItem Value="@source"> + <ChildContent> + <MudText Typo="Typo.body1"> + @source.DataSource.Name + </MudText> + + <MudProgressLinear Color="Color.Info" Min="0" Max="1" Value="@source.AIDecision.Confidence"/> + <MudJustifiedText Typo="Typo.body2"> + @this.GetAIReasoning(source) + </MudJustifiedText> + </ChildContent> + </MudListItem> + } + </MudList> + </ExpansionPanel> + </MudExpansionPanels> + } } } </MudCardContent> @@ -79,7 +117,7 @@ else if (this.SelectionMode is DataSourceSelectionMode.CONFIGURATION_MODE) <MudTextSwitch Label="AI-based data source selection" Value="@this.aiBasedSourceSelection" LabelOn="Yes, let the AI decide which data sources are needed." LabelOff="No, I manually decide which data source to use." ValueChanged="@this.AutoModeChanged"/> <MudTextSwitch Label="AI-based data validation" Value="@this.aiBasedValidation" LabelOn="Yes, let the AI validate & filter the retrieved data." LabelOff="No, use all data retrieved from the data sources." ValueChanged="@this.ValidationModeChanged"/> <MudField Label="Available Data Sources" Variant="Variant.Outlined" Class="mb-3" Disabled="@this.aiBasedSourceSelection"> - <MudList T="IDataSource" SelectionMode="MudBlazor.SelectionMode.MultiSelection" @bind-SelectedValues:get="@this.selectedDataSources" @bind-SelectedValues:set="@(x => this.SelectionChanged(x))"> + <MudList T="IDataSource" SelectionMode="@this.GetListSelectionMode()" @bind-SelectedValues:get="@this.selectedDataSources" @bind-SelectedValues:set="@(x => this.SelectionChanged(x))"> @foreach (var source in this.availableDataSources) { <MudListItem Value="@source"> diff --git a/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs b/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs index 7b75bbd4..73796d6e 100644 --- a/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs +++ b/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs @@ -25,6 +25,9 @@ public partial class DataSourceSelection : ComponentBase, IMessageBusReceiver, I [Parameter] public EventCallback<DataSourceOptions> DataSourceOptionsChanged { get; set; } + + [Parameter] + public IReadOnlyList<DataSourceAgentSelected> DataSourcesAISelected { get; set; } = []; [Parameter] public string ConfigurationHeaderMessage { get; set; } = string.Empty; @@ -58,7 +61,7 @@ public partial class DataSourceSelection : ComponentBase, IMessageBusReceiver, I protected override async Task OnInitializedAsync() { this.MessageBus.RegisterComponent(this); - this.MessageBus.ApplyFilters(this, [], [ Event.COLOR_THEME_CHANGED ]); + this.MessageBus.ApplyFilters(this, [], [ Event.COLOR_THEME_CHANGED, Event.RAG_AUTO_DATA_SOURCES_SELECTED ]); // // Load the settings: @@ -129,9 +132,17 @@ public partial class DataSourceSelection : ComponentBase, IMessageBusReceiver, I #endregion - public void ChangeOptionWithoutSaving(DataSourceOptions options) + private SelectionMode GetListSelectionMode() => this.aiBasedSourceSelection ? MudBlazor.SelectionMode.SingleSelection : MudBlazor.SelectionMode.MultiSelection; + + private IReadOnlyCollection<DataSourceAgentSelected> GetSelectedDataSourcesWithAI() => this.DataSourcesAISelected.Where(n => n.Selected).ToList(); + + private string GetAIReasoning(DataSourceAgentSelected source) => $"AI reasoning (confidence {source.AIDecision.Confidence:P0}): {source.AIDecision.Reason}"; + + public void ChangeOptionWithoutSaving(DataSourceOptions options, IReadOnlyList<DataSourceAgentSelected>? aiSelectedDataSources = null) { this.DataSourceOptions = options; + this.DataSourcesAISelected = aiSelectedDataSources ?? []; + this.aiBasedSourceSelection = this.DataSourceOptions.AutomaticDataSourceSelection; this.aiBasedValidation = this.DataSourceOptions.AutomaticValidation; this.areDataSourcesEnabled = !this.DataSourceOptions.DisableDataSources; @@ -237,6 +248,13 @@ public partial class DataSourceSelection : ComponentBase, IMessageBusReceiver, I this.showDataSourceSelection = false; this.StateHasChanged(); break; + + case Event.RAG_AUTO_DATA_SOURCES_SELECTED: + if(data is IReadOnlyList<DataSourceAgentSelected> aiSelectedDataSources) + this.DataSourcesAISelected = aiSelectedDataSources; + + this.StateHasChanged(); + break; } return Task.CompletedTask; diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentDataSourceSelection.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentDataSourceSelection.razor new file mode 100644 index 00000000..da2a6afe --- /dev/null +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentDataSourceSelection.razor @@ -0,0 +1,11 @@ +@inherits SettingsPanelBase + +<ExpansionPanel HeaderIcon="@Icons.Material.Filled.SelectAll" HeaderText="Agent: Data Source Selection Options"> + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <MudText Typo="Typo.body1" Class="mb-3"> + Use Case: this agent is used to select the appropriate data sources for the current prompt. + </MudText> + <ConfigurationOption OptionDescription="Preselect data source selection options?" LabelOn="Options are preselected" LabelOff="No options are preselected" State="@(() => this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectAgentOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectAgentOptions = updatedState)" OptionHelp="When enabled, you can preselect some agent options. This is might be useful when you prefer a LLM."/> + <ConfigurationProviderSelection Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectAgentOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectedAgentProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectedAgentProvider = selectedValue)"/> + </MudPaper> +</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentDataSourceSelection.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentDataSourceSelection.razor.cs new file mode 100644 index 00000000..1c191a55 --- /dev/null +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentDataSourceSelection.razor.cs @@ -0,0 +1,3 @@ +namespace AIStudio.Components.Settings; + +public partial class SettingsPanelAgentDataSourceSelection : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Settings.razor b/app/MindWork AI Studio/Pages/Settings.razor index 41c42983..f8d90501 100644 --- a/app/MindWork AI Studio/Pages/Settings.razor +++ b/app/MindWork AI Studio/Pages/Settings.razor @@ -27,6 +27,7 @@ <SettingsPanelSynonyms AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> <SettingsPanelMyTasks AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> <SettingsPanelAssistantBias AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + <SettingsPanelAgentDataSourceSelection AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> <SettingsPanelAgentContentCleaner AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> </MudExpansionPanels> </InnerScrolling> diff --git a/app/MindWork AI Studio/Program.cs b/app/MindWork AI Studio/Program.cs index b18bdd1d..a9ae7a97 100644 --- a/app/MindWork AI Studio/Program.cs +++ b/app/MindWork AI Studio/Program.cs @@ -21,6 +21,7 @@ internal sealed class Program public static RustService RUST_SERVICE = null!; public static Encryption ENCRYPTION = null!; public static string API_TOKEN = null!; + public static IServiceProvider SERVICE_PROVIDER = null!; public static async Task Main(string[] args) { @@ -117,6 +118,7 @@ internal sealed class Program builder.Services.AddSingleton<ThreadSafeRandom>(); builder.Services.AddSingleton<DataSourceService>(); builder.Services.AddTransient<HTMLParser>(); + builder.Services.AddTransient<AgentDataSourceSelection>(); builder.Services.AddTransient<AgentTextContentCleaner>(); builder.Services.AddHostedService<UpdateService>(); builder.Services.AddHostedService<TemporaryChatService>(); @@ -148,6 +150,10 @@ internal sealed class Program var programLogger = app.Services.GetRequiredService<ILogger<Program>>(); programLogger.LogInformation("Starting the AI Studio server."); + // Store the service provider (DI). We need it later for some classes, + // which are not part of the request pipeline: + SERVICE_PROVIDER = app.Services; + // Initialize the encryption service: programLogger.LogInformation("Initializing the encryption service."); var encryptionLogger = app.Services.GetRequiredService<ILogger<Encryption>>(); @@ -196,5 +202,8 @@ internal sealed class Program }; await serverTask; + + RUST_SERVICE.Dispose(); + programLogger.LogInformation("The AI Studio server was stopped."); } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/Data.cs b/app/MindWork AI Studio/Settings/DataModel/Data.cs index 2dd099eb..729cfe48 100644 --- a/app/MindWork AI Studio/Settings/DataModel/Data.cs +++ b/app/MindWork AI Studio/Settings/DataModel/Data.cs @@ -74,6 +74,8 @@ public sealed class Data public DataTextContentCleaner TextContentCleaner { get; init; } = new(); + public DataAgentDataSourceSelection AgentDataSourceSelection { get; init; } = new(); + public DataAgenda Agenda { get; init; } = new(); public DataGrammarSpelling GrammarSpelling { get; init; } = new(); diff --git a/app/MindWork AI Studio/Settings/DataModel/DataAgentDataSourceSelection.cs b/app/MindWork AI Studio/Settings/DataModel/DataAgentDataSourceSelection.cs new file mode 100644 index 00000000..a0ae5fb7 --- /dev/null +++ b/app/MindWork AI Studio/Settings/DataModel/DataAgentDataSourceSelection.cs @@ -0,0 +1,14 @@ +namespace AIStudio.Settings.DataModel; + +public sealed class DataAgentDataSourceSelection +{ + /// <summary> + /// Preselect any text content cleaner options? + /// </summary> + public bool PreselectAgentOptions { get; set; } + + /// <summary> + /// Preselect a text content cleaner provider? + /// </summary> + public string PreselectedAgentProvider { get; set; } = string.Empty; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs index a9931e38..328161e1 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs @@ -1,5 +1,6 @@ // ReSharper disable InconsistentNaming +using AIStudio.Assistants.ERI; using AIStudio.Tools.ERIClient.DataModel; namespace AIStudio.Settings.DataModel; @@ -39,4 +40,7 @@ public readonly record struct DataSourceERI_V1 : IERIDataSource /// <inheritdoc /> public DataSourceSecurity SecurityPolicy { get; init; } = DataSourceSecurity.NOT_SPECIFIED; + + /// <inheritdoc /> + public ERIVersion Version { get; init; } = ERIVersion.V1; } \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/IERIDataSource.cs b/app/MindWork AI Studio/Settings/IERIDataSource.cs index 0d917d18..35e37791 100644 --- a/app/MindWork AI Studio/Settings/IERIDataSource.cs +++ b/app/MindWork AI Studio/Settings/IERIDataSource.cs @@ -1,3 +1,4 @@ +using AIStudio.Assistants.ERI; using AIStudio.Tools.ERIClient.DataModel; namespace AIStudio.Settings; @@ -23,4 +24,9 @@ public interface IERIDataSource : IExternalDataSource /// The username to use for authentication, when the auth. method is USERNAME_PASSWORD. /// </summary> public string Username { get; init; } + + /// <summary> + /// The ERI specification to use. + /// </summary> + public ERIVersion Version { get; init; } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/Event.cs b/app/MindWork AI Studio/Tools/Event.cs index 37a855fd..45005fd1 100644 --- a/app/MindWork AI Studio/Tools/Event.cs +++ b/app/MindWork AI Studio/Tools/Event.cs @@ -23,6 +23,9 @@ public enum Event WORKSPACE_LOADED_CHAT_CHANGED, WORKSPACE_TOGGLE_OVERLAY, + // RAG events: + RAG_AUTO_DATA_SOURCES_SELECTED, + // Send events: SEND_TO_GRAMMAR_SPELLING_ASSISTANT, SEND_TO_ICON_FINDER_ASSISTANT, diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md index ed82eea3..358146c2 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md @@ -2,5 +2,6 @@ - Added the possibility to select data sources for chats. This preview feature is hidden behind the RAG feature flag, check your app options in case you want to enable it. - Added an option to all data sources to select a local security policy. This preview feature is hidden behind the RAG feature flag. - Added an option to preselect data sources and options for new chats. This preview feature is hidden behind the RAG feature flag. +- Added an agent to select the appropriate data sources for any prompt. This preview feature is hidden behind the RAG feature flag. - Improved confidence card for small spaces. - Fixed a bug in which 'APP_SETTINGS' appeared as a valid destination in the "send to" menu. \ No newline at end of file From 7c59aa11fe91c49a69d233026db3fabe9d2c420e Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 17 Feb 2025 12:41:27 +0100 Subject: [PATCH 026/110] Refactored DI usage for CreateFromProviderAsync (#285) --- app/MindWork AI Studio/Agents/AgentBase.cs | 2 +- app/MindWork AI Studio/Assistants/AssistantBase.razor.cs | 2 +- app/MindWork AI Studio/Chat/ContentImage.cs | 4 +--- app/MindWork AI Studio/Chat/ContentText.cs | 4 +++- app/MindWork AI Studio/Chat/IContent.cs | 4 +--- app/MindWork AI Studio/Components/ChatComponent.razor.cs | 2 +- app/MindWork AI Studio/Pages/Writer.razor.cs | 6 +----- 7 files changed, 9 insertions(+), 15 deletions(-) diff --git a/app/MindWork AI Studio/Agents/AgentBase.cs b/app/MindWork AI Studio/Agents/AgentBase.cs index 53e41529..5ea5bd9b 100644 --- a/app/MindWork AI Studio/Agents/AgentBase.cs +++ b/app/MindWork AI Studio/Agents/AgentBase.cs @@ -117,6 +117,6 @@ public abstract class AgentBase(ILogger<AgentBase> logger, SettingsManager setti // Use the selected provider to get the AI response. // By awaiting this line, we wait for the entire // content to be streamed. - await aiText.CreateFromProviderAsync(providerSettings.CreateProvider(this.Logger), this.SettingsManager, this.DataSourceService, providerSettings.Model, this.lastUserPrompt, thread); + await aiText.CreateFromProviderAsync(providerSettings.CreateProvider(this.Logger), providerSettings.Model, this.lastUserPrompt, thread); } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs index e7dcba2a..f6582c39 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs @@ -293,7 +293,7 @@ public abstract partial class AssistantBase : ComponentBase, IMessageBusReceiver // Use the selected provider to get the AI response. // By awaiting this line, we wait for the entire // content to be streamed. - await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.SettingsManager, this.DataSourceService, this.providerSettings.Model, this.lastUserPrompt, this.chatThread); + await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.providerSettings.Model, this.lastUserPrompt, this.chatThread); this.isProcessing = false; this.StateHasChanged(); diff --git a/app/MindWork AI Studio/Chat/ContentImage.cs b/app/MindWork AI Studio/Chat/ContentImage.cs index 4e108df4..997e9987 100644 --- a/app/MindWork AI Studio/Chat/ContentImage.cs +++ b/app/MindWork AI Studio/Chat/ContentImage.cs @@ -1,8 +1,6 @@ using System.Text.Json.Serialization; using AIStudio.Provider; -using AIStudio.Settings; -using AIStudio.Tools.Services; namespace AIStudio.Chat; @@ -30,7 +28,7 @@ public sealed class ContentImage : IContent public Func<Task> StreamingEvent { get; set; } = () => Task.CompletedTask; /// <inheritdoc /> - public Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, DataSourceService dataSourceService, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default) + public Task CreateFromProviderAsync(IProvider provider, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default) { throw new NotImplementedException(); } diff --git a/app/MindWork AI Studio/Chat/ContentText.cs b/app/MindWork AI Studio/Chat/ContentText.cs index c3b4625a..e9f51e54 100644 --- a/app/MindWork AI Studio/Chat/ContentText.cs +++ b/app/MindWork AI Studio/Chat/ContentText.cs @@ -38,12 +38,14 @@ public sealed class ContentText : IContent public Func<Task> StreamingEvent { get; set; } = () => Task.CompletedTask; /// <inheritdoc /> - public async Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, DataSourceService dataSourceService, Model chatModel, IContent? lastPrompt, ChatThread? chatThread, CancellationToken token = default) + public async Task CreateFromProviderAsync(IProvider provider, Model chatModel, IContent? lastPrompt, ChatThread? chatThread, CancellationToken token = default) { if(chatThread is null) return; var logger = Program.SERVICE_PROVIDER.GetService<ILogger<ContentText>>()!; + var settings = Program.SERVICE_PROVIDER.GetService<SettingsManager>()!; + var dataSourceService = Program.SERVICE_PROVIDER.GetService<DataSourceService>()!; // // 1. Check if the user wants to bind any data sources to the chat: diff --git a/app/MindWork AI Studio/Chat/IContent.cs b/app/MindWork AI Studio/Chat/IContent.cs index 86189a2e..08e8817b 100644 --- a/app/MindWork AI Studio/Chat/IContent.cs +++ b/app/MindWork AI Studio/Chat/IContent.cs @@ -1,8 +1,6 @@ using System.Text.Json.Serialization; using AIStudio.Provider; -using AIStudio.Settings; -using AIStudio.Tools.Services; namespace AIStudio.Chat; @@ -43,5 +41,5 @@ public interface IContent /// <summary> /// Uses the provider to create the content. /// </summary> - public Task CreateFromProviderAsync(IProvider provider, SettingsManager settings, DataSourceService dataSourceService, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default); + public Task CreateFromProviderAsync(IProvider provider, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default); } \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor.cs b/app/MindWork AI Studio/Components/ChatComponent.razor.cs index 7a25680b..67d805d2 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor.cs +++ b/app/MindWork AI Studio/Components/ChatComponent.razor.cs @@ -475,7 +475,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable // Use the selected provider to get the AI response. // By awaiting this line, we wait for the entire // content to be streamed. - await aiText.CreateFromProviderAsync(this.Provider.CreateProvider(this.Logger), this.SettingsManager, this.DataSourceService, this.Provider.Model, lastUserPrompt, this.ChatThread, this.cancellationTokenSource.Token); + await aiText.CreateFromProviderAsync(this.Provider.CreateProvider(this.Logger), this.Provider.Model, lastUserPrompt, this.ChatThread, this.cancellationTokenSource.Token); } this.cancellationTokenSource = null; diff --git a/app/MindWork AI Studio/Pages/Writer.razor.cs b/app/MindWork AI Studio/Pages/Writer.razor.cs index 7f95d7e3..76409c32 100644 --- a/app/MindWork AI Studio/Pages/Writer.razor.cs +++ b/app/MindWork AI Studio/Pages/Writer.razor.cs @@ -1,7 +1,6 @@ using AIStudio.Chat; using AIStudio.Components; using AIStudio.Provider; -using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; @@ -15,9 +14,6 @@ public partial class Writer : MSGComponentBase, IAsyncDisposable [Inject] private ILogger<Chat> Logger { get; init; } = null!; - [Inject] - private DataSourceService DataSourceService { get; init; } = null!; - private static readonly Dictionary<string, object?> USER_INPUT_ATTRIBUTES = new(); private readonly Timer typeTimer = new(TimeSpan.FromMilliseconds(1_500)); @@ -143,7 +139,7 @@ public partial class Writer : MSGComponentBase, IAsyncDisposable this.isStreaming = true; this.StateHasChanged(); - await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.SettingsManager, this.DataSourceService, this.providerSettings.Model, lastUserPrompt, this.chatThread); + await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.providerSettings.Model, lastUserPrompt, this.chatThread); this.suggestion = aiText.Text; this.isStreaming = false; From 77d427610bb04f3f8e8fb119caf1a28ea9ef9825 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 17 Feb 2025 14:12:46 +0100 Subject: [PATCH 027/110] Execute retrieval processes (#286) --- README.md | 2 +- app/MindWork AI Studio/Chat/ChatThread.cs | 43 +++++++++ app/MindWork AI Studio/Chat/ContentText.cs | 24 ++++- app/MindWork AI Studio/Chat/IContent.cs | 11 +++ .../Settings/DataModel/DataSourceERI_V1.cs | 88 +++++++++++++++++++ .../DataModel/DataSourceLocalDirectory.cs | 10 +++ .../Settings/DataModel/DataSourceLocalFile.cs | 10 +++ .../Settings/IDataSource.cs | 11 +++ .../RAG/RetrievalContentTypeExtensions.cs | 2 +- 9 files changed, 198 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index f66f60a4..aa101abf 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Things we are currently working on: - [ ] App: Implement the process to vectorize one local file using embeddings - [ ] Runtime: Integration of the vector database [LanceDB](https://github.com/lancedb/lancedb) - [ ] App: Implement the continuous process of vectorizing data - - [x] ~~App: Define a common retrieval context interface for the integration of RAG processes in chats (PR [#281](https://github.com/MindWorkAI/AI-Studio/pull/281), [#284](https://github.com/MindWorkAI/AI-Studio/pull/284))~~ + - [x] ~~App: Define a common retrieval context interface for the integration of RAG processes in chats (PR [#281](https://github.com/MindWorkAI/AI-Studio/pull/281), [#284](https://github.com/MindWorkAI/AI-Studio/pull/284), [#286](https://github.com/MindWorkAI/AI-Studio/pull/286))~~ - [ ] App: Define a common augmentation interface for the integration of RAG processes in chats - [x] ~~App: Integrate data sources in chats (PR [#282](https://github.com/MindWorkAI/AI-Studio/pull/282))~~ diff --git a/app/MindWork AI Studio/Chat/ChatThread.cs b/app/MindWork AI Studio/Chat/ChatThread.cs index 7709db7e..d7dbf9a4 100644 --- a/app/MindWork AI Studio/Chat/ChatThread.cs +++ b/app/MindWork AI Studio/Chat/ChatThread.cs @@ -1,6 +1,7 @@ using AIStudio.Components; using AIStudio.Settings; using AIStudio.Settings.DataModel; +using AIStudio.Tools.ERIClient.DataModel; namespace AIStudio.Chat; @@ -150,4 +151,46 @@ public sealed record ChatThread // Remove the block from the chat thread: this.Blocks.Remove(block); } + + /// <summary> + /// Transforms this chat thread to an ERI chat thread. + /// </summary> + /// <param name="token">The cancellation token.</param> + /// <returns>The ERI chat thread.</returns> + public async Task<Tools.ERIClient.DataModel.ChatThread> ToERIChatThread(CancellationToken token = default) + { + // + // Transform the content blocks: + // + var contentBlocks = new List<Tools.ERIClient.DataModel.ContentBlock>(this.Blocks.Count); + foreach (var block in this.Blocks) + { + var (contentData, contentType) = block.Content switch + { + ContentImage image => (await image.AsBase64(token), Tools.ERIClient.DataModel.ContentType.IMAGE), + ContentText text => (text.Text, Tools.ERIClient.DataModel.ContentType.TEXT), + + _ => (string.Empty, Tools.ERIClient.DataModel.ContentType.UNKNOWN), + }; + + contentBlocks.Add(new Tools.ERIClient.DataModel.ContentBlock + { + Role = block.Role switch + { + ChatRole.AI => Role.AI, + ChatRole.USER => Role.USER, + ChatRole.AGENT => Role.AGENT, + ChatRole.SYSTEM => Role.SYSTEM, + ChatRole.NONE => Role.NONE, + + _ => Role.UNKNOW, + }, + + Content = contentData, + Type = contentType, + }); + } + + return new Tools.ERIClient.DataModel.ChatThread { ContentBlocks = contentBlocks }; + } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Chat/ContentText.cs b/app/MindWork AI Studio/Chat/ContentText.cs index e9f51e54..75912e3e 100644 --- a/app/MindWork AI Studio/Chat/ContentText.cs +++ b/app/MindWork AI Studio/Chat/ContentText.cs @@ -4,6 +4,7 @@ using AIStudio.Agents; using AIStudio.Components; using AIStudio.Provider; using AIStudio.Settings; +using AIStudio.Tools.RAG; using AIStudio.Tools.Services; namespace AIStudio.Chat; @@ -199,9 +200,30 @@ public sealed class ContentText : IContent // // Trigger the retrieval part of the (R)AG process: // + var dataContexts = new List<IRetrievalContext>(); if (proceedWithRAG) { - + // + // We kick off the retrieval process for each data source in parallel: + // + var retrievalTasks = new List<Task<IReadOnlyList<IRetrievalContext>>>(selectedDataSources.Count); + foreach (var dataSource in selectedDataSources) + retrievalTasks.Add(dataSource.RetrieveDataAsync(lastPrompt, chatThread, token)); + + // + // Wait for all retrieval tasks to finish: + // + foreach (var retrievalTask in retrievalTasks) + { + try + { + dataContexts.AddRange(await retrievalTask); + } + catch (Exception e) + { + logger.LogError(e, "An error occurred during the retrieval process."); + } + } } // diff --git a/app/MindWork AI Studio/Chat/IContent.cs b/app/MindWork AI Studio/Chat/IContent.cs index 08e8817b..8ca94025 100644 --- a/app/MindWork AI Studio/Chat/IContent.cs +++ b/app/MindWork AI Studio/Chat/IContent.cs @@ -42,4 +42,15 @@ public interface IContent /// Uses the provider to create the content. /// </summary> public Task CreateFromProviderAsync(IProvider provider, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default); + + /// <summary> + /// Returns the corresponding ERI content type. + /// </summary> + public Tools.ERIClient.DataModel.ContentType ToERIContentType => this switch + { + ContentText => Tools.ERIClient.DataModel.ContentType.TEXT, + ContentImage => Tools.ERIClient.DataModel.ContentType.IMAGE, + + _ => Tools.ERIClient.DataModel.ContentType.UNKNOWN, + }; } \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs index 328161e1..b591de00 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs @@ -1,7 +1,14 @@ // ReSharper disable InconsistentNaming using AIStudio.Assistants.ERI; +using AIStudio.Chat; +using AIStudio.Tools.ERIClient; using AIStudio.Tools.ERIClient.DataModel; +using AIStudio.Tools.RAG; +using AIStudio.Tools.Services; + +using ChatThread = AIStudio.Chat.ChatThread; +using ContentType = AIStudio.Tools.ERIClient.DataModel.ContentType; namespace AIStudio.Settings.DataModel; @@ -43,4 +50,85 @@ public readonly record struct DataSourceERI_V1 : IERIDataSource /// <inheritdoc /> public ERIVersion Version { get; init; } = ERIVersion.V1; + + /// <inheritdoc /> + public async Task<IReadOnlyList<IRetrievalContext>> RetrieveDataAsync(IContent lastPrompt, ChatThread thread, CancellationToken token = default) + { + // Important: Do not dispose the RustService here, as it is a singleton. + var rustService = Program.SERVICE_PROVIDER.GetRequiredService<RustService>(); + var logger = Program.SERVICE_PROVIDER.GetRequiredService<ILogger<DataSourceERI_V1>>(); + + using var eriClient = ERIClientFactory.Get(this.Version, this)!; + var authResponse = await eriClient.AuthenticateAsync(this, rustService, token); + if (authResponse.Successful) + { + var retrievalRequest = new RetrievalRequest + { + LatestUserPromptType = lastPrompt.ToERIContentType, + LatestUserPrompt = lastPrompt switch + { + ContentText text => text.Text, + ContentImage image => await image.AsBase64(token), + _ => string.Empty + }, + + Thread = await thread.ToERIChatThread(token), + MaxMatches = 10, + RetrievalProcessId = null, // The ERI server selects the retrieval process when multiple processes are available + Parameters = null, // The ERI server selects useful default parameters + }; + + var retrievalResponse = await eriClient.ExecuteRetrievalAsync(retrievalRequest, token); + if(retrievalResponse is { Successful: true, Data: not null }) + { + // + // Next, we have to transform the ERI context back to our generic retrieval context: + // + var genericRetrievalContexts = new List<IRetrievalContext>(retrievalResponse.Data.Count); + foreach (var eriContext in retrievalResponse.Data) + { + switch (eriContext.Type) + { + case ContentType.TEXT: + genericRetrievalContexts.Add(new RetrievalTextContext + { + Path = eriContext.Path ?? string.Empty, + Type = eriContext.ToRetrievalContentType(), + Links = eriContext.Links, + Category = RetrievalContentCategory.TEXT, + MatchedText = eriContext.MatchedContent, + DataSourceName = eriContext.Name, + SurroundingContent = eriContext.SurroundingContent, + }); + break; + + case ContentType.IMAGE: + genericRetrievalContexts.Add(new RetrievalImageContext + { + Path = eriContext.Path ?? string.Empty, + Type = eriContext.ToRetrievalContentType(), + Links = eriContext.Links, + Source = eriContext.MatchedContent, + Category = RetrievalContentCategory.IMAGE, + SourceType = ContentImageSource.BASE64, + DataSourceName = eriContext.Name, + }); + break; + + default: + logger.LogWarning($"The ERI context type '{eriContext.Type}' is not supported yet."); + break; + } + } + + return genericRetrievalContexts; + } + + logger.LogWarning($"Was not able to retrieve data from the ERI data source '{this.Name}'. Message: {retrievalResponse.Message}"); + return []; + } + + logger.LogWarning($"Was not able to authenticate with the ERI data source '{this.Name}'. Message: {authResponse.Message}"); + return []; + } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalDirectory.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalDirectory.cs index 61c30d93..d81e30db 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalDirectory.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalDirectory.cs @@ -1,3 +1,6 @@ +using AIStudio.Chat; +using AIStudio.Tools.RAG; + namespace AIStudio.Settings.DataModel; /// <summary> @@ -27,6 +30,13 @@ public readonly record struct DataSourceLocalDirectory : IInternalDataSource /// <inheritdoc /> public DataSourceSecurity SecurityPolicy { get; init; } = DataSourceSecurity.NOT_SPECIFIED; + /// <inheritdoc /> + public Task<IReadOnlyList<IRetrievalContext>> RetrieveDataAsync(IContent lastPrompt, ChatThread thread, CancellationToken token = default) + { + IReadOnlyList<IRetrievalContext> retrievalContext = new List<IRetrievalContext>(); + return Task.FromResult(retrievalContext); + } + /// <summary> /// The path to the directory. /// </summary> diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalFile.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalFile.cs index 571fb0a8..5788a2a6 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalFile.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceLocalFile.cs @@ -1,3 +1,6 @@ +using AIStudio.Chat; +using AIStudio.Tools.RAG; + namespace AIStudio.Settings.DataModel; /// <summary> @@ -27,6 +30,13 @@ public readonly record struct DataSourceLocalFile : IInternalDataSource /// <inheritdoc /> public DataSourceSecurity SecurityPolicy { get; init; } = DataSourceSecurity.NOT_SPECIFIED; + /// <inheritdoc /> + public Task<IReadOnlyList<IRetrievalContext>> RetrieveDataAsync(IContent lastPrompt, ChatThread thread, CancellationToken token = default) + { + IReadOnlyList<IRetrievalContext> retrievalContext = new List<IRetrievalContext>(); + return Task.FromResult(retrievalContext); + } + /// <summary> /// The path to the file. /// </summary> diff --git a/app/MindWork AI Studio/Settings/IDataSource.cs b/app/MindWork AI Studio/Settings/IDataSource.cs index 72f4ad3c..7ee47e1c 100644 --- a/app/MindWork AI Studio/Settings/IDataSource.cs +++ b/app/MindWork AI Studio/Settings/IDataSource.cs @@ -1,6 +1,8 @@ using System.Text.Json.Serialization; +using AIStudio.Chat; using AIStudio.Settings.DataModel; +using AIStudio.Tools.RAG; namespace AIStudio.Settings; @@ -37,4 +39,13 @@ public interface IDataSource /// Which data security policy is applied to this data source? /// </summary> public DataSourceSecurity SecurityPolicy { get; init; } + + /// <summary> + /// Perform the data retrieval process. + /// </summary> + /// <param name="lastPrompt">The last prompt from the chat.</param> + /// <param name="thread">The chat thread.</param> + /// <param name="token">The cancellation token.</param> + /// <returns>The retrieved data context.</returns> + public Task<IReadOnlyList<IRetrievalContext>> RetrieveDataAsync(IContent lastPrompt, ChatThread thread, CancellationToken token = default); } \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/RetrievalContentTypeExtensions.cs b/app/MindWork AI Studio/Tools/RAG/RetrievalContentTypeExtensions.cs index e591bf86..2f0bb7e0 100644 --- a/app/MindWork AI Studio/Tools/RAG/RetrievalContentTypeExtensions.cs +++ b/app/MindWork AI Studio/Tools/RAG/RetrievalContentTypeExtensions.cs @@ -4,7 +4,7 @@ namespace AIStudio.Tools.RAG; public static class RetrievalContentTypeExtensions { - public static RetrievalContentType ToRetrievalContentType(Context eriContext) + public static RetrievalContentType ToRetrievalContentType(this Context eriContext) { // // Right now, we have to parse the category string along the type enum to From f01cf498e2d95b844f967bf2032609e0f5f8e484 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 17 Feb 2025 16:51:26 +0100 Subject: [PATCH 028/110] Refactored the RAG process (#287) --- README.md | 2 +- app/MindWork AI Studio/Chat/ContentText.cs | 202 +----------------- .../Tools/RAG/DataSelectionResult.cs | 10 + .../AgenticSrcSelWithDynHeur.cs | 147 +++++++++++++ .../Tools/RAG/IDataSourceSelectionProcess.cs | 33 +++ .../Tools/RAG/IRagProcess.cs | 32 +++ .../RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs | 117 ++++++++++ 7 files changed, 349 insertions(+), 194 deletions(-) create mode 100644 app/MindWork AI Studio/Tools/RAG/DataSelectionResult.cs create mode 100644 app/MindWork AI Studio/Tools/RAG/DataSourceSelectionProcesses/AgenticSrcSelWithDynHeur.cs create mode 100644 app/MindWork AI Studio/Tools/RAG/IDataSourceSelectionProcess.cs create mode 100644 app/MindWork AI Studio/Tools/RAG/IRagProcess.cs create mode 100644 app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs diff --git a/README.md b/README.md index aa101abf..257852db 100644 --- a/README.md +++ b/README.md @@ -19,7 +19,7 @@ Things we are currently working on: - [ ] App: Implement the process to vectorize one local file using embeddings - [ ] Runtime: Integration of the vector database [LanceDB](https://github.com/lancedb/lancedb) - [ ] App: Implement the continuous process of vectorizing data - - [x] ~~App: Define a common retrieval context interface for the integration of RAG processes in chats (PR [#281](https://github.com/MindWorkAI/AI-Studio/pull/281), [#284](https://github.com/MindWorkAI/AI-Studio/pull/284), [#286](https://github.com/MindWorkAI/AI-Studio/pull/286))~~ + - [x] ~~App: Define a common retrieval context interface for the integration of RAG processes in chats (PR [#281](https://github.com/MindWorkAI/AI-Studio/pull/281), [#284](https://github.com/MindWorkAI/AI-Studio/pull/284), [#286](https://github.com/MindWorkAI/AI-Studio/pull/286), [#287](https://github.com/MindWorkAI/AI-Studio/pull/287))~~ - [ ] App: Define a common augmentation interface for the integration of RAG processes in chats - [x] ~~App: Integrate data sources in chats (PR [#282](https://github.com/MindWorkAI/AI-Studio/pull/282))~~ diff --git a/app/MindWork AI Studio/Chat/ContentText.cs b/app/MindWork AI Studio/Chat/ContentText.cs index 75912e3e..9f511752 100644 --- a/app/MindWork AI Studio/Chat/ContentText.cs +++ b/app/MindWork AI Studio/Chat/ContentText.cs @@ -1,11 +1,8 @@ using System.Text.Json.Serialization; -using AIStudio.Agents; -using AIStudio.Components; using AIStudio.Provider; using AIStudio.Settings; -using AIStudio.Tools.RAG; -using AIStudio.Tools.Services; +using AIStudio.Tools.RAG.RAGProcesses; namespace AIStudio.Chat; @@ -43,204 +40,23 @@ public sealed class ContentText : IContent { if(chatThread is null) return; - - var logger = Program.SERVICE_PROVIDER.GetService<ILogger<ContentText>>()!; - var settings = Program.SERVICE_PROVIDER.GetService<SettingsManager>()!; - var dataSourceService = Program.SERVICE_PROVIDER.GetService<DataSourceService>()!; - // - // 1. Check if the user wants to bind any data sources to the chat: - // - if (chatThread.DataSourceOptions.IsEnabled() && lastPrompt is not null) + // Call the RAG process. Right now, we only have one RAG process: + if (lastPrompt is not null) { - logger.LogInformation("Data sources are enabled for this chat."); - - // Across the different code-branches, we keep track of whether it - // makes sense to proceed with the RAG process: - var proceedWithRAG = true; - - // - // When the user wants to bind data sources to the chat, we - // have to check if the data sources are available for the - // selected provider. Also, we have to check if any ERI - // data sources changed its security requirements. - // - List<IDataSource> preselectedDataSources = chatThread.DataSourceOptions.PreselectedDataSourceIds.Select(id => settings.ConfigurationData.DataSources.FirstOrDefault(ds => ds.Id == id)).Where(ds => ds is not null).ToList()!; - var dataSources = await dataSourceService.GetDataSources(provider, preselectedDataSources); - var selectedDataSources = dataSources.SelectedDataSources; - - // - // Should the AI select the data sources? - // - if (chatThread.DataSourceOptions.AutomaticDataSourceSelection) - { - // Get the agent for the data source selection: - var selectionAgent = Program.SERVICE_PROVIDER.GetService<AgentDataSourceSelection>()!; - - // Let the AI agent do its work: - IReadOnlyList<DataSourceAgentSelected> finalAISelection = []; - var aiSelectedDataSources = await selectionAgent.PerformSelectionAsync(provider, lastPrompt, chatThread, dataSources, token); - - // Check if the AI selected any data sources: - if(aiSelectedDataSources.Count is 0) - { - logger.LogWarning("The AI did not select any data sources. The RAG process is skipped."); - proceedWithRAG = false; - - // Send the selected data sources to the data source selection component. - // Then, the user can see which data sources were selected by the AI. - await MessageBus.INSTANCE.SendMessage(null, Event.RAG_AUTO_DATA_SOURCES_SELECTED, finalAISelection); - chatThread.AISelectedDataSources = finalAISelection; - } - else - { - // Log the selected data sources: - var selectedDataSourceInfo = aiSelectedDataSources.Select(ds => $"[Id={ds.Id}, reason={ds.Reason}, confidence={ds.Confidence}]").Aggregate((a, b) => $"'{a}', '{b}'"); - logger.LogInformation($"The AI selected the data sources automatically. {aiSelectedDataSources.Count} data source(s) are selected: {selectedDataSourceInfo}."); - - // - // Check how many data sources were hallucinated by the AI: - // - var totalAISelectedDataSources = aiSelectedDataSources.Count; - - // Filter out the data sources that are not available: - aiSelectedDataSources = aiSelectedDataSources.Where(x => settings.ConfigurationData.DataSources.FirstOrDefault(ds => ds.Id == x.Id) is not null).ToList(); - - // Store the real AI-selected data sources: - finalAISelection = aiSelectedDataSources.Select(x => new DataSourceAgentSelected { DataSource = settings.ConfigurationData.DataSources.First(ds => ds.Id == x.Id), AIDecision = x, Selected = false }).ToList(); - - var numHallucinatedSources = totalAISelectedDataSources - aiSelectedDataSources.Count; - if(numHallucinatedSources > 0) - logger.LogWarning($"The AI hallucinated {numHallucinatedSources} data source(s). We ignore them."); - - if (aiSelectedDataSources.Count > 3) - { - // - // We have more than 3 data sources. Let's filter by confidence. - // In order to do that, we must identify the lower and upper - // bounds of the confidence interval: - // - var confidenceValues = aiSelectedDataSources.Select(x => x.Confidence).ToList(); - var lowerBound = confidenceValues.Min(); - var upperBound = confidenceValues.Max(); - - // - // Next, we search for a threshold so that we have between 2 and 3 - // data sources. When not possible, we take all data sources. - // - var threshold = 0.0f; - - // Check the case where the confidence values are too close: - if (upperBound - lowerBound >= 0.01) - { - var previousThreshold = 0.0f; - for (var i = 0; i < 10; i++) - { - threshold = lowerBound + (upperBound - lowerBound) * i / 10; - var numMatches = aiSelectedDataSources.Count(x => x.Confidence >= threshold); - if (numMatches <= 1) - { - threshold = previousThreshold; - break; - } - - if (numMatches is <= 3 and >= 2) - break; - - previousThreshold = threshold; - } - } - - // - // Filter the data sources by the threshold: - // - aiSelectedDataSources = aiSelectedDataSources.Where(x => x.Confidence >= threshold).ToList(); - foreach (var dataSource in finalAISelection) - if(aiSelectedDataSources.Any(x => x.Id == dataSource.DataSource.Id)) - dataSource.Selected = true; - - logger.LogInformation($"The AI selected {aiSelectedDataSources.Count} data source(s) with a confidence of at least {threshold}."); - - // Transform the final data sources to the actual data sources: - selectedDataSources = aiSelectedDataSources.Select(x => settings.ConfigurationData.DataSources.FirstOrDefault(ds => ds.Id == x.Id)).Where(ds => ds is not null).ToList()!; - } - - // We have max. 3 data sources. We take all of them: - else - { - // Transform the selected data sources to the actual data sources: - selectedDataSources = aiSelectedDataSources.Select(x => settings.ConfigurationData.DataSources.FirstOrDefault(ds => ds.Id == x.Id)).Where(ds => ds is not null).ToList()!; - - // Mark the data sources as selected: - foreach (var dataSource in finalAISelection) - dataSource.Selected = true; - } - - // Send the selected data sources to the data source selection component. - // Then, the user can see which data sources were selected by the AI. - await MessageBus.INSTANCE.SendMessage(null, Event.RAG_AUTO_DATA_SOURCES_SELECTED, finalAISelection); - chatThread.AISelectedDataSources = finalAISelection; - } - } - else - { - // - // No, the user made the choice manually: - // - var selectedDataSourceInfo = selectedDataSources.Select(ds => ds.Name).Aggregate((a, b) => $"'{a}', '{b}'"); - logger.LogInformation($"The user selected the data sources manually. {selectedDataSources.Count} data source(s) are selected: {selectedDataSourceInfo}."); - } - - if(selectedDataSources.Count == 0) - { - logger.LogWarning("No data sources are selected. The RAG process is skipped."); - proceedWithRAG = false; - } - - // - // Trigger the retrieval part of the (R)AG process: - // - var dataContexts = new List<IRetrievalContext>(); - if (proceedWithRAG) - { - // - // We kick off the retrieval process for each data source in parallel: - // - var retrievalTasks = new List<Task<IReadOnlyList<IRetrievalContext>>>(selectedDataSources.Count); - foreach (var dataSource in selectedDataSources) - retrievalTasks.Add(dataSource.RetrieveDataAsync(lastPrompt, chatThread, token)); - - // - // Wait for all retrieval tasks to finish: - // - foreach (var retrievalTask in retrievalTasks) - { - try - { - dataContexts.AddRange(await retrievalTask); - } - catch (Exception e) - { - logger.LogError(e, "An error occurred during the retrieval process."); - } - } - } - - // - // Perform the augmentation of the R(A)G process: - // - if (proceedWithRAG) - { - - } + var rag = new AISrcSelWithRetCtxVal(); + chatThread = await rag.ProcessAsync(provider, lastPrompt, chatThread, token); } - + // Store the last time we got a response. We use this later // to determine whether we should notify the UI about the // new content or not. Depends on the energy saving mode // the user chose. var last = DateTimeOffset.Now; + // Get the settings manager: + var settings = Program.SERVICE_PROVIDER.GetService<SettingsManager>()!; + // Start another thread by using a task to uncouple // the UI thread from the AI processing: await Task.Run(async () => diff --git a/app/MindWork AI Studio/Tools/RAG/DataSelectionResult.cs b/app/MindWork AI Studio/Tools/RAG/DataSelectionResult.cs new file mode 100644 index 00000000..6508b76a --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/DataSelectionResult.cs @@ -0,0 +1,10 @@ +using AIStudio.Settings; + +namespace AIStudio.Tools.RAG; + +/// <summary> +/// Result of any data selection process. +/// </summary> +/// <param name="ProceedWithRAG">Makes it sense to proceed with the RAG process?</param> +/// <param name="SelectedDataSources">The selected data sources.</param> +public readonly record struct DataSelectionResult(bool ProceedWithRAG, IReadOnlyList<IDataSource> SelectedDataSources); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/DataSourceSelectionProcesses/AgenticSrcSelWithDynHeur.cs b/app/MindWork AI Studio/Tools/RAG/DataSourceSelectionProcesses/AgenticSrcSelWithDynHeur.cs new file mode 100644 index 00000000..64099780 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/DataSourceSelectionProcesses/AgenticSrcSelWithDynHeur.cs @@ -0,0 +1,147 @@ +using AIStudio.Agents; +using AIStudio.Chat; +using AIStudio.Components; +using AIStudio.Provider; +using AIStudio.Settings; + +namespace AIStudio.Tools.RAG.DataSourceSelectionProcesses; + +public class AgenticSrcSelWithDynHeur : IDataSourceSelectionProcess +{ + #region Implementation of IDataSourceSelectionProcess + + /// <inheritdoc /> + public string TechnicalName => "AgenticSrcSelWithDynHeur"; + + /// <inheritdoc /> + public string UIName => "Automatic AI data source selection with heuristik source reduction"; + + /// <inheritdoc /> + public string Description => "Automatically selects the appropriate data sources based on the last prompt. Applies a heuristic reduction at the end to reduce the number of data sources."; + + /// <inheritdoc /> + public async Task<DataSelectionResult> SelectDataSourcesAsync(IProvider provider, IContent lastPrompt, ChatThread chatThread, AllowedSelectedDataSources dataSources, CancellationToken token = default) + { + var proceedWithRAG = true; + IReadOnlyList<IDataSource> selectedDataSources = []; + IReadOnlyList<DataSourceAgentSelected> finalAISelection = []; + + // Get the logger: + var logger = Program.SERVICE_PROVIDER.GetService<ILogger<AgenticSrcSelWithDynHeur>>()!; + + // Get the settings manager: + var settings = Program.SERVICE_PROVIDER.GetService<SettingsManager>()!; + + // Get the agent for the data source selection: + var selectionAgent = Program.SERVICE_PROVIDER.GetService<AgentDataSourceSelection>()!; + + try + { + // Let the AI agent do its work: + var aiSelectedDataSources = await selectionAgent.PerformSelectionAsync(provider, lastPrompt, chatThread, dataSources, token); + + // Check if the AI selected any data sources: + if (aiSelectedDataSources.Count is 0) + { + logger.LogWarning("The AI did not select any data sources. The RAG process is skipped."); + proceedWithRAG = false; + + return new(proceedWithRAG, selectedDataSources); + } + + // Log the selected data sources: + var selectedDataSourceInfo = aiSelectedDataSources.Select(ds => $"[Id={ds.Id}, reason={ds.Reason}, confidence={ds.Confidence}]").Aggregate((a, b) => $"'{a}', '{b}'"); + logger.LogInformation($"The AI selected the data sources automatically. {aiSelectedDataSources.Count} data source(s) are selected: {selectedDataSourceInfo}."); + + // + // Check how many data sources were hallucinated by the AI: + // + var totalAISelectedDataSources = aiSelectedDataSources.Count; + + // Filter out the data sources that are not available: + aiSelectedDataSources = aiSelectedDataSources.Where(x => settings.ConfigurationData.DataSources.FirstOrDefault(ds => ds.Id == x.Id) is not null).ToList(); + + // Store the real AI-selected data sources: + finalAISelection = aiSelectedDataSources.Select(x => new DataSourceAgentSelected { DataSource = settings.ConfigurationData.DataSources.First(ds => ds.Id == x.Id), AIDecision = x, Selected = false }).ToList(); + + var numHallucinatedSources = totalAISelectedDataSources - aiSelectedDataSources.Count; + if (numHallucinatedSources > 0) + logger.LogWarning($"The AI hallucinated {numHallucinatedSources} data source(s). We ignore them."); + + if (aiSelectedDataSources.Count > 3) + { + // + // We have more than 3 data sources. Let's filter by confidence. + // In order to do that, we must identify the lower and upper + // bounds of the confidence interval: + // + var confidenceValues = aiSelectedDataSources.Select(x => x.Confidence).ToList(); + var lowerBound = confidenceValues.Min(); + var upperBound = confidenceValues.Max(); + + // + // Next, we search for a threshold so that we have between 2 and 3 + // data sources. When not possible, we take all data sources. + // + var threshold = 0.0f; + + // Check the case where the confidence values are too close: + if (upperBound - lowerBound >= 0.01) + { + var previousThreshold = 0.0f; + for (var i = 0; i < 10; i++) + { + threshold = lowerBound + (upperBound - lowerBound) * i / 10; + var numMatches = aiSelectedDataSources.Count(x => x.Confidence >= threshold); + if (numMatches <= 1) + { + threshold = previousThreshold; + break; + } + + if (numMatches is <= 3 and >= 2) + break; + + previousThreshold = threshold; + } + } + + // + // Filter the data sources by the threshold: + // + aiSelectedDataSources = aiSelectedDataSources.Where(x => x.Confidence >= threshold).ToList(); + foreach (var dataSource in finalAISelection) + if (aiSelectedDataSources.Any(x => x.Id == dataSource.DataSource.Id)) + dataSource.Selected = true; + + logger.LogInformation($"The AI selected {aiSelectedDataSources.Count} data source(s) with a confidence of at least {threshold}."); + + // Transform the final data sources to the actual data sources: + selectedDataSources = aiSelectedDataSources.Select(x => settings.ConfigurationData.DataSources.FirstOrDefault(ds => ds.Id == x.Id)).Where(ds => ds is not null).ToList()!; + return new(proceedWithRAG, selectedDataSources); + } + + // + // Case: we have max. 3 data sources. We take all of them: + // + + // Transform the selected data sources to the actual data sources: + selectedDataSources = aiSelectedDataSources.Select(x => settings.ConfigurationData.DataSources.FirstOrDefault(ds => ds.Id == x.Id)).Where(ds => ds is not null).ToList()!; + + // Mark the data sources as selected: + foreach (var dataSource in finalAISelection) + dataSource.Selected = true; + + return new(proceedWithRAG, selectedDataSources); + } + finally + { + // Send the selected data sources to the data source selection component. + // Then, the user can see which data sources were selected by the AI. + await MessageBus.INSTANCE.SendMessage(null, Event.RAG_AUTO_DATA_SOURCES_SELECTED, finalAISelection); + chatThread.AISelectedDataSources = finalAISelection; + } + } + + #endregion +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/IDataSourceSelectionProcess.cs b/app/MindWork AI Studio/Tools/RAG/IDataSourceSelectionProcess.cs new file mode 100644 index 00000000..8213ec24 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/IDataSourceSelectionProcess.cs @@ -0,0 +1,33 @@ +using AIStudio.Chat; +using AIStudio.Provider; + +namespace AIStudio.Tools.RAG; + +public interface IDataSourceSelectionProcess +{ + /// <summary> + /// How is the RAG process called? + /// </summary> + public string TechnicalName { get; } + + /// <summary> + /// How is the RAG process called in the UI? + /// </summary> + public string UIName { get; } + + /// <summary> + /// How works the RAG process? + /// </summary> + public string Description { get; } + + /// <summary> + /// Starts the data source selection process. + /// </summary> + /// <param name="provider">The LLM provider. Used as default for data selection agents.</param> + /// <param name="lastPrompt">The last prompt that was issued by the user.</param> + /// <param name="chatThread">The chat thread.</param> + /// <param name="dataSources">The allowed data sources yielded by the data source service.</param> + /// <param name="token">The cancellation token.</param> + /// <returns></returns> + public Task<DataSelectionResult> SelectDataSourcesAsync(IProvider provider, IContent lastPrompt, ChatThread chatThread, AllowedSelectedDataSources dataSources, CancellationToken token = default); +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/IRagProcess.cs b/app/MindWork AI Studio/Tools/RAG/IRagProcess.cs new file mode 100644 index 00000000..d38e3236 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/IRagProcess.cs @@ -0,0 +1,32 @@ +using AIStudio.Chat; +using AIStudio.Provider; + +namespace AIStudio.Tools.RAG; + +public interface IRagProcess +{ + /// <summary> + /// How is the RAG process called? + /// </summary> + public string TechnicalName { get; } + + /// <summary> + /// How is the RAG process called in the UI? + /// </summary> + public string UIName { get; } + + /// <summary> + /// How works the RAG process? + /// </summary> + public string Description { get; } + + /// <summary> + /// Starts the RAG process. + /// </summary> + /// <param name="provider">The LLM provider. Used to check whether the data sources are allowed to be used by this LLM.</param> + /// <param name="lastPrompt">The last prompt that was issued by the user.</param> + /// <param name="chatThread">The chat thread.</param> + /// <param name="token">The cancellation token.</param> + /// <returns>The altered chat thread.</returns> + public Task<ChatThread> ProcessAsync(IProvider provider, IContent lastPrompt, ChatThread chatThread, CancellationToken token = default); +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs b/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs new file mode 100644 index 00000000..8581a3e8 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs @@ -0,0 +1,117 @@ +using AIStudio.Chat; +using AIStudio.Provider; +using AIStudio.Settings; +using AIStudio.Tools.RAG.DataSourceSelectionProcesses; +using AIStudio.Tools.Services; + +namespace AIStudio.Tools.RAG.RAGProcesses; + +public sealed class AISrcSelWithRetCtxVal : IRagProcess +{ + #region Implementation of IRagProcess + + /// <inheritdoc /> + public string TechnicalName => "AISrcSelWithRetCtxVal"; + + /// <inheritdoc /> + public string UIName => "AI source selection with AI retrieval context validation"; + + /// <inheritdoc /> + public string Description => "This RAG process filters data sources, automatically selects appropriate sources, optionally allows manual source selection, retrieves data, and automatically validates the retrieval context."; + + /// <inheritdoc /> + public async Task<ChatThread> ProcessAsync(IProvider provider, IContent lastPrompt, ChatThread chatThread, CancellationToken token = default) + { + var logger = Program.SERVICE_PROVIDER.GetService<ILogger<AISrcSelWithRetCtxVal>>()!; + var settings = Program.SERVICE_PROVIDER.GetService<SettingsManager>()!; + var dataSourceService = Program.SERVICE_PROVIDER.GetService<DataSourceService>()!; + + // + // 1. Check if the user wants to bind any data sources to the chat: + // + if (chatThread.DataSourceOptions.IsEnabled()) + { + logger.LogInformation("Data sources are enabled for this chat."); + + // Across the different code-branches, we keep track of whether it + // makes sense to proceed with the RAG process: + var proceedWithRAG = true; + + // + // When the user wants to bind data sources to the chat, we + // have to check if the data sources are available for the + // selected provider. Also, we have to check if any ERI + // data sources changed its security requirements. + // + List<IDataSource> preselectedDataSources = chatThread.DataSourceOptions.PreselectedDataSourceIds.Select(id => settings.ConfigurationData.DataSources.FirstOrDefault(ds => ds.Id == id)).Where(ds => ds is not null).ToList()!; + var dataSources = await dataSourceService.GetDataSources(provider, preselectedDataSources); + var selectedDataSources = dataSources.SelectedDataSources; + + // + // Should the AI select the data sources? + // + if (chatThread.DataSourceOptions.AutomaticDataSourceSelection) + { + var dataSourceSelectionProcess = new AgenticSrcSelWithDynHeur(); + var result = await dataSourceSelectionProcess.SelectDataSourcesAsync(provider, lastPrompt, chatThread, dataSources, token); + proceedWithRAG = result.ProceedWithRAG; + selectedDataSources = result.SelectedDataSources; + } + else + { + // + // No, the user made the choice manually: + // + var selectedDataSourceInfo = selectedDataSources.Select(ds => ds.Name).Aggregate((a, b) => $"'{a}', '{b}'"); + logger.LogInformation($"The user selected the data sources manually. {selectedDataSources.Count} data source(s) are selected: {selectedDataSourceInfo}."); + } + + if(selectedDataSources.Count == 0) + { + logger.LogWarning("No data sources are selected. The RAG process is skipped."); + proceedWithRAG = false; + } + + // + // Trigger the retrieval part of the (R)AG process: + // + var dataContexts = new List<IRetrievalContext>(); + if (proceedWithRAG) + { + // + // We kick off the retrieval process for each data source in parallel: + // + var retrievalTasks = new List<Task<IReadOnlyList<IRetrievalContext>>>(selectedDataSources.Count); + foreach (var dataSource in selectedDataSources) + retrievalTasks.Add(dataSource.RetrieveDataAsync(lastPrompt, chatThread, token)); + + // + // Wait for all retrieval tasks to finish: + // + foreach (var retrievalTask in retrievalTasks) + { + try + { + dataContexts.AddRange(await retrievalTask); + } + catch (Exception e) + { + logger.LogError(e, "An error occurred during the retrieval process."); + } + } + } + + // + // Perform the augmentation of the R(A)G process: + // + if (proceedWithRAG) + { + + } + } + + return chatThread; + } + + #endregion +} \ No newline at end of file From 96e6372fcde56cac655adc78baf138a7e3251964 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 18 Feb 2025 11:24:43 +0100 Subject: [PATCH 029/110] Added a common augmentation interface & default implementation (#288) --- README.md | 2 +- app/MindWork AI Studio.sln.DotSettings | 1 + app/MindWork AI Studio/Chat/ChatRole.cs | 1 + app/MindWork AI Studio/Chat/ContentImage.cs | 60 +-------- app/MindWork AI Studio/Chat/IImageSource.cs | 17 +++ .../Chat/IImageSourceExtensions.cs | 63 ++++++++++ .../Provider/Anthropic/ProviderAnthropic.cs | 1 + .../Provider/Fireworks/ProviderFireworks.cs | 1 + .../Provider/Google/ProviderGoogle.cs | 1 + .../Provider/Groq/ProviderGroq.cs | 1 + .../Provider/Mistral/ProviderMistral.cs | 1 + .../Provider/OpenAI/ProviderOpenAI.cs | 1 + .../Provider/SelfHosted/ProviderSelfHosted.cs | 1 + .../Provider/X/ProviderX.cs | 1 + .../AugmentationProcesses/AugmentationOne.cs | 119 ++++++++++++++++++ .../Tools/RAG/IAugmentationProcess.cs | 33 +++++ .../RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs | 4 +- .../Tools/RAG/RetrievalImageContext.cs | 2 +- .../wwwroot/changelog/v0.9.29.md | 1 + 19 files changed, 249 insertions(+), 62 deletions(-) create mode 100644 app/MindWork AI Studio/Chat/IImageSource.cs create mode 100644 app/MindWork AI Studio/Chat/IImageSourceExtensions.cs create mode 100644 app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs create mode 100644 app/MindWork AI Studio/Tools/RAG/IAugmentationProcess.cs diff --git a/README.md b/README.md index 257852db..04c7dbe1 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Things we are currently working on: - [ ] Runtime: Integration of the vector database [LanceDB](https://github.com/lancedb/lancedb) - [ ] App: Implement the continuous process of vectorizing data - [x] ~~App: Define a common retrieval context interface for the integration of RAG processes in chats (PR [#281](https://github.com/MindWorkAI/AI-Studio/pull/281), [#284](https://github.com/MindWorkAI/AI-Studio/pull/284), [#286](https://github.com/MindWorkAI/AI-Studio/pull/286), [#287](https://github.com/MindWorkAI/AI-Studio/pull/287))~~ - - [ ] App: Define a common augmentation interface for the integration of RAG processes in chats + - [x] ~~App: Define a common augmentation interface for the integration of RAG processes in chats (PR [#288](https://github.com/MindWorkAI/AI-Studio/pull/288))~~ - [x] ~~App: Integrate data sources in chats (PR [#282](https://github.com/MindWorkAI/AI-Studio/pull/282))~~ diff --git a/app/MindWork AI Studio.sln.DotSettings b/app/MindWork AI Studio.sln.DotSettings index 3f079302..4038c0ae 100644 --- a/app/MindWork AI Studio.sln.DotSettings +++ b/app/MindWork AI Studio.sln.DotSettings @@ -7,6 +7,7 @@ <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MSG/@EntryIndexedValue">MSG</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RAG/@EntryIndexedValue">RAG</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UI/@EntryIndexedValue">UI</s:String> + <s:Boolean x:Key="/Default/UserDictionary/Words/=agentic/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=groq/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=ollama/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=tauri_0027s/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary> \ No newline at end of file diff --git a/app/MindWork AI Studio/Chat/ChatRole.cs b/app/MindWork AI Studio/Chat/ChatRole.cs index 339be971..d4e61e4b 100644 --- a/app/MindWork AI Studio/Chat/ChatRole.cs +++ b/app/MindWork AI Studio/Chat/ChatRole.cs @@ -12,6 +12,7 @@ public enum ChatRole USER, AI, AGENT, + RAG, } /// <summary> diff --git a/app/MindWork AI Studio/Chat/ContentImage.cs b/app/MindWork AI Studio/Chat/ContentImage.cs index 997e9987..9f09e87c 100644 --- a/app/MindWork AI Studio/Chat/ContentImage.cs +++ b/app/MindWork AI Studio/Chat/ContentImage.cs @@ -7,7 +7,7 @@ namespace AIStudio.Chat; /// <summary> /// Represents an image inside the chat. /// </summary> -public sealed class ContentImage : IContent +public sealed class ContentImage : IContent, IImageSource { #region Implementation of IContent @@ -47,62 +47,4 @@ public sealed class ContentImage : IContent /// The image source. /// </summary> public required string Source { get; set; } - - /// <summary> - /// Read the image content as a base64 string. - /// </summary> - /// <remarks> - /// The images are directly converted to base64 strings. The maximum - /// size of the image is around 10 MB. If the image is larger, the method - /// returns an empty string. - /// - /// As of now, this method does no sort of image processing. LLMs usually - /// do not work with arbitrary image sizes. In the future, we might have - /// to resize the images before sending them to the model. - /// </remarks> - /// <param name="token">The cancellation token.</param> - /// <returns>The image content as a base64 string; might be empty.</returns> - public async Task<string> AsBase64(CancellationToken token = default) - { - switch (this.SourceType) - { - case ContentImageSource.BASE64: - return this.Source; - - case ContentImageSource.URL: - { - using var httpClient = new HttpClient(); - using var response = await httpClient.GetAsync(this.Source, HttpCompletionOption.ResponseHeadersRead, token); - if(response.IsSuccessStatusCode) - { - // Read the length of the content: - var lengthBytes = response.Content.Headers.ContentLength; - if(lengthBytes > 10_000_000) - return string.Empty; - - var bytes = await response.Content.ReadAsByteArrayAsync(token); - return Convert.ToBase64String(bytes); - } - - return string.Empty; - } - - case ContentImageSource.LOCAL_PATH: - if(File.Exists(this.Source)) - { - // Read the content length: - var length = new FileInfo(this.Source).Length; - if(length > 10_000_000) - return string.Empty; - - var bytes = await File.ReadAllBytesAsync(this.Source, token); - return Convert.ToBase64String(bytes); - } - - return string.Empty; - - default: - return string.Empty; - } - } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Chat/IImageSource.cs b/app/MindWork AI Studio/Chat/IImageSource.cs new file mode 100644 index 00000000..1931630f --- /dev/null +++ b/app/MindWork AI Studio/Chat/IImageSource.cs @@ -0,0 +1,17 @@ +namespace AIStudio.Chat; + +public interface IImageSource +{ + /// <summary> + /// The type of the image source. + /// </summary> + /// <remarks> + /// Is the image source a URL, a local file path, a base64 string, etc.? + /// </remarks> + public ContentImageSource SourceType { get; init; } + + /// <summary> + /// The image source. + /// </summary> + public string Source { get; set; } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Chat/IImageSourceExtensions.cs b/app/MindWork AI Studio/Chat/IImageSourceExtensions.cs new file mode 100644 index 00000000..836df531 --- /dev/null +++ b/app/MindWork AI Studio/Chat/IImageSourceExtensions.cs @@ -0,0 +1,63 @@ +namespace AIStudio.Chat; + +public static class IImageSourceExtensions +{ + /// <summary> + /// Read the image content as a base64 string. + /// </summary> + /// <remarks> + /// The images are directly converted to base64 strings. The maximum + /// size of the image is around 10 MB. If the image is larger, the method + /// returns an empty string. + /// + /// As of now, this method does no sort of image processing. LLMs usually + /// do not work with arbitrary image sizes. In the future, we might have + /// to resize the images before sending them to the model. + /// </remarks> + /// <param name="image">The image source.</param> + /// <param name="token">The cancellation token.</param> + /// <returns>The image content as a base64 string; might be empty.</returns> + public static async Task<string> AsBase64(this IImageSource image, CancellationToken token = default) + { + switch (image.SourceType) + { + case ContentImageSource.BASE64: + return image.Source; + + case ContentImageSource.URL: + { + using var httpClient = new HttpClient(); + using var response = await httpClient.GetAsync(image.Source, HttpCompletionOption.ResponseHeadersRead, token); + if(response.IsSuccessStatusCode) + { + // Read the length of the content: + var lengthBytes = response.Content.Headers.ContentLength; + if(lengthBytes > 10_000_000) + return string.Empty; + + var bytes = await response.Content.ReadAsByteArrayAsync(token); + return Convert.ToBase64String(bytes); + } + + return string.Empty; + } + + case ContentImageSource.LOCAL_PATH: + if(File.Exists(image.Source)) + { + // Read the content length: + var length = new FileInfo(image.Source).Length; + if(length > 10_000_000) + return string.Empty; + + var bytes = await File.ReadAllBytesAsync(image.Source, token); + return Convert.ToBase64String(bytes); + } + + return string.Empty; + + default: + return string.Empty; + } + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs b/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs index d0e20d34..6f3ef54e 100644 --- a/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs +++ b/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs @@ -37,6 +37,7 @@ public sealed class ProviderAnthropic(ILogger logger) : BaseProvider("https://ap ChatRole.USER => "user", ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", + ChatRole.RAG => "assistant", _ => "user", }, diff --git a/app/MindWork AI Studio/Provider/Fireworks/ProviderFireworks.cs b/app/MindWork AI Studio/Provider/Fireworks/ProviderFireworks.cs index 66817fc2..88801a1f 100644 --- a/app/MindWork AI Studio/Provider/Fireworks/ProviderFireworks.cs +++ b/app/MindWork AI Studio/Provider/Fireworks/ProviderFireworks.cs @@ -49,6 +49,7 @@ public class ProviderFireworks(ILogger logger) : BaseProvider("https://api.firew ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", ChatRole.SYSTEM => "system", + ChatRole.RAG => "assistant", _ => "user", }, diff --git a/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs b/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs index 942cb245..4fd12ab6 100644 --- a/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs +++ b/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs @@ -50,6 +50,7 @@ public class ProviderGoogle(ILogger logger) : BaseProvider("https://generativela ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", ChatRole.SYSTEM => "system", + ChatRole.RAG => "assistant", _ => "user", }, diff --git a/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs b/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs index f32a31b5..10e8899b 100644 --- a/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs +++ b/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs @@ -50,6 +50,7 @@ public class ProviderGroq(ILogger logger) : BaseProvider("https://api.groq.com/o ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", ChatRole.SYSTEM => "system", + ChatRole.RAG => "assistant", _ => "user", }, diff --git a/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs b/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs index 024f60d3..4395920a 100644 --- a/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs +++ b/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs @@ -48,6 +48,7 @@ public sealed class ProviderMistral(ILogger logger) : BaseProvider("https://api. ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", ChatRole.SYSTEM => "system", + ChatRole.RAG => "assistant", _ => "user", }, diff --git a/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs b/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs index ed092174..f9019259 100644 --- a/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs +++ b/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs @@ -76,6 +76,7 @@ public sealed class ProviderOpenAI(ILogger logger) : BaseProvider("https://api.o ChatRole.USER => "user", ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", + ChatRole.RAG => "assistant", ChatRole.SYSTEM => systemPromptRole, _ => "user", diff --git a/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs b/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs index 4ba45c6b..73c101a6 100644 --- a/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs +++ b/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs @@ -46,6 +46,7 @@ public sealed class ProviderSelfHosted(ILogger logger, Host host, string hostnam ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", ChatRole.SYSTEM => "system", + ChatRole.RAG => "assistant", _ => "user", }, diff --git a/app/MindWork AI Studio/Provider/X/ProviderX.cs b/app/MindWork AI Studio/Provider/X/ProviderX.cs index a8334c8d..df927d73 100644 --- a/app/MindWork AI Studio/Provider/X/ProviderX.cs +++ b/app/MindWork AI Studio/Provider/X/ProviderX.cs @@ -50,6 +50,7 @@ public sealed class ProviderX(ILogger logger) : BaseProvider("https://api.x.ai/v ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", ChatRole.SYSTEM => "system", + ChatRole.RAG => "assistant", _ => "user", }, diff --git a/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs b/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs new file mode 100644 index 00000000..1d0fc0e1 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs @@ -0,0 +1,119 @@ +using System.Text; + +using AIStudio.Chat; +using AIStudio.Provider; + +namespace AIStudio.Tools.RAG.AugmentationProcesses; + +public sealed class AugmentationOne : IAugmentationProcess +{ + #region Implementation of IAugmentationProcess + + /// <inheritdoc /> + public string TechnicalName => "AugmentationOne"; + + /// <inheritdoc /> + public string UIName => "Standard augmentation process"; + + /// <inheritdoc /> + public string Description => "This is the standard augmentation process, which uses all retrieval contexts to augment the chat thread."; + + /// <inheritdoc /> + public async Task<ChatThread> ProcessAsync(IProvider provider, IContent lastPrompt, ChatThread chatThread, IReadOnlyList<IRetrievalContext> retrievalContexts, CancellationToken token = default) + { + var logger = Program.SERVICE_PROVIDER.GetService<ILogger<AugmentationOne>>()!; + if(retrievalContexts.Count == 0) + { + logger.LogWarning("No retrieval contexts were issued. Skipping the augmentation process."); + return chatThread; + } + + var numTotalRetrievalContexts = retrievalContexts.Count; + logger.LogInformation($"Starting the augmentation process over {numTotalRetrievalContexts:###,###,###,###} retrieval contexts."); + + // + // We build a huge prompt from all retrieval contexts: + // + var sb = new StringBuilder(); + sb.AppendLine("The following useful information will help you in processing the user prompt:"); + sb.AppendLine(); + + var index = 0; + foreach(var retrievalContext in retrievalContexts) + { + index++; + sb.AppendLine($"# Retrieval context {index} of {numTotalRetrievalContexts}"); + sb.AppendLine($"Data source name: {retrievalContext.DataSourceName}"); + sb.AppendLine($"Content category: {retrievalContext.Category}"); + sb.AppendLine($"Content type: {retrievalContext.Type}"); + sb.AppendLine($"Content path: {retrievalContext.Path}"); + + if(retrievalContext.Links.Count > 0) + { + sb.AppendLine("Additional links:"); + foreach(var link in retrievalContext.Links) + sb.AppendLine($"- {link}"); + } + + switch(retrievalContext) + { + case RetrievalTextContext textContext: + sb.AppendLine(); + sb.AppendLine("Matched text content:"); + sb.AppendLine("````"); + sb.AppendLine(textContext.MatchedText); + sb.AppendLine("````"); + + if(textContext.SurroundingContent.Count > 0) + { + sb.AppendLine(); + sb.AppendLine("Surrounding text content:"); + foreach(var surrounding in textContext.SurroundingContent) + { + sb.AppendLine(); + sb.AppendLine("````"); + sb.AppendLine(surrounding); + sb.AppendLine("````"); + } + } + + + break; + + case RetrievalImageContext imageContext: + sb.AppendLine(); + sb.AppendLine("Matched image content as base64-encoded data:"); + sb.AppendLine("````"); + sb.AppendLine(await imageContext.AsBase64(token)); + sb.AppendLine("````"); + break; + + default: + logger.LogWarning($"The retrieval content type '{retrievalContext.Type}' of data source '{retrievalContext.DataSourceName}' at location '{retrievalContext.Path}' is not supported yet."); + break; + } + + sb.AppendLine(); + } + + // + // Append the entire augmentation to the chat thread, + // just before the user prompt: + // + chatThread.Blocks.Insert(chatThread.Blocks.Count - 1, new() + { + Role = ChatRole.RAG, + Time = DateTimeOffset.UtcNow, + ContentType = ContentType.TEXT, + HideFromUser = true, + Content = new ContentText + { + Text = sb.ToString(), + } + }); + + return chatThread; + } + + #endregion +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/IAugmentationProcess.cs b/app/MindWork AI Studio/Tools/RAG/IAugmentationProcess.cs new file mode 100644 index 00000000..81bb6da7 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/IAugmentationProcess.cs @@ -0,0 +1,33 @@ +using AIStudio.Chat; +using AIStudio.Provider; + +namespace AIStudio.Tools.RAG; + +public interface IAugmentationProcess +{ + /// <summary> + /// How is the augmentation process called? + /// </summary> + public string TechnicalName { get; } + + /// <summary> + /// How is the augmentation process called in the UI? + /// </summary> + public string UIName { get; } + + /// <summary> + /// How works the augmentation process? + /// </summary> + public string Description { get; } + + /// <summary> + /// Starts the augmentation process. + /// </summary> + /// <param name="provider">The LLM provider. Gets used, e.g., for automatic retrieval context validation.</param> + /// <param name="lastPrompt">The last prompt that was issued by the user.</param> + /// <param name="chatThread">The chat thread.</param> + /// <param name="retrievalContexts">The retrieval contexts that were issued by the retrieval process.</param> + /// <param name="token">The cancellation token.</param> + /// <returns>The altered chat thread.</returns> + public Task<ChatThread> ProcessAsync(IProvider provider, IContent lastPrompt, ChatThread chatThread, IReadOnlyList<IRetrievalContext> retrievalContexts, CancellationToken token = default); +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs b/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs index 8581a3e8..13e32500 100644 --- a/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs +++ b/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs @@ -1,6 +1,7 @@ using AIStudio.Chat; using AIStudio.Provider; using AIStudio.Settings; +using AIStudio.Tools.RAG.AugmentationProcesses; using AIStudio.Tools.RAG.DataSourceSelectionProcesses; using AIStudio.Tools.Services; @@ -106,7 +107,8 @@ public sealed class AISrcSelWithRetCtxVal : IRagProcess // if (proceedWithRAG) { - + var augmentationProcess = new AugmentationOne(); + chatThread = await augmentationProcess.ProcessAsync(provider, lastPrompt, chatThread, dataContexts, token); } } diff --git a/app/MindWork AI Studio/Tools/RAG/RetrievalImageContext.cs b/app/MindWork AI Studio/Tools/RAG/RetrievalImageContext.cs index 37cadb98..973892d3 100644 --- a/app/MindWork AI Studio/Tools/RAG/RetrievalImageContext.cs +++ b/app/MindWork AI Studio/Tools/RAG/RetrievalImageContext.cs @@ -2,7 +2,7 @@ using AIStudio.Chat; namespace AIStudio.Tools.RAG; -public sealed class RetrievalImageContext : IRetrievalContext +public sealed class RetrievalImageContext : IRetrievalContext, IImageSource { #region Implementation of IRetrievalContext diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md index 358146c2..3d861432 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md @@ -3,5 +3,6 @@ - Added an option to all data sources to select a local security policy. This preview feature is hidden behind the RAG feature flag. - Added an option to preselect data sources and options for new chats. This preview feature is hidden behind the RAG feature flag. - Added an agent to select the appropriate data sources for any prompt. This preview feature is hidden behind the RAG feature flag. +- Added a generic RAG process to integrate possibly any data in your chats. Although the generic RAG process is now implemented, the retrieval part is working only with external data sources using the ERI interface. That means that you could integrate your company's data from the corporate network by now. The retrieval process for your local data is still under development and will take several weeks to be released. In order to use data through ERI, you (or your company) have to develop an ERI server. You might use the ERI server assistant within AI Studio to do so. This preview feature is hidden behind the RAG feature flag. - Improved confidence card for small spaces. - Fixed a bug in which 'APP_SETTINGS' appeared as a valid destination in the "send to" menu. \ No newline at end of file From bfc9f2ea1d787a3d98e8586f5595fa477e7d5cbb Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 22 Feb 2025 20:51:06 +0100 Subject: [PATCH 030/110] Added a retrieval context validation agent (#289) --- README.md | 2 +- app/MindWork AI Studio/Agents/AgentBase.cs | 28 +- .../Agents/AgentDataSourceSelection.cs | 16 +- .../Agents/AgentRetrievalContextValidation.cs | 393 ++++++++++++++++++ .../Agents/AgentTextContentCleaner.cs | 12 +- .../RetrievalContextValidationResult.cs | 12 + .../Agents/SelectedDataSource.cs | 2 +- app/MindWork AI Studio/Agents/UserRequest.cs | 19 + ...PanelAgentRetrievalContextValidation.razor | 18 + ...elAgentRetrievalContextValidation.razor.cs | 3 + app/MindWork AI Studio/Pages/Settings.razor | 24 +- .../Pages/Settings.razor.cs | 3 + app/MindWork AI Studio/Program.cs | 1 + .../Settings/DataModel/Data.cs | 2 + .../DataModel/DataAgentDataSourceSelection.cs | 4 +- .../DataAgentRetrievalContextValidation.cs | 24 ++ .../Settings/DataModel/DataSourceERI_V1.cs | 4 +- app/MindWork AI Studio/Tools/IConfidence.cs | 16 + .../Tools/IConfidenceExtensions.cs | 101 +++++ .../AugmentationProcesses/AugmentationOne.cs | 86 ++-- .../AgenticSrcSelWithDynHeur.cs | 38 +- .../Tools/RAG/IRetrievalContextExtensions.cs | 96 +++++ .../RAG/RetrievalContentCategoryExtensions.cs | 2 +- app/MindWork AI Studio/Tools/TargetWindow.cs | 38 ++ .../Tools/TargetWindowStrategy.cs | 19 + .../wwwroot/changelog/v0.9.29.md | 1 + 26 files changed, 829 insertions(+), 135 deletions(-) create mode 100644 app/MindWork AI Studio/Agents/AgentRetrievalContextValidation.cs create mode 100644 app/MindWork AI Studio/Agents/RetrievalContextValidationResult.cs create mode 100644 app/MindWork AI Studio/Agents/UserRequest.cs create mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelAgentRetrievalContextValidation.razor create mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelAgentRetrievalContextValidation.razor.cs create mode 100644 app/MindWork AI Studio/Settings/DataModel/DataAgentRetrievalContextValidation.cs create mode 100644 app/MindWork AI Studio/Tools/IConfidence.cs create mode 100644 app/MindWork AI Studio/Tools/IConfidenceExtensions.cs create mode 100644 app/MindWork AI Studio/Tools/RAG/IRetrievalContextExtensions.cs create mode 100644 app/MindWork AI Studio/Tools/TargetWindow.cs create mode 100644 app/MindWork AI Studio/Tools/TargetWindowStrategy.cs diff --git a/README.md b/README.md index 04c7dbe1..7a157fa7 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ Things we are currently working on: - [ ] Runtime: Integration of the vector database [LanceDB](https://github.com/lancedb/lancedb) - [ ] App: Implement the continuous process of vectorizing data - [x] ~~App: Define a common retrieval context interface for the integration of RAG processes in chats (PR [#281](https://github.com/MindWorkAI/AI-Studio/pull/281), [#284](https://github.com/MindWorkAI/AI-Studio/pull/284), [#286](https://github.com/MindWorkAI/AI-Studio/pull/286), [#287](https://github.com/MindWorkAI/AI-Studio/pull/287))~~ - - [x] ~~App: Define a common augmentation interface for the integration of RAG processes in chats (PR [#288](https://github.com/MindWorkAI/AI-Studio/pull/288))~~ + - [x] ~~App: Define a common augmentation interface for the integration of RAG processes in chats (PR [#288](https://github.com/MindWorkAI/AI-Studio/pull/288), [#289](https://github.com/MindWorkAI/AI-Studio/pull/289))~~ - [x] ~~App: Integrate data sources in chats (PR [#282](https://github.com/MindWorkAI/AI-Studio/pull/282))~~ diff --git a/app/MindWork AI Studio/Agents/AgentBase.cs b/app/MindWork AI Studio/Agents/AgentBase.cs index 5ea5bd9b..66f13146 100644 --- a/app/MindWork AI Studio/Agents/AgentBase.cs +++ b/app/MindWork AI Studio/Agents/AgentBase.cs @@ -11,6 +11,14 @@ namespace AIStudio.Agents; public abstract class AgentBase(ILogger<AgentBase> logger, SettingsManager settingsManager, DataSourceService dataSourceService, ThreadSafeRandom rng) : IAgent { + protected static readonly ContentBlock EMPTY_BLOCK = new() + { + Content = null, + ContentType = ContentType.NONE, + Role = ChatRole.AGENT, + Time = DateTimeOffset.UtcNow, + }; + protected static readonly JsonSerializerOptions JSON_SERIALIZER_OPTIONS = new() { PropertyNamingPolicy = JsonNamingPolicy.SnakeCaseLower, @@ -24,8 +32,6 @@ public abstract class AgentBase(ILogger<AgentBase> logger, SettingsManager setti protected ILogger<AgentBase> Logger { get; init; } = logger; - protected IContent? lastUserPrompt; - /// <summary> /// Represents the type or category of this agent. /// </summary> @@ -72,10 +78,10 @@ public abstract class AgentBase(ILogger<AgentBase> logger, SettingsManager setti Blocks = [], }; - protected DateTimeOffset AddUserRequest(ChatThread thread, string request) + protected UserRequest AddUserRequest(ChatThread thread, string request) { var time = DateTimeOffset.Now; - this.lastUserPrompt = new ContentText + var lastUserPrompt = new ContentText { Text = request, }; @@ -85,13 +91,17 @@ public abstract class AgentBase(ILogger<AgentBase> logger, SettingsManager setti Time = time, ContentType = ContentType.TEXT, Role = ChatRole.USER, - Content = this.lastUserPrompt, + Content = lastUserPrompt, }); - - return time; + + return new() + { + Time = time, + UserPrompt = lastUserPrompt, + }; } - protected async Task AddAIResponseAsync(ChatThread thread, DateTimeOffset time) + protected async Task AddAIResponseAsync(ChatThread thread, IContent lastUserPrompt, DateTimeOffset time) { if(this.ProviderSettings is null) return; @@ -117,6 +127,6 @@ public abstract class AgentBase(ILogger<AgentBase> logger, SettingsManager setti // Use the selected provider to get the AI response. // By awaiting this line, we wait for the entire // content to be streamed. - await aiText.CreateFromProviderAsync(providerSettings.CreateProvider(this.Logger), providerSettings.Model, this.lastUserPrompt, thread); + await aiText.CreateFromProviderAsync(providerSettings.CreateProvider(this.Logger), providerSettings.Model, lastUserPrompt, thread); } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs b/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs index f42a4764..6b1410ce 100644 --- a/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs +++ b/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs @@ -12,14 +12,6 @@ namespace AIStudio.Agents; public sealed class AgentDataSourceSelection (ILogger<AgentDataSourceSelection> logger, ILogger<AgentBase> baseLogger, SettingsManager settingsManager, DataSourceService dataSourceService, ThreadSafeRandom rng) : AgentBase(baseLogger, settingsManager, dataSourceService, rng) { - private static readonly ContentBlock EMPTY_BLOCK = new() - { - Content = null, - ContentType = ContentType.NONE, - Role = ChatRole.AGENT, - Time = DateTimeOffset.UtcNow, - }; - private readonly List<ContentBlock> answers = new(); #region Overrides of AgentBase @@ -119,8 +111,8 @@ public sealed class AgentDataSourceSelection (ILogger<AgentDataSourceSelection> return EMPTY_BLOCK; var thread = this.CreateChatThread(this.SystemPrompt(availableDataSources)); - var time = this.AddUserRequest(thread, text.Text); - await this.AddAIResponseAsync(thread, time); + var userRequest = this.AddUserRequest(thread, text.Text); + await this.AddAIResponseAsync(thread, userRequest.UserPrompt, userRequest.Time); var answer = thread.Blocks[^1]; @@ -306,7 +298,7 @@ public sealed class AgentDataSourceSelection (ILogger<AgentDataSourceSelection> // We know how bad LLM may be in generating JSON without surrounding text. // Thus, we expect the worst and try to extract the JSON list from the text: // - var json = this.ExtractJson(selectedDataSourcesJson); + var json = ExtractJson(selectedDataSourcesJson); try { @@ -352,7 +344,7 @@ public sealed class AgentDataSourceSelection (ILogger<AgentDataSourceSelection> /// </remarks> /// <param name="text">The text that may contain the JSON list.</param> /// <returns>The extracted JSON list.</returns> - private string ExtractJson(string text) => ExtractJson(text.AsSpan()).ToString(); + private static string ExtractJson(string text) => ExtractJson(text.AsSpan()).ToString(); /// <summary> /// Extracts the JSON list from the given text. The text may contain additional diff --git a/app/MindWork AI Studio/Agents/AgentRetrievalContextValidation.cs b/app/MindWork AI Studio/Agents/AgentRetrievalContextValidation.cs new file mode 100644 index 00000000..ae54de53 --- /dev/null +++ b/app/MindWork AI Studio/Agents/AgentRetrievalContextValidation.cs @@ -0,0 +1,393 @@ +using System.Text.Json; + +using AIStudio.Chat; +using AIStudio.Provider; +using AIStudio.Settings; +using AIStudio.Tools.RAG; +using AIStudio.Tools.Services; + +namespace AIStudio.Agents; + +public sealed class AgentRetrievalContextValidation (ILogger<AgentRetrievalContextValidation> logger, ILogger<AgentBase> baseLogger, SettingsManager settingsManager, DataSourceService dataSourceService, ThreadSafeRandom rng) : AgentBase(baseLogger, settingsManager, dataSourceService, rng) +{ + #region Overrides of AgentBase + + /// <inheritdoc /> + protected override Type Type => Type.WORKER; + + /// <inheritdoc /> + public override string Id => "Retrieval Context Validation"; + + /// <inheritdoc /> + protected override string JobDescription => + """ + You receive a system and user prompt as well as a retrieval context as input. Your task is to decide whether this + retrieval context is helpful in processing the prompts or not. You respond with the decision (true or false), + your reasoning, and your confidence in this decision. + + Your response is only one JSON object in the following format: + + ``` + {"decision": true, "reason": "Why did you choose this source?", "confidence": 0.87} + ``` + + You express your confidence as a floating-point number between 0.0 (maximum uncertainty) and + 1.0 (you are absolutely certain that this retrieval context is needed). + + The JSON schema is: + + ``` + { + "$schema": "http://json-schema.org/draft-04/schema#", + "type": "object", + "properties": { + "decision": { + "type": "boolean" + }, + "reason": { + "type": "string" + }, + "confidence": { + "type": "number" + } + }, + "required": [ + "decision", + "reason", + "confidence" + ] + } + ``` + + You do not ask any follow-up questions. You do not address the user. Your response consists solely of + that one JSON object. + """; + + /// <inheritdoc /> + protected override string SystemPrompt(string retrievalContext) => $""" + {this.JobDescription} + + {retrievalContext} + """; + + /// <inheritdoc /> + public override Settings.Provider? ProviderSettings { get; set; } + + /// <summary> + /// The retrieval context validation agent does not work with context. Use + /// the process input method instead. + /// </summary> + /// <returns>The chat thread without any changes.</returns> + public override Task<ChatThread> ProcessContext(ChatThread chatThread, IDictionary<string, string> additionalData) => Task.FromResult(chatThread); + + /// <inheritdoc /> + public override async Task<ContentBlock> ProcessInput(ContentBlock input, IDictionary<string, string> additionalData) + { + if (input.Content is not ContentText text) + return EMPTY_BLOCK; + + if(text.InitialRemoteWait || text.IsStreaming) + return EMPTY_BLOCK; + + if(string.IsNullOrWhiteSpace(text.Text)) + return EMPTY_BLOCK; + + if(!additionalData.TryGetValue("retrievalContext", out var retrievalContext) || string.IsNullOrWhiteSpace(retrievalContext)) + return EMPTY_BLOCK; + + var thread = this.CreateChatThread(this.SystemPrompt(retrievalContext)); + var userRequest = this.AddUserRequest(thread, text.Text); + await this.AddAIResponseAsync(thread, userRequest.UserPrompt, userRequest.Time); + + return thread.Blocks[^1]; + } + + /// <inheritdoc /> + public override Task<bool> MadeDecision(ContentBlock input) => Task.FromResult(true); + + /// <summary> + /// We do not provide any context. This agent will process many retrieval contexts. + /// This would block a huge amount of memory. + /// </summary> + /// <returns>An empty list.</returns> + public override IReadOnlyCollection<ContentBlock> GetContext() => []; + + /// <summary> + /// We do not provide any answers. This agent will process many retrieval contexts. + /// This would block a huge amount of memory. + /// </summary> + /// <returns>An empty list.</returns> + public override IReadOnlyCollection<ContentBlock> GetAnswers() => []; + + #endregion + + /// <summary> + /// Sets the LLM provider for the agent. + /// </summary> + /// <remarks> + /// When you have to call the validation in parallel for many retrieval contexts, + /// you can set the provider once and then call the validation method in parallel. + /// </remarks> + /// <param name="provider">The current LLM provider. When the user doesn't preselect an agent provider, the agent uses this provider.</param> + public void SetLLMProvider(IProvider provider) + { + // We start with the provider currently selected by the user: + var agentProvider = this.SettingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == provider.Id); + + // If the user preselected an agent provider, we try to use this one: + if (this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectAgentOptions) + { + var configuredAgentProvider = this.SettingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectedAgentProvider); + + // If the configured agent provider is available, we use it: + if (configuredAgentProvider != default) + agentProvider = configuredAgentProvider; + } + + // Assign the provider settings to the agent: + logger.LogInformation($"The agent for the retrieval context validation uses the provider '{agentProvider.InstanceName}' ({agentProvider.UsedLLMProvider.ToName()}, confidence={agentProvider.UsedLLMProvider.GetConfidence(this.SettingsManager).Level.GetName()})."); + this.ProviderSettings = agentProvider; + } + + /// <summary> + /// Validate all retrieval contexts against the last user and the system prompt. + /// </summary> + /// <param name="lastPrompt">The last user prompt.</param> + /// <param name="chatThread">The chat thread.</param> + /// <param name="retrievalContexts">All retrieval contexts to validate.</param> + /// <param name="token">The cancellation token.</param> + /// <returns>The validation results.</returns> + public async Task<IReadOnlyList<RetrievalContextValidationResult>> ValidateRetrievalContextsAsync(IContent lastPrompt, ChatThread chatThread, IReadOnlyList<IRetrievalContext> retrievalContexts, CancellationToken token = default) + { + // Check if the retrieval context validation is enabled: + if (!this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.EnableRetrievalContextValidation) + return []; + + // Prepare the list of validation tasks: + var validationTasks = new List<Task<RetrievalContextValidationResult>>(retrievalContexts.Count); + + // Read the number of parallel validations: + var numParallelValidations = this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.NumParallelValidations; + numParallelValidations = Math.Max(1, numParallelValidations); + + // Use a semaphore to limit the number of parallel validations: + using var semaphore = new SemaphoreSlim(numParallelValidations); + foreach (var retrievalContext in retrievalContexts) + { + // Wait for an available slot in the semaphore: + await semaphore.WaitAsync(token); + + // Start the next validation task: + validationTasks.Add(this.ValidateRetrievalContextAsync(lastPrompt, chatThread, retrievalContext, token, semaphore)); + } + + // Wait for all validation tasks to complete: + return await Task.WhenAll(validationTasks); + } + + /// <summary> + /// Validates the retrieval context against the last user and the system prompt. + /// </summary> + /// <remarks> + /// Probably, you have a lot of retrieval contexts to validate. In this case, you + /// can call this method in parallel for each retrieval context. You might use + /// the ValidateRetrievalContextsAsync method to validate all retrieval contexts. + /// </remarks> + /// <param name="lastPrompt">The last user prompt.</param> + /// <param name="chatThread">The chat thread.</param> + /// <param name="retrievalContext">The retrieval context to validate.</param> + /// <param name="token">The cancellation token.</param> + /// <param name="semaphore">The optional semaphore to limit the number of parallel validations.</param> + /// <returns>The validation result.</returns> + public async Task<RetrievalContextValidationResult> ValidateRetrievalContextAsync(IContent lastPrompt, ChatThread chatThread, IRetrievalContext retrievalContext, CancellationToken token = default, SemaphoreSlim? semaphore = null) + { + try + { + // + // Check if the validation was canceled. This could happen when the user + // canceled the validation process or when the validation process took + // too long: + // + if(token.IsCancellationRequested) + return new(false, "The validation was canceled.", 1.0f, retrievalContext); + + // + // 1. Prepare the current system and user prompts as input for the agent: + // + var lastPromptContent = lastPrompt switch + { + ContentText text => text.Text, + + // Image prompts may be empty, e.g., when the image is too large: + ContentImage image => await image.AsBase64(token), + + // Other content types are not supported yet: + _ => string.Empty, + }; + + if (string.IsNullOrWhiteSpace(lastPromptContent)) + { + logger.LogWarning("The last prompt is empty. The AI cannot validate the retrieval context."); + return new(false, "The last prompt was empty.", 1.0f, retrievalContext); + } + + // + // 2. Prepare the retrieval context for the agent: + // + var additionalData = new Dictionary<string, string>(); + var markdownRetrievalContext = await retrievalContext.AsMarkdown(token: token); + additionalData.Add("retrievalContext", markdownRetrievalContext); + + // + // 3. Let the agent validate the retrieval context: + // + var prompt = $""" + The system prompt is: + + ``` + {chatThread.SystemPrompt} + ``` + + The user prompt is: + + ``` + {lastPromptContent} + ``` + """; + + // Call the agent: + var aiResponse = await this.ProcessInput(new ContentBlock + { + Time = DateTimeOffset.UtcNow, + ContentType = ContentType.TEXT, + Role = ChatRole.USER, + Content = new ContentText + { + Text = prompt, + }, + }, additionalData); + + if (aiResponse.Content is null) + { + logger.LogWarning("The agent did not return a response."); + return new(false, "The agent did not return a response.", 1.0f, retrievalContext); + } + + switch (aiResponse) + { + + // + // 4. Parse the agent response: + // + case { ContentType: ContentType.TEXT, Content: ContentText textContent }: + { + // + // What we expect is one JSON object: + // + var validationJson = textContent.Text; + + // + // We know how bad LLM may be in generating JSON without surrounding text. + // Thus, we expect the worst and try to extract the JSON list from the text: + // + var json = ExtractJson(validationJson); + + try + { + var result = JsonSerializer.Deserialize<RetrievalContextValidationResult>(json, JSON_SERIALIZER_OPTIONS); + return result with { RetrievalContext = retrievalContext }; + } + catch + { + logger.LogWarning("The agent answered with an invalid or unexpected JSON format."); + return new(false, "The agent answered with an invalid or unexpected JSON format.", 1.0f, retrievalContext); + } + } + + case { ContentType: ContentType.TEXT }: + logger.LogWarning("The agent answered with an unexpected inner content type."); + return new(false, "The agent answered with an unexpected inner content type.", 1.0f, retrievalContext); + + case { ContentType: ContentType.NONE }: + logger.LogWarning("The agent did not return a response."); + return new(false, "The agent did not return a response.", 1.0f, retrievalContext); + + default: + logger.LogWarning($"The agent answered with an unexpected content type '{aiResponse.ContentType}'."); + return new(false, $"The agent answered with an unexpected content type '{aiResponse.ContentType}'.", 1.0f, retrievalContext); + } + } + finally + { + // Release the semaphore slot: + semaphore?.Release(); + } + } + + // A wrapper around the span version, because we need to call this method from an async context. + private static string ExtractJson(string text) => ExtractJson(text.AsSpan()).ToString(); + + private static ReadOnlySpan<char> ExtractJson(ReadOnlySpan<char> input) + { + // + // 1. Expect the best case ;-) + // + if (CheckJsonObjectStart(input)) + return ExtractJsonPart(input); + + // + // 2. Okay, we have some garbage before the + // JSON object. We expected that... + // + for (var index = 0; index < input.Length; index++) + { + if (input[index] is '{' && CheckJsonObjectStart(input[index..])) + return ExtractJsonPart(input[index..]); + } + + return []; + } + + private static bool CheckJsonObjectStart(ReadOnlySpan<char> area) + { + char[] expectedSymbols = ['{', '"', 'd']; + var symbolIndex = 0; + + foreach (var c in area) + { + if (symbolIndex >= expectedSymbols.Length) + return true; + + if (char.IsWhiteSpace(c)) + continue; + + if (c == expectedSymbols[symbolIndex++]) + continue; + + return false; + } + + return true; + } + + private static ReadOnlySpan<char> ExtractJsonPart(ReadOnlySpan<char> input) + { + var insideString = false; + for (var index = 0; index < input.Length; index++) + { + if (input[index] is '"') + { + insideString = !insideString; + continue; + } + + if (insideString) + continue; + + if (input[index] is '}') + return input[..++index]; + } + + return []; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Agents/AgentTextContentCleaner.cs b/app/MindWork AI Studio/Agents/AgentTextContentCleaner.cs index d8e83817..2c541ddb 100644 --- a/app/MindWork AI Studio/Agents/AgentTextContentCleaner.cs +++ b/app/MindWork AI Studio/Agents/AgentTextContentCleaner.cs @@ -6,14 +6,6 @@ namespace AIStudio.Agents; public sealed class AgentTextContentCleaner(ILogger<AgentBase> logger, SettingsManager settingsManager, DataSourceService dataSourceService, ThreadSafeRandom rng) : AgentBase(logger, settingsManager, dataSourceService, rng) { - private static readonly ContentBlock EMPTY_BLOCK = new() - { - Content = null, - ContentType = ContentType.NONE, - Role = ChatRole.AGENT, - Time = DateTimeOffset.UtcNow, - }; - private readonly List<ContentBlock> context = new(); private readonly List<ContentBlock> answers = new(); @@ -73,8 +65,8 @@ public sealed class AgentTextContentCleaner(ILogger<AgentBase> logger, SettingsM return EMPTY_BLOCK; var thread = this.CreateChatThread(this.SystemPrompt(sourceURL)); - var time = this.AddUserRequest(thread, text.Text); - await this.AddAIResponseAsync(thread, time); + var userRequest = this.AddUserRequest(thread, text.Text); + await this.AddAIResponseAsync(thread, userRequest.UserPrompt, userRequest.Time); var answer = thread.Blocks[^1]; this.answers.Add(answer); diff --git a/app/MindWork AI Studio/Agents/RetrievalContextValidationResult.cs b/app/MindWork AI Studio/Agents/RetrievalContextValidationResult.cs new file mode 100644 index 00000000..826c3430 --- /dev/null +++ b/app/MindWork AI Studio/Agents/RetrievalContextValidationResult.cs @@ -0,0 +1,12 @@ +using AIStudio.Tools.RAG; + +namespace AIStudio.Agents; + +/// <summary> +/// Represents the result of a retrieval context validation. +/// </summary> +/// <param name="Decision">Whether the retrieval context is useful or not.</param> +/// <param name="Reason">The reason for the decision.</param> +/// <param name="Confidence">The confidence of the decision.</param> +/// <param name="RetrievalContext">The retrieval context that was validated.</param> +public readonly record struct RetrievalContextValidationResult(bool Decision, string Reason, float Confidence, IRetrievalContext? RetrievalContext) : IConfidence; \ No newline at end of file diff --git a/app/MindWork AI Studio/Agents/SelectedDataSource.cs b/app/MindWork AI Studio/Agents/SelectedDataSource.cs index c8b7192d..ca2c2a9f 100644 --- a/app/MindWork AI Studio/Agents/SelectedDataSource.cs +++ b/app/MindWork AI Studio/Agents/SelectedDataSource.cs @@ -6,4 +6,4 @@ namespace AIStudio.Agents; /// <param name="Id">The data source ID.</param> /// <param name="Reason">The reason for selecting the data source.</param> /// <param name="Confidence">The confidence of the agent in the selection.</param> -public readonly record struct SelectedDataSource(string Id, string Reason, float Confidence); \ No newline at end of file +public readonly record struct SelectedDataSource(string Id, string Reason, float Confidence) : IConfidence; \ No newline at end of file diff --git a/app/MindWork AI Studio/Agents/UserRequest.cs b/app/MindWork AI Studio/Agents/UserRequest.cs new file mode 100644 index 00000000..216eebe4 --- /dev/null +++ b/app/MindWork AI Studio/Agents/UserRequest.cs @@ -0,0 +1,19 @@ +using AIStudio.Chat; + +namespace AIStudio.Agents; + +/// <summary> +/// The created user request. +/// </summary> +public sealed class UserRequest +{ + /// <summary> + /// The time when the request was created. + /// </summary> + public required DateTimeOffset Time { get; init; } + + /// <summary> + /// The user prompt. + /// </summary> + public required IContent UserPrompt { get; init; } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentRetrievalContextValidation.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentRetrievalContextValidation.razor new file mode 100644 index 00000000..8d94af22 --- /dev/null +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentRetrievalContextValidation.razor @@ -0,0 +1,18 @@ +@inherits SettingsPanelBase + +<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Assessment" HeaderText="Agent: Retrieval Context Validation Options"> + <MudText Typo="Typo.body1" Class="mb-3"> + Use Case: this agent is used to validate any retrieval context of any retrieval process. Perhaps there are many of these + retrieval contexts and you want to validate them all. Therefore, you might want to use a cheap and fast LLM for this + job. When using a local or self-hosted LLM, look for a small (e.g. 3B) and fast model. + </MudText> + <ConfigurationOption OptionDescription="Enable the retrieval context validation agent?" LabelOn="The validation agent is enabled" LabelOff="No validation is performed" State="@(() => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.EnableRetrievalContextValidation)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.EnableRetrievalContextValidation = updatedState)" OptionHelp="When enabled, the retrieval context validation agent will check each retrieval context of any retrieval process, whether a context makes sense for the given prompt."/> + @if (this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.EnableRetrievalContextValidation) + { + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect retrieval context validation options?" LabelOn="Options are preselected" LabelOff="No options are preselected" State="@(() => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectAgentOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectAgentOptions = updatedState)" OptionHelp="When enabled, you can preselect some agent options. This is might be useful when you prefer a LLM."/> + <ConfigurationSlider T="int" OptionDescription="How many validation agents should work simultaneously?" Min="1" Max="100" Step="1" Unit="agents" Value="@(() => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.NumParallelValidations)" ValueUpdate="@(updatedValue => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.NumParallelValidations = updatedValue)" OptionHelp="More active agents also mean that a corresponding number of requests are made simultaneously. Some providers limit the number of requests per minute. When you are unsure, choose a low setting between 1 to 6 agents."/> + <ConfigurationProviderSelection Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectAgentOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectedAgentProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectedAgentProvider = selectedValue)"/> + </MudPaper> + } +</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentRetrievalContextValidation.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentRetrievalContextValidation.razor.cs new file mode 100644 index 00000000..aaf0d938 --- /dev/null +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentRetrievalContextValidation.razor.cs @@ -0,0 +1,3 @@ +namespace AIStudio.Components.Settings; + +public partial class SettingsPanelAgentRetrievalContextValidation : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Settings.razor b/app/MindWork AI Studio/Pages/Settings.razor index f8d90501..4170eb81 100644 --- a/app/MindWork AI Studio/Pages/Settings.razor +++ b/app/MindWork AI Studio/Pages/Settings.razor @@ -1,5 +1,6 @@ @attribute [Route(Routes.SETTINGS)] @using AIStudio.Components.Settings +@using AIStudio.Settings.DataModel <div class="inner-scrolling-context"> <MudText Typo="Typo.h3" Class="mb-12">Settings</MudText> @@ -7,8 +8,12 @@ <InnerScrolling> <MudExpansionPanels Class="mb-3" MultiExpansion="@false"> <SettingsPanelProviders @bind-AvailableLLMProviders="@this.availableLLMProviders" /> - <SettingsPanelEmbeddings AvailableLLMProvidersFunc="() => this.availableLLMProviders" @bind-AvailableEmbeddingProviders="@this.availableEmbeddingProviders" /> - <SettingsPanelDataSources AvailableLLMProvidersFunc="() => this.availableLLMProviders" AvailableEmbeddingsFunc="() => this.availableEmbeddingProviders" @bind-AvailableDataSources="@this.availableDataSources" /> + + @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) + { + <SettingsPanelEmbeddings AvailableLLMProvidersFunc="() => this.availableLLMProviders" @bind-AvailableEmbeddingProviders="@this.availableEmbeddingProviders"/> + <SettingsPanelDataSources AvailableLLMProvidersFunc="() => this.availableLLMProviders" AvailableEmbeddingsFunc="() => this.availableEmbeddingProviders" @bind-AvailableDataSources="@this.availableDataSources"/> + } <SettingsPanelProfiles AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> <SettingsPanelApp AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> <SettingsPanelChat AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> @@ -16,7 +21,12 @@ <SettingsPanelIconFinder AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> <SettingsPanelTranslation AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> <SettingsPanelCoding AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelERIServer AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + + @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) + { + <SettingsPanelERIServer AvailableLLMProvidersFunc="() => this.availableLLMProviders"/> + } + <SettingsPanelTextSummarizer AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> <SettingsPanelAgenda AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> <SettingsPanelGrammarSpelling AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> @@ -27,7 +37,13 @@ <SettingsPanelSynonyms AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> <SettingsPanelMyTasks AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> <SettingsPanelAssistantBias AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelAgentDataSourceSelection AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + + @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) + { + <SettingsPanelAgentDataSourceSelection AvailableLLMProvidersFunc="() => this.availableLLMProviders"/> + <SettingsPanelAgentRetrievalContextValidation AvailableLLMProvidersFunc="() => this.availableLLMProviders"/> + } + <SettingsPanelAgentContentCleaner AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> </MudExpansionPanels> </InnerScrolling> diff --git a/app/MindWork AI Studio/Pages/Settings.razor.cs b/app/MindWork AI Studio/Pages/Settings.razor.cs index 600f4e93..aaf55c85 100644 --- a/app/MindWork AI Studio/Pages/Settings.razor.cs +++ b/app/MindWork AI Studio/Pages/Settings.razor.cs @@ -6,6 +6,9 @@ namespace AIStudio.Pages; public partial class Settings : ComponentBase, IMessageBusReceiver, IDisposable { + [Inject] + private SettingsManager SettingsManager { get; init; } = null!; + [Inject] private MessageBus MessageBus { get; init; } = null!; diff --git a/app/MindWork AI Studio/Program.cs b/app/MindWork AI Studio/Program.cs index a9ae7a97..61261b16 100644 --- a/app/MindWork AI Studio/Program.cs +++ b/app/MindWork AI Studio/Program.cs @@ -119,6 +119,7 @@ internal sealed class Program builder.Services.AddSingleton<DataSourceService>(); builder.Services.AddTransient<HTMLParser>(); builder.Services.AddTransient<AgentDataSourceSelection>(); + builder.Services.AddTransient<AgentRetrievalContextValidation>(); builder.Services.AddTransient<AgentTextContentCleaner>(); builder.Services.AddHostedService<UpdateService>(); builder.Services.AddHostedService<TemporaryChatService>(); diff --git a/app/MindWork AI Studio/Settings/DataModel/Data.cs b/app/MindWork AI Studio/Settings/DataModel/Data.cs index 729cfe48..b7139c72 100644 --- a/app/MindWork AI Studio/Settings/DataModel/Data.cs +++ b/app/MindWork AI Studio/Settings/DataModel/Data.cs @@ -76,6 +76,8 @@ public sealed class Data public DataAgentDataSourceSelection AgentDataSourceSelection { get; init; } = new(); + public DataAgentRetrievalContextValidation AgentRetrievalContextValidation { get; init; } = new(); + public DataAgenda Agenda { get; init; } = new(); public DataGrammarSpelling GrammarSpelling { get; init; } = new(); diff --git a/app/MindWork AI Studio/Settings/DataModel/DataAgentDataSourceSelection.cs b/app/MindWork AI Studio/Settings/DataModel/DataAgentDataSourceSelection.cs index a0ae5fb7..55473dcc 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataAgentDataSourceSelection.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataAgentDataSourceSelection.cs @@ -3,12 +3,12 @@ namespace AIStudio.Settings.DataModel; public sealed class DataAgentDataSourceSelection { /// <summary> - /// Preselect any text content cleaner options? + /// Preselect any data source selection options? /// </summary> public bool PreselectAgentOptions { get; set; } /// <summary> - /// Preselect a text content cleaner provider? + /// Preselect a data source selection provider? /// </summary> public string PreselectedAgentProvider { get; set; } = string.Empty; } \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/DataAgentRetrievalContextValidation.cs b/app/MindWork AI Studio/Settings/DataModel/DataAgentRetrievalContextValidation.cs new file mode 100644 index 00000000..a4ae0a8f --- /dev/null +++ b/app/MindWork AI Studio/Settings/DataModel/DataAgentRetrievalContextValidation.cs @@ -0,0 +1,24 @@ +namespace AIStudio.Settings.DataModel; + +public sealed class DataAgentRetrievalContextValidation +{ + /// <summary> + /// Enable the retrieval context validation agent? + /// </summary> + public bool EnableRetrievalContextValidation { get; set; } + + /// <summary> + /// Preselect any retrieval context validation options? + /// </summary> + public bool PreselectAgentOptions { get; set; } + + /// <summary> + /// Preselect a retrieval context validation provider? + /// </summary> + public string PreselectedAgentProvider { get; set; } = string.Empty; + + /// <summary> + /// Configure how many parallel validations to run. + /// </summary> + public int NumParallelValidations { get; set; } = 3; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs index b591de00..a9e40231 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs @@ -95,7 +95,7 @@ public readonly record struct DataSourceERI_V1 : IERIDataSource Path = eriContext.Path ?? string.Empty, Type = eriContext.ToRetrievalContentType(), Links = eriContext.Links, - Category = RetrievalContentCategory.TEXT, + Category = eriContext.Type.ToRetrievalContentCategory(), MatchedText = eriContext.MatchedContent, DataSourceName = eriContext.Name, SurroundingContent = eriContext.SurroundingContent, @@ -109,7 +109,7 @@ public readonly record struct DataSourceERI_V1 : IERIDataSource Type = eriContext.ToRetrievalContentType(), Links = eriContext.Links, Source = eriContext.MatchedContent, - Category = RetrievalContentCategory.IMAGE, + Category = eriContext.Type.ToRetrievalContentCategory(), SourceType = ContentImageSource.BASE64, DataSourceName = eriContext.Name, }); diff --git a/app/MindWork AI Studio/Tools/IConfidence.cs b/app/MindWork AI Studio/Tools/IConfidence.cs new file mode 100644 index 00000000..dff9343a --- /dev/null +++ b/app/MindWork AI Studio/Tools/IConfidence.cs @@ -0,0 +1,16 @@ +namespace AIStudio.Tools; + +/// <summary> +/// A contract for data classes with a confidence value. +/// </summary> +/// <remarks> +/// Using this confidence contract allows us to provide +/// algorithms based on confidence values. +/// </remarks> +public interface IConfidence +{ + /// <summary> + /// How confident is the AI in this task or decision? + /// </summary> + public float Confidence { get; init; } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/IConfidenceExtensions.cs b/app/MindWork AI Studio/Tools/IConfidenceExtensions.cs new file mode 100644 index 00000000..f6f15bfd --- /dev/null +++ b/app/MindWork AI Studio/Tools/IConfidenceExtensions.cs @@ -0,0 +1,101 @@ +namespace AIStudio.Tools; + +public static class IConfidenceExtensions +{ + public static TargetWindow DetermineTargetWindow<T>(this IReadOnlyList<T> items, TargetWindowStrategy strategy, int numMaximumItems = 30) where T : IConfidence + { + switch (strategy) + { + case TargetWindowStrategy.A_FEW_GOOD_ONES: + return new(1, 2, 3, 0f); + + case TargetWindowStrategy.TOP10_BETTER_THAN_GUESSING: + var numItemsBetterThanGuessing = items.Count(x => x.Confidence > 0.5f); + if(numItemsBetterThanGuessing < 3) + return new(1, 2, 3, 0.5f); + + // We want the top 10% of items better than guessing: + var numTop10Percent = (int) MathF.Floor(numItemsBetterThanGuessing * 0.1f); + + // When these 10% are just a few items, we take them all: + if (numTop10Percent <= 10) + { + var diff = numItemsBetterThanGuessing - numTop10Percent; + var num50Percent = (int) MathF.Floor(numItemsBetterThanGuessing * 0.5f); + return new(num50Percent, num50Percent + 1, Math.Max(numItemsBetterThanGuessing, diff), 0.5f); + } + + // Let's define the size of the window: + const int MIN_NUM_ITEMS = 3; + var windowMin = Math.Max(MIN_NUM_ITEMS + 1, numTop10Percent); + windowMin = Math.Min(windowMin, numMaximumItems - 1); + var totalMin = Math.Max(MIN_NUM_ITEMS, windowMin - 3); + var windowSize = (int)MathF.Max(MathF.Floor(numTop10Percent * 0.1f), MathF.Min(10, numTop10Percent)); + var windowMax = Math.Min(numMaximumItems, numTop10Percent + windowSize); + return new(totalMin, windowMin, windowMax, 0.5f); + + case TargetWindowStrategy.NONE: + default: + return new(-1, -1, -1, 0f); + } + } + + /// <summary> + /// Determine the optimal confidence threshold for a list of items + /// in order to match a target window of number of items. + /// </summary> + /// <param name="items">The list of confidence items to analyze.</param> + /// <param name="targetWindow">The target window for the number of items.</param> + /// <param name="maxSteps">The maximum number of steps to search for the threshold.</param> + /// <typeparam name="T">The type of items in the list.</typeparam> + /// <returns>The confidence threshold.</returns> + public static float GetConfidenceThreshold<T>(this IReadOnlyList<T> items, TargetWindow targetWindow, int maxSteps = 10) where T : IConfidence + { + if(!targetWindow.IsValid()) + { + var logger = Program.SERVICE_PROVIDER.GetService<ILogger<IConfidence>>()!; + logger.LogWarning("The target window is invalid. Returning 0f as threshold."); + return 0f; + } + + var confidenceValues = items.Select(x => x.Confidence).ToList(); + var minConfidence = confidenceValues.Min(); + var lowerBound = MathF.Max(minConfidence, targetWindow.MinThreshold); + var upperBound = confidenceValues.Max(); + + // + // We search for a threshold so that we have between + // targetWindowMin and targetWindowMax items. When not + // possible, we take all items (e.g., threshold = 0f; depends on the used window strategy) + // + var threshold = 0.0f; + + // Check the case where the confidence values are too close: + if (upperBound - minConfidence >= 0.01) + { + var previousThreshold = threshold; + for (var i = 0; i < maxSteps; i++) + { + threshold = lowerBound + (upperBound - lowerBound) * i / maxSteps; + var numMatches = items.Count(x => x.Confidence >= threshold); + if (numMatches <= targetWindow.NumMinItems) + { + threshold = previousThreshold; + break; + } + + if (targetWindow.InsideWindow(numMatches)) + break; + + previousThreshold = threshold; + } + } + else + { + var logger = Program.SERVICE_PROVIDER.GetService<ILogger<IConfidence>>()!; + logger.LogWarning("The confidence values are too close. Returning 0f as threshold."); + } + + return threshold; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs b/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs index 1d0fc0e1..e5a2b931 100644 --- a/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs +++ b/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs @@ -1,7 +1,9 @@ using System.Text; +using AIStudio.Agents; using AIStudio.Chat; using AIStudio.Provider; +using AIStudio.Settings; namespace AIStudio.Tools.RAG.AugmentationProcesses; @@ -22,13 +24,36 @@ public sealed class AugmentationOne : IAugmentationProcess public async Task<ChatThread> ProcessAsync(IProvider provider, IContent lastPrompt, ChatThread chatThread, IReadOnlyList<IRetrievalContext> retrievalContexts, CancellationToken token = default) { var logger = Program.SERVICE_PROVIDER.GetService<ILogger<AugmentationOne>>()!; + var settings = Program.SERVICE_PROVIDER.GetService<SettingsManager>()!; + if(retrievalContexts.Count == 0) { logger.LogWarning("No retrieval contexts were issued. Skipping the augmentation process."); return chatThread; } - + var numTotalRetrievalContexts = retrievalContexts.Count; + + // Want the user to validate all retrieval contexts? + if (settings.ConfigurationData.AgentRetrievalContextValidation.EnableRetrievalContextValidation) + { + // Let's get the validation agent & set up its provider: + var validationAgent = Program.SERVICE_PROVIDER.GetService<AgentRetrievalContextValidation>()!; + validationAgent.SetLLMProvider(provider); + + // Let's validate all retrieval contexts: + var validationResults = await validationAgent.ValidateRetrievalContextsAsync(lastPrompt, chatThread, retrievalContexts, token); + + // + // Now, filter the retrieval contexts to the most relevant ones: + // + var targetWindow = validationResults.DetermineTargetWindow(TargetWindowStrategy.TOP10_BETTER_THAN_GUESSING); + var threshold = validationResults.GetConfidenceThreshold(targetWindow); + + // Filter the retrieval contexts: + retrievalContexts = validationResults.Where(x => x.RetrievalContext is not null && x.Confidence >= threshold).Select(x => x.RetrievalContext!).ToList(); + } + logger.LogInformation($"Starting the augmentation process over {numTotalRetrievalContexts:###,###,###,###} retrieval contexts."); // @@ -38,63 +63,8 @@ public sealed class AugmentationOne : IAugmentationProcess sb.AppendLine("The following useful information will help you in processing the user prompt:"); sb.AppendLine(); - var index = 0; - foreach(var retrievalContext in retrievalContexts) - { - index++; - sb.AppendLine($"# Retrieval context {index} of {numTotalRetrievalContexts}"); - sb.AppendLine($"Data source name: {retrievalContext.DataSourceName}"); - sb.AppendLine($"Content category: {retrievalContext.Category}"); - sb.AppendLine($"Content type: {retrievalContext.Type}"); - sb.AppendLine($"Content path: {retrievalContext.Path}"); - - if(retrievalContext.Links.Count > 0) - { - sb.AppendLine("Additional links:"); - foreach(var link in retrievalContext.Links) - sb.AppendLine($"- {link}"); - } - - switch(retrievalContext) - { - case RetrievalTextContext textContext: - sb.AppendLine(); - sb.AppendLine("Matched text content:"); - sb.AppendLine("````"); - sb.AppendLine(textContext.MatchedText); - sb.AppendLine("````"); - - if(textContext.SurroundingContent.Count > 0) - { - sb.AppendLine(); - sb.AppendLine("Surrounding text content:"); - foreach(var surrounding in textContext.SurroundingContent) - { - sb.AppendLine(); - sb.AppendLine("````"); - sb.AppendLine(surrounding); - sb.AppendLine("````"); - } - } - - - break; - - case RetrievalImageContext imageContext: - sb.AppendLine(); - sb.AppendLine("Matched image content as base64-encoded data:"); - sb.AppendLine("````"); - sb.AppendLine(await imageContext.AsBase64(token)); - sb.AppendLine("````"); - break; - - default: - logger.LogWarning($"The retrieval content type '{retrievalContext.Type}' of data source '{retrievalContext.DataSourceName}' at location '{retrievalContext.Path}' is not supported yet."); - break; - } - - sb.AppendLine(); - } + // Let's convert all retrieval contexts to Markdown: + await retrievalContexts.AsMarkdown(sb, token); // // Append the entire augmentation to the chat thread, diff --git a/app/MindWork AI Studio/Tools/RAG/DataSourceSelectionProcesses/AgenticSrcSelWithDynHeur.cs b/app/MindWork AI Studio/Tools/RAG/DataSourceSelectionProcesses/AgenticSrcSelWithDynHeur.cs index 64099780..76f27892 100644 --- a/app/MindWork AI Studio/Tools/RAG/DataSourceSelectionProcesses/AgenticSrcSelWithDynHeur.cs +++ b/app/MindWork AI Studio/Tools/RAG/DataSourceSelectionProcesses/AgenticSrcSelWithDynHeur.cs @@ -70,41 +70,9 @@ public class AgenticSrcSelWithDynHeur : IDataSourceSelectionProcess if (aiSelectedDataSources.Count > 3) { - // - // We have more than 3 data sources. Let's filter by confidence. - // In order to do that, we must identify the lower and upper - // bounds of the confidence interval: - // - var confidenceValues = aiSelectedDataSources.Select(x => x.Confidence).ToList(); - var lowerBound = confidenceValues.Min(); - var upperBound = confidenceValues.Max(); - - // - // Next, we search for a threshold so that we have between 2 and 3 - // data sources. When not possible, we take all data sources. - // - var threshold = 0.0f; - - // Check the case where the confidence values are too close: - if (upperBound - lowerBound >= 0.01) - { - var previousThreshold = 0.0f; - for (var i = 0; i < 10; i++) - { - threshold = lowerBound + (upperBound - lowerBound) * i / 10; - var numMatches = aiSelectedDataSources.Count(x => x.Confidence >= threshold); - if (numMatches <= 1) - { - threshold = previousThreshold; - break; - } - - if (numMatches is <= 3 and >= 2) - break; - - previousThreshold = threshold; - } - } + // We have more than 3 data sources. Let's filter by confidence: + var targetWindow = aiSelectedDataSources.DetermineTargetWindow(TargetWindowStrategy.A_FEW_GOOD_ONES); + var threshold = aiSelectedDataSources.GetConfidenceThreshold(targetWindow); // // Filter the data sources by the threshold: diff --git a/app/MindWork AI Studio/Tools/RAG/IRetrievalContextExtensions.cs b/app/MindWork AI Studio/Tools/RAG/IRetrievalContextExtensions.cs new file mode 100644 index 00000000..ee5e6cb5 --- /dev/null +++ b/app/MindWork AI Studio/Tools/RAG/IRetrievalContextExtensions.cs @@ -0,0 +1,96 @@ +using System.Text; + +using AIStudio.Chat; + +namespace AIStudio.Tools.RAG; + +public static class IRetrievalContextExtensions +{ + private static readonly ILogger<IRetrievalContext> LOGGER = Program.SERVICE_PROVIDER.GetService<ILogger<IRetrievalContext>>()!; + + public static async Task<string> AsMarkdown(this IReadOnlyList<IRetrievalContext> retrievalContexts, StringBuilder? sb = null, CancellationToken token = default) + { + sb ??= new StringBuilder(); + var index = 0; + + foreach(var retrievalContext in retrievalContexts) + { + index++; + await retrievalContext.AsMarkdown(sb, index, retrievalContexts.Count, token); + } + + return sb.ToString(); + } + + public static async Task<string> AsMarkdown(this IRetrievalContext retrievalContext, StringBuilder? sb = null, int index = -1, int numTotalRetrievalContexts = -1, CancellationToken token = default) + { + sb ??= new StringBuilder(); + switch (index) + { + case > 0 when numTotalRetrievalContexts is -1: + sb.AppendLine($"# Retrieval context {index}"); + break; + + case > 0 when numTotalRetrievalContexts > 0: + sb.AppendLine($"# Retrieval context {index} of {numTotalRetrievalContexts}"); + break; + + default: + sb.AppendLine("# Retrieval context"); + break; + } + + sb.AppendLine($"Data source name: {retrievalContext.DataSourceName}"); + sb.AppendLine($"Content category: {retrievalContext.Category}"); + sb.AppendLine($"Content type: {retrievalContext.Type}"); + sb.AppendLine($"Content path: {retrievalContext.Path}"); + + if(retrievalContext.Links.Count > 0) + { + sb.AppendLine("Additional links:"); + foreach(var link in retrievalContext.Links) + sb.AppendLine($"- {link}"); + } + + switch(retrievalContext) + { + case RetrievalTextContext textContext: + sb.AppendLine(); + sb.AppendLine("Matched text content:"); + sb.AppendLine("````"); + sb.AppendLine(textContext.MatchedText); + sb.AppendLine("````"); + + if(textContext.SurroundingContent.Count > 0) + { + sb.AppendLine(); + sb.AppendLine("Surrounding text content:"); + foreach(var surrounding in textContext.SurroundingContent) + { + sb.AppendLine(); + sb.AppendLine("````"); + sb.AppendLine(surrounding); + sb.AppendLine("````"); + } + } + + + break; + + case RetrievalImageContext imageContext: + sb.AppendLine(); + sb.AppendLine("Matched image content as base64-encoded data:"); + sb.AppendLine("````"); + sb.AppendLine(await imageContext.AsBase64(token)); + sb.AppendLine("````"); + break; + + default: + LOGGER.LogWarning($"The retrieval content type '{retrievalContext.Type}' of data source '{retrievalContext.DataSourceName}' at location '{retrievalContext.Path}' is not supported yet."); + break; + } + + sb.AppendLine(); + return sb.ToString(); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/RAG/RetrievalContentCategoryExtensions.cs b/app/MindWork AI Studio/Tools/RAG/RetrievalContentCategoryExtensions.cs index e4dd2a78..a5481695 100644 --- a/app/MindWork AI Studio/Tools/RAG/RetrievalContentCategoryExtensions.cs +++ b/app/MindWork AI Studio/Tools/RAG/RetrievalContentCategoryExtensions.cs @@ -9,7 +9,7 @@ public static class RetrievalContentCategoryExtensions /// </summary> /// <param name="contentType">The content type yielded by the ERI server.</param> /// <returns>The corresponding retrieval content category.</returns> - public static RetrievalContentCategory ToRetrievalContentCategory(ContentType contentType) => contentType switch + public static RetrievalContentCategory ToRetrievalContentCategory(this ContentType contentType) => contentType switch { ContentType.NONE => RetrievalContentCategory.NONE, ContentType.UNKNOWN => RetrievalContentCategory.UNKNOWN, diff --git a/app/MindWork AI Studio/Tools/TargetWindow.cs b/app/MindWork AI Studio/Tools/TargetWindow.cs new file mode 100644 index 00000000..8530bacb --- /dev/null +++ b/app/MindWork AI Studio/Tools/TargetWindow.cs @@ -0,0 +1,38 @@ +namespace AIStudio.Tools; + +/// <summary> +/// Represents a target window for the number of items to match a threshold. +/// </summary> +/// <param name="NumMinItems">The minimum number of items to match the threshold. Should be at least one and less than targetWindowMin.</param> +/// <param name="TargetWindowMin">The minimum number of items in the target window. Should be at least 2 and more than numMinItems.</param> +/// <param name="TargetWindowMax">The maximum number of items in the target window.</param> +public readonly record struct TargetWindow(int NumMinItems, int TargetWindowMin, int TargetWindowMax, float MinThreshold) +{ + /// <summary> + /// Determines if the target window is valid. + /// </summary> + /// <returns>True when the target window is valid; otherwise, false.</returns> + public bool IsValid() + { + if(this.NumMinItems < 1) + return false; + + if(this.TargetWindowMin < this.NumMinItems) + return false; + + if(this.TargetWindowMax < this.TargetWindowMin) + return false; + + if(this.MinThreshold is < 0f or > 1f) + return false; + + return true; + } + + /// <summary> + /// Determines if the number of items is inside the target window. + /// </summary> + /// <param name="numItems">The number of items to check.</param> + /// <returns>True when the number of items is inside the target window; otherwise, false.</returns> + public bool InsideWindow(int numItems) => numItems >= this.TargetWindowMin && numItems <= this.TargetWindowMax; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/TargetWindowStrategy.cs b/app/MindWork AI Studio/Tools/TargetWindowStrategy.cs new file mode 100644 index 00000000..90549842 --- /dev/null +++ b/app/MindWork AI Studio/Tools/TargetWindowStrategy.cs @@ -0,0 +1,19 @@ +namespace AIStudio.Tools; + +public enum TargetWindowStrategy +{ + /// <summary> + /// Means no target window strategy, which will effectively return all items. + /// </summary> + NONE, + + /// <summary> + /// Searches for two up-to-three items but at least one. + /// </summary> + A_FEW_GOOD_ONES, + + /// <summary> + /// Searches for the top 10% items that are better than guessing, i.e., with confidence greater than 0.5f. + /// </summary> + TOP10_BETTER_THAN_GUESSING, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md index 3d861432..c9037877 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md @@ -3,6 +3,7 @@ - Added an option to all data sources to select a local security policy. This preview feature is hidden behind the RAG feature flag. - Added an option to preselect data sources and options for new chats. This preview feature is hidden behind the RAG feature flag. - Added an agent to select the appropriate data sources for any prompt. This preview feature is hidden behind the RAG feature flag. +- Added an agent to validate whether a retrieval context makes sense for the given prompt. This preview feature is hidden behind the RAG feature flag. - Added a generic RAG process to integrate possibly any data in your chats. Although the generic RAG process is now implemented, the retrieval part is working only with external data sources using the ERI interface. That means that you could integrate your company's data from the corporate network by now. The retrieval process for your local data is still under development and will take several weeks to be released. In order to use data through ERI, you (or your company) have to develop an ERI server. You might use the ERI server assistant within AI Studio to do so. This preview feature is hidden behind the RAG feature flag. - Improved confidence card for small spaces. - Fixed a bug in which 'APP_SETTINGS' appeared as a valid destination in the "send to" menu. \ No newline at end of file From 9bd79bd3a089dbf594064833ebd13d66613dd69d Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 23 Feb 2025 15:05:29 +0100 Subject: [PATCH 031/110] Improved data security by enforcing provider filtering (#290) --- app/MindWork AI Studio.sln | 6 + app/MindWork AI Studio.sln.DotSettings | 1 + .../Agents/AgentDataSourceSelection.cs | 12 +- .../Agents/AgentRetrievalContextValidation.cs | 21 +-- .../ConfigurationProviderSelection.razor.cs | 3 + .../Components/DataSourceSelection.razor | 6 +- .../Components/ProviderSelection.razor.cs | 3 + .../Components/ReadWebContent.razor.cs | 6 +- .../Settings/SettingsPanelProviders.razor.cs | 6 + .../Dialogs/ProviderDialog.razor.cs | 2 + .../MindWork AI Studio.csproj | 4 + .../Settings/SettingsManager.cs | 46 ++++- app/MindWork AI Studio/Tools/Components.cs | 4 + .../Tools/ComponentsExtensions.cs | 11 ++ .../AugmentationProcesses/AugmentationOne.cs | 2 +- app/MindWork AI Studio/packages.lock.json | 157 +++++++++++++++++- .../wwwroot/changelog/v0.9.29.md | 1 + .../AnalyzerReleases.Shipped.md | 7 + .../AnalyzerReleases.Unshipped.md | 10 ++ .../SourceCodeRules/ProviderAccessAnalyzer.cs | 71 ++++++++ .../SourceCodeRules/SourceCodeRules.csproj | 26 +++ app/SourceCodeRules/SourceCodeRules/Tools.cs | 6 + 22 files changed, 370 insertions(+), 41 deletions(-) create mode 100644 app/SourceCodeRules/SourceCodeRules/AnalyzerReleases.Shipped.md create mode 100644 app/SourceCodeRules/SourceCodeRules/AnalyzerReleases.Unshipped.md create mode 100644 app/SourceCodeRules/SourceCodeRules/ProviderAccessAnalyzer.cs create mode 100644 app/SourceCodeRules/SourceCodeRules/SourceCodeRules.csproj create mode 100644 app/SourceCodeRules/SourceCodeRules/Tools.cs diff --git a/app/MindWork AI Studio.sln b/app/MindWork AI Studio.sln index ef02b517..37871ac7 100644 --- a/app/MindWork AI Studio.sln +++ b/app/MindWork AI Studio.sln @@ -2,6 +2,8 @@ Microsoft Visual Studio Solution File, Format Version 12.00 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MindWork AI Studio", "MindWork AI Studio\MindWork AI Studio.csproj", "{059FDFCC-7D0B-474E-9F20-B9C437DF1CDD}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SourceCodeRules", "SourceCodeRules\SourceCodeRules\SourceCodeRules.csproj", "{0976C1CB-D499-4C86-8ADA-B7A7A4DE0BF8}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -12,6 +14,10 @@ Global {059FDFCC-7D0B-474E-9F20-B9C437DF1CDD}.Debug|Any CPU.Build.0 = Debug|Any CPU {059FDFCC-7D0B-474E-9F20-B9C437DF1CDD}.Release|Any CPU.ActiveCfg = Release|Any CPU {059FDFCC-7D0B-474E-9F20-B9C437DF1CDD}.Release|Any CPU.Build.0 = Release|Any CPU + {0976C1CB-D499-4C86-8ADA-B7A7A4DE0BF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0976C1CB-D499-4C86-8ADA-B7A7A4DE0BF8}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0976C1CB-D499-4C86-8ADA-B7A7A4DE0BF8}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0976C1CB-D499-4C86-8ADA-B7A7A4DE0BF8}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution EndGlobalSection diff --git a/app/MindWork AI Studio.sln.DotSettings b/app/MindWork AI Studio.sln.DotSettings index 4038c0ae..431ff5cf 100644 --- a/app/MindWork AI Studio.sln.DotSettings +++ b/app/MindWork AI Studio.sln.DotSettings @@ -9,5 +9,6 @@ <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UI/@EntryIndexedValue">UI</s:String> <s:Boolean x:Key="/Default/UserDictionary/Words/=agentic/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=groq/@EntryIndexedValue">True</s:Boolean> + <s:Boolean x:Key="/Default/UserDictionary/Words/=mwais/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=ollama/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=tauri_0027s/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary> \ No newline at end of file diff --git a/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs b/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs index 6b1410ce..74357139 100644 --- a/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs +++ b/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs @@ -140,17 +140,7 @@ public sealed class AgentDataSourceSelection (ILogger<AgentDataSourceSelection> // // We start with the provider currently selected by the user: - var agentProvider = this.SettingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == provider.Id); - - // If the user preselected an agent provider, we try to use this one: - if (this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectAgentOptions) - { - var configuredAgentProvider = this.SettingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectedAgentProvider); - - // If the configured agent provider is available, we use it: - if (configuredAgentProvider != default) - agentProvider = configuredAgentProvider; - } + var agentProvider = this.SettingsManager.GetPreselectedProvider(Tools.Components.AGENT_DATA_SOURCE_SELECTION, provider.Id, true); // Assign the provider settings to the agent: logger.LogInformation($"The agent for the data source selection uses the provider '{agentProvider.InstanceName}' ({agentProvider.UsedLLMProvider.ToName()}, confidence={agentProvider.UsedLLMProvider.GetConfidence(this.SettingsManager).Level.GetName()})."); diff --git a/app/MindWork AI Studio/Agents/AgentRetrievalContextValidation.cs b/app/MindWork AI Studio/Agents/AgentRetrievalContextValidation.cs index ae54de53..3f4bf4c2 100644 --- a/app/MindWork AI Studio/Agents/AgentRetrievalContextValidation.cs +++ b/app/MindWork AI Studio/Agents/AgentRetrievalContextValidation.cs @@ -132,18 +132,8 @@ public sealed class AgentRetrievalContextValidation (ILogger<AgentRetrievalConte public void SetLLMProvider(IProvider provider) { // We start with the provider currently selected by the user: - var agentProvider = this.SettingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == provider.Id); - - // If the user preselected an agent provider, we try to use this one: - if (this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectAgentOptions) - { - var configuredAgentProvider = this.SettingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectedAgentProvider); - - // If the configured agent provider is available, we use it: - if (configuredAgentProvider != default) - agentProvider = configuredAgentProvider; - } - + var agentProvider = this.SettingsManager.GetPreselectedProvider(Tools.Components.AGENT_RETRIEVAL_CONTEXT_VALIDATION, provider.Id, true); + // Assign the provider settings to the agent: logger.LogInformation($"The agent for the retrieval context validation uses the provider '{agentProvider.InstanceName}' ({agentProvider.UsedLLMProvider.ToName()}, confidence={agentProvider.UsedLLMProvider.GetConfidence(this.SettingsManager).Level.GetName()})."); this.ProviderSettings = agentProvider; @@ -163,11 +153,16 @@ public sealed class AgentRetrievalContextValidation (ILogger<AgentRetrievalConte if (!this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.EnableRetrievalContextValidation) return []; + logger.LogInformation($"Validating {retrievalContexts.Count:###,###,###,###} retrieval contexts."); + // Prepare the list of validation tasks: var validationTasks = new List<Task<RetrievalContextValidationResult>>(retrievalContexts.Count); // Read the number of parallel validations: - var numParallelValidations = this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.NumParallelValidations; + var numParallelValidations = 3; + if(this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectAgentOptions) + numParallelValidations = this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.NumParallelValidations; + numParallelValidations = Math.Max(1, numParallelValidations); // Use a semaphore to limit the number of parallel validations: diff --git a/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs b/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs index e9a9f9b0..a1e60c87 100644 --- a/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs +++ b/app/MindWork AI Studio/Components/ConfigurationProviderSelection.razor.cs @@ -1,3 +1,5 @@ +using System.Diagnostics.CodeAnalysis; + using AIStudio.Provider; using AIStudio.Settings; @@ -47,6 +49,7 @@ public partial class ConfigurationProviderSelection : ComponentBase, IMessageBus #endregion + [SuppressMessage("Usage", "MWAIS0001:Direct access to `Providers` is not allowed")] private IEnumerable<ConfigurationSelectData<string>> FilteredData() { if(this.Component is not Tools.Components.NONE and not Tools.Components.APP_SETTINGS) diff --git a/app/MindWork AI Studio/Components/DataSourceSelection.razor b/app/MindWork AI Studio/Components/DataSourceSelection.razor index 08160443..6b299796 100644 --- a/app/MindWork AI Studio/Components/DataSourceSelection.razor +++ b/app/MindWork AI Studio/Components/DataSourceSelection.razor @@ -37,8 +37,12 @@ @if (this.areDataSourcesEnabled) { <MudTextSwitch Label="AI-based data source selection" Value="@this.aiBasedSourceSelection" LabelOn="Yes, let the AI decide which data sources are needed." LabelOff="No, I manually decide which data source to use." ValueChanged="@this.AutoModeChanged"/> - <MudTextSwitch Label="AI-based data validation" Value="@this.aiBasedValidation" LabelOn="Yes, let the AI validate & filter the retrieved data." LabelOff="No, use all data retrieved from the data sources." ValueChanged="@this.ValidationModeChanged"/> + @if (this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.EnableRetrievalContextValidation) + { + <MudTextSwitch Label="AI-based data validation" Value="@this.aiBasedValidation" LabelOn="Yes, let the AI validate & filter the retrieved data." LabelOff="No, use all data retrieved from the data sources." ValueChanged="@this.ValidationModeChanged"/> + } + @if (this.aiBasedSourceSelection is false || this.DataSourcesAISelected.Count == 0) { <MudField Label="Available Data Sources" Variant="Variant.Outlined" Class="mb-3" Disabled="@this.aiBasedSourceSelection"> diff --git a/app/MindWork AI Studio/Components/ProviderSelection.razor.cs b/app/MindWork AI Studio/Components/ProviderSelection.razor.cs index 927c1d62..c5a0e3ba 100644 --- a/app/MindWork AI Studio/Components/ProviderSelection.razor.cs +++ b/app/MindWork AI Studio/Components/ProviderSelection.razor.cs @@ -1,3 +1,5 @@ +using System.Diagnostics.CodeAnalysis; + using AIStudio.Assistants; using AIStudio.Provider; using AIStudio.Settings; @@ -29,6 +31,7 @@ public partial class ProviderSelection : ComponentBase await this.ProviderSettingsChanged.InvokeAsync(provider); } + [SuppressMessage("Usage", "MWAIS0001:Direct access to `Providers` is not allowed")] private IEnumerable<AIStudio.Settings.Provider> GetAvailableProviders() { var minimumLevel = this.SettingsManager.GetMinimumConfidenceLevel(this.AssistantBase?.Component ?? Tools.Components.NONE); diff --git a/app/MindWork AI Studio/Components/ReadWebContent.razor.cs b/app/MindWork AI Studio/Components/ReadWebContent.razor.cs index aebe7ef4..6cf40701 100644 --- a/app/MindWork AI Studio/Components/ReadWebContent.razor.cs +++ b/app/MindWork AI Studio/Components/ReadWebContent.razor.cs @@ -59,11 +59,7 @@ public partial class ReadWebContent : ComponentBase if(this.PreselectContentCleanerAgent) this.useContentCleanerAgent = true; - if (this.SettingsManager.ConfigurationData.TextContentCleaner.PreselectAgentOptions) - this.providerSettings = this.SettingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == this.SettingsManager.ConfigurationData.TextContentCleaner.PreselectedAgentProvider); - else - this.providerSettings = this.ProviderSettings; - + this.ProviderSettings = this.SettingsManager.GetPreselectedProvider(Tools.Components.AGENT_TEXT_CONTENT_CLEANER, this.ProviderSettings.Id, true); await base.OnInitializedAsync(); } diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelProviders.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelProviders.razor.cs index e2c434fe..0aa3afd0 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelProviders.razor.cs +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelProviders.razor.cs @@ -1,3 +1,5 @@ +using System.Diagnostics.CodeAnalysis; + using AIStudio.Dialogs; using AIStudio.Provider; using AIStudio.Settings; @@ -26,6 +28,7 @@ public partial class SettingsPanelProviders : SettingsPanelBase #endregion + [SuppressMessage("Usage", "MWAIS0001:Direct access to `Providers` is not allowed")] private async Task AddLLMProvider() { var dialogParameters = new DialogParameters<ProviderDialog> @@ -48,6 +51,7 @@ public partial class SettingsPanelProviders : SettingsPanelBase await this.MessageBus.SendMessage<bool>(this, Event.CONFIGURATION_CHANGED); } + [SuppressMessage("Usage", "MWAIS0001:Direct access to `Providers` is not allowed")] private async Task EditLLMProvider(AIStudio.Settings.Provider provider) { var dialogParameters = new DialogParameters<ProviderDialog> @@ -82,6 +86,7 @@ public partial class SettingsPanelProviders : SettingsPanelBase await this.MessageBus.SendMessage<bool>(this, Event.CONFIGURATION_CHANGED); } + [SuppressMessage("Usage", "MWAIS0001:Direct access to `Providers` is not allowed")] private async Task DeleteLLMProvider(AIStudio.Settings.Provider provider) { var dialogParameters = new DialogParameters @@ -112,6 +117,7 @@ public partial class SettingsPanelProviders : SettingsPanelBase return modelName.Length > MAX_LENGTH ? "[...] " + modelName[^Math.Min(MAX_LENGTH, modelName.Length)..] : modelName; } + [SuppressMessage("Usage", "MWAIS0001:Direct access to `Providers` is not allowed")] private async Task UpdateProviders() { this.AvailableLLMProviders.Clear(); diff --git a/app/MindWork AI Studio/Dialogs/ProviderDialog.razor.cs b/app/MindWork AI Studio/Dialogs/ProviderDialog.razor.cs index a721b955..4e76b473 100644 --- a/app/MindWork AI Studio/Dialogs/ProviderDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/ProviderDialog.razor.cs @@ -137,7 +137,9 @@ public partial class ProviderDialog : ComponentBase, ISecretId this.SettingsManager.InjectSpellchecking(SPELLCHECK_ATTRIBUTES); // Load the used instance names: + #pragma warning disable MWAIS0001 this.UsedInstanceNames = this.SettingsManager.ConfigurationData.Providers.Select(x => x.InstanceName.ToLowerInvariant()).ToList(); + #pragma warning restore MWAIS0001 // When editing, we need to load the data: if(this.IsEditing) diff --git a/app/MindWork AI Studio/MindWork AI Studio.csproj b/app/MindWork AI Studio/MindWork AI Studio.csproj index 4caca35d..c2d76499 100644 --- a/app/MindWork AI Studio/MindWork AI Studio.csproj +++ b/app/MindWork AI Studio/MindWork AI Studio.csproj @@ -53,6 +53,10 @@ <PackageReference Include="ReverseMarkdown" Version="4.6.0" /> </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\SourceCodeRules\SourceCodeRules\SourceCodeRules.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false"/> + </ItemGroup> + <!-- Read the meta data file --> <Target Name="ReadMetaData" BeforeTargets="BeforeBuild"> <Error Text="The ../../metadata.txt file was not found!" Condition="!Exists('../../metadata.txt')" /> diff --git a/app/MindWork AI Studio/Settings/SettingsManager.cs b/app/MindWork AI Studio/Settings/SettingsManager.cs index 0fa3e184..29e94390 100644 --- a/app/MindWork AI Studio/Settings/SettingsManager.cs +++ b/app/MindWork AI Studio/Settings/SettingsManager.cs @@ -1,3 +1,4 @@ +using System.Diagnostics.CodeAnalysis; using System.Text.Json; using System.Text.Json.Serialization; @@ -141,7 +142,8 @@ public sealed class SettingsManager(ILogger<SettingsManager> logger) return minimumLevel; } - public Provider GetPreselectedProvider(Tools.Components component, string? chatProviderId = null) + [SuppressMessage("Usage", "MWAIS0001:Direct access to `Providers` is not allowed")] + public Provider GetPreselectedProvider(Tools.Components component, string? currentProviderId = null, bool usePreselectionBeforeCurrentProvider = false) { var minimumLevel = this.GetMinimumConfidenceLevel(component); @@ -149,17 +151,43 @@ public sealed class SettingsManager(ILogger<SettingsManager> logger) if (this.ConfigurationData.Providers.Count == 1 && this.ConfigurationData.Providers[0].UsedLLMProvider.GetConfidence(this).Level >= minimumLevel) return this.ConfigurationData.Providers[0]; - // When there is a chat provider, and it has a confidence level that is high enough, we return it: - if (chatProviderId is not null && !string.IsNullOrWhiteSpace(chatProviderId)) + // Is there a current provider with a sufficiently high confidence level? + Provider currentProvider = default; + if (currentProviderId is not null && !string.IsNullOrWhiteSpace(currentProviderId)) { - var chatProvider = this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == chatProviderId); - if (chatProvider.UsedLLMProvider.GetConfidence(this).Level >= minimumLevel) - return chatProvider; + var currentProviderProbe = this.ConfigurationData.Providers.FirstOrDefault(x => x.Id == currentProviderId); + if (currentProviderProbe.UsedLLMProvider.GetConfidence(this).Level >= minimumLevel) + currentProvider = currentProviderProbe; } - // When there is a component-preselected provider, and it has a confidence level that is high enough, we return it: - var preselectedProvider = component.PreselectedProvider(this); - if(preselectedProvider != default && preselectedProvider.UsedLLMProvider.GetConfidence(this).Level >= minimumLevel) + // Is there a component-preselected provider with a sufficiently high confidence level? + Provider preselectedProvider = default; + var preselectedProviderProbe = component.PreselectedProvider(this); + if(preselectedProviderProbe != default && preselectedProviderProbe.UsedLLMProvider.GetConfidence(this).Level >= minimumLevel) + preselectedProvider = preselectedProviderProbe; + + // + // Case: The preselected provider should be used before the current provider, + // and the preselected provider is available and has a confidence level + // that is high enough. + // + if(usePreselectionBeforeCurrentProvider && preselectedProvider != default) + return preselectedProvider; + + // + // Case: The current provider is available and has a confidence level that is + // high enough. + // + if(currentProvider != default) + return currentProvider; + + // + // Case: The current provider should be used before the preselected provider, + // but the current provider is not available or does not have a confidence + // level that is high enough. The preselected provider is available and + // has a confidence level that is high enough. + // + if(preselectedProvider != default) return preselectedProvider; // When there is an app-wide preselected provider, and it has a confidence level that is high enough, we return it: diff --git a/app/MindWork AI Studio/Tools/Components.cs b/app/MindWork AI Studio/Tools/Components.cs index 4faa55a8..d65a5c5d 100644 --- a/app/MindWork AI Studio/Tools/Components.cs +++ b/app/MindWork AI Studio/Tools/Components.cs @@ -21,4 +21,8 @@ public enum Components CHAT, APP_SETTINGS, + + AGENT_TEXT_CONTENT_CLEANER, + AGENT_DATA_SOURCE_SELECTION, + AGENT_RETRIEVAL_CONTEXT_VALIDATION, } \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ComponentsExtensions.cs b/app/MindWork AI Studio/Tools/ComponentsExtensions.cs index e0fdfd47..6112debb 100644 --- a/app/MindWork AI Studio/Tools/ComponentsExtensions.cs +++ b/app/MindWork AI Studio/Tools/ComponentsExtensions.cs @@ -1,3 +1,5 @@ +using System.Diagnostics.CodeAnalysis; + using AIStudio.Provider; using AIStudio.Settings; @@ -12,6 +14,10 @@ public static class ComponentsExtensions Components.BIAS_DAY_ASSISTANT => false, Components.APP_SETTINGS => false, + Components.AGENT_TEXT_CONTENT_CLEANER => false, + Components.AGENT_DATA_SOURCE_SELECTION => false, + Components.AGENT_RETRIEVAL_CONTEXT_VALIDATION => false, + _ => true, }; @@ -76,6 +82,7 @@ public static class ComponentsExtensions _ => default, }; + [SuppressMessage("Usage", "MWAIS0001:Direct access to `Providers` is not allowed")] public static AIStudio.Settings.Provider PreselectedProvider(this Components component, SettingsManager settingsManager) => component switch { Components.GRAMMAR_SPELLING_ASSISTANT => settingsManager.ConfigurationData.GrammarSpelling.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.GrammarSpelling.PreselectedProvider) : default, @@ -95,6 +102,10 @@ public static class ComponentsExtensions Components.CHAT => settingsManager.ConfigurationData.Chat.PreselectOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.Chat.PreselectedProvider) : default, + Components.AGENT_TEXT_CONTENT_CLEANER => settingsManager.ConfigurationData.TextContentCleaner.PreselectAgentOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.TextContentCleaner.PreselectedAgentProvider) : default, + Components.AGENT_DATA_SOURCE_SELECTION => settingsManager.ConfigurationData.AgentDataSourceSelection.PreselectAgentOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.AgentDataSourceSelection.PreselectedAgentProvider) : default, + Components.AGENT_RETRIEVAL_CONTEXT_VALIDATION => settingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectAgentOptions ? settingsManager.ConfigurationData.Providers.FirstOrDefault(x => x.Id == settingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectedAgentProvider) : default, + _ => default, }; diff --git a/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs b/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs index e5a2b931..fd6e30af 100644 --- a/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs +++ b/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs @@ -35,7 +35,7 @@ public sealed class AugmentationOne : IAugmentationProcess var numTotalRetrievalContexts = retrievalContexts.Count; // Want the user to validate all retrieval contexts? - if (settings.ConfigurationData.AgentRetrievalContextValidation.EnableRetrievalContextValidation) + if (settings.ConfigurationData.AgentRetrievalContextValidation.EnableRetrievalContextValidation && chatThread.DataSourceOptions.AutomaticValidation) { // Let's get the validation agent & set up its provider: var validationAgent = Program.SERVICE_PROVIDER.GetService<AgentRetrievalContextValidation>()!; diff --git a/app/MindWork AI Studio/packages.lock.json b/app/MindWork AI Studio/packages.lock.json index d070220f..2ae5081c 100644 --- a/app/MindWork AI Studio/packages.lock.json +++ b/app/MindWork AI Studio/packages.lock.json @@ -77,6 +77,11 @@ "resolved": "31.0.3", "contentHash": "ygck8DR4mG/VDA/LgIVVGpEtXXPDVaaNZNJGrOAJ4pckVw4MbAQ3n/u6YFDv3bwlQhlxTmPhCyk5E4hxe96Crg==" }, + "Humanizer.Core": { + "type": "Transitive", + "resolved": "2.14.1", + "contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==" + }, "Markdig": { "type": "Transitive", "resolved": "0.37.0", @@ -132,6 +137,56 @@ "resolved": "8.0.11", "contentHash": "cy04xnMSTXTkRPjEwseRz57R5zjR/CWsdEOHH6NhWbNl97k+U1w6dSjqIOC7kv08tyzmM30FzIilSDtE5HdL/A==" }, + "Microsoft.Bcl.AsyncInterfaces": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==" + }, + "Microsoft.CodeAnalysis.Common": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "Hhaw6DKZHiR+vgOdIqvndfUntJhmDR7MjylUJ55EvWtDyJFLDf2eij8r9tcwXP35FLD+bVNNCO0+KIYuvJjNnA==", + "dependencies": { + "Microsoft.CodeAnalysis.Analyzers": "3.3.3", + "System.Collections.Immutable": "6.0.0", + "System.Memory": "4.5.4", + "System.Reflection.Metadata": "5.0.0", + "System.Runtime.CompilerServices.Unsafe": "6.0.0", + "System.Text.Encoding.CodePages": "6.0.0", + "System.Threading.Tasks.Extensions": "4.5.4" + } + }, + "Microsoft.CodeAnalysis.CSharp": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "0PU4a2h7L6N9SlF/oNHwj2A/+n0LK/7n6PEGvXyIZq8hc7r/TztB+47mhVLvapT6bWSV7nMT78cNxbQuC6tk6g==", + "dependencies": { + "Microsoft.CodeAnalysis.Common": "[4.3.0]" + } + }, + "Microsoft.CodeAnalysis.CSharp.Workspaces": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "CH2kezeYUD9/+nGs7QZ6xpOqD6OH6000YkAyU8LbhqLp7W65Xb+HerBzDX9yfprmRwArlF887QhZd8nW6enHIg==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.CodeAnalysis.CSharp": "[4.3.0]", + "Microsoft.CodeAnalysis.Common": "[4.3.0]", + "Microsoft.CodeAnalysis.Workspaces.Common": "[4.3.0]" + } + }, + "Microsoft.CodeAnalysis.Workspaces.Common": { + "type": "Transitive", + "resolved": "4.3.0", + "contentHash": "oFF7lU3dQIeEbAVF6Qq/YEA4jvys3oQKkDezP8NcQTFgD8uRUiIA4NimRxANaWxK2n2PT4DAQspIOtrAE2hSdA==", + "dependencies": { + "Humanizer.Core": "2.14.1", + "Microsoft.Bcl.AsyncInterfaces": "6.0.0", + "Microsoft.CodeAnalysis.Common": "[4.3.0]", + "System.Composition": "6.0.0", + "System.IO.Pipelines": "6.0.3" + } + }, "Microsoft.Extensions.DependencyInjection": { "type": "Transitive", "resolved": "8.0.1", @@ -196,17 +251,117 @@ "resolved": "8.0.11", "contentHash": "UYSbAkNGTWVUne3I04/9IRQel3Bt1Ww6Y5cjvZEZ89rWhBD1yWu7YDotvQS62V6mgSfFaXXPGrCUm1VG824QXw==" }, + "System.Collections.Immutable": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Composition": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "d7wMuKQtfsxUa7S13tITC8n1cQzewuhD5iDjZtK2prwFfKVzdYtgrTHgjaV03Zq7feGQ5gkP85tJJntXwInsJA==", + "dependencies": { + "System.Composition.AttributedModel": "6.0.0", + "System.Composition.Convention": "6.0.0", + "System.Composition.Hosting": "6.0.0", + "System.Composition.Runtime": "6.0.0", + "System.Composition.TypedParts": "6.0.0" + } + }, + "System.Composition.AttributedModel": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "WK1nSDLByK/4VoC7fkNiFuTVEiperuCN/Hyn+VN30R+W2ijO1d0Z2Qm0ScEl9xkSn1G2MyapJi8xpf4R8WRa/w==" + }, + "System.Composition.Convention": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "XYi4lPRdu5bM4JVJ3/UIHAiG6V6lWWUlkhB9ab4IOq0FrRsp0F4wTyV4Dj+Ds+efoXJ3qbLqlvaUozDO7OLeXA==", + "dependencies": { + "System.Composition.AttributedModel": "6.0.0" + } + }, + "System.Composition.Hosting": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "w/wXjj7kvxuHPLdzZ0PAUt++qJl03t7lENmb2Oev0n3zbxyNULbWBlnd5J5WUMMv15kg5o+/TCZFb6lSwfaUUQ==", + "dependencies": { + "System.Composition.Runtime": "6.0.0" + } + }, + "System.Composition.Runtime": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "qkRH/YBaMPTnzxrS5RDk1juvqed4A6HOD/CwRcDGyPpYps1J27waBddiiq1y93jk2ZZ9wuA/kynM+NO0kb3PKg==" + }, + "System.Composition.TypedParts": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "iUR1eHrL8Cwd82neQCJ00MpwNIBs4NZgXzrPqx8NJf/k4+mwBO0XCRmHYJT4OLSwDDqh5nBLJWkz5cROnrGhRA==", + "dependencies": { + "System.Composition.AttributedModel": "6.0.0", + "System.Composition.Hosting": "6.0.0", + "System.Composition.Runtime": "6.0.0" + } + }, "System.IO.Pipelines": { "type": "Transitive", "resolved": "8.0.0", "contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==" }, + "System.Memory": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==" + }, + "System.Reflection.Metadata": { + "type": "Transitive", + "resolved": "5.0.0", + "contentHash": "5NecZgXktdGg34rh1OenY1rFNDCI8xSjFr+Z4OU4cU06AQHUdRnIIEeWENu3Wl4YowbzkymAIMvi3WyK9U53pQ==" + }, + "System.Runtime.CompilerServices.Unsafe": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" + }, + "System.Text.Encoding.CodePages": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + }, + "System.Threading.Tasks.Extensions": { + "type": "Transitive", + "resolved": "4.5.4", + "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" + }, "ZXing.Net": { "type": "Transitive", "resolved": "0.16.9", "contentHash": "7WaVMHklpT3Ye2ragqRIwlFRsb6kOk63BOGADV0fan3ulVfGLUYkDi5yNUsZS/7FVNkWbtHAlDLmu4WnHGfqvQ==" + }, + "sourcecoderules": { + "type": "Project", + "dependencies": { + "Microsoft.CodeAnalysis.CSharp": "[4.3.0, )", + "Microsoft.CodeAnalysis.CSharp.Workspaces": "[4.3.0, )" + } } }, - "net8.0/osx-arm64": {} + "net8.0/osx-arm64": { + "System.Text.Encoding.CodePages": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", + "dependencies": { + "System.Runtime.CompilerServices.Unsafe": "6.0.0" + } + } + } } } \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md index c9037877..468beec4 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md @@ -6,4 +6,5 @@ - Added an agent to validate whether a retrieval context makes sense for the given prompt. This preview feature is hidden behind the RAG feature flag. - Added a generic RAG process to integrate possibly any data in your chats. Although the generic RAG process is now implemented, the retrieval part is working only with external data sources using the ERI interface. That means that you could integrate your company's data from the corporate network by now. The retrieval process for your local data is still under development and will take several weeks to be released. In order to use data through ERI, you (or your company) have to develop an ERI server. You might use the ERI server assistant within AI Studio to do so. This preview feature is hidden behind the RAG feature flag. - Improved confidence card for small spaces. +- Improved data security by enforcing provider filtering based on the chosen confidence level. To ensure this in the future, source code analyzers have been added to warn developers about insecure code. - Fixed a bug in which 'APP_SETTINGS' appeared as a valid destination in the "send to" menu. \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/AnalyzerReleases.Shipped.md b/app/SourceCodeRules/SourceCodeRules/AnalyzerReleases.Shipped.md new file mode 100644 index 00000000..6b73c826 --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/AnalyzerReleases.Shipped.md @@ -0,0 +1,7 @@ +## Release 1.0 + +### New Rules + + Rule ID | Category | Severity | Notes +-----------|----------|----------|------------------------ + MWAIS0001 | Usage | Error | ProviderAccessAnalyzer \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/AnalyzerReleases.Unshipped.md b/app/SourceCodeRules/SourceCodeRules/AnalyzerReleases.Unshipped.md new file mode 100644 index 00000000..5ae74b33 --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/AnalyzerReleases.Unshipped.md @@ -0,0 +1,10 @@ +### New Rules + + Rule ID | Category | Severity | Notes +---------|----------|----------|------- + + +### Changed Rules + + Rule ID | New Category | New Severity | Old Category | Old Severity | Notes +---------|--------------|--------------|--------------|--------------|------- diff --git a/app/SourceCodeRules/SourceCodeRules/ProviderAccessAnalyzer.cs b/app/SourceCodeRules/SourceCodeRules/ProviderAccessAnalyzer.cs new file mode 100644 index 00000000..a28d7e00 --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/ProviderAccessAnalyzer.cs @@ -0,0 +1,71 @@ +using System.Collections.Generic; +using System.Collections.Immutable; + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Diagnostics; + +namespace SourceCodeRules; + +#pragma warning disable RS1038 +[DiagnosticAnalyzer(LanguageNames.CSharp)] +#pragma warning restore RS1038 +public class ProviderAccessAnalyzer : DiagnosticAnalyzer +{ + private const string DIAGNOSTIC_ID = $"{Tools.ID_PREFIX}0001"; + + private static readonly string TITLE = "Direct access to `Providers` is not allowed"; + + private static readonly string MESSAGE_FORMAT = "Direct access to `SettingsManager.ConfigurationData.Providers` is not allowed. Instead, use APIs like `SettingsManager.GetPreselectedProvider`, etc."; + + private static readonly string DESCRIPTION = MESSAGE_FORMAT; + + private const string CATEGORY = "Usage"; + + private static readonly DiagnosticDescriptor RULE = new(DIAGNOSTIC_ID, TITLE, MESSAGE_FORMAT, CATEGORY, DiagnosticSeverity.Error, isEnabledByDefault: true, description: DESCRIPTION); + + public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => ImmutableArray.Create(RULE); + + public override void Initialize(AnalysisContext context) + { + context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); + context.EnableConcurrentExecution(); + context.RegisterSyntaxNodeAction(this.AnalyzeMemberAccess, SyntaxKind.SimpleMemberAccessExpression); + } + + private void AnalyzeMemberAccess(SyntaxNodeAnalysisContext context) + { + var memberAccess = (MemberAccessExpressionSyntax)context.Node; + + // Prüfen, ob wir eine Kette von Zugriffen haben, die auf "Providers" endet + if (memberAccess.Name.Identifier.Text != "Providers") + return; + + // Den kompletten Zugriffspfad aufbauen + var fullPath = this.GetFullMemberAccessPath(memberAccess); + + // Prüfen, ob der Pfad unserem verbotenen Muster entspricht + if (fullPath.EndsWith("ConfigurationData.Providers")) + { + var diagnostic = Diagnostic.Create(RULE, memberAccess.GetLocation()); + context.ReportDiagnostic(diagnostic); + } + } + + private string GetFullMemberAccessPath(ExpressionSyntax expression) + { + var parts = new List<string>(); + while (expression is MemberAccessExpressionSyntax memberAccess) + { + parts.Add(memberAccess.Name.Identifier.Text); + expression = memberAccess.Expression; + } + + if (expression is IdentifierNameSyntax identifier) + parts.Add(identifier.Identifier.Text); + + parts.Reverse(); + return string.Join(".", parts); + } +} \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/SourceCodeRules.csproj b/app/SourceCodeRules/SourceCodeRules/SourceCodeRules.csproj new file mode 100644 index 00000000..8cf49a2a --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/SourceCodeRules.csproj @@ -0,0 +1,26 @@ +<Project Sdk="Microsoft.NET.Sdk"> + + <PropertyGroup> + <TargetFramework>netstandard2.0</TargetFramework> + <IsPackable>false</IsPackable> + <Nullable>enable</Nullable> + <LangVersion>latest</LangVersion> + + <EnforceExtendedAnalyzerRules>true</EnforceExtendedAnalyzerRules> + <IsRoslynComponent>true</IsRoslynComponent> + + <RootNamespace>SourceCodeRules</RootNamespace> + <AssemblyName>SourceCodeRules</AssemblyName> + <Version>1.0.0</Version> + </PropertyGroup> + + <ItemGroup> + <PackageReference Include="Microsoft.CodeAnalysis.Analyzers" Version="3.11.0"> + <PrivateAssets>all</PrivateAssets> + <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> + </PackageReference> + <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0" /> + <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.12.0" /> + </ItemGroup> + +</Project> diff --git a/app/SourceCodeRules/SourceCodeRules/Tools.cs b/app/SourceCodeRules/SourceCodeRules/Tools.cs new file mode 100644 index 00000000..aa83af87 --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/Tools.cs @@ -0,0 +1,6 @@ +namespace SourceCodeRules; + +public static class Tools +{ + public const string ID_PREFIX = "MWAIS"; +} \ No newline at end of file From 64656d3605c80d348f5da1683aba94b5d361bb5b Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 23 Feb 2025 15:21:06 +0100 Subject: [PATCH 032/110] Improved the readability of descriptions inside the ERI server assistant (#291) --- .../Assistants/ERI/AssistantERI.razor | 52 +++++++++---------- .../wwwroot/changelog/v0.9.29.md | 1 + 2 files changed, 27 insertions(+), 26 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor index 19ad57cb..0677cbc7 100644 --- a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor +++ b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor @@ -3,12 +3,12 @@ @using MudExtensions @inherits AssistantBaseCore -<MudText Typo="Typo.body1" Class="mb-3"> +<MudJustifiedText Typo="Typo.body1" Class="mb-3"> You can imagine it like this: Hypothetically, when Wikipedia implemented the ERI, it would vectorize all pages using an embedding method. All of Wikipedia’s data would remain with Wikipedia, including the vector database (decentralized approach). Then, any AI Studio user could add Wikipedia as a data source to significantly reduce the hallucination of the LLM in knowledge questions. -</MudText> +</MudJustifiedText> <MudText Typo="Typo.body1"> <b>Related links:</b> @@ -25,10 +25,10 @@ ERI server presets </MudText> -<MudText Typo="Typo.body1" Class="mb-3"> +<MudJustifiedText Typo="Typo.body1" Class="mb-3"> Here you have the option to save different configurations for various ERI servers and switch between them. This is useful if you are responsible for multiple ERI servers. -</MudText> +</MudJustifiedText> @if(this.SettingsManager.ConfigurationData.ERI.ERIServers.Count is 0) { @@ -59,26 +59,26 @@ else @if(this.AreServerPresetsBlocked) { - <MudText Typo="Typo.body1" Class="mb-3 mt-3"> + <MudJustifiedText Typo="Typo.body1" Class="mb-3 mt-3"> Hint: to allow this assistant to manage multiple presets, you must enable the preselection of values in the settings. - </MudText> + </MudJustifiedText> } <MudText Typo="Typo.h4" Class="mb-3 mt-6"> Auto save </MudText> -<MudText Typo="Typo.body1" Class="mb-3"> +<MudJustifiedText Typo="Typo.body1" Class="mb-3"> The ERI specification will change over time. You probably want to keep your ERI server up to date. This means you might want to regenerate the code for your ERI server. To avoid having to make all inputs each time, all your inputs and decisions can be automatically saved. Would you like this? -</MudText> +</MudJustifiedText> @if(this.AreServerPresetsBlocked) { - <MudText Typo="Typo.body1" Class="mb-3"> + <MudJustifiedText Typo="Typo.body1" Class="mb-3"> Hint: to allow this assistant to automatically save your changes, you must enable the preselection of values in the settings. - </MudText> + </MudJustifiedText> } <MudTextSwitch Label="Should we automatically save any input made?" Disabled="@this.AreServerPresetsBlocked" @bind-Value="@this.autoSave" LabelOn="Yes, please save my inputs" LabelOff="No, I will enter everything again or configure it manually in the settings" /> @@ -204,18 +204,18 @@ else Embedding settings </MudText> -<MudText Typo="Typo.body1" Class="mb-2"> +<MudJustifiedText Typo="Typo.body1" Class="mb-2"> You will likely use one or more embedding methods to encode the meaning of your data into a typically high-dimensional vector space. In this case, you will use a vector database to store and search these vectors (called embeddings). However, you don't have to use embedding methods. When your retrieval method works without any embedding, you can ignore this section. An example: You store files on a file server, and your retrieval method works exclusively with file names in the file system, so you don't need embeddings. -</MudText> +</MudJustifiedText> -<MudText Typo="Typo.body1" Class="mb-3"> +<MudJustifiedText Typo="Typo.body1" Class="mb-3"> You can specify more than one embedding method. This can be useful when you want to use different embeddings for different queries or data types. For example, one embedding for texts, another for images, and a third for videos, etc. -</MudText> +</MudJustifiedText> @if (!this.IsNoneERIServerSelected) { @@ -258,12 +258,12 @@ else Data retrieval settings </MudText> -<MudText Typo="Typo.body1" Class="mb-2"> +<MudJustifiedText Typo="Typo.body1" Class="mb-2"> For your ERI server, you need to retrieve data that matches a chat or prompt in some way. We call this the retrieval process. You must describe at least one such process. You may offer several retrieval processes from which users can choose. This allows you to test with beta users which process works better. Or you might generally want to give users the choice so they can select the process that best suits their circumstances. -</MudText> +</MudJustifiedText> @if (!this.IsNoneERIServerSelected) { @@ -299,13 +299,13 @@ else Add Retrieval Process </MudButton> -<MudText Typo="Typo.body1" Class="mb-1"> +<MudJustifiedText Typo="Typo.body1" Class="mb-1"> You can integrate additional libraries. Perhaps you want to evaluate the prompts in advance using a machine learning method or analyze them with a text mining approach? Or maybe you want to preprocess images in the prompts? For such advanced scenarios, you can specify which libraries you want to use here. It's best to describe which library you want to integrate for which purpose. This way, the LLM that writes the ERI server for you can try to use these libraries effectively. This should result in less rework being necessary. If you don't know the necessary libraries, you can instead attempt to describe the intended use. The LLM can then attempt to choose suitable libraries. However, hallucinations can occur, and fictional libraries might be selected. -</MudText> +</MudJustifiedText> <MudTextField Disabled="@this.IsNoneERIServerSelected" T="string" @bind-Text="@this.additionalLibraries" Label="(Optional) Additional libraries" HelperText="Do you want to include additional libraries? Then name them and briefly describe what you want to achieve with them." Variant="Variant.Outlined" Margin="Margin.Normal" Lines="3" AutoGrow="@true" MaxLines="12" UserAttributes="@USER_INPUT_ATTRIBUTES" Class="mb-3"/> @@ -313,17 +313,17 @@ else Provider selection for generation </MudText> -<MudText Typo="Typo.body1" Class="mb-2"> +<MudJustifiedText Typo="Typo.body1" Class="mb-2"> The task of writing the ERI server for you is very complex. Therefore, a very powerful LLM is needed to successfully accomplish this task. Small local models will probably not be sufficient. Instead, try using a large cloud-based or a large self-hosted model. -</MudText> +</MudJustifiedText> -<MudText Typo="Typo.body1" Class="mb-2"> +<MudJustifiedText Typo="Typo.body1" Class="mb-2"> <b>Important:</b> The LLM may need to generate many files. This reaches the request limit of most providers. Typically, only a certain number of requests can be made per minute, and only a maximum number of tokens can be generated per minute. AI Studio automatically considers this. <b>However, generating all the files takes a certain amount of time.</b> Local or self-hosted models may work without these limitations and can generate responses faster. AI Studio dynamically adapts its behavior and always tries to achieve the fastest possible data processing. -</MudText> +</MudJustifiedText> <ProviderSelection @bind-ProviderSettings="@this.providerSettings" ValidateProvider="@this.ValidatingProvider"/> @@ -331,19 +331,19 @@ else Write code to file system </MudText> -<MudText Typo="Typo.body1" Class="mb-2"> +<MudJustifiedText Typo="Typo.body1" Class="mb-2"> AI Studio can save the generated code to the file system. You can select a base folder for this. AI Studio ensures that no files are created outside of this base folder. Furthermore, we recommend that you create a Git repository in this folder. This way, you can see what changes the AI has made in which files. -</MudText> +</MudJustifiedText> -<MudText Typo="Typo.body1" Class="mb-2"> +<MudJustifiedText Typo="Typo.body1" Class="mb-2"> When you rebuild / re-generate the ERI server code, AI Studio proceeds as follows: All files generated last time will be deleted. All other files you have created remain. Then, the AI generates the new files. <b>But beware:</b> It may happen that the AI generates a file this time that you manually created last time. In this case, your manually created file will then be overwritten. Therefore, you should always create a Git repository and commit or revert all changes before using this assistant. With a diff visualization, you can immediately see where the AI has made changes. It is best to use an IDE suitable for your selected language for this purpose. -</MudText> +</MudJustifiedText> <MudTextSwitch Label="Should we write the generated code to the file system?" Disabled="@this.IsNoneERIServerSelected" @bind-Value="@this.writeToFilesystem" LabelOn="Yes, please write or update all generated code to the file system" LabelOff="No, just show me the code" /> <SelectDirectory Label="Base directory where to write the code" @bind-Directory="@this.baseDirectory" Disabled="@(this.IsNoneERIServerSelected || !this.writeToFilesystem)" DirectoryDialogTitle="Select the target directory for the ERI server" Validation="@this.ValidateDirectory" /> diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md index 468beec4..109387e0 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md @@ -7,4 +7,5 @@ - Added a generic RAG process to integrate possibly any data in your chats. Although the generic RAG process is now implemented, the retrieval part is working only with external data sources using the ERI interface. That means that you could integrate your company's data from the corporate network by now. The retrieval process for your local data is still under development and will take several weeks to be released. In order to use data through ERI, you (or your company) have to develop an ERI server. You might use the ERI server assistant within AI Studio to do so. This preview feature is hidden behind the RAG feature flag. - Improved confidence card for small spaces. - Improved data security by enforcing provider filtering based on the chosen confidence level. To ensure this in the future, source code analyzers have been added to warn developers about insecure code. +- Improved the readability of descriptions inside the ERI server assistant. - Fixed a bug in which 'APP_SETTINGS' appeared as a valid destination in the "send to" menu. \ No newline at end of file From 9699754ec77b2cc4d3afdbeba4979a8d56834c4e Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 23 Feb 2025 16:20:02 +0100 Subject: [PATCH 033/110] Prepared release v0.9.29 (#292) --- .../Components/Changelog.Logs.cs | 1 + .../MindWork AI Studio.csproj | 2 +- app/MindWork AI Studio/packages.lock.json | 181 +--------- .../wwwroot/changelog/v0.9.29.md | 5 +- .../wwwroot/system/MudBlazor/MudBlazor.min.js | 337 +++++++++--------- metadata.txt | 14 +- runtime/Cargo.lock | 2 +- runtime/Cargo.toml | 2 +- runtime/tauri.conf.json | 2 +- 9 files changed, 197 insertions(+), 349 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index 5d700c8f..6f78c41d 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,6 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ + new (204, "v0.9.29, build 204 (2025-02-23 14:26 UTC)", "v0.9.29.md"), new (203, "v0.9.28, build 203 (2025-02-09 16:33 UTC)", "v0.9.28.md"), new (202, "v0.9.27, build 202 (2025-01-21 18:24 UTC)", "v0.9.27.md"), new (201, "v0.9.26, build 201 (2025-01-13 19:11 UTC)", "v0.9.26.md"), diff --git a/app/MindWork AI Studio/MindWork AI Studio.csproj b/app/MindWork AI Studio/MindWork AI Studio.csproj index c2d76499..7160b815 100644 --- a/app/MindWork AI Studio/MindWork AI Studio.csproj +++ b/app/MindWork AI Studio/MindWork AI Studio.csproj @@ -47,7 +47,7 @@ <ItemGroup> <PackageReference Include="CodeBeam.MudBlazor.Extensions" Version="7.1.0" /> <PackageReference Include="HtmlAgilityPack" Version="1.11.72" /> - <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.1" /> + <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.2" /> <PackageReference Include="MudBlazor" Version="7.16.0" /> <PackageReference Include="MudBlazor.Markdown" Version="7.14.0" /> <PackageReference Include="ReverseMarkdown" Version="4.6.0" /> diff --git a/app/MindWork AI Studio/packages.lock.json b/app/MindWork AI Studio/packages.lock.json index 2ae5081c..114e7972 100644 --- a/app/MindWork AI Studio/packages.lock.json +++ b/app/MindWork AI Studio/packages.lock.json @@ -24,18 +24,18 @@ }, "Microsoft.Extensions.FileProviders.Embedded": { "type": "Direct", - "requested": "[9.0.1, )", - "resolved": "9.0.1", - "contentHash": "Pnw9plviwRguhVxHjthooumWH8yUxfF54tuu/+VoVBOuqBmzu6VUnn4NGf3eVkEO1k5q2nihOIAQL/7UMemSmQ==", + "requested": "[9.0.2, )", + "resolved": "9.0.2", + "contentHash": "guQjtnav6bkds3jBqvzLUN3CtFhrwwE2MvES4kukalrFnRkFCncumYBrycM3urilJ7ffetA1/XBcD5ChMJa+AA==", "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "9.0.1" + "Microsoft.Extensions.FileProviders.Abstractions": "9.0.2" } }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[8.0.12, )", - "resolved": "8.0.12", - "contentHash": "FV4HnQ3JI15PHnJ5PGTbz+rYvrih42oLi/7UMIshNwCwUZhTq13UzrggtXk4ygrcMcN+4jsS6hhshx2p/Zd0ig==" + "requested": "[8.0.13, )", + "resolved": "8.0.13", + "contentHash": "R19ZTaRiQAK+xo9ZwaHbF/1vb1wwR1Wn5+sqp9v8+CDjbdS8R6qftKdw0VSXWKm7VAMi7P+NCU4zxDzhEWcAwQ==" }, "MudBlazor": { "type": "Direct", @@ -77,11 +77,6 @@ "resolved": "31.0.3", "contentHash": "ygck8DR4mG/VDA/LgIVVGpEtXXPDVaaNZNJGrOAJ4pckVw4MbAQ3n/u6YFDv3bwlQhlxTmPhCyk5E4hxe96Crg==" }, - "Humanizer.Core": { - "type": "Transitive", - "resolved": "2.14.1", - "contentHash": "lQKvtaTDOXnoVJ20ibTuSIOf2i0uO0MPbDhd1jm238I+U/2ZnRENj0cktKZhtchBMtCUSRQ5v4xBCUbKNmyVMw==" - }, "Markdig": { "type": "Transitive", "resolved": "0.37.0", @@ -137,56 +132,6 @@ "resolved": "8.0.11", "contentHash": "cy04xnMSTXTkRPjEwseRz57R5zjR/CWsdEOHH6NhWbNl97k+U1w6dSjqIOC7kv08tyzmM30FzIilSDtE5HdL/A==" }, - "Microsoft.Bcl.AsyncInterfaces": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==" - }, - "Microsoft.CodeAnalysis.Common": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "Hhaw6DKZHiR+vgOdIqvndfUntJhmDR7MjylUJ55EvWtDyJFLDf2eij8r9tcwXP35FLD+bVNNCO0+KIYuvJjNnA==", - "dependencies": { - "Microsoft.CodeAnalysis.Analyzers": "3.3.3", - "System.Collections.Immutable": "6.0.0", - "System.Memory": "4.5.4", - "System.Reflection.Metadata": "5.0.0", - "System.Runtime.CompilerServices.Unsafe": "6.0.0", - "System.Text.Encoding.CodePages": "6.0.0", - "System.Threading.Tasks.Extensions": "4.5.4" - } - }, - "Microsoft.CodeAnalysis.CSharp": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "0PU4a2h7L6N9SlF/oNHwj2A/+n0LK/7n6PEGvXyIZq8hc7r/TztB+47mhVLvapT6bWSV7nMT78cNxbQuC6tk6g==", - "dependencies": { - "Microsoft.CodeAnalysis.Common": "[4.3.0]" - } - }, - "Microsoft.CodeAnalysis.CSharp.Workspaces": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "CH2kezeYUD9/+nGs7QZ6xpOqD6OH6000YkAyU8LbhqLp7W65Xb+HerBzDX9yfprmRwArlF887QhZd8nW6enHIg==", - "dependencies": { - "Humanizer.Core": "2.14.1", - "Microsoft.CodeAnalysis.CSharp": "[4.3.0]", - "Microsoft.CodeAnalysis.Common": "[4.3.0]", - "Microsoft.CodeAnalysis.Workspaces.Common": "[4.3.0]" - } - }, - "Microsoft.CodeAnalysis.Workspaces.Common": { - "type": "Transitive", - "resolved": "4.3.0", - "contentHash": "oFF7lU3dQIeEbAVF6Qq/YEA4jvys3oQKkDezP8NcQTFgD8uRUiIA4NimRxANaWxK2n2PT4DAQspIOtrAE2hSdA==", - "dependencies": { - "Humanizer.Core": "2.14.1", - "Microsoft.Bcl.AsyncInterfaces": "6.0.0", - "Microsoft.CodeAnalysis.Common": "[4.3.0]", - "System.Composition": "6.0.0", - "System.IO.Pipelines": "6.0.3" - } - }, "Microsoft.Extensions.DependencyInjection": { "type": "Transitive", "resolved": "8.0.1", @@ -202,10 +147,10 @@ }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", - "resolved": "9.0.1", - "contentHash": "DguZYt1DWL05+8QKWL3b6bW7A2pC5kYFMY5iXM6W2M23jhvcNa8v6AU8PvVJBcysxHwr9/jax0agnwoBumsSwg==", + "resolved": "9.0.2", + "contentHash": "IcOBmTlr2jySswU+3x8c3ql87FRwTVPQgVKaV5AXzPT5u0VItfNU8SMbESpdSp5STwxT/1R99WYszgHWsVkzhg==", "dependencies": { - "Microsoft.Extensions.Primitives": "9.0.1" + "Microsoft.Extensions.Primitives": "9.0.2" } }, "Microsoft.Extensions.Localization": { @@ -243,125 +188,25 @@ }, "Microsoft.Extensions.Primitives": { "type": "Transitive", - "resolved": "9.0.1", - "contentHash": "bHtTesA4lrSGD1ZUaMIx6frU3wyy0vYtTa/hM6gGQu5QNrydObv8T5COiGUWsisflAfmsaFOe9Xvw5NSO99z0g==" + "resolved": "9.0.2", + "contentHash": "puBMtKe/wLuYa7H6docBkLlfec+h8L35DXqsDKKJgW0WY5oCwJ3cBJKcDaZchv6knAyqOMfsl6VUbaR++E5LXA==" }, "Microsoft.JSInterop": { "type": "Transitive", "resolved": "8.0.11", "contentHash": "UYSbAkNGTWVUne3I04/9IRQel3Bt1Ww6Y5cjvZEZ89rWhBD1yWu7YDotvQS62V6mgSfFaXXPGrCUm1VG824QXw==" }, - "System.Collections.Immutable": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "l4zZJ1WU2hqpQQHXz1rvC3etVZN+2DLmQMO79FhOTZHMn8tDRr+WU287sbomD0BETlmKDn0ygUgVy9k5xkkJdA==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, - "System.Composition": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "d7wMuKQtfsxUa7S13tITC8n1cQzewuhD5iDjZtK2prwFfKVzdYtgrTHgjaV03Zq7feGQ5gkP85tJJntXwInsJA==", - "dependencies": { - "System.Composition.AttributedModel": "6.0.0", - "System.Composition.Convention": "6.0.0", - "System.Composition.Hosting": "6.0.0", - "System.Composition.Runtime": "6.0.0", - "System.Composition.TypedParts": "6.0.0" - } - }, - "System.Composition.AttributedModel": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "WK1nSDLByK/4VoC7fkNiFuTVEiperuCN/Hyn+VN30R+W2ijO1d0Z2Qm0ScEl9xkSn1G2MyapJi8xpf4R8WRa/w==" - }, - "System.Composition.Convention": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "XYi4lPRdu5bM4JVJ3/UIHAiG6V6lWWUlkhB9ab4IOq0FrRsp0F4wTyV4Dj+Ds+efoXJ3qbLqlvaUozDO7OLeXA==", - "dependencies": { - "System.Composition.AttributedModel": "6.0.0" - } - }, - "System.Composition.Hosting": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "w/wXjj7kvxuHPLdzZ0PAUt++qJl03t7lENmb2Oev0n3zbxyNULbWBlnd5J5WUMMv15kg5o+/TCZFb6lSwfaUUQ==", - "dependencies": { - "System.Composition.Runtime": "6.0.0" - } - }, - "System.Composition.Runtime": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "qkRH/YBaMPTnzxrS5RDk1juvqed4A6HOD/CwRcDGyPpYps1J27waBddiiq1y93jk2ZZ9wuA/kynM+NO0kb3PKg==" - }, - "System.Composition.TypedParts": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "iUR1eHrL8Cwd82neQCJ00MpwNIBs4NZgXzrPqx8NJf/k4+mwBO0XCRmHYJT4OLSwDDqh5nBLJWkz5cROnrGhRA==", - "dependencies": { - "System.Composition.AttributedModel": "6.0.0", - "System.Composition.Hosting": "6.0.0", - "System.Composition.Runtime": "6.0.0" - } - }, "System.IO.Pipelines": { "type": "Transitive", "resolved": "8.0.0", "contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==" }, - "System.Memory": { - "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==" - }, - "System.Reflection.Metadata": { - "type": "Transitive", - "resolved": "5.0.0", - "contentHash": "5NecZgXktdGg34rh1OenY1rFNDCI8xSjFr+Z4OU4cU06AQHUdRnIIEeWENu3Wl4YowbzkymAIMvi3WyK9U53pQ==" - }, - "System.Runtime.CompilerServices.Unsafe": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "/iUeP3tq1S0XdNNoMz5C9twLSrM/TH+qElHkXWaPvuNOt+99G75NrV0OS2EqHx5wMN7popYjpc8oTjC1y16DLg==" - }, - "System.Text.Encoding.CodePages": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - }, - "System.Threading.Tasks.Extensions": { - "type": "Transitive", - "resolved": "4.5.4", - "contentHash": "zteT+G8xuGu6mS+mzDzYXbzS7rd3K6Fjb9RiZlYlJPam2/hU7JCBZBVEcywNuR+oZ1ncTvc/cq0faRr3P01OVg==" - }, "ZXing.Net": { "type": "Transitive", "resolved": "0.16.9", "contentHash": "7WaVMHklpT3Ye2ragqRIwlFRsb6kOk63BOGADV0fan3ulVfGLUYkDi5yNUsZS/7FVNkWbtHAlDLmu4WnHGfqvQ==" - }, - "sourcecoderules": { - "type": "Project", - "dependencies": { - "Microsoft.CodeAnalysis.CSharp": "[4.3.0, )", - "Microsoft.CodeAnalysis.CSharp.Workspaces": "[4.3.0, )" - } } }, - "net8.0/osx-arm64": { - "System.Text.Encoding.CodePages": { - "type": "Transitive", - "resolved": "6.0.0", - "contentHash": "ZFCILZuOvtKPauZ/j/swhvw68ZRi9ATCfvGbk1QfydmcXBkIWecWKn/250UH7rahZ5OoDBaiAudJtPvLwzw85A==", - "dependencies": { - "System.Runtime.CompilerServices.Unsafe": "6.0.0" - } - } - } + "net8.0/osx-arm64": {} } } \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md index 109387e0..1e7e8cce 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md @@ -1,4 +1,4 @@ -# v0.9.29, build 204 (2025-02-xx xx:xx UTC) +# v0.9.29, build 204 (2025-02-23 14:26 UTC) - Added the possibility to select data sources for chats. This preview feature is hidden behind the RAG feature flag, check your app options in case you want to enable it. - Added an option to all data sources to select a local security policy. This preview feature is hidden behind the RAG feature flag. - Added an option to preselect data sources and options for new chats. This preview feature is hidden behind the RAG feature flag. @@ -8,4 +8,5 @@ - Improved confidence card for small spaces. - Improved data security by enforcing provider filtering based on the chosen confidence level. To ensure this in the future, source code analyzers have been added to warn developers about insecure code. - Improved the readability of descriptions inside the ERI server assistant. -- Fixed a bug in which 'APP_SETTINGS' appeared as a valid destination in the "send to" menu. \ No newline at end of file +- Fixed a bug in which `APP_SETTINGS` appeared as a valid destination in the "send to" menu. +- Upgraded to Rust 1.85.0 and .NET 8.0.13. \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js index 5ae019d6..423a3370 100755 --- a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js @@ -1,5 +1,109 @@ -class MudKeyInterceptorFactory{connect(dotNetRef,elementId,options){if(!elementId) +window.mudpopoverHelper={calculatePopoverPosition:function(list,boundingRect,selfRect){let top=0;let left=0;if(list.indexOf('mud-popover-anchor-top-left')>=0){left=boundingRect.left;top=boundingRect.top;}else if(list.indexOf('mud-popover-anchor-top-center')>=0){left=boundingRect.left+boundingRect.width/2;top=boundingRect.top;}else if(list.indexOf('mud-popover-anchor-top-right')>=0){left=boundingRect.left+boundingRect.width;top=boundingRect.top;}else if(list.indexOf('mud-popover-anchor-center-left')>=0){left=boundingRect.left;top=boundingRect.top+boundingRect.height/2;}else if(list.indexOf('mud-popover-anchor-center-center')>=0){left=boundingRect.left+boundingRect.width/2;top=boundingRect.top+boundingRect.height/2;}else if(list.indexOf('mud-popover-anchor-center-right')>=0){left=boundingRect.left+boundingRect.width;top=boundingRect.top+boundingRect.height/2;}else if(list.indexOf('mud-popover-anchor-bottom-left')>=0){left=boundingRect.left;top=boundingRect.top+boundingRect.height;}else if(list.indexOf('mud-popover-anchor-bottom-center')>=0){left=boundingRect.left+boundingRect.width/2;top=boundingRect.top+boundingRect.height;}else if(list.indexOf('mud-popover-anchor-bottom-right')>=0){left=boundingRect.left+boundingRect.width;top=boundingRect.top+boundingRect.height;} +let offsetX=0;let offsetY=0;if(list.indexOf('mud-popover-top-left')>=0){offsetX=0;offsetY=0;}else if(list.indexOf('mud-popover-top-center')>=0){offsetX=-selfRect.width/2;offsetY=0;}else if(list.indexOf('mud-popover-top-right')>=0){offsetX=-selfRect.width;offsetY=0;} +else if(list.indexOf('mud-popover-center-left')>=0){offsetX=0;offsetY=-selfRect.height/2;}else if(list.indexOf('mud-popover-center-center')>=0){offsetX=-selfRect.width/2;offsetY=-selfRect.height/2;}else if(list.indexOf('mud-popover-center-right')>=0){offsetX=-selfRect.width;offsetY=-selfRect.height/2;} +else if(list.indexOf('mud-popover-bottom-left')>=0){offsetX=0;offsetY=-selfRect.height;}else if(list.indexOf('mud-popover-bottom-center')>=0){offsetX=-selfRect.width/2;offsetY=-selfRect.height;}else if(list.indexOf('mud-popover-bottom-right')>=0){offsetX=-selfRect.width;offsetY=-selfRect.height;} +return{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;i<inputArray.length;i++){const item=inputArray[i];const replacments=window.mudpopoverHelper.flipClassReplacements[selector][item];if(replacments){classList.push(replacments);} +else{classList.push(item);}} +return window.mudpopoverHelper.calculatePopoverPosition(classList,boundingRect,selfRect);},placePopover:function(popoverNode,classSelector){if(popoverNode&&popoverNode.parentNode){const id=popoverNode.id.substr(8);const popoverContentNode=document.getElementById('popovercontent-'+id);if(!popoverContentNode){return;} +if(popoverContentNode.classList.contains('mud-popover-open')==false){return;} +if(classSelector){if(popoverContentNode.classList.contains(classSelector)==false){return;}} +const boundingRect=popoverNode.parentNode.getBoundingClientRect();if(popoverContentNode.classList.contains('mud-popover-relative-width')){popoverContentNode.style['max-width']=(boundingRect.width)+'px';} +const selfRect=popoverContentNode.getBoundingClientRect();const classList=popoverContentNode.classList;const classListArray=Array.from(popoverContentNode.classList);const postion=window.mudpopoverHelper.calculatePopoverPosition(classListArray,boundingRect,selfRect);let left=postion.left;let top=postion.top;let offsetX=postion.offsetX;let offsetY=postion.offsetY;if(classList.contains('mud-popover-overflow-flip-onopen')||classList.contains('mud-popover-overflow-flip-always')){const appBarElements=document.getElementsByClassName("mud-appbar mud-appbar-fixed-top");let appBarOffset=0;if(appBarElements.length>0){appBarOffset=appBarElements[0].getBoundingClientRect().height;} +const graceMargin=window.mudpopoverHelper.flipMargin;const deltaToLeft=left+offsetX;const deltaToRight=window.innerWidth-left-selfRect.width;const deltaTop=top-selfRect.height-appBarOffset;const spaceToTop=top-appBarOffset;const deltaBottom=window.innerHeight-top-selfRect.height;let selector=popoverContentNode.mudPopoverFliped;if(!selector){if(classList.contains('mud-popover-top-left')){if(deltaBottom<graceMargin&&deltaToRight<graceMargin&&spaceToTop>=selfRect.height&&deltaToLeft>=selfRect.width){selector='top-and-left';}else if(deltaBottom<graceMargin&&spaceToTop>=selfRect.height){selector='top';}else if(deltaToRight<graceMargin&&deltaToLeft>=selfRect.width){selector='left';}}else if(classList.contains('mud-popover-top-center')){if(deltaBottom<graceMargin&&spaceToTop>=selfRect.height){selector='top';}}else if(classList.contains('mud-popover-top-right')){if(deltaBottom<graceMargin&&deltaToLeft<graceMargin&&spaceToTop>=selfRect.height&&deltaToRight>=selfRect.width){selector='top-and-right';}else if(deltaBottom<graceMargin&&spaceToTop>=selfRect.height){selector='top';}else if(deltaToLeft<graceMargin&&deltaToRight>=selfRect.width){selector='right';}} +else if(classList.contains('mud-popover-center-left')){if(deltaToRight<graceMargin&&deltaToLeft>=selfRect.width){selector='left';}} +else if(classList.contains('mud-popover-center-right')){if(deltaToLeft<graceMargin&&deltaToRight>=selfRect.width){selector='right';}} +else if(classList.contains('mud-popover-bottom-left')){if(deltaTop<graceMargin&&deltaToRight<graceMargin&&deltaBottom>=0&&deltaToLeft>=selfRect.width){selector='bottom-and-left';}else if(deltaTop<graceMargin&&deltaBottom>=0){selector='bottom';}else if(deltaToRight<graceMargin&&deltaToLeft>=selfRect.width){selector='left';}}else if(classList.contains('mud-popover-bottom-center')){if(deltaTop<graceMargin&&deltaBottom>=0){selector='bottom';}}else if(classList.contains('mud-popover-bottom-right')){if(deltaTop<graceMargin&&deltaToLeft<graceMargin&&deltaBottom>=0&&deltaToRight>=selfRect.width){selector='bottom-and-right';}else if(deltaTop<graceMargin&&deltaBottom>=0){selector='bottom';}else if(deltaToLeft<graceMargin&&deltaToRight>=selfRect.width){selector='right';}}} +if(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{if(left+offsetX<0){left=Math.max(0,left+offsetX);offsetX=0;} +if(top+offsetY<appBarOffset){top=Math.max(appBarOffset,top+offsetY);offsetY=0;} +popoverContentNode.removeAttribute('data-mudpopover-flip');} +if(classList.contains('mud-popover-overflow-flip-onopen')){if(!popoverContentNode.mudPopoverFliped){popoverContentNode.mudPopoverFliped=selector||'none';}}} +if(popoverContentNode.classList.contains('mud-popover-fixed')){} +else if(window.getComputedStyle(popoverNode).position=='fixed'){popoverContentNode.style['position']='fixed';} +else{offsetX+=window.scrollX;offsetY+=window.scrollY} +popoverContentNode.style['left']=(left+offsetX)+'px';popoverContentNode.style['top']=(top+offsetY)+'px';if(window.getComputedStyle(popoverNode).getPropertyValue('z-index')!='auto'){popoverContentNode.style['z-index']=window.getComputedStyle(popoverNode).getPropertyValue('z-index');popoverContentNode.skipZIndex=true;}}},placePopoverByClassSelector:function(classSelector=null){var items=window.mudPopover.getAllObservedContainers();for(let i=0;i<items.length;i++){const popoverNode=document.getElementById('popover-'+items[i]);window.mudpopoverHelper.placePopover(popoverNode,classSelector);}},placePopoverByNode:function(target){const id=target.id.substr(15);const popoverNode=document.getElementById('popover-'+id);window.mudpopoverHelper.placePopover(popoverNode);},countProviders:function(){return document.querySelectorAll(".mud-popover-provider").length;}} +class MudPopover{constructor(){this.map={};this.contentObserver=null;this.mainContainerClass=null;} +callback(id,mutationsList,observer){for(const mutation of mutationsList){if(mutation.type==='attributes'){const target=mutation.target +if(mutation.attributeName=='class'){if(target.classList.contains('mud-popover-overflow-flip-onopen')&&target.classList.contains('mud-popover-open')==false){target.mudPopoverFliped=null;target.removeAttribute('data-mudpopover-flip');} +window.mudpopoverHelper.placePopoverByNode(target);} +else if(mutation.attributeName=='data-ticks'){const tickAttribute=target.getAttribute('data-ticks');const parent=target.parentElement;const tickValues=[];let max=-1;if(parent){for(let i=0;i<parent.children.length;i++){const childNode=parent.children[i];const tickValue=parseInt(childNode.getAttribute('data-ticks'));if(tickValue==0){continue;} +if(tickValues.indexOf(tickValue)>=0){continue;} +tickValues.push(tickValue);if(tickValue>max){max=tickValue;}}} +if(tickValues.length==0){continue;} +const sortedTickValues=tickValues.sort((x,y)=>x-y);for(let i=0;i<parent.children.length;i++){const childNode=parent.children[i];const tickValue=parseInt(childNode.getAttribute('data-ticks'));if(tickValue==0){continue;} +if(childNode.skipZIndex==true){continue;} +childNode.style['z-index']='calc(var(--mud-zindex-popover) + '+(sortedTickValues.indexOf(tickValue)+3).toString()+')';}}}}} +initialize(containerClass,flipMargin){const mainContent=document.getElementsByClassName(containerClass);if(mainContent.length==0){return;} +if(flipMargin){window.mudpopoverHelper.flipMargin=flipMargin;} +this.mainContainerClass=containerClass;if(!mainContent[0].mudPopoverMark){mainContent[0].mudPopoverMark="mudded";if(this.contentObserver!=null){this.contentObserver.disconnect();this.contentObserver=null;} +this.contentObserver=new ResizeObserver(entries=>{window.mudpopoverHelper.placePopoverByClassSelector();});this.contentObserver.observe(mainContent[0]);}} +connect(id){this.initialize(this.mainContainerClass);const popoverNode=document.getElementById('popover-'+id);const popoverContentNode=document.getElementById('popovercontent-'+id);if(popoverNode&&popoverNode.parentNode&&popoverContentNode){window.mudpopoverHelper.placePopover(popoverNode);const config={attributeFilter:['class','data-ticks']};const observer=new MutationObserver(this.callback.bind(this,id));observer.observe(popoverContentNode,config);const resizeObserver=new ResizeObserver(entries=>{for(let entry of entries){const target=entry.target;for(var i=0;i<target.childNodes.length;i++){const childNode=target.childNodes[i];if(childNode.id&&childNode.id.startsWith('popover-')){window.mudpopoverHelper.placePopover(childNode);}}}});resizeObserver.observe(popoverNode.parentNode);const contentNodeObserver=new ResizeObserver(entries=>{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 MudJsEventFactory{connect(dotNetRef,elementId,options){if(!elementId) +throw"[MudBlazor | JsEvent] elementId: expected element id!";var element=document.getElementById(elementId);if(!element) +throw"[MudBlazor | JsEvent] no element found for id: "+elementId;if(!element.mudJsEvent) +element.mudJsEvent=new MudJsEvent(dotNetRef,options);element.mudJsEvent.connect(element);} +disconnect(elementId){var element=document.getElementById(elementId);if(!element||!element.mudJsEvent) +return;element.mudJsEvent.disconnect();} +subscribe(elementId,eventName){if(!elementId) +throw"[MudBlazor | JsEvent] elementId: expected element id!";var element=document.getElementById(elementId);if(!element) +throw"[MudBlazor | JsEvent] no element found for id: "+elementId;if(!element.mudJsEvent) +throw"[MudBlazor | JsEvent] please connect before subscribing" +element.mudJsEvent.subscribe(eventName);} +unsubscribe(elementId,eventName){var element=document.getElementById(elementId);if(!element||!element.mudJsEvent) +return;element.mudJsEvent.unsubscribe(element,eventName);}} +window.mudJsEvent=new MudJsEventFactory();class MudJsEvent{constructor(dotNetRef,options){this._dotNetRef=dotNetRef;this._options=options||{};this.logger=options.enableLogging?console.log:(message)=>{};this.logger('[MudBlazor | JsEvent] Initialized',{options});this._subscribedEvents={};} +connect(element){if(!this._options) +return;if(!this._options.targetClass) +throw"_options.targetClass: css class name expected";if(this._observer){return;} +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:false,childList:true,subtree:true});this._observedChildren=[];} +disconnect(){if(!this._observer) +return;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]){return;} +var element=this._element;var targetClass=this._options.targetClass;this._subscribedEvents[eventName]=true;for(const child of element.getElementsByClassName(targetClass)){this.attachHandlers(child);}} +unsubscribe(eventName){if(!this._observer) +return;this.logger('[MudBlazor | JsEvent] unsubscribe event handler '+eventName);this._observer.disconnect();this._observer=null;this._subscribedEvents[eventName]=false;for(const child of this._observedChildren){this.detachHandler(child,eventName);}} +attachHandlers(child){child.mudJsEvent=this;for(var eventName of Object.getOwnPropertyNames(this._subscribedEvents)){if(!this._subscribedEvents[eventName]) +continue;this.logger('[MudBlazor | JsEvent] attaching event '+eventName,child);child.addEventListener(eventName,this.eventHandler);} +if(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)){if(!this._subscribedEvents[eventName]) +continue;child.removeEventListener(eventName,this.eventHandler);} +this._observedChildren=this._observedChildren.filter(x=>x!==child);} +onDomChanged(mutationsList,observer){var self=this.mudJsEvent;var targetClass=self._options.targetClass;for(const mutation of mutationsList){for(const element of mutation.addedNodes){if(element.classList&&element.classList.contains(targetClass)){if(!self._options.TagName||element.tagName==self._options.TagName) +self.attachHandlers(element);}} +for(const element of mutation.removedNodes){if(element.classList&&element.classList.contains(targetClass)){if(!self._options.tagName||element.tagName==self._options.tagName) +self.detachHandlers(element);}}}} +eventHandler(e){var self=this.mudJsEvent;var eventName=e.type;self.logger('[MudBlazor | JsEvent] "'+eventName+'"',e);self["on"+eventName](self,e);} +onkeyup(self,e){const caretPosition=e.target.selectionStart;const invoke=self._subscribedEvents["keyup"];if(invoke){self._dotNetRef.invokeMethodAsync('OnCaretPositionChanged',caretPosition);}} +onclick(self,e){const caretPosition=e.target.selectionStart;const invoke=self._subscribedEvents["click"];if(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;const end=e.target.selectionEnd;if(start===end) +return;self._dotNetRef.invokeMethodAsync('OnSelect',start,end);}}} +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,false);let projector=null;if(projection){const parts=projection.split('.');let functionPointer=window;let functionReferenceFound=true;if(parts.length==0||parts.length==1){functionPointer=functionPointer[projection];} +else{for(let i=0;i<parts.length;i++){functionPointer=functionPointer[parts[i]];if(!functionPointer){functionReferenceFound=false;break;}}} +if(functionReferenceFound===true){projector=functionPointer;}} +this.mapper[key]={eventName:eventName,handler:handlerRef,delay:throotleInterval,timerId:-1,reference:dotnetReference,elementId:elementId,properties:properties,projection:projector,};}} +subscribeGlobal(eventName,throotleInterval,key,properties,dotnetReference){let handlerRef=throotleInterval>0?this.throttleEventHandler.bind(this,key):this.eventHandler.bind(this,key);document.addEventListener(eventName,handlerRef,false);this.mapper[key]={eventName:eventName,handler:handlerRef,delay:throotleInterval,timerId:-1,reference:dotnetReference,elementId:document,properties:properties,projection:null,};} +throttleEventHandler(key,event){const entry=this.mapper[key];if(!entry){return;} +clearTimeout(entry.timerId);entry.timerId=window.setTimeout(this.eventHandler.bind(this,key,event),entry.delay);} +eventHandler(key,event){const entry=this.mapper[key];if(!entry){return;} +var elem=document.getElementById(entry.elementId);if(elem!=event.srcElement&&entry.elementId!=document){return;} +const eventEntry={};for(var i=0;i<entry.properties.length;i++){eventEntry[entry.properties[i]]=event[entry.properties[i]];} +if(entry.projection){if(typeof entry.projection==="function"){entry.projection.apply(null,[eventEntry,event]);}} +entry.reference.invokeMethodAsync('OnEventOccur',key,JSON.stringify(eventEntry));} +unsubscribe(key){const entry=this.mapper[key];if(!entry){return;} +entry.reference=null;if(document==entry.elementId){document.removeEventListener(entry.eventName,entry.handler,false);}else{const elem=document.getElementById(entry.elementId);if(elem){elem.removeEventListener(entry.eventName,entry.handler,false);}} +delete this.mapper[key];}};window.mudThrottledEventManager=new MudThrottledEventManager();window.mudEventProjections={correctOffset:function(eventEntry,event){var target=event.target.getBoundingClientRect();eventEntry.offsetX=event.clientX-target.x;eventEntry.offsetY=event.clientY-target.y;}};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;if(!element.mudKeyInterceptor) element.mudKeyInterceptor=new MudKeyInterceptor(dotNetRef,options);element.mudKeyInterceptor.connect(element);} @@ -53,60 +157,7 @@ processKeyUp(args,keyOptions){if(this.matchesKeyCombination(keyOptions.preventUp args.preventDefault();if(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};}} -class MudInput{resetValue(id){const input=document.getElementById(id);if(input){input.value='';}}} -window.mudInput=new MudInput();window.mudpopoverHelper={calculatePopoverPosition:function(list,boundingRect,selfRect){let top=0;let left=0;if(list.indexOf('mud-popover-anchor-top-left')>=0){left=boundingRect.left;top=boundingRect.top;}else if(list.indexOf('mud-popover-anchor-top-center')>=0){left=boundingRect.left+boundingRect.width/2;top=boundingRect.top;}else if(list.indexOf('mud-popover-anchor-top-right')>=0){left=boundingRect.left+boundingRect.width;top=boundingRect.top;}else if(list.indexOf('mud-popover-anchor-center-left')>=0){left=boundingRect.left;top=boundingRect.top+boundingRect.height/2;}else if(list.indexOf('mud-popover-anchor-center-center')>=0){left=boundingRect.left+boundingRect.width/2;top=boundingRect.top+boundingRect.height/2;}else if(list.indexOf('mud-popover-anchor-center-right')>=0){left=boundingRect.left+boundingRect.width;top=boundingRect.top+boundingRect.height/2;}else if(list.indexOf('mud-popover-anchor-bottom-left')>=0){left=boundingRect.left;top=boundingRect.top+boundingRect.height;}else if(list.indexOf('mud-popover-anchor-bottom-center')>=0){left=boundingRect.left+boundingRect.width/2;top=boundingRect.top+boundingRect.height;}else if(list.indexOf('mud-popover-anchor-bottom-right')>=0){left=boundingRect.left+boundingRect.width;top=boundingRect.top+boundingRect.height;} -let offsetX=0;let offsetY=0;if(list.indexOf('mud-popover-top-left')>=0){offsetX=0;offsetY=0;}else if(list.indexOf('mud-popover-top-center')>=0){offsetX=-selfRect.width/2;offsetY=0;}else if(list.indexOf('mud-popover-top-right')>=0){offsetX=-selfRect.width;offsetY=0;} -else if(list.indexOf('mud-popover-center-left')>=0){offsetX=0;offsetY=-selfRect.height/2;}else if(list.indexOf('mud-popover-center-center')>=0){offsetX=-selfRect.width/2;offsetY=-selfRect.height/2;}else if(list.indexOf('mud-popover-center-right')>=0){offsetX=-selfRect.width;offsetY=-selfRect.height/2;} -else if(list.indexOf('mud-popover-bottom-left')>=0){offsetX=0;offsetY=-selfRect.height;}else if(list.indexOf('mud-popover-bottom-center')>=0){offsetX=-selfRect.width/2;offsetY=-selfRect.height;}else if(list.indexOf('mud-popover-bottom-right')>=0){offsetX=-selfRect.width;offsetY=-selfRect.height;} -return{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;i<inputArray.length;i++){const item=inputArray[i];const replacments=window.mudpopoverHelper.flipClassReplacements[selector][item];if(replacments){classList.push(replacments);} -else{classList.push(item);}} -return window.mudpopoverHelper.calculatePopoverPosition(classList,boundingRect,selfRect);},placePopover:function(popoverNode,classSelector){if(popoverNode&&popoverNode.parentNode){const id=popoverNode.id.substr(8);const popoverContentNode=document.getElementById('popovercontent-'+id);if(!popoverContentNode){return;} -if(popoverContentNode.classList.contains('mud-popover-open')==false){return;} -if(classSelector){if(popoverContentNode.classList.contains(classSelector)==false){return;}} -const boundingRect=popoverNode.parentNode.getBoundingClientRect();if(popoverContentNode.classList.contains('mud-popover-relative-width')){popoverContentNode.style['max-width']=(boundingRect.width)+'px';} -const selfRect=popoverContentNode.getBoundingClientRect();const classList=popoverContentNode.classList;const classListArray=Array.from(popoverContentNode.classList);const postion=window.mudpopoverHelper.calculatePopoverPosition(classListArray,boundingRect,selfRect);let left=postion.left;let top=postion.top;let offsetX=postion.offsetX;let offsetY=postion.offsetY;if(classList.contains('mud-popover-overflow-flip-onopen')||classList.contains('mud-popover-overflow-flip-always')){const appBarElements=document.getElementsByClassName("mud-appbar mud-appbar-fixed-top");let appBarOffset=0;if(appBarElements.length>0){appBarOffset=appBarElements[0].getBoundingClientRect().height;} -const graceMargin=window.mudpopoverHelper.flipMargin;const deltaToLeft=left+offsetX;const deltaToRight=window.innerWidth-left-selfRect.width;const deltaTop=top-selfRect.height-appBarOffset;const spaceToTop=top-appBarOffset;const deltaBottom=window.innerHeight-top-selfRect.height;let selector=popoverContentNode.mudPopoverFliped;if(!selector){if(classList.contains('mud-popover-top-left')){if(deltaBottom<graceMargin&&deltaToRight<graceMargin&&spaceToTop>=selfRect.height&&deltaToLeft>=selfRect.width){selector='top-and-left';}else if(deltaBottom<graceMargin&&spaceToTop>=selfRect.height){selector='top';}else if(deltaToRight<graceMargin&&deltaToLeft>=selfRect.width){selector='left';}}else if(classList.contains('mud-popover-top-center')){if(deltaBottom<graceMargin&&spaceToTop>=selfRect.height){selector='top';}}else if(classList.contains('mud-popover-top-right')){if(deltaBottom<graceMargin&&deltaToLeft<graceMargin&&spaceToTop>=selfRect.height&&deltaToRight>=selfRect.width){selector='top-and-right';}else if(deltaBottom<graceMargin&&spaceToTop>=selfRect.height){selector='top';}else if(deltaToLeft<graceMargin&&deltaToRight>=selfRect.width){selector='right';}} -else if(classList.contains('mud-popover-center-left')){if(deltaToRight<graceMargin&&deltaToLeft>=selfRect.width){selector='left';}} -else if(classList.contains('mud-popover-center-right')){if(deltaToLeft<graceMargin&&deltaToRight>=selfRect.width){selector='right';}} -else if(classList.contains('mud-popover-bottom-left')){if(deltaTop<graceMargin&&deltaToRight<graceMargin&&deltaBottom>=0&&deltaToLeft>=selfRect.width){selector='bottom-and-left';}else if(deltaTop<graceMargin&&deltaBottom>=0){selector='bottom';}else if(deltaToRight<graceMargin&&deltaToLeft>=selfRect.width){selector='left';}}else if(classList.contains('mud-popover-bottom-center')){if(deltaTop<graceMargin&&deltaBottom>=0){selector='bottom';}}else if(classList.contains('mud-popover-bottom-right')){if(deltaTop<graceMargin&&deltaToLeft<graceMargin&&deltaBottom>=0&&deltaToRight>=selfRect.width){selector='bottom-and-right';}else if(deltaTop<graceMargin&&deltaBottom>=0){selector='bottom';}else if(deltaToLeft<graceMargin&&deltaToRight>=selfRect.width){selector='right';}}} -if(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{if(left+offsetX<0){left=Math.max(0,left+offsetX);offsetX=0;} -if(top+offsetY<appBarOffset){top=Math.max(appBarOffset,top+offsetY);offsetY=0;} -popoverContentNode.removeAttribute('data-mudpopover-flip');} -if(classList.contains('mud-popover-overflow-flip-onopen')){if(!popoverContentNode.mudPopoverFliped){popoverContentNode.mudPopoverFliped=selector||'none';}}} -if(popoverContentNode.classList.contains('mud-popover-fixed')){} -else if(window.getComputedStyle(popoverNode).position=='fixed'){popoverContentNode.style['position']='fixed';} -else{offsetX+=window.scrollX;offsetY+=window.scrollY} -popoverContentNode.style['left']=(left+offsetX)+'px';popoverContentNode.style['top']=(top+offsetY)+'px';if(window.getComputedStyle(popoverNode).getPropertyValue('z-index')!='auto'){popoverContentNode.style['z-index']=window.getComputedStyle(popoverNode).getPropertyValue('z-index');popoverContentNode.skipZIndex=true;}}},placePopoverByClassSelector:function(classSelector=null){var items=window.mudPopover.getAllObservedContainers();for(let i=0;i<items.length;i++){const popoverNode=document.getElementById('popover-'+items[i]);window.mudpopoverHelper.placePopover(popoverNode,classSelector);}},placePopoverByNode:function(target){const id=target.id.substr(15);const popoverNode=document.getElementById('popover-'+id);window.mudpopoverHelper.placePopover(popoverNode);},countProviders:function(){return document.querySelectorAll(".mud-popover-provider").length;}} -class MudPopover{constructor(){this.map={};this.contentObserver=null;this.mainContainerClass=null;} -callback(id,mutationsList,observer){for(const mutation of mutationsList){if(mutation.type==='attributes'){const target=mutation.target -if(mutation.attributeName=='class'){if(target.classList.contains('mud-popover-overflow-flip-onopen')&&target.classList.contains('mud-popover-open')==false){target.mudPopoverFliped=null;target.removeAttribute('data-mudpopover-flip');} -window.mudpopoverHelper.placePopoverByNode(target);} -else if(mutation.attributeName=='data-ticks'){const tickAttribute=target.getAttribute('data-ticks');const parent=target.parentElement;const tickValues=[];let max=-1;if(parent){for(let i=0;i<parent.children.length;i++){const childNode=parent.children[i];const tickValue=parseInt(childNode.getAttribute('data-ticks'));if(tickValue==0){continue;} -if(tickValues.indexOf(tickValue)>=0){continue;} -tickValues.push(tickValue);if(tickValue>max){max=tickValue;}}} -if(tickValues.length==0){continue;} -const sortedTickValues=tickValues.sort((x,y)=>x-y);for(let i=0;i<parent.children.length;i++){const childNode=parent.children[i];const tickValue=parseInt(childNode.getAttribute('data-ticks'));if(tickValue==0){continue;} -if(childNode.skipZIndex==true){continue;} -childNode.style['z-index']='calc(var(--mud-zindex-popover) + '+(sortedTickValues.indexOf(tickValue)+3).toString()+')';}}}}} -initialize(containerClass,flipMargin){const mainContent=document.getElementsByClassName(containerClass);if(mainContent.length==0){return;} -if(flipMargin){window.mudpopoverHelper.flipMargin=flipMargin;} -this.mainContainerClass=containerClass;if(!mainContent[0].mudPopoverMark){mainContent[0].mudPopoverMark="mudded";if(this.contentObserver!=null){this.contentObserver.disconnect();this.contentObserver=null;} -this.contentObserver=new ResizeObserver(entries=>{window.mudpopoverHelper.placePopoverByClassSelector();});this.contentObserver.observe(mainContent[0]);}} -connect(id){this.initialize(this.mainContainerClass);const popoverNode=document.getElementById('popover-'+id);const popoverContentNode=document.getElementById('popovercontent-'+id);if(popoverNode&&popoverNode.parentNode&&popoverContentNode){window.mudpopoverHelper.placePopover(popoverNode);const config={attributeFilter:['class','data-ticks']};const observer=new MutationObserver(this.callback.bind(this,id));observer.observe(popoverContentNode,config);const resizeObserver=new ResizeObserver(entries=>{for(let entry of entries){const target=entry.target;for(var i=0;i<target.childNodes.length;i++){const childNode=target.childNodes[i];if(childNode.id&&childNode.id.startsWith('popover-')){window.mudpopoverHelper.placePopover(childNode);}}}});resizeObserver.observe(popoverNode.parentNode);const contentNodeObserver=new ResizeObserver(entries=>{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();});window.mudTimePicker={initPointerEvents:(clock,dotNetHelper)=>{let isPointerDown=false;const startHandler=(event)=>{if(event.button!==0){return;} -isPointerDown=true;event.target.releasePointerCapture(event.pointerId);if(event.target.classList.contains('mud-hour')||event.target.classList.contains('mud-minute')){let attributeValue=event.target.getAttribute('data-stick-value');let stickValue=attributeValue?parseInt(attributeValue):-1;dotNetHelper.invokeMethodAsync('SelectTimeFromStick',stickValue,false);} -event.preventDefault();};const endHandler=(event)=>{if(event.button!==0){return;} -isPointerDown=false;if(event.target.classList.contains('mud-hour')||event.target.classList.contains('mud-minute')){let attributeValue=event.target.getAttribute('data-stick-value');let stickValue=attributeValue?parseInt(attributeValue):-1;dotNetHelper.invokeMethodAsync('OnStickClick',stickValue);} -event.preventDefault();};const moveHandler=(event)=>{if(!isPointerDown||(!event.target.classList.contains('mud-hour')&&!event.target.classList.contains('mud-minute'))){return;} -let attributeValue=event.target.getAttribute('data-stick-value');let stickValue=attributeValue?parseInt(attributeValue):-1;dotNetHelper.invokeMethodAsync('SelectTimeFromStick',stickValue,true);event.preventDefault();};clock.addEventListener('pointerdown',startHandler);clock.addEventListener('pointerup',endHandler);clock.addEventListener('pointercancel',endHandler);clock.addEventListener('pointerover',moveHandler);clock.destroy=()=>{clock.removeEventListener('pointerdown',startHandler);clock.removeEventListener('pointerup',endHandler);clock.removeEventListener('pointercancel',endHandler);clock.removeEventListener('pointerover',moveHandler);};},destroyPointerEvents:(container)=>{if(container==null){return;} -if(typeof container.destroy==='function'){container.destroy();}}};class MudResizeListener{constructor(id){this.logger=function(message){};this.options={};this.throttleResizeHandlerId=-1;this.dotnet=undefined;this.breakpoint=-1;this.id=id;this.handleResize=this.throttleResizeHandler.bind(this);} +class MudResizeListener{constructor(id){this.logger=function(message){};this.options={};this.throttleResizeHandlerId=-1;this.dotnet=undefined;this.breakpoint=-1;this.id=id;this.handleResize=this.throttleResizeHandler.bind(this);} listenForResize(dotnetRef,options){if(this.dotnet){this.options=options;return;} this.options=options;this.dotnet=dotnetRef;this.logger=options.enableLogging?console.log:(message)=>{};this.logger(`[MudBlazor]Reporting resize events at rate of:${this.options.reportRate}ms`);window.addEventListener("resize",this.handleResize,false);if(!this.options.suppressInitEvent){this.resizeHandler();} this.breakpoint=this.getBreakpoint(window.innerWidth);} @@ -127,89 +178,8 @@ return 1;else return 0;}};window.mudResizeListener=new MudResizeListener();window.mudResizeListenerFactory={mapping:{},listenForResize:(dotnetRef,options,id)=>{var map=window.mudResizeListenerFactory.mapping;if(map[id]){return;} var listener=new MudResizeListener(id);listener.listenForResize(dotnetRef,options);map[id]=listener;},cancelListener:(id)=>{var map=window.mudResizeListenerFactory.mapping;if(!map[id]){return;} var listener=map[id];listener.cancelListener();delete map[id];},cancelListeners:(ids)=>{for(let i=0;i<ids.length;i++){window.mudResizeListenerFactory.cancelListener(ids[i]);}},dispose(){var map=window.mudResizeListenerFactory.mapping;for(var id in map){window.mudResizeListenerFactory.cancelListener(id);}}} -class MudFileUpload{openFilePicker(id){const element=document.getElementById(id);if(!element){return;} -try{element.showPicker();}catch(error){element.click();}}} -window.mudFileUpload=new MudFileUpload();window.mudDragAndDrop={initDropZone:(id)=>{const elem=document.getElementById(id);elem.addEventListener('dragover',()=>event.preventDefault());elem.addEventListener('dragstart',()=>event.dataTransfer.setData('',event.target.id));},makeDropZonesNotRelative:()=>{var firstDropItems=Array.from(document.getElementsByClassName('mud-drop-item')).filter(x=>x.getAttribute('index')=="-1");for(let dropItem of firstDropItems){dropItem.style.position='static';} -const dropZones=document.getElementsByClassName('mud-drop-zone');for(let dropZone of dropZones){dropZone.style.position='unset';}},getDropZoneIdentifierOnPosition:(x,y)=>{const elems=document.elementsFromPoint(x,y);const dropZones=elems.filter(e=>e.classList.contains('mud-drop-zone')) -const dropZone=dropZones[0];if(dropZone){return dropZone.getAttribute('identifier')||"";} -return"";},getDropIndexOnPosition:(x,y,id)=>{const elems=document.elementsFromPoint(x,y);const dropItems=elems.filter(e=>e.classList.contains('mud-drop-item')&&e.id!=id) -const dropItem=dropItems[0];if(dropItem){return dropItem.getAttribute('index')||"";} -return"";},makeDropZonesRelative:()=>{const dropZones=document.getElementsByClassName('mud-drop-zone');for(let dropZone of dropZones){dropZone.style.position='relative';} -var firstDropItems=Array.from(document.getElementsByClassName('mud-drop-item')).filter(x=>x.getAttribute('index')=="-1");for(let dropItem of firstDropItems){dropItem.style.position='relative';}},moveItemByDifference:(id,dx,dy)=>{const elem=document.getElementById(id);var tx=(parseFloat(elem.getAttribute('data-x'))||0)+dx;var ty=(parseFloat(elem.getAttribute('data-y'))||0)+dy;elem.style.webkitTransform=elem.style.transform='translate3d('+tx+'px, '+ty+'px, 10px)';elem.setAttribute('data-x',tx);elem.setAttribute('data-y',ty);},resetItem:(id)=>{const elem=document.getElementById(id);if(elem){elem.style.webkitTransform=elem.style.transform='';elem.setAttribute('data-x',0);elem.setAttribute('data-y',0);}}};class MudJsEventFactory{connect(dotNetRef,elementId,options){if(!elementId) -throw"[MudBlazor | JsEvent] elementId: expected element id!";var element=document.getElementById(elementId);if(!element) -throw"[MudBlazor | JsEvent] no element found for id: "+elementId;if(!element.mudJsEvent) -element.mudJsEvent=new MudJsEvent(dotNetRef,options);element.mudJsEvent.connect(element);} -disconnect(elementId){var element=document.getElementById(elementId);if(!element||!element.mudJsEvent) -return;element.mudJsEvent.disconnect();} -subscribe(elementId,eventName){if(!elementId) -throw"[MudBlazor | JsEvent] elementId: expected element id!";var element=document.getElementById(elementId);if(!element) -throw"[MudBlazor | JsEvent] no element found for id: "+elementId;if(!element.mudJsEvent) -throw"[MudBlazor | JsEvent] please connect before subscribing" -element.mudJsEvent.subscribe(eventName);} -unsubscribe(elementId,eventName){var element=document.getElementById(elementId);if(!element||!element.mudJsEvent) -return;element.mudJsEvent.unsubscribe(element,eventName);}} -window.mudJsEvent=new MudJsEventFactory();class MudJsEvent{constructor(dotNetRef,options){this._dotNetRef=dotNetRef;this._options=options||{};this.logger=options.enableLogging?console.log:(message)=>{};this.logger('[MudBlazor | JsEvent] Initialized',{options});this._subscribedEvents={};} -connect(element){if(!this._options) -return;if(!this._options.targetClass) -throw"_options.targetClass: css class name expected";if(this._observer){return;} -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:false,childList:true,subtree:true});this._observedChildren=[];} -disconnect(){if(!this._observer) -return;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]){return;} -var element=this._element;var targetClass=this._options.targetClass;this._subscribedEvents[eventName]=true;for(const child of element.getElementsByClassName(targetClass)){this.attachHandlers(child);}} -unsubscribe(eventName){if(!this._observer) -return;this.logger('[MudBlazor | JsEvent] unsubscribe event handler '+eventName);this._observer.disconnect();this._observer=null;this._subscribedEvents[eventName]=false;for(const child of this._observedChildren){this.detachHandler(child,eventName);}} -attachHandlers(child){child.mudJsEvent=this;for(var eventName of Object.getOwnPropertyNames(this._subscribedEvents)){if(!this._subscribedEvents[eventName]) -continue;this.logger('[MudBlazor | JsEvent] attaching event '+eventName,child);child.addEventListener(eventName,this.eventHandler);} -if(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)){if(!this._subscribedEvents[eventName]) -continue;child.removeEventListener(eventName,this.eventHandler);} -this._observedChildren=this._observedChildren.filter(x=>x!==child);} -onDomChanged(mutationsList,observer){var self=this.mudJsEvent;var targetClass=self._options.targetClass;for(const mutation of mutationsList){for(const element of mutation.addedNodes){if(element.classList&&element.classList.contains(targetClass)){if(!self._options.TagName||element.tagName==self._options.TagName) -self.attachHandlers(element);}} -for(const element of mutation.removedNodes){if(element.classList&&element.classList.contains(targetClass)){if(!self._options.tagName||element.tagName==self._options.tagName) -self.detachHandlers(element);}}}} -eventHandler(e){var self=this.mudJsEvent;var eventName=e.type;self.logger('[MudBlazor | JsEvent] "'+eventName+'"',e);self["on"+eventName](self,e);} -onkeyup(self,e){const caretPosition=e.target.selectionStart;const invoke=self._subscribedEvents["keyup"];if(invoke){self._dotNetRef.invokeMethodAsync('OnCaretPositionChanged',caretPosition);}} -onclick(self,e){const caretPosition=e.target.selectionStart;const invoke=self._subscribedEvents["click"];if(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;const end=e.target.selectionEnd;if(start===end) -return;self._dotNetRef.invokeMethodAsync('OnSelect',start,end);}}} -class MudScrollManager{scrollToYear(elementId,offset){let element=document.getElementById(elementId);if(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;if(parent){parent.scrollTop=element.offsetTop;}}} -scrollTo(selector,left,top,behavior){let element=document.querySelector(selector)||document.documentElement;element.scrollTo({left,top,behavior});} -scrollIntoView(selector,behavior){let element=document.querySelector(selector)||document.documentElement;if(element) -element.scrollIntoView({behavior,block:'center',inline:'start'});} -scrollToBottom(selector,behavior){let element=document.querySelector(selector);if(element){element.scrollTo({top:element.scrollHeight,behavior:behavior});}else{window.scrollTo({top:document.body.scrollHeight,behavior:behavior});}} -lockScroll(selector,lockclass){let element=document.querySelector(selector)||document.body;let hasScrollBar=window.innerWidth>document.body.clientWidth;if(hasScrollBar){element.classList.add(lockclass);}else{let lockClassNoPadding=lockclass+"-no-padding";element.classList.add(lockClassNoPadding);}} -unlockScroll(selector,lockclass){let element=document.querySelector(selector)||document.body;element.classList.remove(lockclass);element.classList.remove(lockclass+"-no-padding");}};window.mudScrollManager=new MudScrollManager();window.mudInputAutoGrow={initAutoGrow:(elem,maxLines)=>{const compStyle=getComputedStyle(elem);const lineHeight=parseFloat(compStyle.getPropertyValue('line-height'));let maxHeight=0;elem.updateParameters=function(newMaxLines){if(newMaxLines>0){maxHeight=lineHeight*newMaxLines;}else{maxHeight=0;}} -elem.adjustAutoGrowHeight=function(didReflow=false){const scrollTops=[];let curElem=elem;while(curElem&&curElem.parentNode&&curElem.parentNode instanceof Element){if(curElem.parentNode.scrollTop){scrollTops.push([curElem.parentNode,curElem.parentNode.scrollTop]);} -curElem=curElem.parentNode;} -elem.style.height=0;if(didReflow){elem.style.textAlign=null;} -let minHeight=lineHeight*elem.rows;let newHeight=Math.max(minHeight,elem.scrollHeight);let initialOverflowY=elem.style.overflowY;if(maxHeight>0&&newHeight>maxHeight){elem.style.overflowY='auto';newHeight=maxHeight;}else{elem.style.overflowY='hidden';} -elem.style.height=newHeight+"px";scrollTops.forEach(([node,scrollTop])=>{node.style.scrollBehavior='auto';node.scrollTop=scrollTop;node.style.scrollBehavior=null;});if(!didReflow&&initialOverflowY!==elem.style.overflowY&&elem.style.overflowY==='hidden'){elem.style.textAlign='end';elem.adjustAutoGrowHeight(true);}} -elem.restoreToInitialState=function(){elem.removeEventListener('input',elem.adjustAutoGrowHeight);elem.style.overflowY=null;elem.style.height=null;} -elem.addEventListener('input',elem.adjustAutoGrowHeight);window.addEventListener('resize',elem.adjustAutoGrowHeight);elem.updateParameters(maxLines);elem.adjustAutoGrowHeight();},adjustHeight:(elem)=>{if(typeof elem.adjustAutoGrowHeight==='function'){elem.adjustAutoGrowHeight();}},updateParams:(elem,maxLines)=>{if(typeof elem.updateParameters==='function'){elem.updateParameters(maxLines);} -if(typeof elem.adjustAutoGrowHeight==='function'){elem.adjustAutoGrowHeight();}},destroy:(elem)=>{if(elem==null){return;} -window.removeEventListener('resize',elem.adjustAutoGrowHeight);if(typeof elem.restoreToInitialState==='function'){elem.restoreToInitialState();}}};class MudResizeObserverFactory{constructor(){this._maps={};} -connect(id,dotNetRef,elements,elementIds,options){var existingEntry=this._maps[id];if(!existingEntry){var observer=new MudResizeObserver(dotNetRef,options);this._maps[id]=observer;} -var result=this._maps[id].connect(elements,elementIds);return result;} -disconnect(id,element){var existingEntry=this._maps[id];if(existingEntry){existingEntry.disconnect(element);}} -cancelListener(id){var existingEntry=this._maps[id];if(existingEntry){existingEntry.cancelListener();delete this._maps[id];}}} -class MudResizeObserver{constructor(dotNetRef,options){this.logger=options.enableLogging?console.log:(message)=>{};this.options=options;this._dotNetRef=dotNetRef -var delay=(this.options||{}).reportRate||200;this.throttleResizeHandlerId=-1;var observervedElements=[];this._observervedElements=observervedElements;this.logger('[MudBlazor | ResizeObserver] Observer initialized');this._resizeObserver=new ResizeObserver(entries=>{var changes=[];this.logger('[MudBlazor | ResizeObserver] changes detected');for(let entry of entries){var target=entry.target;var affectedObservedElement=observervedElements.find((x)=>x.element==target);if(affectedObservedElement){var size=entry.target.getBoundingClientRect();if(affectedObservedElement.isInitialized==true){changes.push({id:affectedObservedElement.id,size:size});} -else{affectedObservedElement.isInitialized=true;}}} -if(changes.length>0){if(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=[];this.logger('[MudBlazor | ResizeObserver] Start observing elements...');for(var i=0;i<elements.length;i++){var newEntry={element:elements[i],id:ids[i],isInitialized:false,};this.logger("[MudBlazor | ResizeObserver] Start observing element:",{newEntry});result.push(elements[i].getBoundingClientRect());this._observervedElements.push(newEntry);this._resizeObserver.observe(elements[i]);} -return result;} -disconnect(elementId){this.logger('[MudBlazor | ResizeObserver] Try to unobserve element with id',{elementId});var affectedObservedElement=this._observervedElements.find((x)=>x.id==elementId);if(affectedObservedElement){var element=affectedObservedElement.element;this._resizeObserver.unobserve(element);this.logger('[MudBlazor | ResizeObserver] Element found. Ubobserving size changes of element',{element});var 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 MudElementReference{constructor(){this.listenerId=0;this.eventListeners={};} +function setRippleOffset(event,target){const rect=target.getBoundingClientRect();const x=event.clientX-rect.left-rect.width/2;const y=event.clientY-rect.top-rect.height/2;target.style.setProperty("--mud-ripple-offset-x",`${x}px`);target.style.setProperty("--mud-ripple-offset-y",`${y}px`);} +document.addEventListener("click",function(event){const target=event.target.closest(".mud-ripple");if(target){setRippleOffset(event,target);}});class MudElementReference{constructor(){this.listenerId=0;this.eventListeners={};} focus(element){if(element) {element.focus();}} blur(element){if(element){element.blur();}} @@ -241,17 +211,22 @@ element.addEventListener(eventName,listener,{passive:false});this.eventListeners removeDefaultPreventingHandler(element,eventName,listenerId){this.removeEventListener(element,eventName,listenerId);} addDefaultPreventingHandlers(element,eventNames){let listeners=[];for(const eventName of eventNames){let listenerId=this.addDefaultPreventingHandler(element,eventName);listeners.push(listenerId);} return listeners;} -removeDefaultPreventingHandlers(element,eventNames,listenerIds){for(let index=0;index<eventNames.length;++index){const eventName=eventNames[index];const listenerId=listenerIds[index];this.removeDefaultPreventingHandler(element,eventName,listenerId);}}};window.mudElementRef=new MudElementReference();class MudScrollListener{constructor(){this.throttleScrollHandlerId=-1;this.handlerRef=null;} -listenForScroll(dotnetReference,selector){let element=selector?document.querySelector(selector):document;this.handlerRef=this.throttleScrollHandler.bind(this,dotnetReference);element.addEventListener('scroll',this.handlerRef,false);} -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;let scrollTop=element.scrollTop;let scrollHeight=element.scrollHeight;let scrollWidth=element.scrollWidth;let scrollLeft=element.scrollLeft;let nodeName=element.nodeName;let firstChild=element.firstElementChild;let 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;element.removeEventListener('scroll',this.handlerRef);}};window.mudScrollListener=new MudScrollListener();class MudWindow{copyToClipboard(text){navigator.clipboard.writeText(text);} -changeCssById(id,css){var element=document.getElementById(id);if(element){element.className=css;}} -updateStyleProperty(elementId,propertyName,value){const element=document.getElementById(elementId);if(element){element.style.setProperty(propertyName,value);}} -changeGlobalCssVariable(name,newValue){document.documentElement.style.setProperty(name,newValue);} -open(args){window.open(args);}} -window.mudWindow=new MudWindow();function setRippleOffset(event,target){const rect=target.getBoundingClientRect();const x=event.clientX-rect.left-rect.width/2;const y=event.clientY-rect.top-rect.height/2;target.style.setProperty("--mud-ripple-offset-x",`${x}px`);target.style.setProperty("--mud-ripple-offset-y",`${y}px`);} -document.addEventListener("click",function(event){const target=event.target.closest(".mud-ripple");if(target){setRippleOffset(event,target);}});class MudScrollSpy{constructor(){this.lastKnowElement=null;this.handlerRef=null;} +removeDefaultPreventingHandlers(element,eventNames,listenerIds){for(let index=0;index<eventNames.length;++index){const eventName=eventNames[index];const listenerId=listenerIds[index];this.removeDefaultPreventingHandler(element,eventName,listenerId);}}};window.mudElementRef=new MudElementReference();window.mudTimePicker={initPointerEvents:(clock,dotNetHelper)=>{let isPointerDown=false;const startHandler=(event)=>{if(event.button!==0){return;} +isPointerDown=true;event.target.releasePointerCapture(event.pointerId);if(event.target.classList.contains('mud-hour')||event.target.classList.contains('mud-minute')){let attributeValue=event.target.getAttribute('data-stick-value');let stickValue=attributeValue?parseInt(attributeValue):-1;dotNetHelper.invokeMethodAsync('SelectTimeFromStick',stickValue,false);} +event.preventDefault();};const endHandler=(event)=>{if(event.button!==0){return;} +isPointerDown=false;if(event.target.classList.contains('mud-hour')||event.target.classList.contains('mud-minute')){let attributeValue=event.target.getAttribute('data-stick-value');let stickValue=attributeValue?parseInt(attributeValue):-1;dotNetHelper.invokeMethodAsync('OnStickClick',stickValue);} +event.preventDefault();};const moveHandler=(event)=>{if(!isPointerDown||(!event.target.classList.contains('mud-hour')&&!event.target.classList.contains('mud-minute'))){return;} +let attributeValue=event.target.getAttribute('data-stick-value');let stickValue=attributeValue?parseInt(attributeValue):-1;dotNetHelper.invokeMethodAsync('SelectTimeFromStick',stickValue,true);event.preventDefault();};clock.addEventListener('pointerdown',startHandler);clock.addEventListener('pointerup',endHandler);clock.addEventListener('pointercancel',endHandler);clock.addEventListener('pointerover',moveHandler);clock.destroy=()=>{clock.removeEventListener('pointerdown',startHandler);clock.removeEventListener('pointerup',endHandler);clock.removeEventListener('pointercancel',endHandler);clock.removeEventListener('pointerover',moveHandler);};},destroyPointerEvents:(container)=>{if(container==null){return;} +if(typeof container.destroy==='function'){container.destroy();}}};window.mudInputAutoGrow={initAutoGrow:(elem,maxLines)=>{const compStyle=getComputedStyle(elem);const lineHeight=parseFloat(compStyle.getPropertyValue('line-height'));let maxHeight=0;elem.updateParameters=function(newMaxLines){if(newMaxLines>0){maxHeight=lineHeight*newMaxLines;}else{maxHeight=0;}} +elem.adjustAutoGrowHeight=function(didReflow=false){const scrollTops=[];let curElem=elem;while(curElem&&curElem.parentNode&&curElem.parentNode instanceof Element){if(curElem.parentNode.scrollTop){scrollTops.push([curElem.parentNode,curElem.parentNode.scrollTop]);} +curElem=curElem.parentNode;} +elem.style.height=0;if(didReflow){elem.style.textAlign=null;} +let minHeight=lineHeight*elem.rows;let newHeight=Math.max(minHeight,elem.scrollHeight);let initialOverflowY=elem.style.overflowY;if(maxHeight>0&&newHeight>maxHeight){elem.style.overflowY='auto';newHeight=maxHeight;}else{elem.style.overflowY='hidden';} +elem.style.height=newHeight+"px";scrollTops.forEach(([node,scrollTop])=>{node.style.scrollBehavior='auto';node.scrollTop=scrollTop;node.style.scrollBehavior=null;});if(!didReflow&&initialOverflowY!==elem.style.overflowY&&elem.style.overflowY==='hidden'){elem.style.textAlign='end';elem.adjustAutoGrowHeight(true);}} +elem.restoreToInitialState=function(){elem.removeEventListener('input',elem.adjustAutoGrowHeight);elem.style.overflowY=null;elem.style.height=null;} +elem.addEventListener('input',elem.adjustAutoGrowHeight);window.addEventListener('resize',elem.adjustAutoGrowHeight);elem.updateParameters(maxLines);elem.adjustAutoGrowHeight();},adjustHeight:(elem)=>{if(typeof elem.adjustAutoGrowHeight==='function'){elem.adjustAutoGrowHeight();}},updateParams:(elem,maxLines)=>{if(typeof elem.updateParameters==='function'){elem.updateParameters(maxLines);} +if(typeof elem.adjustAutoGrowHeight==='function'){elem.adjustAutoGrowHeight();}},destroy:(elem)=>{if(elem==null){return;} +window.removeEventListener('resize',elem.adjustAutoGrowHeight);if(typeof elem.restoreToInitialState==='function'){elem.restoreToInitialState();}}};class MudScrollSpy{constructor(){this.lastKnowElement=null;this.handlerRef=null;} spying(dotnetReference,containerSelector,sectionClassSelector){this.lastKnowElement=null;this.handlerRef=this.handleScroll.bind(this,dotnetReference,containerSelector,sectionClassSelector);document.addEventListener('scroll',this.handlerRef,true);window.addEventListener('resize',this.handlerRef,true);} handleScroll(dotnetReference,containerSelector,sectionClassSelector,event){const container=document.querySelector(containerSelector);if(container===null){return;} const elements=document.getElementsByClassName(sectionClassSelector);if(elements.length===0){return;} @@ -262,28 +237,54 @@ if(elementId!==this.lastKnowElement){this.lastKnowElement=elementId;history.repl activateSection(sectionId){const element=document.getElementById(sectionId);if(element){this.lastKnowElement=sectionId;history.replaceState(null,'',window.location.pathname+"#"+sectionId);}} scrollToSection(sectionId){if(sectionId){let element=document.getElementById(sectionId);if(element){element.scrollIntoView({behavior:'smooth',block:'center',inline:'start'});}} else{window.scrollTo({top:0,behavior:'smooth'});}} -unspy(){document.removeEventListener('scroll',this.handlerRef,true);window.removeEventListener('resize',this.handlerRef,true);}};window.mudScrollSpy=new MudScrollSpy();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,false);let projector=null;if(projection){const parts=projection.split('.');let functionPointer=window;let functionReferenceFound=true;if(parts.length==0||parts.length==1){functionPointer=functionPointer[projection];} -else{for(let i=0;i<parts.length;i++){functionPointer=functionPointer[parts[i]];if(!functionPointer){functionReferenceFound=false;break;}}} -if(functionReferenceFound===true){projector=functionPointer;}} -this.mapper[key]={eventName:eventName,handler:handlerRef,delay:throotleInterval,timerId:-1,reference:dotnetReference,elementId:elementId,properties:properties,projection:projector,};}} -subscribeGlobal(eventName,throotleInterval,key,properties,dotnetReference){let handlerRef=throotleInterval>0?this.throttleEventHandler.bind(this,key):this.eventHandler.bind(this,key);document.addEventListener(eventName,handlerRef,false);this.mapper[key]={eventName:eventName,handler:handlerRef,delay:throotleInterval,timerId:-1,reference:dotnetReference,elementId:document,properties:properties,projection:null,};} -throttleEventHandler(key,event){const entry=this.mapper[key];if(!entry){return;} -clearTimeout(entry.timerId);entry.timerId=window.setTimeout(this.eventHandler.bind(this,key,event),entry.delay);} -eventHandler(key,event){const entry=this.mapper[key];if(!entry){return;} -var elem=document.getElementById(entry.elementId);if(elem!=event.srcElement&&entry.elementId!=document){return;} -const eventEntry={};for(var i=0;i<entry.properties.length;i++){eventEntry[entry.properties[i]]=event[entry.properties[i]];} -if(entry.projection){if(typeof entry.projection==="function"){entry.projection.apply(null,[eventEntry,event]);}} -entry.reference.invokeMethodAsync('OnEventOccur',key,JSON.stringify(eventEntry));} -unsubscribe(key){const entry=this.mapper[key];if(!entry){return;} -entry.reference=null;if(document==entry.elementId){document.removeEventListener(entry.eventName,entry.handler,false);}else{const elem=document.getElementById(entry.elementId);if(elem){elem.removeEventListener(entry.eventName,entry.handler,false);}} -delete this.mapper[key];}};window.mudThrottledEventManager=new MudThrottledEventManager();window.mudEventProjections={correctOffset:function(eventEntry,event){var target=event.target.getBoundingClientRect();eventEntry.offsetX=event.clientX-target.x;eventEntry.offsetY=event.clientY-target.y;}};window.getTabbableElements=(element)=>{return element.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;} +unspy(){document.removeEventListener('scroll',this.handlerRef,true);window.removeEventListener('resize',this.handlerRef,true);}};window.mudScrollSpy=new MudScrollSpy();class MudResizeObserverFactory{constructor(){this._maps={};} +connect(id,dotNetRef,elements,elementIds,options){var existingEntry=this._maps[id];if(!existingEntry){var observer=new MudResizeObserver(dotNetRef,options);this._maps[id]=observer;} +var result=this._maps[id].connect(elements,elementIds);return result;} +disconnect(id,element){var existingEntry=this._maps[id];if(existingEntry){existingEntry.disconnect(element);}} +cancelListener(id){var existingEntry=this._maps[id];if(existingEntry){existingEntry.cancelListener();delete this._maps[id];}}} +class MudResizeObserver{constructor(dotNetRef,options){this.logger=options.enableLogging?console.log:(message)=>{};this.options=options;this._dotNetRef=dotNetRef +var delay=(this.options||{}).reportRate||200;this.throttleResizeHandlerId=-1;var observervedElements=[];this._observervedElements=observervedElements;this.logger('[MudBlazor | ResizeObserver] Observer initialized');this._resizeObserver=new ResizeObserver(entries=>{var changes=[];this.logger('[MudBlazor | ResizeObserver] changes detected');for(let entry of entries){var target=entry.target;var affectedObservedElement=observervedElements.find((x)=>x.element==target);if(affectedObservedElement){var size=entry.target.getBoundingClientRect();if(affectedObservedElement.isInitialized==true){changes.push({id:affectedObservedElement.id,size:size});} +else{affectedObservedElement.isInitialized=true;}}} +if(changes.length>0){if(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=[];this.logger('[MudBlazor | ResizeObserver] Start observing elements...');for(var i=0;i<elements.length;i++){var newEntry={element:elements[i],id:ids[i],isInitialized:false,};this.logger("[MudBlazor | ResizeObserver] Start observing element:",{newEntry});result.push(elements[i].getBoundingClientRect());this._observervedElements.push(newEntry);this._resizeObserver.observe(elements[i]);} +return result;} +disconnect(elementId){this.logger('[MudBlazor | ResizeObserver] Try to unobserve element with id',{elementId});var affectedObservedElement=this._observervedElements.find((x)=>x.id==elementId);if(affectedObservedElement){var element=affectedObservedElement.element;this._resizeObserver.unobserve(element);this.logger('[MudBlazor | ResizeObserver] Element found. Ubobserving size changes of element',{element});var 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();window.mudDragAndDrop={initDropZone:(id)=>{const elem=document.getElementById(id);elem.addEventListener('dragover',()=>event.preventDefault());elem.addEventListener('dragstart',()=>event.dataTransfer.setData('',event.target.id));},makeDropZonesNotRelative:()=>{var firstDropItems=Array.from(document.getElementsByClassName('mud-drop-item')).filter(x=>x.getAttribute('index')=="-1");for(let dropItem of firstDropItems){dropItem.style.position='static';} +const dropZones=document.getElementsByClassName('mud-drop-zone');for(let dropZone of dropZones){dropZone.style.position='unset';}},getDropZoneIdentifierOnPosition:(x,y)=>{const elems=document.elementsFromPoint(x,y);const dropZones=elems.filter(e=>e.classList.contains('mud-drop-zone')) +const dropZone=dropZones[0];if(dropZone){return dropZone.getAttribute('identifier')||"";} +return"";},getDropIndexOnPosition:(x,y,id)=>{const elems=document.elementsFromPoint(x,y);const dropItems=elems.filter(e=>e.classList.contains('mud-drop-item')&&e.id!=id) +const dropItem=dropItems[0];if(dropItem){return dropItem.getAttribute('index')||"";} +return"";},makeDropZonesRelative:()=>{const dropZones=document.getElementsByClassName('mud-drop-zone');for(let dropZone of dropZones){dropZone.style.position='relative';} +var firstDropItems=Array.from(document.getElementsByClassName('mud-drop-item')).filter(x=>x.getAttribute('index')=="-1");for(let dropItem of firstDropItems){dropItem.style.position='relative';}},moveItemByDifference:(id,dx,dy)=>{const elem=document.getElementById(id);var tx=(parseFloat(elem.getAttribute('data-x'))||0)+dx;var ty=(parseFloat(elem.getAttribute('data-y'))||0)+dy;elem.style.webkitTransform=elem.style.transform='translate3d('+tx+'px, '+ty+'px, 10px)';elem.setAttribute('data-x',tx);elem.setAttribute('data-y',ty);},resetItem:(id)=>{const elem=document.getElementById(id);if(elem){elem.style.webkitTransform=elem.style.transform='';elem.setAttribute('data-x',0);elem.setAttribute('data-y',0);}}};class MudScrollListener{constructor(){this.throttleScrollHandlerId=-1;this.handlerRef=null;} +listenForScroll(dotnetReference,selector){let element=selector?document.querySelector(selector):document;this.handlerRef=this.throttleScrollHandler.bind(this,dotnetReference);element.addEventListener('scroll',this.handlerRef,false);} +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;let scrollTop=element.scrollTop;let scrollHeight=element.scrollHeight;let scrollWidth=element.scrollWidth;let scrollLeft=element.scrollLeft;let nodeName=element.nodeName;let firstChild=element.firstElementChild;let 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;element.removeEventListener('scroll',this.handlerRef);}};window.mudScrollListener=new MudScrollListener();const darkThemeMediaQuery=window.matchMedia("(prefers-color-scheme: dark)");window.darkModeChange=()=>{return darkThemeMediaQuery.matches;};function darkModeChangeListener(e){dotNetHelperTheme.invokeMethodAsync('SystemPreferenceChanged',e.matches);} +function watchDarkThemeMedia(dotNetHelper){dotNetHelperTheme=dotNetHelper;darkThemeMediaQuery.addEventListener('change',darkModeChangeListener);} +function stopWatchingDarkThemeMedia(){darkThemeMediaQuery.removeEventListener('change',darkModeChangeListener);} +class MudWindow{copyToClipboard(text){navigator.clipboard.writeText(text);} +changeCssById(id,css){var element=document.getElementById(id);if(element){element.className=css;}} +updateStyleProperty(elementId,propertyName,value){const element=document.getElementById(elementId);if(element){element.style.setProperty(propertyName,value);}} +changeGlobalCssVariable(name,newValue){document.documentElement.style.setProperty(name,newValue);} +open(args){window.open(args);}} +window.mudWindow=new MudWindow();class MudScrollManager{scrollToYear(elementId,offset){let element=document.getElementById(elementId);if(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;if(parent){parent.scrollTop=element.offsetTop;}}} +scrollTo(selector,left,top,behavior){let element=document.querySelector(selector)||document.documentElement;element.scrollTo({left,top,behavior});} +scrollIntoView(selector,behavior){let element=document.querySelector(selector)||document.documentElement;if(element) +element.scrollIntoView({behavior,block:'center',inline:'start'});} +scrollToBottom(selector,behavior){let element=document.querySelector(selector);if(element){element.scrollTo({top:element.scrollHeight,behavior:behavior});}else{window.scrollTo({top:document.body.scrollHeight,behavior:behavior});}} +lockScroll(selector,lockclass){let element=document.querySelector(selector)||document.body;let hasScrollBar=window.innerWidth>document.body.clientWidth;if(hasScrollBar){element.classList.add(lockclass);}else{let lockClassNoPadding=lockclass+"-no-padding";element.classList.add(lockClassNoPadding);}} +unlockScroll(selector,lockclass){let element=document.querySelector(selector)||document.body;element.classList.remove(lockclass);element.classList.remove(lockclass+"-no-padding");}};window.mudScrollManager=new MudScrollManager();class MudInput{resetValue(id){const input=document.getElementById(id);if(input){input.value='';}}} +window.mudInput=new MudInput();window.getTabbableElements=(element)=>{return element.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))?[]:{};if(!spec){spec="*";} for(let i in data){let currentMember=data[i];if(typeof currentMember==='function'||currentMember===null){continue;} let currentMemberSpec;if(spec!="*"){currentMemberSpec=Array.isArray(data)?spec:spec[i];if(!currentMemberSpec){continue;}}else{currentMemberSpec="*"} if(typeof currentMember==='object'){if(Array.isArray(currentMember)||currentMember.length){res[i]=[];for(let j=0;j<currentMember.length;j++){const arrayItem=currentMember[j];if(typeof arrayItem==='object'){res[i].push(this.serializeParameter(arrayItem,currentMemberSpec));}else{res[i].push(arrayItem);}}}else{if(currentMember.length===0){res[i]=[];}else{res[i]=this.serializeParameter(currentMember,currentMemberSpec);}}}else{if(currentMember===Infinity){currentMember="Infinity";} if(currentMember!==null){res[i]=currentMember;}}} -return res;};const darkThemeMediaQuery=window.matchMedia("(prefers-color-scheme: dark)");window.darkModeChange=()=>{return darkThemeMediaQuery.matches;};function darkModeChangeListener(e){dotNetHelperTheme.invokeMethodAsync('SystemPreferenceChanged',e.matches);} -function watchDarkThemeMedia(dotNetHelper){dotNetHelperTheme=dotNetHelper;darkThemeMediaQuery.addEventListener('change',darkModeChangeListener);} -function stopWatchingDarkThemeMedia(){darkThemeMediaQuery.removeEventListener('change',darkModeChangeListener);} \ No newline at end of file +return res;};class MudFileUpload{openFilePicker(id){const element=document.getElementById(id);if(!element){return;} +try{element.showPicker();}catch(error){element.click();}}} +window.mudFileUpload=new MudFileUpload(); \ No newline at end of file diff --git a/metadata.txt b/metadata.txt index c1855471..3067525c 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ -0.9.28 -2025-02-09 16:33:40 UTC -203 -8.0.112 (commit f7cd007b9d) -8.0.12 (commit 89ef51c5d8) -1.84.1 (commit e71f9a9a9) +0.9.29 +2025-02-23 14:26:00 UTC +204 +8.0.113 (commit 8f216348dc) +8.0.13 (commit eba546b0f0) +1.85.0 (commit 4d91de4e4) 7.16.0 1.8.1 -6da4cf1425f, release +64656d3605c, release diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index 22a915fe..12500629 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -2347,7 +2347,7 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mindwork-ai-studio" -version = "0.9.28" +version = "0.9.29" dependencies = [ "aes", "arboard", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 8ad53635..c25f7262 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindwork-ai-studio" -version = "0.9.28" +version = "0.9.29" edition = "2021" description = "MindWork AI Studio" authors = ["Thorsten Sommer"] diff --git a/runtime/tauri.conf.json b/runtime/tauri.conf.json index 66f35bf2..41196cba 100644 --- a/runtime/tauri.conf.json +++ b/runtime/tauri.conf.json @@ -6,7 +6,7 @@ }, "package": { "productName": "MindWork AI Studio", - "version": "0.9.28" + "version": "0.9.29" }, "tauri": { "allowlist": { From 03431b85b481ce855158fb3c2c860b01708245e7 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 24 Feb 2025 12:48:41 +0100 Subject: [PATCH 034/110] Fixed a layout bug within the chat page (#294) --- app/MindWork AI Studio/Components/ProviderSelection.razor | 2 +- app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/MindWork AI Studio/Components/ProviderSelection.razor b/app/MindWork AI Studio/Components/ProviderSelection.razor index 3ac64b96..9082f016 100644 --- a/app/MindWork AI Studio/Components/ProviderSelection.razor +++ b/app/MindWork AI Studio/Components/ProviderSelection.razor @@ -1,6 +1,6 @@ @using AIStudio.Settings -<MudSelect T="Provider" Value="@this.ProviderSettings" ValueChanged="@this.SelectionChanged" Validation="@this.ValidateProvider" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Apps" Margin="Margin.Dense" Label="Provider" Class="mb-3 rounded-lg" Variant="Variant.Outlined"> +<MudSelect T="Provider" Value="@this.ProviderSettings" ValueChanged="@this.SelectionChanged" Validation="@this.ValidateProvider" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Apps" Margin="Margin.Dense" Label="Provider" Class="mb-3 rounded-lg" OuterClass="flex-grow-0" Variant="Variant.Outlined"> @foreach (var provider in this.GetAvailableProviders()) { <MudSelectItem Value="@provider"/> diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md index 1e7e8cce..f389707d 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md @@ -9,4 +9,5 @@ - Improved data security by enforcing provider filtering based on the chosen confidence level. To ensure this in the future, source code analyzers have been added to warn developers about insecure code. - Improved the readability of descriptions inside the ERI server assistant. - Fixed a bug in which `APP_SETTINGS` appeared as a valid destination in the "send to" menu. +- Fixed a layout bug within the chat page, where the top part uses too much space. - Upgraded to Rust 1.85.0 and .NET 8.0.13. \ No newline at end of file From 8dd5b3bab8b2a06621063064eebf8e822ebb1d41 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 24 Feb 2025 15:02:24 +0100 Subject: [PATCH 035/110] Prepared release v0.9.29 (#295) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 2 +- app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md | 2 +- metadata.txt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index 6f78c41d..95e005b0 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,7 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ - new (204, "v0.9.29, build 204 (2025-02-23 14:26 UTC)", "v0.9.29.md"), + new (204, "v0.9.29, build 204 (2025-02-23 13:48 UTC)", "v0.9.29.md"), new (203, "v0.9.28, build 203 (2025-02-09 16:33 UTC)", "v0.9.28.md"), new (202, "v0.9.27, build 202 (2025-01-21 18:24 UTC)", "v0.9.27.md"), new (201, "v0.9.26, build 201 (2025-01-13 19:11 UTC)", "v0.9.26.md"), diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md index f389707d..a82bb898 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md @@ -1,4 +1,4 @@ -# v0.9.29, build 204 (2025-02-23 14:26 UTC) +# v0.9.29, build 204 (2025-02-23 13:48 UTC) - Added the possibility to select data sources for chats. This preview feature is hidden behind the RAG feature flag, check your app options in case you want to enable it. - Added an option to all data sources to select a local security policy. This preview feature is hidden behind the RAG feature flag. - Added an option to preselect data sources and options for new chats. This preview feature is hidden behind the RAG feature flag. diff --git a/metadata.txt b/metadata.txt index 3067525c..cffc46ce 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ 0.9.29 -2025-02-23 14:26:00 UTC +2025-02-24 13:48:37 UTC 204 8.0.113 (commit 8f216348dc) 8.0.13 (commit eba546b0f0) 1.85.0 (commit 4d91de4e4) 7.16.0 1.8.1 -64656d3605c, release +03431b85b48, release From 5a077e1bdb9fa28a50d1f80a3cbbdf419e522172 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 24 Feb 2025 15:06:51 +0100 Subject: [PATCH 036/110] Fixed the date of the release (#296) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 2 +- app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index 95e005b0..addfa184 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,7 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ - new (204, "v0.9.29, build 204 (2025-02-23 13:48 UTC)", "v0.9.29.md"), + new (204, "v0.9.29, build 204 (2025-02-24 13:48 UTC)", "v0.9.29.md"), new (203, "v0.9.28, build 203 (2025-02-09 16:33 UTC)", "v0.9.28.md"), new (202, "v0.9.27, build 202 (2025-01-21 18:24 UTC)", "v0.9.27.md"), new (201, "v0.9.26, build 201 (2025-01-13 19:11 UTC)", "v0.9.26.md"), diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md index a82bb898..02f0d51f 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.29.md @@ -1,4 +1,4 @@ -# v0.9.29, build 204 (2025-02-23 13:48 UTC) +# v0.9.29, build 204 (2025-02-24 13:48 UTC) - Added the possibility to select data sources for chats. This preview feature is hidden behind the RAG feature flag, check your app options in case you want to enable it. - Added an option to all data sources to select a local security policy. This preview feature is hidden behind the RAG feature flag. - Added an option to preselect data sources and options for new chats. This preview feature is hidden behind the RAG feature flag. From e21e30ce8c52cb1dfb234149c01a11d1285e6719 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 24 Feb 2025 20:52:32 +0100 Subject: [PATCH 037/110] Implemented the new models API for the Anthropic provider (#297) --- .../Provider/Anthropic/ProviderAnthropic.cs | 56 ++++++++++++++----- .../wwwroot/changelog/v0.9.30.md | 2 + 2 files changed, 44 insertions(+), 14 deletions(-) create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.30.md diff --git a/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs b/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs index 6f3ef54e..a900095d 100644 --- a/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs +++ b/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs @@ -1,3 +1,4 @@ +using System.Net.Http.Headers; using System.Runtime.CompilerServices; using System.Text; using System.Text.Json; @@ -87,21 +88,15 @@ public sealed class ProviderAnthropic(ILogger logger) : BaseProvider("https://ap /// <inheritdoc /> public override Task<IEnumerable<Model>> GetTextModels(string? apiKeyProvisional = null, CancellationToken token = default) { - return Task.FromResult(new[] + var additionalModels = new[] { - new Model("claude-3-5-sonnet-latest", "Claude 3.5 Sonnet (latest)"), - new Model("claude-3-5-sonnet-20240620", "Claude 3.5 Sonnet (20. June 2024)"), - new Model("claude-3-5-sonnet-20241022", "Claude 3.5 Sonnet (22. October 2024)"), - - new Model("claude-3-5-haiku-latest", "Claude 3.5 Haiku (latest)"), - new Model("claude-3-5-heiku-20241022", "Claude 3.5 Haiku (22. October 2024)"), - - new Model("claude-3-opus-20240229", "Claude 3.0 Opus (29. February 2024)"), - new Model("claude-3-opus-latest", "Claude 3.0 Opus (latest)"), - - new Model("claude-3-sonnet-20240229", "Claude 3.0 Sonnet (29. February 2024)"), - new Model("claude-3-haiku-20240307", "Claude 3.0 Haiku (7. March 2024)"), - }.AsEnumerable()); + new Model("claude-3-7-sonnet-latest", "Claude 3.7 Sonnet (Latest)"), + new Model("claude-3-5-sonnet-latest", "Claude 3.5 Sonnet (Latest)"), + new Model("claude-3-5-haiku-latest", "Claude 3.5 Haiku (Latest)"), + new Model("claude-3-opus-latest", "Claude 3 Opus (Latest)"), + }; + + return this.LoadModels(token, apiKeyProvisional).ContinueWith(t => t.Result.Concat(additionalModels).OrderBy(x => x.Id).AsEnumerable(), token); } /// <inheritdoc /> @@ -117,4 +112,37 @@ public sealed class ProviderAnthropic(ILogger logger) : BaseProvider("https://ap } #endregion + + private async Task<IEnumerable<Model>> LoadModels(CancellationToken token, string? apiKeyProvisional = null) + { + var secretKey = apiKeyProvisional switch + { + not null => apiKeyProvisional, + _ => await RUST_SERVICE.GetAPIKey(this) switch + { + { Success: true } result => await result.Secret.Decrypt(ENCRYPTION), + _ => null, + } + }; + + if (secretKey is null) + return []; + + using var request = new HttpRequestMessage(HttpMethod.Get, "models?limit=100"); + + // Set the authorization header: + request.Headers.Add("x-api-key", secretKey); + + // Set the Anthropic version: + request.Headers.Add("anthropic-version", "2023-06-01"); + + request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", secretKey); + + using var response = await this.httpClient.SendAsync(request, token); + if(!response.IsSuccessStatusCode) + return []; + + var modelResponse = await response.Content.ReadFromJsonAsync<ModelsResponse>(JSON_SERIALIZER_OPTIONS, token); + return modelResponse.Data; + } } \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.30.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.30.md new file mode 100644 index 00000000..1760352d --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.30.md @@ -0,0 +1,2 @@ +# v0.9.30, build 205 (2025-02-xx xx:xx UTC) +- Implemented the new models API for the Anthropic provider. This allows you to use the latest models, like Claude 3.7 Sonnet, which were released in the last hours. \ No newline at end of file From 99dac520cb90c05b28ca93f69b7989dbf7893e77 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 24 Feb 2025 20:58:35 +0100 Subject: [PATCH 038/110] Prepared release v0.9.30 (#298) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 1 + app/MindWork AI Studio/packages.lock.json | 2 +- app/MindWork AI Studio/wwwroot/changelog/v0.9.30.md | 2 +- metadata.txt | 8 ++++---- runtime/Cargo.lock | 2 +- runtime/Cargo.toml | 2 +- runtime/tauri.conf.json | 2 +- 7 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index addfa184..71902e58 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,6 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ + new (205, "v0.9.30, build 205 (2025-02-24 19:55 UTC)", "v0.9.30.md"), new (204, "v0.9.29, build 204 (2025-02-24 13:48 UTC)", "v0.9.29.md"), new (203, "v0.9.28, build 203 (2025-02-09 16:33 UTC)", "v0.9.28.md"), new (202, "v0.9.27, build 202 (2025-01-21 18:24 UTC)", "v0.9.27.md"), diff --git a/app/MindWork AI Studio/packages.lock.json b/app/MindWork AI Studio/packages.lock.json index 114e7972..5d302021 100644 --- a/app/MindWork AI Studio/packages.lock.json +++ b/app/MindWork AI Studio/packages.lock.json @@ -207,6 +207,6 @@ "contentHash": "7WaVMHklpT3Ye2ragqRIwlFRsb6kOk63BOGADV0fan3ulVfGLUYkDi5yNUsZS/7FVNkWbtHAlDLmu4WnHGfqvQ==" } }, - "net8.0/osx-arm64": {} + "net8.0/osx-x64": {} } } \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.30.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.30.md index 1760352d..91092514 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.30.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.30.md @@ -1,2 +1,2 @@ -# v0.9.30, build 205 (2025-02-xx xx:xx UTC) +# v0.9.30, build 205 (2025-02-24 19:55 UTC) - Implemented the new models API for the Anthropic provider. This allows you to use the latest models, like Claude 3.7 Sonnet, which were released in the last hours. \ No newline at end of file diff --git a/metadata.txt b/metadata.txt index cffc46ce..84f8eb31 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ -0.9.29 -2025-02-24 13:48:37 UTC -204 +0.9.30 +2025-02-24 19:55:00 UTC +205 8.0.113 (commit 8f216348dc) 8.0.13 (commit eba546b0f0) 1.85.0 (commit 4d91de4e4) 7.16.0 1.8.1 -03431b85b48, release +e21e30ce8c5, release diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index 12500629..919306f7 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -2347,7 +2347,7 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mindwork-ai-studio" -version = "0.9.29" +version = "0.9.30" dependencies = [ "aes", "arboard", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index c25f7262..58cae86d 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindwork-ai-studio" -version = "0.9.29" +version = "0.9.30" edition = "2021" description = "MindWork AI Studio" authors = ["Thorsten Sommer"] diff --git a/runtime/tauri.conf.json b/runtime/tauri.conf.json index 41196cba..b45cbe69 100644 --- a/runtime/tauri.conf.json +++ b/runtime/tauri.conf.json @@ -6,7 +6,7 @@ }, "package": { "productName": "MindWork AI Studio", - "version": "0.9.29" + "version": "0.9.30" }, "tauri": { "allowlist": { From 5e3b632eeebb04cb535791fd15b2a07e13381bb4 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 25 Feb 2025 19:58:17 +0100 Subject: [PATCH 039/110] Extended code analyzers (#293) --- .github/CODEOWNERS | 10 +- .../ERI/AllowedLLMProvidersExtensions.cs | 17 +- .../Components/MudTextList.razor.cs | 2 +- app/MindWork AI Studio/Redirect.cs | 1 - .../DataModel/DataSourceTypeExtension.cs | 17 +- .../Settings/DataModel/ThemesExtensions.cs | 17 +- .../Settings/SettingsMigrations.cs | 2 +- .../AnalyzerReleases.Shipped.md | 13 +- .../SourceCodeRules/Identifier.cs | 13 + .../NamingAnalyzers/ConstStaticAnalyzer.cs | 67 +++++ .../NamingAnalyzers/LocalConstantsAnalyzer.cs | 63 +++++ .../UnderscorePrefixAnalyzer.cs | 46 ++++ .../ConvertToUpperCodeFixProvider.cs | 67 +++++ .../UnderscorePrefixCodeFixProvider.cs | 54 ++++ .../SwitchExpressionMethodAnalyzer.cs | 96 +++++++ .../SwitchExpressionMethodCodeFixProvider.cs | 162 ++++++++++++ .../UsageAnalyzers/EmptyStringAnalyzer.cs | 68 +++++ .../ProviderAccessAnalyzer.cs | 18 +- .../RandomInstantiationAnalyzer.cs | 55 ++++ .../UsageAnalyzers/ThisUsageAnalyzer.cs | 236 ++++++++++++++++++ .../EmptyStringCodeFixProvider.cs | 54 ++++ .../ThisUsageCodeFixProvider.cs | 71 ++++++ 22 files changed, 1099 insertions(+), 50 deletions(-) create mode 100644 app/SourceCodeRules/SourceCodeRules/Identifier.cs create mode 100644 app/SourceCodeRules/SourceCodeRules/NamingAnalyzers/ConstStaticAnalyzer.cs create mode 100644 app/SourceCodeRules/SourceCodeRules/NamingAnalyzers/LocalConstantsAnalyzer.cs create mode 100644 app/SourceCodeRules/SourceCodeRules/NamingAnalyzers/UnderscorePrefixAnalyzer.cs create mode 100644 app/SourceCodeRules/SourceCodeRules/NamingCodeFixes/ConvertToUpperCodeFixProvider.cs create mode 100644 app/SourceCodeRules/SourceCodeRules/NamingCodeFixes/UnderscorePrefixCodeFixProvider.cs create mode 100644 app/SourceCodeRules/SourceCodeRules/StyleAnalyzers/SwitchExpressionMethodAnalyzer.cs create mode 100644 app/SourceCodeRules/SourceCodeRules/StyleCodeFixes/SwitchExpressionMethodCodeFixProvider.cs create mode 100644 app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/EmptyStringAnalyzer.cs rename app/SourceCodeRules/SourceCodeRules/{ => UsageAnalyzers}/ProviderAccessAnalyzer.cs (85%) create mode 100644 app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/RandomInstantiationAnalyzer.cs create mode 100644 app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/ThisUsageAnalyzer.cs create mode 100644 app/SourceCodeRules/SourceCodeRules/UsageCodeFixes/EmptyStringCodeFixProvider.cs create mode 100644 app/SourceCodeRules/SourceCodeRules/UsageCodeFixes/ThisUsageCodeFixProvider.cs diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 8f55b3ab..2399d512 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -2,13 +2,13 @@ * @MindWorkAI/maintainer # The release team is responsible for anything inside the .github directory, such as workflows, actions, and issue templates: -/.github/ @MindWorkAI/release - -# The release team is responsible for the update directory: -/.updates/ @MindWorkAI/release +/.github/ @MindWorkAI/release @SommerEngineering # Our Rust experts are responsible for the Rust codebase: /runtime/ @MindWorkAI/rust-experts # Our .NET experts are responsible for the .NET codebase: -/app/ @MindWorkAI/net-experts \ No newline at end of file +/app/ @MindWorkAI/net-experts + +# The source code rules must be reviewed by the release team: +/app/SourceCodeRules/ @MindWorkAI/release @SommerEngineering \ No newline at end of file diff --git a/app/MindWork AI Studio/Assistants/ERI/AllowedLLMProvidersExtensions.cs b/app/MindWork AI Studio/Assistants/ERI/AllowedLLMProvidersExtensions.cs index 130859b9..c9c6462c 100644 --- a/app/MindWork AI Studio/Assistants/ERI/AllowedLLMProvidersExtensions.cs +++ b/app/MindWork AI Studio/Assistants/ERI/AllowedLLMProvidersExtensions.cs @@ -2,15 +2,12 @@ namespace AIStudio.Assistants.ERI; public static class AllowedLLMProvidersExtensions { - public static string Description(this AllowedLLMProviders provider) + public static string Description(this AllowedLLMProviders provider) => provider switch { - return provider switch - { - AllowedLLMProviders.NONE => "Please select what kind of LLM provider are allowed for this data source", - AllowedLLMProviders.ANY => "Any LLM provider is allowed: users might choose a cloud-based or a self-hosted provider", - AllowedLLMProviders.SELF_HOSTED => "Self-hosted LLM providers are allowed: users cannot choose any cloud-based provider", - - _ => "Unknown option was selected" - }; - } + AllowedLLMProviders.NONE => "Please select what kind of LLM provider are allowed for this data source", + AllowedLLMProviders.ANY => "Any LLM provider is allowed: users might choose a cloud-based or a self-hosted provider", + AllowedLLMProviders.SELF_HOSTED => "Self-hosted LLM providers are allowed: users cannot choose any cloud-based provider", + + _ => "Unknown option was selected" + }; } \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/MudTextList.razor.cs b/app/MindWork AI Studio/Components/MudTextList.razor.cs index 551878b0..46cde417 100644 --- a/app/MindWork AI Studio/Components/MudTextList.razor.cs +++ b/app/MindWork AI Studio/Components/MudTextList.razor.cs @@ -14,7 +14,7 @@ public partial class MudTextList : ComponentBase public string Icon { get; set; } = Icons.Material.Filled.CheckCircle; [Parameter] - public string Class { get; set; } = ""; + public string Class { get; set; } = string.Empty; private string Classes => $"mud-text-list {this.Class}"; } diff --git a/app/MindWork AI Studio/Redirect.cs b/app/MindWork AI Studio/Redirect.cs index 1b974a3d..29c42bce 100644 --- a/app/MindWork AI Studio/Redirect.cs +++ b/app/MindWork AI Studio/Redirect.cs @@ -13,7 +13,6 @@ internal static class Redirect await nextHandler(); return; } - #if DEBUG diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceTypeExtension.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceTypeExtension.cs index a630a922..196eac78 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataSourceTypeExtension.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceTypeExtension.cs @@ -10,15 +10,12 @@ public static class DataSourceTypeExtension /// </summary> /// <param name="type">The data source type.</param> /// <returns>The display name of the data source type.</returns> - public static string GetDisplayName(this DataSourceType type) + public static string GetDisplayName(this DataSourceType type) => type switch { - return type switch - { - DataSourceType.LOCAL_FILE => "Local File", - DataSourceType.LOCAL_DIRECTORY => "Local Directory", - DataSourceType.ERI_V1 => "External ERI Server (v1)", - - _ => "None", - }; - } + DataSourceType.LOCAL_FILE => "Local File", + DataSourceType.LOCAL_DIRECTORY => "Local Directory", + DataSourceType.ERI_V1 => "External ERI Server (v1)", + + _ => "None", + }; } \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/ThemesExtensions.cs b/app/MindWork AI Studio/Settings/DataModel/ThemesExtensions.cs index 7942ab7b..5d36a1bc 100644 --- a/app/MindWork AI Studio/Settings/DataModel/ThemesExtensions.cs +++ b/app/MindWork AI Studio/Settings/DataModel/ThemesExtensions.cs @@ -2,15 +2,12 @@ namespace AIStudio.Settings.DataModel; public static class ThemesExtensions { - public static string GetName(this Themes theme) + public static string GetName(this Themes theme) => theme switch { - return theme switch - { - Themes.SYSTEM => "Synchronized with the operating system settings", - Themes.LIGHT => "Always use light theme", - Themes.DARK => "Always use dark theme", - - _ => "Unknown setting", - }; - } + Themes.SYSTEM => "Synchronized with the operating system settings", + Themes.LIGHT => "Always use light theme", + Themes.DARK => "Always use dark theme", + + _ => "Unknown setting", + }; } \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/SettingsMigrations.cs b/app/MindWork AI Studio/Settings/SettingsMigrations.cs index da2a5eef..98482ceb 100644 --- a/app/MindWork AI Studio/Settings/SettingsMigrations.cs +++ b/app/MindWork AI Studio/Settings/SettingsMigrations.cs @@ -84,7 +84,7 @@ public static class SettingsMigrations { Version = Version.V2, - Providers = previousData.Providers.Select(provider => provider with { IsSelfHosted = false, Hostname = "" }).ToList(), + Providers = previousData.Providers.Select(provider => provider with { IsSelfHosted = false, Hostname = string.Empty }).ToList(), EnableSpellchecking = previousData.EnableSpellchecking, IsSavingEnergy = previousData.IsSavingEnergy, diff --git a/app/SourceCodeRules/SourceCodeRules/AnalyzerReleases.Shipped.md b/app/SourceCodeRules/SourceCodeRules/AnalyzerReleases.Shipped.md index 6b73c826..e6f97e74 100644 --- a/app/SourceCodeRules/SourceCodeRules/AnalyzerReleases.Shipped.md +++ b/app/SourceCodeRules/SourceCodeRules/AnalyzerReleases.Shipped.md @@ -2,6 +2,13 @@ ### New Rules - Rule ID | Category | Severity | Notes ------------|----------|----------|------------------------ - MWAIS0001 | Usage | Error | ProviderAccessAnalyzer \ No newline at end of file + Rule ID | Category | Severity | Notes +-----------|----------|----------|-------------------------------- + MWAIS0001 | Usage | Error | ProviderAccessAnalyzer + MWAIS0002 | Naming | Error | ConstStaticAnalyzer + MWAIS0003 | Naming | Error | UnderscorePrefixAnalyzer + MWAIS0004 | Usage | Error | RandomInstantiationAnalyzer + MWAIS0005 | Usage | Error | ThisUsageAnalyzer + MWAIS0006 | Style | Error | SwitchExpressionMethodAnalyzer + MWAIS0007 | Usage | Error | EmptyStringAnalyzer + MWAIS0008 | Naming | Error | LocalConstantsAnalyzer \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/Identifier.cs b/app/SourceCodeRules/SourceCodeRules/Identifier.cs new file mode 100644 index 00000000..aa782cf9 --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/Identifier.cs @@ -0,0 +1,13 @@ +namespace SourceCodeRules; + +public static class Identifier +{ + public const string PROVIDER_ACCESS_ANALYZER = $"{Tools.ID_PREFIX}0001"; + public const string CONST_STATIC_ANALYZER = $"{Tools.ID_PREFIX}0002"; + public const string UNDERSCORE_PREFIX_ANALYZER = $"{Tools.ID_PREFIX}0003"; + public const string RANDOM_INSTANTIATION_ANALYZER = $"{Tools.ID_PREFIX}0004"; + public const string THIS_USAGE_ANALYZER = $"{Tools.ID_PREFIX}0005"; + public const string SWITCH_EXPRESSION_METHOD_ANALYZER = $"{Tools.ID_PREFIX}0006"; + public const string EMPTY_STRING_ANALYZER = $"{Tools.ID_PREFIX}0007"; + public const string LOCAL_CONSTANTS_ANALYZER = $"{Tools.ID_PREFIX}0008"; +} \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/NamingAnalyzers/ConstStaticAnalyzer.cs b/app/SourceCodeRules/SourceCodeRules/NamingAnalyzers/ConstStaticAnalyzer.cs new file mode 100644 index 00000000..d3273132 --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/NamingAnalyzers/ConstStaticAnalyzer.cs @@ -0,0 +1,67 @@ +using System.Collections.Immutable; +using System.Linq; + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Diagnostics; + +namespace SourceCodeRules.NamingAnalyzers; + +#pragma warning disable RS1038 +[DiagnosticAnalyzer(LanguageNames.CSharp)] +#pragma warning restore RS1038 +public sealed class ConstStaticAnalyzer : DiagnosticAnalyzer +{ + private const string DIAGNOSTIC_ID = Identifier.CONST_STATIC_ANALYZER; + + private static readonly string TITLE = "Constant and static fields must be in UPPER_CASE"; + + private static readonly string MESSAGE_FORMAT = "Field '{0}' must be in UPPER_CASE"; + + private static readonly string DESCRIPTION = "All constant and static fields should be named using UPPER_CASE."; + + private const string CATEGORY = "Naming"; + + private static readonly DiagnosticDescriptor RULE = new(DIAGNOSTIC_ID, TITLE, MESSAGE_FORMAT, CATEGORY, DiagnosticSeverity.Error, isEnabledByDefault: true, description: DESCRIPTION); + + public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [RULE]; + + public override void Initialize(AnalysisContext context) + { + context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); + context.EnableConcurrentExecution(); + context.RegisterSyntaxNodeAction(this.AnalyzeField, SyntaxKind.FieldDeclaration); + } + + private void AnalyzeField(SyntaxNodeAnalysisContext context) + { + var fieldDeclaration = (FieldDeclarationSyntax)context.Node; + + // Prüfen ob das Feld static oder const ist + if (!fieldDeclaration.Modifiers.Any(m => m.IsKind(SyntaxKind.StaticKeyword) || m.IsKind(SyntaxKind.ConstKeyword))) + return; + + foreach (var variable in fieldDeclaration.Declaration.Variables) + { + var fieldName = variable.Identifier.Text; + + // Prüfen ob der Name bereits in UPPER_CASE ist + if (!IsUpperCase(fieldName)) + { + var diagnostic = Diagnostic.Create( + RULE, + variable.Identifier.GetLocation(), + fieldName); + + context.ReportDiagnostic(diagnostic); + } + } + } + + private static bool IsUpperCase(string name) + { + // Erlaubt: Nur Großbuchstaben, Zahlen und Unterstriche + return name.All(c => char.IsUpper(c) || char.IsDigit(c) || c == '_'); + } +} \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/NamingAnalyzers/LocalConstantsAnalyzer.cs b/app/SourceCodeRules/SourceCodeRules/NamingAnalyzers/LocalConstantsAnalyzer.cs new file mode 100644 index 00000000..da0e130e --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/NamingAnalyzers/LocalConstantsAnalyzer.cs @@ -0,0 +1,63 @@ +using System.Collections.Immutable; +using System.Linq; + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Diagnostics; + +namespace SourceCodeRules.NamingAnalyzers; + +#pragma warning disable RS1038 +[DiagnosticAnalyzer(LanguageNames.CSharp)] +#pragma warning restore RS1038 +public sealed class LocalConstantsAnalyzer : DiagnosticAnalyzer +{ + private const string DIAGNOSTIC_ID = Identifier.LOCAL_CONSTANTS_ANALYZER; + + private static readonly string TITLE = "Local constant variables must be in UPPER_CASE"; + + private static readonly string MESSAGE_FORMAT = "Local constant variable '{0}' must be in UPPER_CASE"; + + private static readonly string DESCRIPTION = "All local constant variables should be named using UPPER_CASE with words separated by underscores."; + + private const string CATEGORY = "Naming"; + + private static readonly DiagnosticDescriptor RULE = new( + DIAGNOSTIC_ID, + TITLE, + MESSAGE_FORMAT, + CATEGORY, + DiagnosticSeverity.Error, + isEnabledByDefault: true, + description: DESCRIPTION); + + public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [RULE]; + + public override void Initialize(AnalysisContext context) + { + context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); + context.EnableConcurrentExecution(); + context.RegisterSyntaxNodeAction(AnalyzeLocalDeclaration, SyntaxKind.LocalDeclarationStatement); + } + + private static void AnalyzeLocalDeclaration(SyntaxNodeAnalysisContext context) + { + var localDeclaration = (LocalDeclarationStatementSyntax)context.Node; + if (!localDeclaration.Modifiers.Any(m => m.IsKind(SyntaxKind.ConstKeyword))) + return; + + foreach (var variable in localDeclaration.Declaration.Variables) + { + var variableName = variable.Identifier.Text; + if (!IsUpperCase(variableName)) + { + var diagnostic = Diagnostic.Create(RULE, variable.Identifier.GetLocation(), variableName); + context.ReportDiagnostic(diagnostic); + } + } + } + + private static bool IsUpperCase(string name) => name.All(c => char.IsUpper(c) || char.IsDigit(c) || c == '_') && + !string.IsNullOrEmpty(name) && name.Any(char.IsLetter); +} \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/NamingAnalyzers/UnderscorePrefixAnalyzer.cs b/app/SourceCodeRules/SourceCodeRules/NamingAnalyzers/UnderscorePrefixAnalyzer.cs new file mode 100644 index 00000000..6f35469c --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/NamingAnalyzers/UnderscorePrefixAnalyzer.cs @@ -0,0 +1,46 @@ +using System.Collections.Immutable; + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Diagnostics; + +namespace SourceCodeRules.NamingAnalyzers; + +#pragma warning disable RS1038 +[DiagnosticAnalyzer(LanguageNames.CSharp)] +#pragma warning restore RS1038 +public sealed class UnderscorePrefixAnalyzer : DiagnosticAnalyzer +{ + private const string DIAGNOSTIC_ID = Identifier.UNDERSCORE_PREFIX_ANALYZER; + + private static readonly string TITLE = "Variable names cannot start with underscore"; + + private static readonly string MESSAGE_FORMAT = "The variable name '{0}' starts with an underscore which is not allowed"; + + private static readonly string DESCRIPTION = "Variable names cannot start with an underscore prefix."; + + private const string CATEGORY = "Naming"; + + private static readonly DiagnosticDescriptor RULE = new(DIAGNOSTIC_ID, TITLE, MESSAGE_FORMAT, CATEGORY, DiagnosticSeverity.Error, isEnabledByDefault: true, description: DESCRIPTION); + + public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [RULE]; + + public override void Initialize(AnalysisContext context) + { + context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); + context.EnableConcurrentExecution(); + context.RegisterSyntaxNodeAction(AnalyzeVariableDeclaration, SyntaxKind.VariableDeclarator); + } + + private static void AnalyzeVariableDeclaration(SyntaxNodeAnalysisContext context) + { + var variableDeclarator = (VariableDeclaratorSyntax)context.Node; + var variableName = variableDeclarator.Identifier.Text; + if (variableName.StartsWith("_")) + { + var diagnostic = Diagnostic.Create(RULE, variableDeclarator.Identifier.GetLocation(), variableName); + context.ReportDiagnostic(diagnostic); + } + } +} \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/NamingCodeFixes/ConvertToUpperCodeFixProvider.cs b/app/SourceCodeRules/SourceCodeRules/NamingCodeFixes/ConvertToUpperCodeFixProvider.cs new file mode 100644 index 00000000..961e7e04 --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/NamingCodeFixes/ConvertToUpperCodeFixProvider.cs @@ -0,0 +1,67 @@ +using System.Collections.Immutable; +using System.Composition; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CodeActions; +using Microsoft.CodeAnalysis.CodeFixes; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Rename; + +namespace SourceCodeRules.NamingCodeFixes; + +[ExportCodeFixProvider(LanguageNames.CSharp, Name = nameof(ConvertToUpperCodeFixProvider)), Shared] +public sealed class ConvertToUpperCodeFixProvider : CodeFixProvider +{ + public override ImmutableArray<string> FixableDiagnosticIds => [Identifier.CONST_STATIC_ANALYZER, Identifier.LOCAL_CONSTANTS_ANALYZER]; + + public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; + + public override async Task RegisterCodeFixesAsync(CodeFixContext context) + { + var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken); + var diagnostic = context.Diagnostics.First(); + var diagnosticSpan = diagnostic.Location.SourceSpan; + var declaration = root?.FindToken(diagnosticSpan.Start).Parent?.AncestorsAndSelf().OfType<VariableDeclaratorSyntax>().First(); + if (declaration is null) + return; + + context.RegisterCodeFix(CodeAction.Create(title: "Convert to UPPER_CASE", createChangedDocument: c => this.ConvertToUpperCaseAsync(context.Document, declaration, c), equivalenceKey: nameof(ConvertToUpperCodeFixProvider)), diagnostic); + } + + private async Task<Document> ConvertToUpperCaseAsync(Document document, VariableDeclaratorSyntax declarator, CancellationToken cancellationToken) + { + var oldName = declarator.Identifier.Text; + var newName = ConvertToUpperCase(oldName); + + var semanticModel = await document.GetSemanticModelAsync(cancellationToken); + var symbol = semanticModel?.GetDeclaredSymbol(declarator, cancellationToken); + if (symbol is null) + return document; + + var solution = document.Project.Solution; + var newSolution = await Renamer.RenameSymbolAsync(solution, symbol, new SymbolRenameOptions(), newName, cancellationToken); + + return newSolution.GetDocument(document.Id) ?? document; + } + + private static string ConvertToUpperCase(string name) + { + var result = new StringBuilder(); + for (var i = 0; i < name.Length; i++) + { + var current = name[i]; + + // Insert an underscore before each uppercase letter, except the first one: + if (i > 0 && char.IsUpper(current) && !char.IsUpper(name[i - 1])) + result.Append('_'); + + result.Append(char.ToUpper(current)); + } + + return result.ToString(); + } +} \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/NamingCodeFixes/UnderscorePrefixCodeFixProvider.cs b/app/SourceCodeRules/SourceCodeRules/NamingCodeFixes/UnderscorePrefixCodeFixProvider.cs new file mode 100644 index 00000000..6308e572 --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/NamingCodeFixes/UnderscorePrefixCodeFixProvider.cs @@ -0,0 +1,54 @@ +using System.Collections.Immutable; +using System.Composition; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CodeActions; +using Microsoft.CodeAnalysis.CodeFixes; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Rename; + +namespace SourceCodeRules.NamingCodeFixes; + +[ExportCodeFixProvider(LanguageNames.CSharp, Name = nameof(UnderscorePrefixCodeFixProvider)), Shared] +public sealed class UnderscorePrefixCodeFixProvider : CodeFixProvider +{ + public override ImmutableArray<string> FixableDiagnosticIds => [Identifier.UNDERSCORE_PREFIX_ANALYZER]; + + public override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; + + public override async Task RegisterCodeFixesAsync(CodeFixContext context) + { + var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken); + var diagnostic = context.Diagnostics.First(); + var diagnosticSpan = diagnostic.Location.SourceSpan; + var declaration = root?.FindToken(diagnosticSpan.Start).Parent?.AncestorsAndSelf().OfType<VariableDeclaratorSyntax>().First(); + if (declaration is null) + return; + + context.RegisterCodeFix( + CodeAction.Create( + title: "Remove underscore prefix", + createChangedDocument: c => this.RemoveUnderscorePrefixAsync(context.Document, declaration, c), + equivalenceKey: nameof(UnderscorePrefixCodeFixProvider)), + diagnostic); + } + + private async Task<Document> RemoveUnderscorePrefixAsync(Document document, VariableDeclaratorSyntax declarator, CancellationToken cancellationToken) + { + var oldName = declarator.Identifier.Text; + var newName = oldName.TrimStart('_'); + + var semanticModel = await document.GetSemanticModelAsync(cancellationToken); + var symbol = semanticModel?.GetDeclaredSymbol(declarator, cancellationToken); + if (symbol is null) + return document; + + var solution = document.Project.Solution; + var newSolution = await Renamer.RenameSymbolAsync(solution, symbol, new SymbolRenameOptions(), newName, cancellationToken); + + return newSolution.GetDocument(document.Id) ?? document; + } +} \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/StyleAnalyzers/SwitchExpressionMethodAnalyzer.cs b/app/SourceCodeRules/SourceCodeRules/StyleAnalyzers/SwitchExpressionMethodAnalyzer.cs new file mode 100644 index 00000000..2bd7f80e --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/StyleAnalyzers/SwitchExpressionMethodAnalyzer.cs @@ -0,0 +1,96 @@ +using System.Collections.Immutable; + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Diagnostics; + +namespace SourceCodeRules.StyleAnalyzers; + +#pragma warning disable RS1038 +[DiagnosticAnalyzer(LanguageNames.CSharp)] +#pragma warning restore RS1038 +public class SwitchExpressionMethodAnalyzer : DiagnosticAnalyzer +{ + private const string DIAGNOSTIC_ID = Identifier.SWITCH_EXPRESSION_METHOD_ANALYZER; + + private static readonly string TITLE = "Method with switch expression should use inline expression body"; + + private static readonly string MESSAGE_FORMAT = "Method with a switch expression should use inline expression body syntax with the switch keyword on the same line"; + + private static readonly string DESCRIPTION = "Methods that only return a switch expression should use the expression body syntax (=>) with the switch keyword on the same line for better readability."; + + private const string CATEGORY = "Style"; + + private static readonly DiagnosticDescriptor RULE = new( + DIAGNOSTIC_ID, + TITLE, + MESSAGE_FORMAT, + CATEGORY, + DiagnosticSeverity.Error, + isEnabledByDefault: true, + description: DESCRIPTION); + + public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [RULE]; + + public override void Initialize(AnalysisContext context) + { + context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); + context.EnableConcurrentExecution(); + context.RegisterSyntaxNodeAction(AnalyzeMethodDeclaration, SyntaxKind.MethodDeclaration); + } + + private static void AnalyzeMethodDeclaration(SyntaxNodeAnalysisContext context) + { + var methodDeclaration = (MethodDeclarationSyntax)context.Node; + + // Fall 1: Methode hat Block-Body mit einem Return-Statement, das eine Switch-Expression ist + if (methodDeclaration is { Body: not null, ExpressionBody: null }) + { + var statements = methodDeclaration.Body.Statements; + if (statements.Count == 1 && statements[0] is ReturnStatementSyntax { Expression: SwitchExpressionSyntax }) + { + var diagnostic = Diagnostic.Create(RULE, methodDeclaration.Identifier.GetLocation()); + context.ReportDiagnostic(diagnostic); + return; + } + } + + // Fall 2: Methode hat Expression-Body, aber die Switch-Expression beginnt auf einer neuen Zeile + var expressionBody = methodDeclaration.ExpressionBody; + if (expressionBody?.Expression is SwitchExpressionSyntax switchExpr) + { + var arrowToken = expressionBody.ArrowToken; + var switchToken = switchExpr.SwitchKeyword; + bool hasNewLineBetweenArrowAndSwitch = false; + + foreach (var trivia in arrowToken.TrailingTrivia) + { + if (trivia.IsKind(SyntaxKind.EndOfLineTrivia)) + { + hasNewLineBetweenArrowAndSwitch = true; + break; + } + } + + // Prüfe Leading Trivia des Switch-Keywords, falls notwendig + if (!hasNewLineBetweenArrowAndSwitch) + { + foreach (var trivia in switchToken.LeadingTrivia) + { + if (trivia.IsKind(SyntaxKind.EndOfLineTrivia)) + { + hasNewLineBetweenArrowAndSwitch = true; + break; + } + } + } + + if (hasNewLineBetweenArrowAndSwitch) + { + var diagnostic = Diagnostic.Create(RULE, methodDeclaration.Identifier.GetLocation()); + context.ReportDiagnostic(diagnostic); + } + } + } +} \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/StyleCodeFixes/SwitchExpressionMethodCodeFixProvider.cs b/app/SourceCodeRules/SourceCodeRules/StyleCodeFixes/SwitchExpressionMethodCodeFixProvider.cs new file mode 100644 index 00000000..d89751ff --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/StyleCodeFixes/SwitchExpressionMethodCodeFixProvider.cs @@ -0,0 +1,162 @@ +using System.Collections.Immutable; +using System.Composition; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CodeActions; +using Microsoft.CodeAnalysis.CodeFixes; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Text; + +namespace SourceCodeRules.StyleCodeFixes; + +[ExportCodeFixProvider(LanguageNames.CSharp, Name = nameof(SwitchExpressionMethodCodeFixProvider)), Shared] +public class SwitchExpressionMethodCodeFixProvider : CodeFixProvider +{ + public sealed override ImmutableArray<string> FixableDiagnosticIds => [Identifier.SWITCH_EXPRESSION_METHOD_ANALYZER]; + + public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; + + public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) + { + var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false); + if (root == null) + return; + + var diagnostic = context.Diagnostics.First(); + var diagnosticSpan = diagnostic.Location.SourceSpan; + var methodDeclaration = root.FindToken(diagnosticSpan.Start) + .Parent?.AncestorsAndSelf() + .OfType<MethodDeclarationSyntax>() + .First(); + + if(methodDeclaration == null) + return; + + context.RegisterCodeFix( + CodeAction.Create( + title: "Use inline expression body for switch expression", + createChangedDocument: c => UseInlineExpressionBodyAsync(context.Document, methodDeclaration, c), + equivalenceKey: nameof(SwitchExpressionMethodCodeFixProvider)), + diagnostic); + } + + private static async Task<Document> UseInlineExpressionBodyAsync(Document document, MethodDeclarationSyntax methodDecl, CancellationToken cancellationToken) + { + var sourceText = await document.GetTextAsync(cancellationToken); + var parameterText = methodDecl.ParameterList.ToString(); + var methodStartLine = sourceText.Lines.GetLineFromPosition(methodDecl.SpanStart); + + SwitchExpressionSyntax? switchExpr = null; + ExpressionSyntax? governingExpression = null; + var switchBodyText = string.Empty; + + if (methodDecl.Body != null) + { + // Case: Block-Body with a Return-Statement that contains a Switch-Expression + var returnStmt = (ReturnStatementSyntax)methodDecl.Body.Statements[0]; + if (returnStmt.Expression is not SwitchExpressionSyntax matchingSwitchExpr) + return document; + + switchExpr = matchingSwitchExpr; + governingExpression = switchExpr.GoverningExpression; + + // Extract the switch body text: + var switchStart = switchExpr.SwitchKeyword.SpanStart; + var switchEnd = switchExpr.CloseBraceToken.Span.End; + switchBodyText = sourceText.ToString(TextSpan.FromBounds(switchStart, switchEnd)); + } + else if (methodDecl.ExpressionBody != null) + { + // Case 2: Expression-Body with a poorly formatted Switch-Expression + switchExpr = (SwitchExpressionSyntax)methodDecl.ExpressionBody.Expression; + governingExpression = switchExpr.GoverningExpression; + + // Extract the switch body text: + var switchStart = switchExpr.SwitchKeyword.SpanStart; + var switchEnd = switchExpr.CloseBraceToken.Span.End; + switchBodyText = sourceText.ToString(TextSpan.FromBounds(switchStart, switchEnd)); + } + + if (switchExpr is null || governingExpression is null) + return document; + + // Extract the governing expression and the switch body: + var govExprText = sourceText.ToString(governingExpression.Span); + + // Create the new method with inline expression body and correct formatting: + var returnTypeText = methodDecl.ReturnType.ToString(); + var modifiersText = string.Join(" ", methodDecl.Modifiers); + var methodNameText = methodDecl.Identifier.Text; + + // Determine the indentation of the method: + var methodIndentation = ""; + for (var i = methodStartLine.Start; i < methodDecl.SpanStart; i++) + { + if (char.IsWhiteSpace(sourceText[i])) + methodIndentation += sourceText[i]; + else + break; + } + + // Erstelle die neue Methode mit Expression-Body und korrekter Formatierung + var newMethodText = new StringBuilder(); + newMethodText.Append($"{modifiersText} {returnTypeText} {methodNameText}{parameterText} => {govExprText} switch"); + + // Formatiere die geschweiften Klammern und den Switch-Body + var switchBody = switchBodyText.Substring("switch".Length).Trim(); + + // Bestimme die Einrückung für die Switch-Cases (4 Spaces oder 1 Tab mehr als die Methode) + var caseIndentation = methodIndentation + " "; // 4 Spaces Einrückung + + // Verarbeite die Klammern und formatiere den Body + var formattedSwitchBody = FormatSwitchBody(switchBody, methodIndentation, caseIndentation); + newMethodText.Append(formattedSwitchBody); + + // Ersetze die alte Methoden-Deklaration mit dem neuen Text + var newText = sourceText.Replace(methodDecl.Span, newMethodText.ToString()); + return document.WithText(newText); + } + + private static string FormatSwitchBody(string switchBody, string methodIndentation, string caseIndentation) + { + var result = new StringBuilder(); + + // Remove braces from the switch body: + var bodyWithoutBraces = switchBody.Trim(); + if (bodyWithoutBraces.StartsWith("{")) + bodyWithoutBraces = bodyWithoutBraces.Substring(1); + if (bodyWithoutBraces.EndsWith("}")) + bodyWithoutBraces = bodyWithoutBraces.Substring(0, bodyWithoutBraces.Length - 1); + + bodyWithoutBraces = bodyWithoutBraces.Trim(); + + // Add braces with correct indentation: + result.AppendLine(); + result.Append($"{methodIndentation}{{"); + + // Process each line of the switch body: + var lines = bodyWithoutBraces.Split(["\r\n", "\n"], System.StringSplitOptions.None); + foreach (var line in lines) + { + result.AppendLine(); + + var trimmedLine = line.Trim(); + if (string.IsNullOrWhiteSpace(trimmedLine)) + continue; + + // Add correct indentation for each case: + result.Append(caseIndentation); + result.Append(trimmedLine); + } + + // Add the closing brace with correct indentation: + result.AppendLine(); + result.Append($"{methodIndentation}}};"); + + return result.ToString(); + } +} \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/EmptyStringAnalyzer.cs b/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/EmptyStringAnalyzer.cs new file mode 100644 index 00000000..f6cc65b7 --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/EmptyStringAnalyzer.cs @@ -0,0 +1,68 @@ +using System.Collections.Immutable; + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Diagnostics; + +namespace SourceCodeRules.UsageAnalyzers; + +#pragma warning disable RS1038 +[DiagnosticAnalyzer(LanguageNames.CSharp)] +#pragma warning restore RS1038 +public sealed class EmptyStringAnalyzer : DiagnosticAnalyzer +{ + private const string DIAGNOSTIC_ID = Identifier.EMPTY_STRING_ANALYZER; + + private static readonly string TITLE = """ + Use string.Empty instead of "" + """; + + private static readonly string MESSAGE_FORMAT = """ + Use string.Empty instead of "" + """; + + private static readonly string DESCRIPTION = """Empty string literals ("") should be replaced with string.Empty for better code consistency and readability except in const contexts."""; + + private const string CATEGORY = "Usage"; + + private static readonly DiagnosticDescriptor RULE = new(DIAGNOSTIC_ID, TITLE, MESSAGE_FORMAT, CATEGORY, DiagnosticSeverity.Error, isEnabledByDefault: true, description: DESCRIPTION); + + public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [RULE]; + + public override void Initialize(AnalysisContext context) + { + context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); + context.EnableConcurrentExecution(); + context.RegisterSyntaxNodeAction(AnalyzeEmptyStringLiteral, SyntaxKind.StringLiteralExpression); + } + + private static void AnalyzeEmptyStringLiteral(SyntaxNodeAnalysisContext context) + { + var stringLiteral = (LiteralExpressionSyntax)context.Node; + if (stringLiteral.Token.ValueText != string.Empty) + return; + + if (IsInConstContext(stringLiteral)) + return; + + var diagnostic = Diagnostic.Create(RULE, stringLiteral.GetLocation()); + context.ReportDiagnostic(diagnostic); + } + + private static bool IsInConstContext(LiteralExpressionSyntax stringLiteral) + { + var variableDeclarator = stringLiteral.FirstAncestorOrSelf<VariableDeclaratorSyntax>(); + if (variableDeclarator is null) + return false; + + var declaration = variableDeclarator.Parent?.Parent; + return declaration switch + { + FieldDeclarationSyntax fieldDeclaration => fieldDeclaration.Modifiers.Any(SyntaxKind.ConstKeyword), + LocalDeclarationStatementSyntax localDeclaration => localDeclaration.Modifiers.Any(SyntaxKind.ConstKeyword), + + _ => false + }; + } +} \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/ProviderAccessAnalyzer.cs b/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/ProviderAccessAnalyzer.cs similarity index 85% rename from app/SourceCodeRules/SourceCodeRules/ProviderAccessAnalyzer.cs rename to app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/ProviderAccessAnalyzer.cs index a28d7e00..a2db69df 100644 --- a/app/SourceCodeRules/SourceCodeRules/ProviderAccessAnalyzer.cs +++ b/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/ProviderAccessAnalyzer.cs @@ -6,14 +6,14 @@ using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; using Microsoft.CodeAnalysis.Diagnostics; -namespace SourceCodeRules; +namespace SourceCodeRules.UsageAnalyzers; #pragma warning disable RS1038 [DiagnosticAnalyzer(LanguageNames.CSharp)] #pragma warning restore RS1038 -public class ProviderAccessAnalyzer : DiagnosticAnalyzer +public sealed class ProviderAccessAnalyzer : DiagnosticAnalyzer { - private const string DIAGNOSTIC_ID = $"{Tools.ID_PREFIX}0001"; + private const string DIAGNOSTIC_ID = Identifier.PROVIDER_ACCESS_ANALYZER; private static readonly string TITLE = "Direct access to `Providers` is not allowed"; @@ -25,7 +25,7 @@ public class ProviderAccessAnalyzer : DiagnosticAnalyzer private static readonly DiagnosticDescriptor RULE = new(DIAGNOSTIC_ID, TITLE, MESSAGE_FORMAT, CATEGORY, DiagnosticSeverity.Error, isEnabledByDefault: true, description: DESCRIPTION); - public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => ImmutableArray.Create(RULE); + public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [RULE]; public override void Initialize(AnalysisContext context) { @@ -37,15 +37,15 @@ public class ProviderAccessAnalyzer : DiagnosticAnalyzer private void AnalyzeMemberAccess(SyntaxNodeAnalysisContext context) { var memberAccess = (MemberAccessExpressionSyntax)context.Node; - - // Prüfen, ob wir eine Kette von Zugriffen haben, die auf "Providers" endet + + // Check if the member access is not on the `Providers` property: if (memberAccess.Name.Identifier.Text != "Providers") return; - - // Den kompletten Zugriffspfad aufbauen + + // Get the full path of the member access: var fullPath = this.GetFullMemberAccessPath(memberAccess); - // Prüfen, ob der Pfad unserem verbotenen Muster entspricht + // Check for the forbidden pattern: if (fullPath.EndsWith("ConfigurationData.Providers")) { var diagnostic = Diagnostic.Create(RULE, memberAccess.GetLocation()); diff --git a/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/RandomInstantiationAnalyzer.cs b/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/RandomInstantiationAnalyzer.cs new file mode 100644 index 00000000..8244aa8e --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/RandomInstantiationAnalyzer.cs @@ -0,0 +1,55 @@ +using System.Collections.Immutable; + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Diagnostics; + +namespace SourceCodeRules.UsageAnalyzers; + +#pragma warning disable RS1038 +[DiagnosticAnalyzer(LanguageNames.CSharp)] +#pragma warning restore RS1038 +public class RandomInstantiationAnalyzer : DiagnosticAnalyzer +{ + private const string DIAGNOSTIC_ID = Identifier.RANDOM_INSTANTIATION_ANALYZER; + + private static readonly string TITLE = "Direct instantiation of Random is not allowed"; + + private static readonly string MESSAGE_FORMAT = "Do not use 'new Random()'. Instead, inject and use the ThreadSafeRandom service from the DI container."; + + private static readonly string DESCRIPTION = "Using 'new Random()' can lead to issues in multi-threaded scenarios. Use the ThreadSafeRandom service instead."; + + private const string CATEGORY = "Usage"; + + private static readonly DiagnosticDescriptor RULE = new( + DIAGNOSTIC_ID, + TITLE, + MESSAGE_FORMAT, + CATEGORY, + DiagnosticSeverity.Error, + isEnabledByDefault: true, + description: DESCRIPTION); + + public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [RULE]; + + public override void Initialize(AnalysisContext context) + { + context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); + context.EnableConcurrentExecution(); + context.RegisterSyntaxNodeAction(this.AnalyzeObjectCreation, SyntaxKind.ObjectCreationExpression); + } + + private void AnalyzeObjectCreation(SyntaxNodeAnalysisContext context) + { + var objectCreation = (ObjectCreationExpressionSyntax)context.Node; + if (context.SemanticModel.GetSymbolInfo(objectCreation.Type).Symbol is not ITypeSymbol typeSymbol) + return; + + if (typeSymbol.ToString() == "System.Random" || typeSymbol is { Name: "Random", ContainingNamespace.Name: "System" }) + { + var diagnostic = Diagnostic.Create(RULE, objectCreation.GetLocation()); + context.ReportDiagnostic(diagnostic); + } + } +} \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/ThisUsageAnalyzer.cs b/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/ThisUsageAnalyzer.cs new file mode 100644 index 00000000..f48c374b --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/ThisUsageAnalyzer.cs @@ -0,0 +1,236 @@ +using System.Collections.Immutable; +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Diagnostics; + +namespace SourceCodeRules.UsageAnalyzers; +#pragma warning disable RS1038 +[DiagnosticAnalyzer(LanguageNames.CSharp)] +#pragma warning restore RS1038 +public sealed class ThisUsageAnalyzer : DiagnosticAnalyzer +{ + private const string DIAGNOSTIC_ID = Identifier.THIS_USAGE_ANALYZER; + + private static readonly string TITLE = "`this.` must be used"; + + private static readonly string MESSAGE_FORMAT = "`this.` must be used to access variables, methods, and properties"; + + private static readonly string DESCRIPTION = MESSAGE_FORMAT; + + private const string CATEGORY = "Usage"; + + private static readonly DiagnosticDescriptor RULE = new(DIAGNOSTIC_ID, TITLE, MESSAGE_FORMAT, CATEGORY, DiagnosticSeverity.Error, isEnabledByDefault: true, description: DESCRIPTION); + + public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => [RULE]; + + public override void Initialize(AnalysisContext context) + { + context.ConfigureGeneratedCodeAnalysis(GeneratedCodeAnalysisFlags.None); + context.EnableConcurrentExecution(); + context.RegisterSyntaxNodeAction(this.AnalyzeIdentifier, SyntaxKind.IdentifierName); + context.RegisterSyntaxNodeAction(this.AnalyzeGenericName, SyntaxKind.GenericName); + } + + private void AnalyzeGenericName(SyntaxNodeAnalysisContext context) + { + var genericNameSyntax = (GenericNameSyntax)context.Node; + + // Skip if already part of a 'this' expression + if (IsAccessedThroughThis(genericNameSyntax)) + return; + + if (IsWithinInitializer(genericNameSyntax)) + return; + + if (IsPartOfMemberAccess(genericNameSyntax)) + return; + + // Get symbol info for the generic name + var symbolInfo = context.SemanticModel.GetSymbolInfo(genericNameSyntax); + var symbol = symbolInfo.Symbol; + + if (symbol == null) + return; + + // Skip static methods + if (symbol.IsStatic) + return; + + // Skip local functions + if (symbol is IMethodSymbol methodSymbol && IsLocalFunction(methodSymbol)) + return; + + // Get the containing type of the current context + var containingSymbol = context.ContainingSymbol; + var currentType = containingSymbol?.ContainingType; + + // If we're in a static context, allow accessing members without this + if (IsInStaticContext(containingSymbol)) + return; + + if (symbol is IMethodSymbol) + { + var containingType = symbol.ContainingType; + + // If the symbol is a member of the current type or a base type, then require this + if (currentType != null && (SymbolEqualityComparer.Default.Equals(containingType, currentType) || + IsBaseTypeOf(containingType, currentType))) + { + var diagnostic = Diagnostic.Create(RULE, genericNameSyntax.Identifier.GetLocation()); + context.ReportDiagnostic(diagnostic); + } + } + } + + private void AnalyzeIdentifier(SyntaxNodeAnalysisContext context) + { + var identifierNameSyntax = (IdentifierNameSyntax)context.Node; + + // Skip if this identifier is part of a generic name - we'll handle that separately + if (identifierNameSyntax.Parent is GenericNameSyntax) + return; + + // Skip if already part of a 'this' expression + if (IsAccessedThroughThis(identifierNameSyntax)) + return; + + if (IsWithinInitializer(identifierNameSyntax)) + return; + + if (IsPartOfMemberAccess(identifierNameSyntax)) + return; + + // Also skip if it's part of static import statements + if (IsPartOfUsingStaticDirective(identifierNameSyntax)) + return; + + // Skip if it's part of a namespace or type name + if (IsPartOfNamespaceOrTypeName(identifierNameSyntax)) + return; + + // Get symbol info + var symbolInfo = context.SemanticModel.GetSymbolInfo(identifierNameSyntax); + var symbol = symbolInfo.Symbol; + + if (symbol == null) + return; + + // Skip local variables, parameters, and range variables + if (symbol.Kind is SymbolKind.Local or SymbolKind.Parameter or SymbolKind.RangeVariable or SymbolKind.TypeParameter) + return; + + // Skip types and namespaces + if (symbol.Kind is SymbolKind.NamedType or SymbolKind.Namespace) + return; + + // Explicitly check if this is a local function + if (symbol is IMethodSymbol methodSymbol && IsLocalFunction(methodSymbol)) + return; + + // Get the containing type of the current context + var containingSymbol = context.ContainingSymbol; + var currentType = containingSymbol?.ContainingType; + + // If we're in a static context, allow accessing members without this + if (IsInStaticContext(containingSymbol)) + return; + + // Now check if the symbol is an instance member of the current class + if (symbol is IFieldSymbol or IPropertySymbol or IMethodSymbol or IEventSymbol) + { + // Skip static members + if (symbol.IsStatic) + return; + + // Skip constants + if (symbol is IFieldSymbol { IsConst: true }) + return; + + var containingType = symbol.ContainingType; + + // If the symbol is a member of the current type or a base type, then require this + if (currentType != null && (SymbolEqualityComparer.Default.Equals(containingType, currentType) || + IsBaseTypeOf(containingType, currentType))) + { + var diagnostic = Diagnostic.Create(RULE, identifierNameSyntax.GetLocation()); + context.ReportDiagnostic(diagnostic); + } + } + } + + private static bool IsLocalFunction(IMethodSymbol methodSymbol) => methodSymbol.MethodKind is MethodKind.LocalFunction; + + private static bool IsBaseTypeOf(INamedTypeSymbol baseType, INamedTypeSymbol derivedType) + { + var currentType = derivedType.BaseType; + while (currentType != null) + { + if (SymbolEqualityComparer.Default.Equals(currentType, baseType)) + return true; + + currentType = currentType.BaseType; + } + + return false; + } + + private static bool IsInStaticContext(ISymbol? containingSymbol) => containingSymbol?.IsStatic is true; + + private static bool IsAccessedThroughThis(SyntaxNode node) + { + if (node.Parent is MemberAccessExpressionSyntax memberAccess) + if (memberAccess.Expression is ThisExpressionSyntax && memberAccess.Name == node) + return true; + + return false; + } + + private static bool IsWithinInitializer(SyntaxNode node) + { + for (var current = node.Parent; current != null; current = current.Parent) + if (current is InitializerExpressionSyntax) + return true; + + return false; + } + + private static bool IsPartOfMemberAccess(SyntaxNode node) + { + // Check if the node is part of a member access expression where the expression is not 'this': + if (node.Parent is MemberAccessExpressionSyntax memberAccess) + { + // If the member access expression is 'this', it's allowed: + if (memberAccess.Expression is ThisExpressionSyntax) + return false; + + // If the member access expression is something else (e.g., instance.Member), skip: + if (memberAccess.Name == node) + return true; + } + + // Also check for conditional access expressions (e.g., instance?.Member): + if (node.Parent is ConditionalAccessExpressionSyntax) + return true; + + return false; + } + + private static bool IsPartOfUsingStaticDirective(SyntaxNode node) + { + for (var current = node.Parent; current != null; current = current.Parent) + if (current is UsingDirectiveSyntax) + return true; + + return false; + } + + private static bool IsPartOfNamespaceOrTypeName(SyntaxNode node) + { + // Check if a node is part of a namespace, class, or type declaration: + if (node.Parent is NameSyntax && node.Parent is not MemberAccessExpressionSyntax) + return true; + + return false; + } +} \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/UsageCodeFixes/EmptyStringCodeFixProvider.cs b/app/SourceCodeRules/SourceCodeRules/UsageCodeFixes/EmptyStringCodeFixProvider.cs new file mode 100644 index 00000000..fe04dadf --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/UsageCodeFixes/EmptyStringCodeFixProvider.cs @@ -0,0 +1,54 @@ +using System.Collections.Immutable; +using System.Composition; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CodeActions; +using Microsoft.CodeAnalysis.CodeFixes; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; +using Microsoft.CodeAnalysis.Formatting; + +namespace SourceCodeRules.UsageCodeFixes; + +[ExportCodeFixProvider(LanguageNames.CSharp, Name = nameof(EmptyStringCodeFixProvider)), Shared] +public class EmptyStringCodeFixProvider : CodeFixProvider +{ + private const string TITLE = """Replace "" with string.Empty"""; + + public sealed override ImmutableArray<string> FixableDiagnosticIds => [Identifier.EMPTY_STRING_ANALYZER]; + + public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; + + public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) + { + var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken); + if(root is null) + return; + + var diagnostic = context.Diagnostics.First(); + var diagnosticSpan = diagnostic.Location.SourceSpan; + + if (root.FindToken(diagnosticSpan.Start).Parent is not LiteralExpressionSyntax emptyStringLiteral) + return; + + context.RegisterCodeFix( + CodeAction.Create( + title: TITLE, + createChangedDocument: c => ReplaceWithStringEmpty(context.Document, emptyStringLiteral, c), + equivalenceKey: TITLE), + diagnostic); + } + private static async Task<Document> ReplaceWithStringEmpty(Document document, LiteralExpressionSyntax emptyStringLiteral, CancellationToken cancellationToken) + { + var stringEmptyExpression = SyntaxFactory.MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, SyntaxFactory.IdentifierName("string"), SyntaxFactory.IdentifierName("Empty")).WithAdditionalAnnotations(Formatter.Annotation); + var root = await document.GetSyntaxRootAsync(cancellationToken); + if (root is null) + return document; + + var newRoot = root.ReplaceNode(emptyStringLiteral, stringEmptyExpression); + return document.WithSyntaxRoot(newRoot); + } +} \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/UsageCodeFixes/ThisUsageCodeFixProvider.cs b/app/SourceCodeRules/SourceCodeRules/UsageCodeFixes/ThisUsageCodeFixProvider.cs new file mode 100644 index 00000000..6f98772c --- /dev/null +++ b/app/SourceCodeRules/SourceCodeRules/UsageCodeFixes/ThisUsageCodeFixProvider.cs @@ -0,0 +1,71 @@ +using System.Collections.Immutable; +using System.Composition; +using System.Linq; +using System.Threading; +using System.Threading.Tasks; + +using Microsoft.CodeAnalysis; +using Microsoft.CodeAnalysis.CodeActions; +using Microsoft.CodeAnalysis.CodeFixes; +using Microsoft.CodeAnalysis.CSharp; +using Microsoft.CodeAnalysis.CSharp.Syntax; + +namespace SourceCodeRules.UsageCodeFixes; + +[ExportCodeFixProvider(LanguageNames.CSharp, Name = nameof(ThisUsageCodeFixProvider)), Shared] +public class ThisUsageCodeFixProvider : CodeFixProvider +{ + private const string TITLE = "Add 'this.' prefix"; + + public sealed override ImmutableArray<string> FixableDiagnosticIds => [Identifier.THIS_USAGE_ANALYZER]; + + public sealed override FixAllProvider GetFixAllProvider() => WellKnownFixAllProviders.BatchFixer; + + public sealed override async Task RegisterCodeFixesAsync(CodeFixContext context) + { + var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken); + if (root == null) + return; + + var diagnostic = context.Diagnostics.First(); + var diagnosticSpan = diagnostic.Location.SourceSpan; + var node = root.FindNode(diagnosticSpan); + + if (node is IdentifierNameSyntax identifierNode) + { + context.RegisterCodeFix( + CodeAction.Create( + title: TITLE, + createChangedDocument: c => AddThisPrefixAsync(context.Document, identifierNode, c), + equivalenceKey: nameof(ThisUsageCodeFixProvider)), + diagnostic); + } + else if (node is GenericNameSyntax genericNameNode) + { + context.RegisterCodeFix( + CodeAction.Create( + title: TITLE, + createChangedDocument: c => AddThisPrefixAsync(context.Document, genericNameNode, c), + equivalenceKey: nameof(ThisUsageCodeFixProvider)), + diagnostic); + } + } + + private static async Task<Document> AddThisPrefixAsync(Document document, SyntaxNode node, CancellationToken cancellationToken) + { + var root = await document.GetSyntaxRootAsync(cancellationToken); + if (root == null) + return document; + + var thisExpression = SyntaxFactory.ThisExpression(); + var leadingTrivia = node.GetLeadingTrivia(); + var memberAccessExpression = SyntaxFactory.MemberAccessExpression( + SyntaxKind.SimpleMemberAccessExpression, + thisExpression.WithLeadingTrivia(leadingTrivia), + ((SimpleNameSyntax)node).WithLeadingTrivia(SyntaxTriviaList.Empty)) + .WithTrailingTrivia(node.GetTrailingTrivia()); + + var newRoot = root.ReplaceNode(node, memberAccessExpression); + return document.WithSyntaxRoot(newRoot); + } +} \ No newline at end of file From b984b4432ef078f7c92580029ae51fa86b448621 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Wed, 26 Feb 2025 13:22:01 +0100 Subject: [PATCH 040/110] Added Helmholtz (aka "Blablador") as provider (#299) --- .../Provider/Helmholtz/ProviderHelmholtz.cs | 143 ++++++++++++++++++ .../Provider/LLMProviders.cs | 2 + .../Provider/LLMProvidersExtensions.cs | 12 ++ .../wwwroot/changelog/v0.9.31.md | 2 + 4 files changed, 159 insertions(+) create mode 100644 app/MindWork AI Studio/Provider/Helmholtz/ProviderHelmholtz.cs create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md diff --git a/app/MindWork AI Studio/Provider/Helmholtz/ProviderHelmholtz.cs b/app/MindWork AI Studio/Provider/Helmholtz/ProviderHelmholtz.cs new file mode 100644 index 00000000..005475e8 --- /dev/null +++ b/app/MindWork AI Studio/Provider/Helmholtz/ProviderHelmholtz.cs @@ -0,0 +1,143 @@ +using System.Net.Http.Headers; +using System.Runtime.CompilerServices; +using System.Text; +using System.Text.Json; + +using AIStudio.Chat; +using AIStudio.Provider.OpenAI; +using AIStudio.Settings; + +namespace AIStudio.Provider.Helmholtz; + +public sealed class ProviderHelmholtz(ILogger logger) : BaseProvider("https://api.helmholtz-blablador.fz-juelich.de/v1/", logger) +{ + #region Implementation of IProvider + + /// <inheritdoc /> + public override string Id => LLMProviders.HELMHOLTZ.ToName(); + + /// <inheritdoc /> + public override string InstanceName { get; set; } = "Helmholtz Blablador"; + + /// <inheritdoc /> + public override async IAsyncEnumerable<string> StreamChatCompletion(Model chatModel, ChatThread chatThread, SettingsManager settingsManager, [EnumeratorCancellation] CancellationToken token = default) + { + // Get the API key: + var requestedSecret = await RUST_SERVICE.GetAPIKey(this); + if(!requestedSecret.Success) + yield break; + + // Prepare the system prompt: + var systemPrompt = new Message + { + Role = "system", + Content = chatThread.PrepareSystemPrompt(settingsManager, chatThread, this.logger), + }; + + // Prepare the Helmholtz HTTP chat request: + var helmholtzChatRequest = JsonSerializer.Serialize(new ChatRequest + { + Model = chatModel.Id, + + // Build the messages: + // - First of all the system prompt + // - Then none-empty user and AI messages + Messages = [systemPrompt, ..chatThread.Blocks.Where(n => n.ContentType is ContentType.TEXT && !string.IsNullOrWhiteSpace((n.Content as ContentText)?.Text)).Select(n => new Message + { + Role = n.Role switch + { + ChatRole.USER => "user", + ChatRole.AI => "assistant", + ChatRole.AGENT => "assistant", + ChatRole.RAG => "assistant", + ChatRole.SYSTEM => "system", + + _ => "user", + }, + + Content = n.Content switch + { + ContentText text => text.Text, + _ => string.Empty, + } + }).ToList()], + Stream = true, + }, JSON_SERIALIZER_OPTIONS); + + async Task<HttpRequestMessage> RequestBuilder() + { + // Build the HTTP post request: + var request = new HttpRequestMessage(HttpMethod.Post, "chat/completions"); + + // Set the authorization header: + request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", await requestedSecret.Secret.Decrypt(ENCRYPTION)); + + // Set the content: + request.Content = new StringContent(helmholtzChatRequest, Encoding.UTF8, "application/json"); + return request; + } + + await foreach (var content in this.StreamChatCompletionInternal<ResponseStreamLine>("Helmholtz", RequestBuilder, token)) + yield return content; + } + + #pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously + /// <inheritdoc /> + public override async IAsyncEnumerable<ImageURL> StreamImageCompletion(Model imageModel, string promptPositive, string promptNegative = FilterOperator.String.Empty, ImageURL referenceImageURL = default, [EnumeratorCancellation] CancellationToken token = default) + { + yield break; + } + #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously + + /// <inheritdoc /> + public override async Task<IEnumerable<Model>> GetTextModels(string? apiKeyProvisional = null, CancellationToken token = default) + { + var models = await this.LoadModels(token, apiKeyProvisional); + return models.Where(model => !model.Id.StartsWith("text-", StringComparison.InvariantCultureIgnoreCase) && + !model.Id.StartsWith("alias-embedding", StringComparison.InvariantCultureIgnoreCase)); + } + + /// <inheritdoc /> + public override Task<IEnumerable<Model>> GetImageModels(string? apiKeyProvisional = null, CancellationToken token = default) + { + return Task.FromResult(Enumerable.Empty<Model>()); + } + + /// <inheritdoc /> + public override async Task<IEnumerable<Model>> GetEmbeddingModels(string? apiKeyProvisional = null, CancellationToken token = default) + { + var models = await this.LoadModels(token, apiKeyProvisional); + return models.Where(model => + model.Id.StartsWith("alias-embedding", StringComparison.InvariantCultureIgnoreCase) || + model.Id.StartsWith("text-", StringComparison.InvariantCultureIgnoreCase) || + model.Id.Contains("gritlm", StringComparison.InvariantCultureIgnoreCase)); + } + + #endregion + + private async Task<IEnumerable<Model>> LoadModels(CancellationToken token, string? apiKeyProvisional = null) + { + var secretKey = apiKeyProvisional switch + { + not null => apiKeyProvisional, + _ => await RUST_SERVICE.GetAPIKey(this) switch + { + { Success: true } result => await result.Secret.Decrypt(ENCRYPTION), + _ => null, + } + }; + + if (secretKey is null) + return []; + + using var request = new HttpRequestMessage(HttpMethod.Get, "models"); + request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", secretKey); + + using var response = await this.httpClient.SendAsync(request, token); + if(!response.IsSuccessStatusCode) + return []; + + var modelResponse = await response.Content.ReadFromJsonAsync<ModelsResponse>(token); + return modelResponse.Data; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Provider/LLMProviders.cs b/app/MindWork AI Studio/Provider/LLMProviders.cs index 2078e5d0..d35fb7b5 100644 --- a/app/MindWork AI Studio/Provider/LLMProviders.cs +++ b/app/MindWork AI Studio/Provider/LLMProviders.cs @@ -17,4 +17,6 @@ public enum LLMProviders GROQ = 6, SELF_HOSTED = 4, + + HELMHOLTZ = 9, } \ No newline at end of file diff --git a/app/MindWork AI Studio/Provider/LLMProvidersExtensions.cs b/app/MindWork AI Studio/Provider/LLMProvidersExtensions.cs index f9addf8d..554fc507 100644 --- a/app/MindWork AI Studio/Provider/LLMProvidersExtensions.cs +++ b/app/MindWork AI Studio/Provider/LLMProvidersExtensions.cs @@ -2,6 +2,7 @@ using AIStudio.Provider.Anthropic; using AIStudio.Provider.Fireworks; using AIStudio.Provider.Google; using AIStudio.Provider.Groq; +using AIStudio.Provider.Helmholtz; using AIStudio.Provider.Mistral; using AIStudio.Provider.OpenAI; using AIStudio.Provider.SelfHosted; @@ -34,6 +35,8 @@ public static class LLMProvidersExtensions LLMProviders.SELF_HOSTED => "Self-hosted", + LLMProviders.HELMHOLTZ => "Helmholtz Blablador", + _ => "Unknown", }; @@ -68,6 +71,8 @@ public static class LLMProvidersExtensions LLMProviders.SELF_HOSTED => Confidence.SELF_HOSTED.WithLevel(settingsManager.GetConfiguredConfidenceLevel(llmProvider)), + LLMProviders.HELMHOLTZ => Confidence.GDPR_NO_TRAINING.WithRegion("Europe, Germany").WithSources("https://helmholtz.cloud/services/?serviceID=d7d5c597-a2f6-4bd1-b71e-4d6499d98570").WithLevel(settingsManager.GetConfiguredConfidenceLevel(llmProvider)), + _ => Confidence.UNKNOWN.WithLevel(settingsManager.GetConfiguredConfidenceLevel(llmProvider)), }; @@ -84,6 +89,7 @@ public static class LLMProvidersExtensions LLMProviders.OPEN_AI => true, LLMProviders.MISTRAL => true, LLMProviders.GOOGLE => true, + LLMProviders.HELMHOLTZ => true, // // Providers that do not support embeddings: @@ -140,6 +146,8 @@ public static class LLMProvidersExtensions LLMProviders.SELF_HOSTED => new ProviderSelfHosted(logger, host, hostname) { InstanceName = instanceName }, + LLMProviders.HELMHOLTZ => new ProviderHelmholtz(logger) { InstanceName = instanceName }, + _ => new NoProvider(), }; } @@ -161,6 +169,8 @@ public static class LLMProvidersExtensions LLMProviders.GROQ => "https://console.groq.com/", LLMProviders.FIREWORKS => "https://fireworks.ai/login", + LLMProviders.HELMHOLTZ => "https://sdlaml.pages.jsc.fz-juelich.de/ai/guides/blablador_api_access/#step-1-register-on-gitlab", + _ => string.Empty, }; @@ -230,6 +240,7 @@ public static class LLMProvidersExtensions LLMProviders.GROQ => true, LLMProviders.FIREWORKS => true, + LLMProviders.HELMHOLTZ => true, LLMProviders.SELF_HOSTED => host is Host.OLLAMA, @@ -246,6 +257,7 @@ public static class LLMProvidersExtensions LLMProviders.GROQ => true, LLMProviders.FIREWORKS => true, + LLMProviders.HELMHOLTZ => true, _ => false, }; diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md new file mode 100644 index 00000000..bac28d43 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md @@ -0,0 +1,2 @@ +# v0.9.31, build 206 (2025-02-xx xx:xx UTC) +- Added Helmholtz (aka "Blablador") as provider. This provider is available to all researchers and employees of the 18 Helmholtz Centers as well as all eduGAIN organizations worldwide. \ No newline at end of file From 37a9046be4c15c4b03c4009a7923630338bd7273 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Wed, 26 Feb 2025 15:34:50 +0100 Subject: [PATCH 041/110] Added GWDG provider (#301) --- app/MindWork AI Studio.sln.DotSettings | 2 + .../Provider/GWDG/ProviderGWDG.cs | 139 ++++++++++++++++++ .../Provider/LLMProviders.cs | 1 + .../Provider/LLMProvidersExtensions.cs | 8 + .../wwwroot/changelog/v0.9.31.md | 3 +- 5 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 app/MindWork AI Studio/Provider/GWDG/ProviderGWDG.cs diff --git a/app/MindWork AI Studio.sln.DotSettings b/app/MindWork AI Studio.sln.DotSettings index 431ff5cf..44079898 100644 --- a/app/MindWork AI Studio.sln.DotSettings +++ b/app/MindWork AI Studio.sln.DotSettings @@ -2,6 +2,7 @@ <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=AI/@EntryIndexedValue">AI</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=EDI/@EntryIndexedValue">EDI</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=ERI/@EntryIndexedValue">ERI</s:String> + <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=GWDG/@EntryIndexedValue">GWDG</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LLM/@EntryIndexedValue">LLM</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=LM/@EntryIndexedValue">LM</s:String> <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=MSG/@EntryIndexedValue">MSG</s:String> @@ -9,6 +10,7 @@ <s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=UI/@EntryIndexedValue">UI</s:String> <s:Boolean x:Key="/Default/UserDictionary/Words/=agentic/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=groq/@EntryIndexedValue">True</s:Boolean> + <s:Boolean x:Key="/Default/UserDictionary/Words/=gwdg/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=mwais/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=ollama/@EntryIndexedValue">True</s:Boolean> <s:Boolean x:Key="/Default/UserDictionary/Words/=tauri_0027s/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary> \ No newline at end of file diff --git a/app/MindWork AI Studio/Provider/GWDG/ProviderGWDG.cs b/app/MindWork AI Studio/Provider/GWDG/ProviderGWDG.cs new file mode 100644 index 00000000..40054cf8 --- /dev/null +++ b/app/MindWork AI Studio/Provider/GWDG/ProviderGWDG.cs @@ -0,0 +1,139 @@ +using System.Net.Http.Headers; +using System.Runtime.CompilerServices; +using System.Text; +using System.Text.Json; + +using AIStudio.Chat; +using AIStudio.Provider.OpenAI; +using AIStudio.Settings; + +namespace AIStudio.Provider.GWDG; + +public sealed class ProviderGWDG(ILogger logger) : BaseProvider("https://chat-ai.academiccloud.de/v1/", logger) +{ + #region Implementation of IProvider + + /// <inheritdoc /> + public override string Id => LLMProviders.GWDG.ToName(); + + /// <inheritdoc /> + public override string InstanceName { get; set; } = "GWDG SAIA"; + + /// <inheritdoc /> + public override async IAsyncEnumerable<string> StreamChatCompletion(Model chatModel, ChatThread chatThread, SettingsManager settingsManager, [EnumeratorCancellation] CancellationToken token = default) + { + // Get the API key: + var requestedSecret = await RUST_SERVICE.GetAPIKey(this); + if(!requestedSecret.Success) + yield break; + + // Prepare the system prompt: + var systemPrompt = new Message + { + Role = "system", + Content = chatThread.PrepareSystemPrompt(settingsManager, chatThread, this.logger), + }; + + // Prepare the GWDG HTTP chat request: + var gwdgChatRequest = JsonSerializer.Serialize(new ChatRequest + { + Model = chatModel.Id, + + // Build the messages: + // - First of all the system prompt + // - Then none-empty user and AI messages + Messages = [systemPrompt, ..chatThread.Blocks.Where(n => n.ContentType is ContentType.TEXT && !string.IsNullOrWhiteSpace((n.Content as ContentText)?.Text)).Select(n => new Message + { + Role = n.Role switch + { + ChatRole.USER => "user", + ChatRole.AI => "assistant", + ChatRole.AGENT => "assistant", + ChatRole.RAG => "assistant", + ChatRole.SYSTEM => "system", + + _ => "user", + }, + + Content = n.Content switch + { + ContentText text => text.Text, + _ => string.Empty, + } + }).ToList()], + Stream = true, + }, JSON_SERIALIZER_OPTIONS); + + async Task<HttpRequestMessage> RequestBuilder() + { + // Build the HTTP post request: + var request = new HttpRequestMessage(HttpMethod.Post, "chat/completions"); + + // Set the authorization header: + request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", await requestedSecret.Secret.Decrypt(ENCRYPTION)); + + // Set the content: + request.Content = new StringContent(gwdgChatRequest, Encoding.UTF8, "application/json"); + return request; + } + + await foreach (var content in this.StreamChatCompletionInternal<ResponseStreamLine>("GWDG", RequestBuilder, token)) + yield return content; + } + + #pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously + /// <inheritdoc /> + public override async IAsyncEnumerable<ImageURL> StreamImageCompletion(Model imageModel, string promptPositive, string promptNegative = FilterOperator.String.Empty, ImageURL referenceImageURL = default, [EnumeratorCancellation] CancellationToken token = default) + { + yield break; + } + #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously + + /// <inheritdoc /> + public override async Task<IEnumerable<Model>> GetTextModels(string? apiKeyProvisional = null, CancellationToken token = default) + { + var models = await this.LoadModels(token, apiKeyProvisional); + return models.Where(model => !model.Id.StartsWith("e5-mistral-7b-instruct", StringComparison.InvariantCultureIgnoreCase)); + } + + /// <inheritdoc /> + public override Task<IEnumerable<Model>> GetImageModels(string? apiKeyProvisional = null, CancellationToken token = default) + { + return Task.FromResult(Enumerable.Empty<Model>()); + } + + /// <inheritdoc /> + public override async Task<IEnumerable<Model>> GetEmbeddingModels(string? apiKeyProvisional = null, CancellationToken token = default) + { + var models = await this.LoadModels(token, apiKeyProvisional); + return models.Where(model => model.Id.StartsWith("e5-", StringComparison.InvariantCultureIgnoreCase)); + } + + #endregion + + private async Task<IEnumerable<Model>> LoadModels(CancellationToken token, string? apiKeyProvisional = null) + { + var secretKey = apiKeyProvisional switch + { + not null => apiKeyProvisional, + _ => await RUST_SERVICE.GetAPIKey(this) switch + { + { Success: true } result => await result.Secret.Decrypt(ENCRYPTION), + _ => null, + } + }; + + if (secretKey is null) + return []; + + using var request = new HttpRequestMessage(HttpMethod.Get, "models"); + request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", secretKey); + + using var response = await this.httpClient.SendAsync(request, token); + if(!response.IsSuccessStatusCode) + return []; + + var modelResponse = await response.Content.ReadFromJsonAsync<ModelsResponse>(token); + return modelResponse.Data; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Provider/LLMProviders.cs b/app/MindWork AI Studio/Provider/LLMProviders.cs index d35fb7b5..6c56c6e3 100644 --- a/app/MindWork AI Studio/Provider/LLMProviders.cs +++ b/app/MindWork AI Studio/Provider/LLMProviders.cs @@ -19,4 +19,5 @@ public enum LLMProviders SELF_HOSTED = 4, HELMHOLTZ = 9, + GWDG = 10, } \ No newline at end of file diff --git a/app/MindWork AI Studio/Provider/LLMProvidersExtensions.cs b/app/MindWork AI Studio/Provider/LLMProvidersExtensions.cs index 554fc507..ce435e1a 100644 --- a/app/MindWork AI Studio/Provider/LLMProvidersExtensions.cs +++ b/app/MindWork AI Studio/Provider/LLMProvidersExtensions.cs @@ -2,6 +2,7 @@ using AIStudio.Provider.Anthropic; using AIStudio.Provider.Fireworks; using AIStudio.Provider.Google; using AIStudio.Provider.Groq; +using AIStudio.Provider.GWDG; using AIStudio.Provider.Helmholtz; using AIStudio.Provider.Mistral; using AIStudio.Provider.OpenAI; @@ -36,6 +37,7 @@ public static class LLMProvidersExtensions LLMProviders.SELF_HOSTED => "Self-hosted", LLMProviders.HELMHOLTZ => "Helmholtz Blablador", + LLMProviders.GWDG => "GWDG SAIA", _ => "Unknown", }; @@ -72,6 +74,7 @@ public static class LLMProvidersExtensions LLMProviders.SELF_HOSTED => Confidence.SELF_HOSTED.WithLevel(settingsManager.GetConfiguredConfidenceLevel(llmProvider)), LLMProviders.HELMHOLTZ => Confidence.GDPR_NO_TRAINING.WithRegion("Europe, Germany").WithSources("https://helmholtz.cloud/services/?serviceID=d7d5c597-a2f6-4bd1-b71e-4d6499d98570").WithLevel(settingsManager.GetConfiguredConfidenceLevel(llmProvider)), + LLMProviders.GWDG => Confidence.GDPR_NO_TRAINING.WithRegion("Europe, Germany").WithSources("https://docs.hpc.gwdg.de/services/chat-ai/data-privacy/index.html").WithLevel(settingsManager.GetConfiguredConfidenceLevel(llmProvider)), _ => Confidence.UNKNOWN.WithLevel(settingsManager.GetConfiguredConfidenceLevel(llmProvider)), }; @@ -98,6 +101,7 @@ public static class LLMProvidersExtensions LLMProviders.ANTHROPIC => false, LLMProviders.FIREWORKS => false, LLMProviders.X => false, + LLMProviders.GWDG => false, // // Self-hosted providers are treated as a special case anyway. @@ -147,6 +151,7 @@ public static class LLMProvidersExtensions LLMProviders.SELF_HOSTED => new ProviderSelfHosted(logger, host, hostname) { InstanceName = instanceName }, LLMProviders.HELMHOLTZ => new ProviderHelmholtz(logger) { InstanceName = instanceName }, + LLMProviders.GWDG => new ProviderGWDG(logger) { InstanceName = instanceName }, _ => new NoProvider(), }; @@ -170,6 +175,7 @@ public static class LLMProvidersExtensions LLMProviders.FIREWORKS => "https://fireworks.ai/login", LLMProviders.HELMHOLTZ => "https://sdlaml.pages.jsc.fz-juelich.de/ai/guides/blablador_api_access/#step-1-register-on-gitlab", + LLMProviders.GWDG => "https://docs.hpc.gwdg.de/services/saia/index.html#api-request", _ => string.Empty, }; @@ -241,6 +247,7 @@ public static class LLMProvidersExtensions LLMProviders.GROQ => true, LLMProviders.FIREWORKS => true, LLMProviders.HELMHOLTZ => true, + LLMProviders.GWDG => true, LLMProviders.SELF_HOSTED => host is Host.OLLAMA, @@ -258,6 +265,7 @@ public static class LLMProvidersExtensions LLMProviders.GROQ => true, LLMProviders.FIREWORKS => true, LLMProviders.HELMHOLTZ => true, + LLMProviders.GWDG => true, _ => false, }; diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md index bac28d43..3145150d 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md @@ -1,2 +1,3 @@ # v0.9.31, build 206 (2025-02-xx xx:xx UTC) -- Added Helmholtz (aka "Blablador") as provider. This provider is available to all researchers and employees of the 18 Helmholtz Centers as well as all eduGAIN organizations worldwide. \ No newline at end of file +- Added Helmholtz (aka "Blablador") as provider. This provider is available to all researchers and employees of the 18 Helmholtz Centers as well as all eduGAIN organizations worldwide. +- Added GWDG SAIA as provider. This provider is available to all researchers and employees of the GWDG, the Max Planck Society, the 18 Helmholtz Centers, and most German universities. \ No newline at end of file From 0c4b94c527fa1275648b96ad220eb86686848916 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Thu, 27 Feb 2025 08:30:18 +0100 Subject: [PATCH 042/110] Fixed warnings when compiling for Windows (#300) --- runtime/src/runtime_api.rs | 51 +++++++++++++++++++++++++------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/runtime/src/runtime_api.rs b/runtime/src/runtime_api.rs index 26bbbf90..1fa5bc75 100644 --- a/runtime/src/runtime_api.rs +++ b/runtime/src/runtime_api.rs @@ -1,4 +1,3 @@ -use std::collections::HashSet; use log::info; use once_cell::sync::Lazy; use rocket::config::Shutdown; @@ -25,22 +24,9 @@ pub static API_SERVER_PORT: Lazy<u16> = Lazy::new(|| { pub fn start_runtime_api() { let api_port = *API_SERVER_PORT; info!("Try to start the API server on 'http://localhost:{api_port}'..."); - - // The shutdown configuration for the runtime API server: - let mut shutdown = Shutdown { - // We do not want to use the Ctrl+C signal to stop the server: - ctrlc: false, - - // Everything else is set to default for now: - ..Shutdown::default() - }; - - #[cfg(unix)] - { - // We do not want to use the termination signal to stop the server. - // This option, however, is only available on Unix systems: - shutdown.signals = HashSet::new(); - } + + // Get the shutdown configuration: + let shutdown = create_shutdown(); // Configure the runtime API server: let figment = Figment::from(rocket::Config::release_default()) @@ -95,4 +81,35 @@ pub fn start_runtime_api() { .ignite().await.unwrap() .launch().await.unwrap(); }); +} + +fn create_shutdown() -> Shutdown { + // + // Create a shutdown configuration, depending on the operating system: + // + #[cfg(unix)] + { + use std::collections::HashSet; + let mut shutdown = Shutdown { + // We do not want to use the Ctrl+C signal to stop the server: + ctrlc: false, + + // Everything else is set to default for now: + ..Shutdown::default() + }; + + shutdown.signals = HashSet::new(); + shutdown + } + + #[cfg(windows)] + { + Shutdown { + // We do not want to use the Ctrl+C signal to stop the server: + ctrlc: false, + + // Everything else is set to default for now: + ..Shutdown::default() + } + } } \ No newline at end of file From ccac2b04ace526df1042b59a9eac1cdaa66693dc Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Thu, 27 Feb 2025 08:42:51 +0100 Subject: [PATCH 043/110] Resolved warnings regarding redundant switch arms (#302) --- .../Provider/SelfHosted/HostExtensions.cs | 8 -------- .../Tools/RAG/RetrievalContentTypeExtensions.cs | 2 +- .../Tools/Services/TemporaryChatService.cs | 1 - 3 files changed, 1 insertion(+), 10 deletions(-) diff --git a/app/MindWork AI Studio/Provider/SelfHosted/HostExtensions.cs b/app/MindWork AI Studio/Provider/SelfHosted/HostExtensions.cs index ada7920b..a4e29648 100644 --- a/app/MindWork AI Studio/Provider/SelfHosted/HostExtensions.cs +++ b/app/MindWork AI Studio/Provider/SelfHosted/HostExtensions.cs @@ -15,19 +15,11 @@ public static class HostExtensions public static string BaseURL(this Host host) => host switch { - Host.LM_STUDIO => "/v1/", - Host.LLAMACPP => "/v1/", - Host.OLLAMA => "/v1/", - _ => "/v1/", }; public static string ChatURL(this Host host) => host switch { - Host.LM_STUDIO => "chat/completions", - Host.LLAMACPP => "chat/completions", - Host.OLLAMA => "chat/completions", - _ => "chat/completions", }; diff --git a/app/MindWork AI Studio/Tools/RAG/RetrievalContentTypeExtensions.cs b/app/MindWork AI Studio/Tools/RAG/RetrievalContentTypeExtensions.cs index 2f0bb7e0..6abc4750 100644 --- a/app/MindWork AI Studio/Tools/RAG/RetrievalContentTypeExtensions.cs +++ b/app/MindWork AI Studio/Tools/RAG/RetrievalContentTypeExtensions.cs @@ -134,7 +134,7 @@ public static class RetrievalContentTypeExtensions ContentType.VIDEO => RetrievalContentType.NOT_SPECIFIED, ContentType.NONE => RetrievalContentType.NOT_SPECIFIED, - ContentType.UNKNOWN => RetrievalContentType.UNKNOWN, + _ => RetrievalContentType.UNKNOWN, }; } diff --git a/app/MindWork AI Studio/Tools/Services/TemporaryChatService.cs b/app/MindWork AI Studio/Tools/Services/TemporaryChatService.cs index f1e49d7f..ea7a26ee 100644 --- a/app/MindWork AI Studio/Tools/Services/TemporaryChatService.cs +++ b/app/MindWork AI Studio/Tools/Services/TemporaryChatService.cs @@ -62,7 +62,6 @@ public class TemporaryChatService(ILogger<TemporaryChatService> logger, Settings WorkspaceStorageTemporaryMaintenancePolicy.DELETE_OLDER_THAN_180_DAYS => DateTime.UtcNow - lastWriteTime > TimeSpan.FromDays(180), WorkspaceStorageTemporaryMaintenancePolicy.DELETE_OLDER_THAN_365_DAYS => DateTime.UtcNow - lastWriteTime > TimeSpan.FromDays(365), - WorkspaceStorageTemporaryMaintenancePolicy.NO_AUTOMATIC_MAINTENANCE => false, _ => false, }; From 277dc73468b094e6af89c8fd362d3ed6cf0a22b3 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Thu, 27 Feb 2025 12:43:19 +0100 Subject: [PATCH 044/110] Added DeepSeek as provider (#303) --- README.md | 2 +- app/MindWork AI Studio/Pages/Home.razor.cs | 2 +- app/MindWork AI Studio/Provider/Confidence.cs | 6 + .../Provider/DeepSeek/ProviderDeepSeek.cs | 137 ++++++++++++++++++ .../Provider/LLMProviders.cs | 1 + .../Provider/LLMProvidersExtensions.cs | 11 ++ .../Settings/DataModel/DataLLMProviders.cs | 2 +- .../Settings/SettingsManager.cs | 27 +++- .../Tools/ConfidenceSchemes.cs | 10 +- .../Tools/ConfidenceSchemesExtensions.cs | 2 + .../wwwroot/changelog/v0.9.31.md | 3 +- 11 files changed, 191 insertions(+), 12 deletions(-) create mode 100644 app/MindWork AI Studio/Provider/DeepSeek/ProviderDeepSeek.cs diff --git a/README.md b/README.md index 7a157fa7..84f945a2 100644 --- a/README.md +++ b/README.md @@ -56,7 +56,7 @@ MindWork AI Studio is a free desktop app for macOS, Windows, and Linux. It provi **Key advantages:** - **Free of charge**: The app is free to use, both for personal and commercial purposes. -- **Independence**: You are not tied to any single provider. Instead, you can choose the provider that best suits their needs. Right now, we support OpenAI (GPT4o, o1, etc.), Mistral, Anthropic (Claude), Google Gemini, xAI (Grok), and self-hosted models using [llama.cpp](https://github.com/ggerganov/llama.cpp), [ollama](https://github.com/ollama/ollama), [LM Studio](https://lmstudio.ai/), [Groq](https://groq.com/), or [Fireworks](https://fireworks.ai/). +- **Independence**: You are not tied to any single provider. Instead, you can choose the provider that best suits their needs. Right now, we support OpenAI (GPT4o, o1, etc.), Mistral, Anthropic (Claude), Google Gemini, xAI (Grok), DeepSeek, and self-hosted models using [llama.cpp](https://github.com/ggerganov/llama.cpp), [ollama](https://github.com/ollama/ollama), [LM Studio](https://lmstudio.ai/), [Groq](https://groq.com/), or [Fireworks](https://fireworks.ai/). For scientists and employees of research institutions, we also support [Helmholtz](https://helmholtz.cloud/services/?serviceID=d7d5c597-a2f6-4bd1-b71e-4d6499d98570) and [GWDG](https://gwdg.de/services/application-services/ai-services/) AI services. These are available through federated logins like eduGAIN to all 18 Helmholtz Centers, the Max Planck Society, most German, and many international universities. - **Assistants**: You just want to quickly translate a text? AI Studio has so-called assistants for such and other tasks. No prompting is necessary when working with these assistants. - **Unrestricted usage**: Unlike services like ChatGPT, which impose limits after intensive use, MindWork AI Studio offers unlimited usage through the providers API. - **Cost-effective**: You only pay for what you use, which can be cheaper than monthly subscription services like ChatGPT Plus, especially if used infrequently. But beware, here be dragons: For extremely intensive usage, the API costs can be significantly higher. Unfortunately, providers currently do not offer a way to display current costs in the app. Therefore, check your account with the respective provider to see how your costs are developing. When available, use prepaid and set a cost limit. diff --git a/app/MindWork AI Studio/Pages/Home.razor.cs b/app/MindWork AI Studio/Pages/Home.razor.cs index 5b8d63e4..026fafe5 100644 --- a/app/MindWork AI Studio/Pages/Home.razor.cs +++ b/app/MindWork AI Studio/Pages/Home.razor.cs @@ -33,7 +33,7 @@ public partial class Home : ComponentBase private static readonly TextItem[] ITEMS_ADVANTAGES = [ new("Free of charge", "The app is free to use, both for personal and commercial purposes."), - new("Independence", "You are not tied to any single provider. Instead, you might choose the provider that best suits your needs. Right now, we support OpenAI (GPT4o, o1, etc.), Mistral, Anthropic (Claude), Google Gemini, xAI (Grok), and self-hosted models using llama.cpp, ollama, LM Studio, Groq, or Fireworks."), + new("Independence", "You are not tied to any single provider. Instead, you might choose the provider that best suits your needs. Right now, we support OpenAI (GPT4o, o1, etc.), Mistral, Anthropic (Claude), Google Gemini, xAI (Grok), DeepSeek, and self-hosted models using llama.cpp, ollama, LM Studio, Groq, or Fireworks. For scientists and employees of research institutions, we also support Helmholtz and GWDG AI services. These are available through federated logins like eduGAIN to all 18 Helmholtz Centers, the Max Planck Society, most German, and many international universities."), new("Assistants", "You just want to quickly translate a text? AI Studio has so-called assistants for such and other tasks. No prompting is necessary when working with these assistants."), new("Unrestricted usage", "Unlike services like ChatGPT, which impose limits after intensive use, MindWork AI Studio offers unlimited usage through the providers API."), new("Cost-effective", "You only pay for what you use, which can be cheaper than monthly subscription services like ChatGPT Plus, especially if used infrequently. But beware, here be dragons: For extremely intensive usage, the API costs can be significantly higher. Unfortunately, providers currently do not offer a way to display current costs in the app. Therefore, check your account with the respective provider to see how your costs are developing. When available, use prepaid and set a cost limit."), diff --git a/app/MindWork AI Studio/Provider/Confidence.cs b/app/MindWork AI Studio/Provider/Confidence.cs index ac5557a8..087ac4e0 100644 --- a/app/MindWork AI Studio/Provider/Confidence.cs +++ b/app/MindWork AI Studio/Provider/Confidence.cs @@ -53,6 +53,12 @@ public sealed record Confidence Description = "The provider operates its service from the USA and is subject to **US jurisdiction**. In case of suspicion, authorities in the USA can access your data. However, **your data is not used for training** purposes.", }; + public static readonly Confidence CHINA_NO_TRAINING = new() + { + Level = ConfidenceLevel.MODERATE, + Description = "The provider operates its service from China. In case of suspicion, authorities in the respective countries of operation may access your data. However, **your data is not used for training** purposes.", + }; + public static readonly Confidence GDPR_NO_TRAINING = new() { Level = ConfidenceLevel.MEDIUM, diff --git a/app/MindWork AI Studio/Provider/DeepSeek/ProviderDeepSeek.cs b/app/MindWork AI Studio/Provider/DeepSeek/ProviderDeepSeek.cs new file mode 100644 index 00000000..c58e914b --- /dev/null +++ b/app/MindWork AI Studio/Provider/DeepSeek/ProviderDeepSeek.cs @@ -0,0 +1,137 @@ +using System.Net.Http.Headers; +using System.Runtime.CompilerServices; +using System.Text; +using System.Text.Json; + +using AIStudio.Chat; +using AIStudio.Provider.OpenAI; +using AIStudio.Settings; + +namespace AIStudio.Provider.DeepSeek; + +public sealed class ProviderDeepSeek(ILogger logger) : BaseProvider("https://api.deepseek.com/", logger) +{ + #region Implementation of IProvider + + /// <inheritdoc /> + public override string Id => LLMProviders.DEEP_SEEK.ToName(); + + /// <inheritdoc /> + public override string InstanceName { get; set; } = "DeepSeek"; + + /// <inheritdoc /> + public override async IAsyncEnumerable<string> StreamChatCompletion(Model chatModel, ChatThread chatThread, SettingsManager settingsManager, [EnumeratorCancellation] CancellationToken token = default) + { + // Get the API key: + var requestedSecret = await RUST_SERVICE.GetAPIKey(this); + if(!requestedSecret.Success) + yield break; + + // Prepare the system prompt: + var systemPrompt = new Message + { + Role = "system", + Content = chatThread.PrepareSystemPrompt(settingsManager, chatThread, this.logger), + }; + + // Prepare the DeepSeek HTTP chat request: + var deepSeekChatRequest = JsonSerializer.Serialize(new ChatRequest + { + Model = chatModel.Id, + + // Build the messages: + // - First of all the system prompt + // - Then none-empty user and AI messages + Messages = [systemPrompt, ..chatThread.Blocks.Where(n => n.ContentType is ContentType.TEXT && !string.IsNullOrWhiteSpace((n.Content as ContentText)?.Text)).Select(n => new Message + { + Role = n.Role switch + { + ChatRole.USER => "user", + ChatRole.AI => "assistant", + ChatRole.AGENT => "assistant", + ChatRole.RAG => "assistant", + ChatRole.SYSTEM => "system", + + _ => "user", + }, + + Content = n.Content switch + { + ContentText text => text.Text, + _ => string.Empty, + } + }).ToList()], + Stream = true, + }, JSON_SERIALIZER_OPTIONS); + + async Task<HttpRequestMessage> RequestBuilder() + { + // Build the HTTP post request: + var request = new HttpRequestMessage(HttpMethod.Post, "chat/completions"); + + // Set the authorization header: + request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", await requestedSecret.Secret.Decrypt(ENCRYPTION)); + + // Set the content: + request.Content = new StringContent(deepSeekChatRequest, Encoding.UTF8, "application/json"); + return request; + } + + await foreach (var content in this.StreamChatCompletionInternal<ResponseStreamLine>("Helmholtz", RequestBuilder, token)) + yield return content; + } + + #pragma warning disable CS1998 // Async method lacks 'await' operators and will run synchronously + /// <inheritdoc /> + public override async IAsyncEnumerable<ImageURL> StreamImageCompletion(Model imageModel, string promptPositive, string promptNegative = FilterOperator.String.Empty, ImageURL referenceImageURL = default, [EnumeratorCancellation] CancellationToken token = default) + { + yield break; + } + #pragma warning restore CS1998 // Async method lacks 'await' operators and will run synchronously + + /// <inheritdoc /> + public override Task<IEnumerable<Model>> GetTextModels(string? apiKeyProvisional = null, CancellationToken token = default) + { + return this.LoadModels(token, apiKeyProvisional); + } + + /// <inheritdoc /> + public override Task<IEnumerable<Model>> GetImageModels(string? apiKeyProvisional = null, CancellationToken token = default) + { + return Task.FromResult(Enumerable.Empty<Model>()); + } + + /// <inheritdoc /> + public override Task<IEnumerable<Model>> GetEmbeddingModels(string? apiKeyProvisional = null, CancellationToken token = default) + { + return Task.FromResult(Enumerable.Empty<Model>()); + } + + #endregion + + private async Task<IEnumerable<Model>> LoadModels(CancellationToken token, string? apiKeyProvisional = null) + { + var secretKey = apiKeyProvisional switch + { + not null => apiKeyProvisional, + _ => await RUST_SERVICE.GetAPIKey(this) switch + { + { Success: true } result => await result.Secret.Decrypt(ENCRYPTION), + _ => null, + } + }; + + if (secretKey is null) + return []; + + using var request = new HttpRequestMessage(HttpMethod.Get, "models"); + request.Headers.Authorization = new AuthenticationHeaderValue("Bearer", secretKey); + + using var response = await this.httpClient.SendAsync(request, token); + if(!response.IsSuccessStatusCode) + return []; + + var modelResponse = await response.Content.ReadFromJsonAsync<ModelsResponse>(token); + return modelResponse.Data; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Provider/LLMProviders.cs b/app/MindWork AI Studio/Provider/LLMProviders.cs index 6c56c6e3..92c0873b 100644 --- a/app/MindWork AI Studio/Provider/LLMProviders.cs +++ b/app/MindWork AI Studio/Provider/LLMProviders.cs @@ -12,6 +12,7 @@ public enum LLMProviders MISTRAL = 3, GOOGLE = 7, X = 8, + DEEP_SEEK = 11, FIREWORKS = 5, GROQ = 6, diff --git a/app/MindWork AI Studio/Provider/LLMProvidersExtensions.cs b/app/MindWork AI Studio/Provider/LLMProvidersExtensions.cs index ce435e1a..7fb80e7f 100644 --- a/app/MindWork AI Studio/Provider/LLMProvidersExtensions.cs +++ b/app/MindWork AI Studio/Provider/LLMProvidersExtensions.cs @@ -1,4 +1,5 @@ using AIStudio.Provider.Anthropic; +using AIStudio.Provider.DeepSeek; using AIStudio.Provider.Fireworks; using AIStudio.Provider.Google; using AIStudio.Provider.Groq; @@ -30,6 +31,7 @@ public static class LLMProvidersExtensions LLMProviders.MISTRAL => "Mistral", LLMProviders.GOOGLE => "Google", LLMProviders.X => "xAI", + LLMProviders.DEEP_SEEK => "DeepSeek", LLMProviders.GROQ => "Groq", LLMProviders.FIREWORKS => "Fireworks.ai", @@ -71,6 +73,8 @@ public static class LLMProvidersExtensions LLMProviders.X => Confidence.USA_NO_TRAINING.WithRegion("America, U.S.").WithSources("https://x.ai/legal/terms-of-service-enterprise").WithLevel(settingsManager.GetConfiguredConfidenceLevel(llmProvider)), + LLMProviders.DEEP_SEEK => Confidence.CHINA_NO_TRAINING.WithRegion("Asia").WithSources("https://cdn.deepseek.com/policies/en-US/deepseek-open-platform-terms-of-service.html").WithLevel(settingsManager.GetConfiguredConfidenceLevel(llmProvider)), + LLMProviders.SELF_HOSTED => Confidence.SELF_HOSTED.WithLevel(settingsManager.GetConfiguredConfidenceLevel(llmProvider)), LLMProviders.HELMHOLTZ => Confidence.GDPR_NO_TRAINING.WithRegion("Europe, Germany").WithSources("https://helmholtz.cloud/services/?serviceID=d7d5c597-a2f6-4bd1-b71e-4d6499d98570").WithLevel(settingsManager.GetConfiguredConfidenceLevel(llmProvider)), @@ -102,6 +106,7 @@ public static class LLMProvidersExtensions LLMProviders.FIREWORKS => false, LLMProviders.X => false, LLMProviders.GWDG => false, + LLMProviders.DEEP_SEEK => false, // // Self-hosted providers are treated as a special case anyway. @@ -144,6 +149,7 @@ public static class LLMProvidersExtensions LLMProviders.MISTRAL => new ProviderMistral(logger) { InstanceName = instanceName }, LLMProviders.GOOGLE => new ProviderGoogle(logger) { InstanceName = instanceName }, LLMProviders.X => new ProviderX(logger) { InstanceName = instanceName }, + LLMProviders.DEEP_SEEK => new ProviderDeepSeek(logger) { InstanceName = instanceName }, LLMProviders.GROQ => new ProviderGroq(logger) { InstanceName = instanceName }, LLMProviders.FIREWORKS => new ProviderFireworks(logger) { InstanceName = instanceName }, @@ -170,6 +176,7 @@ public static class LLMProvidersExtensions LLMProviders.ANTHROPIC => "https://console.anthropic.com/dashboard", LLMProviders.GOOGLE => "https://console.cloud.google.com/", LLMProviders.X => "https://accounts.x.ai/sign-up", + LLMProviders.DEEP_SEEK => "https://platform.deepseek.com/sign_up", LLMProviders.GROQ => "https://console.groq.com/", LLMProviders.FIREWORKS => "https://fireworks.ai/login", @@ -189,6 +196,7 @@ public static class LLMProvidersExtensions LLMProviders.GROQ => "https://console.groq.com/settings/usage", LLMProviders.GOOGLE => "https://console.cloud.google.com/billing", LLMProviders.FIREWORKS => "https://fireworks.ai/account/billing", + LLMProviders.DEEP_SEEK => "https://platform.deepseek.com/usage", _ => string.Empty, }; @@ -202,6 +210,7 @@ public static class LLMProvidersExtensions LLMProviders.GROQ => true, LLMProviders.FIREWORKS => true, LLMProviders.GOOGLE => true, + LLMProviders.DEEP_SEEK => true, _ => false, }; @@ -243,6 +252,7 @@ public static class LLMProvidersExtensions LLMProviders.ANTHROPIC => true, LLMProviders.GOOGLE => true, LLMProviders.X => true, + LLMProviders.DEEP_SEEK => true, LLMProviders.GROQ => true, LLMProviders.FIREWORKS => true, @@ -261,6 +271,7 @@ public static class LLMProvidersExtensions LLMProviders.ANTHROPIC => true, LLMProviders.GOOGLE => true, LLMProviders.X => true, + LLMProviders.DEEP_SEEK => true, LLMProviders.GROQ => true, LLMProviders.FIREWORKS => true, diff --git a/app/MindWork AI Studio/Settings/DataModel/DataLLMProviders.cs b/app/MindWork AI Studio/Settings/DataModel/DataLLMProviders.cs index a716476a..30ad8bab 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataLLMProviders.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataLLMProviders.cs @@ -22,7 +22,7 @@ public sealed class DataLLMProviders /// <summary> /// Which confidence scheme to use. /// </summary> - public ConfidenceSchemes ConfidenceScheme { get; set; } = ConfidenceSchemes.TRUST_USA_EUROPE; + public ConfidenceSchemes ConfidenceScheme { get; set; } = ConfidenceSchemes.TRUST_ALL; /// <summary> /// Provide custom confidence levels for each LLM provider. diff --git a/app/MindWork AI Studio/Settings/SettingsManager.cs b/app/MindWork AI Studio/Settings/SettingsManager.cs index 29e94390..0930c9a5 100644 --- a/app/MindWork AI Studio/Settings/SettingsManager.cs +++ b/app/MindWork AI Studio/Settings/SettingsManager.cs @@ -211,11 +211,19 @@ public sealed class SettingsManager(ILogger<SettingsManager> logger) switch (this.ConfigurationData.LLMProviders.ConfidenceScheme) { + case ConfidenceSchemes.TRUST_ALL: + return llmProvider switch + { + LLMProviders.SELF_HOSTED => ConfidenceLevel.HIGH, + + _ => ConfidenceLevel.MEDIUM, + }; + case ConfidenceSchemes.TRUST_USA_EUROPE: return llmProvider switch { LLMProviders.SELF_HOSTED => ConfidenceLevel.HIGH, - LLMProviders.FIREWORKS => ConfidenceLevel.UNTRUSTED, + LLMProviders.DEEP_SEEK => ConfidenceLevel.LOW, _ => ConfidenceLevel.MEDIUM, }; @@ -224,8 +232,10 @@ public sealed class SettingsManager(ILogger<SettingsManager> logger) return llmProvider switch { LLMProviders.SELF_HOSTED => ConfidenceLevel.HIGH, - LLMProviders.FIREWORKS => ConfidenceLevel.UNTRUSTED, LLMProviders.MISTRAL => ConfidenceLevel.LOW, + LLMProviders.HELMHOLTZ => ConfidenceLevel.LOW, + LLMProviders.GWDG => ConfidenceLevel.LOW, + LLMProviders.DEEP_SEEK => ConfidenceLevel.LOW, _ => ConfidenceLevel.MEDIUM, }; @@ -234,8 +244,18 @@ public sealed class SettingsManager(ILogger<SettingsManager> logger) return llmProvider switch { LLMProviders.SELF_HOSTED => ConfidenceLevel.HIGH, - LLMProviders.FIREWORKS => ConfidenceLevel.UNTRUSTED, LLMProviders.MISTRAL => ConfidenceLevel.MEDIUM, + LLMProviders.HELMHOLTZ => ConfidenceLevel.MEDIUM, + LLMProviders.GWDG => ConfidenceLevel.MEDIUM, + + _ => ConfidenceLevel.LOW, + }; + + case ConfidenceSchemes.TRUST_ASIA: + return llmProvider switch + { + LLMProviders.SELF_HOSTED => ConfidenceLevel.HIGH, + LLMProviders.DEEP_SEEK => ConfidenceLevel.MEDIUM, _ => ConfidenceLevel.LOW, }; @@ -244,7 +264,6 @@ public sealed class SettingsManager(ILogger<SettingsManager> logger) return llmProvider switch { LLMProviders.SELF_HOSTED => ConfidenceLevel.HIGH, - LLMProviders.FIREWORKS => ConfidenceLevel.UNTRUSTED, _ => ConfidenceLevel.VERY_LOW, }; diff --git a/app/MindWork AI Studio/Tools/ConfidenceSchemes.cs b/app/MindWork AI Studio/Tools/ConfidenceSchemes.cs index 97d4f4d6..b5085284 100644 --- a/app/MindWork AI Studio/Tools/ConfidenceSchemes.cs +++ b/app/MindWork AI Studio/Tools/ConfidenceSchemes.cs @@ -2,11 +2,13 @@ namespace AIStudio.Tools; public enum ConfidenceSchemes { - TRUST_USA_EUROPE = 0, - TRUST_USA = 1, - TRUST_EUROPE = 2, + TRUST_ALL, + TRUST_USA_EUROPE, + TRUST_USA, + TRUST_EUROPE, + TRUST_ASIA, - LOCAL_TRUST_ONLY = 3, + LOCAL_TRUST_ONLY, CUSTOM = 10_000, } \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/ConfidenceSchemesExtensions.cs b/app/MindWork AI Studio/Tools/ConfidenceSchemesExtensions.cs index d36993f1..035be948 100644 --- a/app/MindWork AI Studio/Tools/ConfidenceSchemesExtensions.cs +++ b/app/MindWork AI Studio/Tools/ConfidenceSchemesExtensions.cs @@ -4,9 +4,11 @@ public static class ConfidenceSchemesExtensions { public static string GetListDescription(this ConfidenceSchemes scheme) => scheme switch { + ConfidenceSchemes.TRUST_ALL => "Trust all LLM providers", ConfidenceSchemes.TRUST_USA_EUROPE => "Trust LLM providers from the USA and Europe", ConfidenceSchemes.TRUST_USA => "Trust LLM providers from the USA", ConfidenceSchemes.TRUST_EUROPE => "Trust LLM providers from Europe", + ConfidenceSchemes.TRUST_ASIA => "Trust LLM providers from Asia", ConfidenceSchemes.LOCAL_TRUST_ONLY => "Trust only local LLM providers", ConfidenceSchemes.CUSTOM => "Configure your own confidence scheme", diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md index 3145150d..51bb5e75 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md @@ -1,3 +1,4 @@ # v0.9.31, build 206 (2025-02-xx xx:xx UTC) - Added Helmholtz (aka "Blablador") as provider. This provider is available to all researchers and employees of the 18 Helmholtz Centers as well as all eduGAIN organizations worldwide. -- Added GWDG SAIA as provider. This provider is available to all researchers and employees of the GWDG, the Max Planck Society, the 18 Helmholtz Centers, and most German universities. \ No newline at end of file +- Added GWDG SAIA as provider. This provider is available to all researchers and employees of the GWDG, the Max Planck Society, the 18 Helmholtz Centers, and most German universities. +- Added DeepSeek as provider. From 9d2b63bbaa035aaaab83d47cbfac4e45c2540a9c Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Thu, 27 Feb 2025 20:17:51 +0100 Subject: [PATCH 045/110] Added paths to log files in the "About" dialog for easier support (#304) --- app/MindWork AI Studio/Pages/About.razor | 32 ++++++++++++ app/MindWork AI Studio/Pages/About.razor.cs | 33 ++++++++++++- .../Tools/Rust/GetLogPathsResponse.cs | 3 ++ .../Tools/Services/RustService.Log.cs | 15 ++++++ .../wwwroot/changelog/v0.9.31.md | 1 + runtime/src/log.rs | 49 +++++++++++++++---- runtime/src/runtime_api.rs | 1 + 7 files changed, 123 insertions(+), 11 deletions(-) create mode 100644 app/MindWork AI Studio/Tools/Rust/GetLogPathsResponse.cs create mode 100644 app/MindWork AI Studio/Tools/Services/RustService.Log.cs diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index 60746420..f4f96af3 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -26,6 +26,38 @@ <ExpansionPanel HeaderIcon="@Icons.Material.Filled.EventNote" HeaderText="Changelog"> <Changelog/> </ExpansionPanel> + + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Book" HeaderText="Logbook"> + <MudText Typo="Typo.h4"> + Explanation + </MudText> + <MudJustifiedText Class="mb-3" Typo="Typo.body1"> + AI Studio creates a log file at startup, in which events during startup are recorded. After startup, + another log file is created that records all events that occur during the use of the app. This + includes any errors that may occur. Depending on when an error occurs (at startup or during use), + the contents of these log files can be helpful for troubleshooting. Sensitive information such as + passwords is not included in the log files. + </MudJustifiedText> + + <MudJustifiedText Class="mb-3" Typo="Typo.body1"> + By clicking on the respective path, the path is copied to the clipboard. You might open these files + with a text editor to view their contents. + </MudJustifiedText> + + <MudText Typo="Typo.h4"> + Startup log file + </MudText> + <MudList T="string" Class="mb-3"> + <MudListItem T="string" Icon="@Icons.Material.Outlined.Folder" Text="@this.logPaths.LogStartupPath" OnClick="() => this.CopyStartupLogPath()"/> + </MudList> + + <MudText Typo="Typo.h4"> + Usage log file + </MudText> + <MudList T="string" Class="mb-3"> + <MudListItem T="string" Icon="@Icons.Material.Outlined.Folder" Text="@this.logPaths.LogAppPath" OnClick="() => this.CopyAppLogPath()"/> + </MudList> + </ExpansionPanel> <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Engineering" HeaderText="Motivation"> <Motivation/> diff --git a/app/MindWork AI Studio/Pages/About.razor.cs b/app/MindWork AI Studio/Pages/About.razor.cs index 100ebdbe..51727506 100644 --- a/app/MindWork AI Studio/Pages/About.razor.cs +++ b/app/MindWork AI Studio/Pages/About.razor.cs @@ -1,5 +1,8 @@ using System.Reflection; +using AIStudio.Tools.Rust; +using AIStudio.Tools.Services; + using Microsoft.AspNetCore.Components; namespace AIStudio.Pages; @@ -9,9 +12,15 @@ public partial class About : ComponentBase [Inject] private MessageBus MessageBus { get; init; } = null!; + [Inject] + private RustService RustService { get; init; } = null!; + + [Inject] + private ISnackbar Snackbar { get; init; } = null!; + private static readonly Assembly ASSEMBLY = Assembly.GetExecutingAssembly(); private static readonly MetaDataAttribute META_DATA = ASSEMBLY.GetCustomAttribute<MetaDataAttribute>()!; - + private static string VersionDotnetRuntime => $"Used .NET runtime: v{META_DATA.DotnetVersion}"; private static string VersionDotnetSdk => $"Used .NET SDK: v{META_DATA.DotnetSdkVersion}"; @@ -26,6 +35,28 @@ public partial class About : ComponentBase private static string TauriVersion => $"Tauri: v{META_DATA.TauriVersion}"; + private GetLogPathsResponse logPaths; + + #region Overrides of ComponentBase + + private async Task CopyStartupLogPath() + { + await this.RustService.CopyText2Clipboard(this.Snackbar, this.logPaths.LogStartupPath); + } + + private async Task CopyAppLogPath() + { + await this.RustService.CopyText2Clipboard(this.Snackbar, this.logPaths.LogAppPath); + } + + protected override async Task OnInitializedAsync() + { + this.logPaths = await this.RustService.GetLogPaths(); + await base.OnInitializedAsync(); + } + + #endregion + private const string LICENSE = """ # Functional Source License, Version 1.1, MIT Future License diff --git a/app/MindWork AI Studio/Tools/Rust/GetLogPathsResponse.cs b/app/MindWork AI Studio/Tools/Rust/GetLogPathsResponse.cs new file mode 100644 index 00000000..4cd6169e --- /dev/null +++ b/app/MindWork AI Studio/Tools/Rust/GetLogPathsResponse.cs @@ -0,0 +1,3 @@ +namespace AIStudio.Tools.Rust; + +public readonly record struct GetLogPathsResponse(string LogStartupPath, string LogAppPath); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/Services/RustService.Log.cs b/app/MindWork AI Studio/Tools/Services/RustService.Log.cs new file mode 100644 index 00000000..e7b52438 --- /dev/null +++ b/app/MindWork AI Studio/Tools/Services/RustService.Log.cs @@ -0,0 +1,15 @@ +using AIStudio.Tools.Rust; + +namespace AIStudio.Tools.Services; + +public sealed partial class RustService +{ + /// <summary> + /// Get the paths of the log files. + /// </summary> + /// <returns>The paths of the log files.</returns> + public async Task<GetLogPathsResponse> GetLogPaths() + { + return await this.http.GetFromJsonAsync<GetLogPathsResponse>("/log/paths", this.jsonRustSerializerOptions); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md index 51bb5e75..b24969ab 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md @@ -2,3 +2,4 @@ - Added Helmholtz (aka "Blablador") as provider. This provider is available to all researchers and employees of the 18 Helmholtz Centers as well as all eduGAIN organizations worldwide. - Added GWDG SAIA as provider. This provider is available to all researchers and employees of the GWDG, the Max Planck Society, the 18 Helmholtz Centers, and most German universities. - Added DeepSeek as provider. +- Added paths to log files in the "About" dialog for easier troubleshooting and support. \ No newline at end of file diff --git a/runtime/src/log.rs b/runtime/src/log.rs index 30befd46..4a244713 100644 --- a/runtime/src/log.rs +++ b/runtime/src/log.rs @@ -7,10 +7,18 @@ use flexi_logger::{DeferredNow, Duplicate, FileSpec, Logger, LoggerHandle}; use flexi_logger::writers::FileLogWriter; use log::kv; use log::kv::{Key, Value, VisitSource}; +use rocket::get; +use rocket::serde::json::Json; +use rocket::serde::Serialize; +use crate::api_token::APIToken; use crate::environment::is_dev; static LOGGER: OnceLock<RuntimeLoggerHandle> = OnceLock::new(); +static LOG_STARTUP_PATH: OnceLock<String> = OnceLock::new(); + +static LOG_APP_PATH: OnceLock<String> = OnceLock::new(); + /// Initialize the logging system. pub fn init_logging() { @@ -42,11 +50,16 @@ pub fn init_logging() { false => "AI Studio Events", }; + let log_path = FileSpec::default() + .basename(log_basename) + .suppress_timestamp() + .suffix("log"); + + // Store the startup log path: + LOG_STARTUP_PATH.set(log_path.as_pathbuf(None).canonicalize().unwrap().to_str().unwrap().to_string()).expect("Cannot store the startup log path"); + let runtime_logger = Logger::try_with_str(log_config).expect("Cannot create logging") - .log_to_file(FileSpec::default() - .basename(log_basename) - .suppress_timestamp() - .suffix("log")) + .log_to_file(log_path) .duplicate_to_stdout(Duplicate::All) .use_utc() .format_for_files(file_logger_format) @@ -63,12 +76,13 @@ pub fn init_logging() { /// Switch the logging system to a file-based output. pub fn switch_to_file_logging(logger_path: PathBuf) -> Result<(), Box<dyn Error>>{ - LOGGER.get().expect("No LOGGER was set").handle.reset_flw(&FileLogWriter::builder( - FileSpec::default() - .directory(logger_path) - .basename("events") - .suppress_timestamp() - .suffix("log")))?; + let log_path = FileSpec::default() + .directory(logger_path) + .basename("events") + .suppress_timestamp() + .suffix("log"); + LOG_APP_PATH.set(log_path.as_pathbuf(None).to_str().unwrap().to_string()).expect("Cannot store the app log path"); + LOGGER.get().expect("No LOGGER was set").handle.reset_flw(&FileLogWriter::builder(log_path))?; Ok(()) } @@ -160,4 +174,19 @@ fn file_logger_format( // Write the log message: write!(w, "{}", &record.args()) +} + +#[get("/log/paths")] +pub async fn get_log_paths(_token: APIToken) -> Json<LogPathsResponse> { + Json(LogPathsResponse { + log_startup_path: LOG_STARTUP_PATH.get().expect("No startup log path was set").clone(), + log_app_path: LOG_APP_PATH.get().expect("No app log path was set").clone(), + }) +} + +/// The response the get log paths request. +#[derive(Serialize)] +pub struct LogPathsResponse { + log_startup_path: String, + log_app_path: String, } \ No newline at end of file diff --git a/runtime/src/runtime_api.rs b/runtime/src/runtime_api.rs index 1fa5bc75..728c4a55 100644 --- a/runtime/src/runtime_api.rs +++ b/runtime/src/runtime_api.rs @@ -77,6 +77,7 @@ pub fn start_runtime_api() { crate::secret::delete_secret, crate::environment::get_data_directory, crate::environment::get_config_directory, + crate::log::get_log_paths, ]) .ignite().await.unwrap() .launch().await.unwrap(); From dbc2b4f6bc937df43736f8152837a26483d22045 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Thu, 27 Feb 2025 20:26:36 +0100 Subject: [PATCH 046/110] Prepared release v0.9.31 (#305) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 1 + app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md | 2 +- metadata.txt | 8 ++++---- runtime/Cargo.lock | 2 +- runtime/Cargo.toml | 2 +- runtime/tauri.conf.json | 2 +- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index 71902e58..5d6623c8 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,6 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ + new (206, "v0.9.31, build 206 (2025-02-27 19:22 UTC)", "v0.9.31.md"), new (205, "v0.9.30, build 205 (2025-02-24 19:55 UTC)", "v0.9.30.md"), new (204, "v0.9.29, build 204 (2025-02-24 13:48 UTC)", "v0.9.29.md"), new (203, "v0.9.28, build 203 (2025-02-09 16:33 UTC)", "v0.9.28.md"), diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md index b24969ab..39e3e264 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md @@ -1,4 +1,4 @@ -# v0.9.31, build 206 (2025-02-xx xx:xx UTC) +# v0.9.31, build 206 (2025-02-27 19:22 UTC) - Added Helmholtz (aka "Blablador") as provider. This provider is available to all researchers and employees of the 18 Helmholtz Centers as well as all eduGAIN organizations worldwide. - Added GWDG SAIA as provider. This provider is available to all researchers and employees of the GWDG, the Max Planck Society, the 18 Helmholtz Centers, and most German universities. - Added DeepSeek as provider. diff --git a/metadata.txt b/metadata.txt index 84f8eb31..015a8712 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ -0.9.30 -2025-02-24 19:55:00 UTC -205 +0.9.31 +2025-02-27 19:22:19 UTC +206 8.0.113 (commit 8f216348dc) 8.0.13 (commit eba546b0f0) 1.85.0 (commit 4d91de4e4) 7.16.0 1.8.1 -e21e30ce8c5, release +9d2b63bbaa0, release diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index 919306f7..a6422bf5 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -2347,7 +2347,7 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mindwork-ai-studio" -version = "0.9.30" +version = "0.9.31" dependencies = [ "aes", "arboard", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 58cae86d..0293056e 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindwork-ai-studio" -version = "0.9.30" +version = "0.9.31" edition = "2021" description = "MindWork AI Studio" authors = ["Thorsten Sommer"] diff --git a/runtime/tauri.conf.json b/runtime/tauri.conf.json index b45cbe69..cfbe3b3a 100644 --- a/runtime/tauri.conf.json +++ b/runtime/tauri.conf.json @@ -6,7 +6,7 @@ }, "package": { "productName": "MindWork AI Studio", - "version": "0.9.30" + "version": "0.9.31" }, "tauri": { "allowlist": { From 2e84f10a9779daf6ccf49dde789f5afccfd997c4 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 3 Mar 2025 15:14:09 +0100 Subject: [PATCH 047/110] Fixed the conversion of log paths (FileSpec) to String (#306) --- runtime/src/app_window.rs | 10 +++---- runtime/src/log.rs | 55 ++++++++++++++++++++++++++++++++++++--- 2 files changed, 56 insertions(+), 9 deletions(-) diff --git a/runtime/src/app_window.rs b/runtime/src/app_window.rs index f6af44cd..a3b41510 100644 --- a/runtime/src/app_window.rs +++ b/runtime/src/app_window.rs @@ -30,14 +30,14 @@ pub fn start_tauri() { *MAIN_WINDOW.lock().unwrap() = Some(window); info!(Source = "Bootloader Tauri"; "Setup is running."); - let logger_path = app.path_resolver().app_local_data_dir().unwrap(); - let logger_path = logger_path.join("data"); + let data_path = app.path_resolver().app_local_data_dir().unwrap(); + let data_path = data_path.join("data"); - DATA_DIRECTORY.set(logger_path.to_str().unwrap().to_string()).map_err(|_| error!("Was not abe to set the data directory.")).unwrap(); + DATA_DIRECTORY.set(data_path.to_str().unwrap().to_string()).map_err(|_| error!("Was not abe to set the data directory.")).unwrap(); CONFIG_DIRECTORY.set(app.path_resolver().app_config_dir().unwrap().to_str().unwrap().to_string()).map_err(|_| error!("Was not able to set the config directory.")).unwrap(); - info!(Source = "Bootloader Tauri"; "Reconfigure the file logger to use the app data directory {logger_path:?}"); - switch_to_file_logging(logger_path).map_err(|e| error!("Failed to switch logging to file: {e}")).unwrap(); + info!(Source = "Bootloader Tauri"; "Reconfigure the file logger to use the app data directory {data_path:?}"); + switch_to_file_logging(data_path).map_err(|e| error!("Failed to switch logging to file: {e}")).unwrap(); Ok(()) }) diff --git a/runtime/src/log.rs b/runtime/src/log.rs index 4a244713..b626639a 100644 --- a/runtime/src/log.rs +++ b/runtime/src/log.rs @@ -1,7 +1,8 @@ use std::collections::BTreeMap; +use std::env::{current_dir, temp_dir}; use std::error::Error; use std::fmt::Debug; -use std::path::PathBuf; +use std::path::{absolute, PathBuf}; use std::sync::OnceLock; use flexi_logger::{DeferredNow, Duplicate, FileSpec, Logger, LoggerHandle}; use flexi_logger::writers::FileLogWriter; @@ -51,12 +52,13 @@ pub fn init_logging() { }; let log_path = FileSpec::default() + .directory(get_startup_log_path()) .basename(log_basename) .suppress_timestamp() .suffix("log"); // Store the startup log path: - LOG_STARTUP_PATH.set(log_path.as_pathbuf(None).canonicalize().unwrap().to_str().unwrap().to_string()).expect("Cannot store the startup log path"); + let _ = LOG_STARTUP_PATH.set(convert_log_path_to_string(&log_path)); let runtime_logger = Logger::try_with_str(log_config).expect("Cannot create logging") .log_to_file(log_path) @@ -74,14 +76,59 @@ pub fn init_logging() { LOGGER.set(runtime_logger).expect("Cannot set LOGGER"); } -/// Switch the logging system to a file-based output. +fn convert_log_path_to_string(log_path: &FileSpec) -> String { + let log_path = log_path.as_pathbuf(None); + + // Case: The path is already absolute: + if log_path.is_absolute() { + return log_path.to_str().unwrap().to_string(); + } + + // Case: The path is relative. Let's try to convert it to an absolute path: + match log_path.canonicalize() { + // Case: The path exists: + Ok(log_path) => log_path.to_str().unwrap().to_string(), + + // Case: The path does not exist. Let's try to build the + // absolute path without touching the file system: + Err(_) => match absolute(log_path.clone()) { + + // Case: We could build the absolute path: + Ok(log_path) => log_path.to_str().unwrap().to_string(), + + // Case: We could not reconstruct the path using the working directory. + Err(_) => log_path.to_str().unwrap().to_string(), + } + } +} + +// Note: Rust plans to remove the deprecation flag for std::env::home_dir() in Rust 1.86.0. +#[allow(deprecated)] +fn get_startup_log_path() -> String { + match std::env::home_dir() { + // Case: We could determine the home directory: + Some(home_dir) => home_dir.to_str().unwrap().to_string(), + + // Case: We could not determine the home directory. Let's try to use the working directory: + None => match current_dir() { + + // Case: We could determine the working directory: + Ok(working_directory) => working_directory.to_str().unwrap().to_string(), + + // Case: We could not determine the working directory. Let's use the temporary directory: + Err(_) => temp_dir().to_str().unwrap().to_string(), + }, + } +} + +/// Switch the logging system to a file-based output inside the given directory. pub fn switch_to_file_logging(logger_path: PathBuf) -> Result<(), Box<dyn Error>>{ let log_path = FileSpec::default() .directory(logger_path) .basename("events") .suppress_timestamp() .suffix("log"); - LOG_APP_PATH.set(log_path.as_pathbuf(None).to_str().unwrap().to_string()).expect("Cannot store the app log path"); + let _ = LOG_APP_PATH.set(convert_log_path_to_string(&log_path)); LOGGER.get().expect("No LOGGER was set").handle.reset_flw(&FileLogWriter::builder(log_path))?; Ok(()) From a66d88c989760fd7177e5c4dceee2368d3510e6e Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 3 Mar 2025 16:35:22 +0100 Subject: [PATCH 048/110] Updated v0.9.31 metadata (#307) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 2 +- app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md | 2 +- metadata.txt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index 5d6623c8..6981386c 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,7 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ - new (206, "v0.9.31, build 206 (2025-02-27 19:22 UTC)", "v0.9.31.md"), + new (206, "v0.9.31, build 206 (2025-03-03 15:33 UTC)", "v0.9.31.md"), new (205, "v0.9.30, build 205 (2025-02-24 19:55 UTC)", "v0.9.30.md"), new (204, "v0.9.29, build 204 (2025-02-24 13:48 UTC)", "v0.9.29.md"), new (203, "v0.9.28, build 203 (2025-02-09 16:33 UTC)", "v0.9.28.md"), diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md index 39e3e264..b29c33a9 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.31.md @@ -1,4 +1,4 @@ -# v0.9.31, build 206 (2025-02-27 19:22 UTC) +# v0.9.31, build 206 (2025-03-03 15:33 UTC) - Added Helmholtz (aka "Blablador") as provider. This provider is available to all researchers and employees of the 18 Helmholtz Centers as well as all eduGAIN organizations worldwide. - Added GWDG SAIA as provider. This provider is available to all researchers and employees of the GWDG, the Max Planck Society, the 18 Helmholtz Centers, and most German universities. - Added DeepSeek as provider. diff --git a/metadata.txt b/metadata.txt index 015a8712..e53de536 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ 0.9.31 -2025-02-27 19:22:19 UTC +2025-03-03 15:33:03 UTC 206 8.0.113 (commit 8f216348dc) 8.0.13 (commit eba546b0f0) 1.85.0 (commit 4d91de4e4) 7.16.0 1.8.1 -9d2b63bbaa0, release +2e84f10a977, release From 1d22232005a2327364fcf677d60d92fa213fb6ef Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Thu, 6 Mar 2025 21:02:21 +0100 Subject: [PATCH 049/110] ERI: use camel case for JSON (#311) --- app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs | 1 + app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs index c5f0b289..b6553ee2 100644 --- a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs +++ b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs @@ -290,6 +290,7 @@ public partial class AssistantERI : AssistantBaseCore - You consider the security of the implementation by applying the Security by Design principle. - Your output is formatted as Markdown. Code is formatted as code blocks. For every file, you create a separate code block with its file path and name as chapter title. + - Important: The JSON objects of the API messages use camel case for the data field names. """); return sb.ToString(); diff --git a/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs b/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs index 1906a0d5..18f5d2ed 100644 --- a/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs +++ b/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs @@ -9,7 +9,7 @@ public abstract class ERIClientBase(string baseAddress) : IDisposable { WriteIndented = true, AllowTrailingCommas = true, - PropertyNamingPolicy = null, + PropertyNamingPolicy = JsonNamingPolicy.CamelCase, DictionaryKeyPolicy = JsonNamingPolicy.CamelCase, PropertyNameCaseInsensitive = true, Converters = From ccaf2e894a6129a41fa92747ce081bb480cc8526 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peer=20Sch=C3=BCtt?= <peerschuett1996@gmail.com> Date: Fri, 7 Mar 2025 09:24:53 +0100 Subject: [PATCH 050/110] Added a new panel in the about section regarding the Github repos (#310) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Peer Schütt <peer.schuett@dlr.de> --- app/MindWork AI Studio/Pages/About.razor | 23 +++++++++++++++++++ .../wwwroot/changelog/v0.9.32.md | 2 ++ 2 files changed, 25 insertions(+) create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index f4f96af3..74492c4a 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -22,6 +22,29 @@ Check for updates </MudButton> </ExpansionPanel> + + <ExpansionPanel HeaderIcon="@Icons.Custom.Brands.GitHub" HeaderText="Community & Code"> + <MudList T="string" Class="mb-1"> + <MudListItem T="string" Icon="@Icons.Material.Outlined.Home" Target="_blank" Href="http://mindworkai.org/"> + Discover MindWork AI's mission and vision on our official homepage. + </MudListItem> + <MudListItem T="string" Icon="@Icons.Custom.Brands.GitHub" Target="_blank" Href="https://github.com/MindWorkAI/AI-Studio"> + Browse AI Studio's source code on GitHub — we welcome your contributions. + </MudListItem> + <MudListItem T="string" Icon="@Icons.Material.Outlined.PrivateConnectivity" Target="_blank" Href="https://github.com/MindWorkAI/ERI"> + Connect AI Studio to your organization's data with our External Retrieval Interface (ERI). + </MudListItem> + <MudListItem T="string" Icon="@Icons.Material.Outlined.Timeline" Target="_blank" Href="https://github.com/orgs/MindWorkAI/projects/2/views/3"> + View our project roadmap and help shape AI Studio's future development. + </MudListItem> + <MudListItem T="string" Icon="@Icons.Material.Outlined.BugReport" Target="_blank" Href="https://github.com/MindWorkAI/AI-Studio/issues"> + Did you find a bug or are you experiencing issues? Report your concern here. + </MudListItem> + <MudListItem T="string" Icon="@Icons.Material.Outlined.Lightbulb" Target="_blank" Href="https://github.com/MindWorkAI/Planning/issues"> + Have feature ideas? Submit suggestions for future AI Studio enhancements. + </MudListItem> + </MudList> + </ExpansionPanel> <ExpansionPanel HeaderIcon="@Icons.Material.Filled.EventNote" HeaderText="Changelog"> <Changelog/> diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md new file mode 100644 index 00000000..9863080f --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md @@ -0,0 +1,2 @@ +# v0.9.32, build 207 (2025-03-xx xx:xx UTC) +- Added the Community & Code section to the About page. It includes links to the GitHub repositories and the project homepage. \ No newline at end of file From 3bfca45e117b6e5fbc97490e33406cae33d3d6ca Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 8 Mar 2025 09:56:21 +0100 Subject: [PATCH 051/110] Update changelog (#312) --- app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md index 9863080f..b1797bd4 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md @@ -1,2 +1,3 @@ # v0.9.32, build 207 (2025-03-xx xx:xx UTC) -- Added the Community & Code section to the About page. It includes links to the GitHub repositories and the project homepage. \ No newline at end of file +- Added the "Community & Code" section to the about page. It includes links to the GitHub repositories and the project website. +- Improved the ERI client to expect JSON responses and send JSON requests using camel case. \ No newline at end of file From df01ce188ead3e15c39cb86c3b2fceecdd148e3b Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 8 Mar 2025 11:14:20 +0100 Subject: [PATCH 052/110] Improved RAG issue handling (#313) --- app/MindWork AI Studio/Chat/ContentText.cs | 12 ++++++++++-- .../Dialogs/DataSourceERI-V1InfoDialog.razor | 3 ++- .../Dialogs/DataSourceERI-V1InfoDialog.razor.cs | 1 - .../Tools/ERIClient/ERIClientBase.cs | 3 ++- app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md | 5 ++++- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/app/MindWork AI Studio/Chat/ContentText.cs b/app/MindWork AI Studio/Chat/ContentText.cs index 9f511752..82b5334c 100644 --- a/app/MindWork AI Studio/Chat/ContentText.cs +++ b/app/MindWork AI Studio/Chat/ContentText.cs @@ -44,8 +44,16 @@ public sealed class ContentText : IContent // Call the RAG process. Right now, we only have one RAG process: if (lastPrompt is not null) { - var rag = new AISrcSelWithRetCtxVal(); - chatThread = await rag.ProcessAsync(provider, lastPrompt, chatThread, token); + try + { + var rag = new AISrcSelWithRetCtxVal(); + chatThread = await rag.ProcessAsync(provider, lastPrompt, chatThread, token); + } + catch (Exception e) + { + var logger = Program.SERVICE_PROVIDER.GetService<ILogger<ContentText>>()!; + logger.LogError(e, "Skipping the RAG process due to an error."); + } } // Store the last time we got a response. We use this later diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor index 984d2e40..41344b9b 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor @@ -59,7 +59,8 @@ <MudText Typo="Typo.h6" Class="mt-3"> Embeddings </MudText> - @if (!info.Embeddings.Any()) + @* ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract *@ + @if (info.Embeddings is null || !info.Embeddings.Any()) { <MudJustifiedText Typo="Typo.body1" Color="Color.Info" Class="mb-3"> The data source does not provide any embedding information. diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs index 192347d0..5f5a4428 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs @@ -130,7 +130,6 @@ public partial class DataSourceERI_V1InfoDialog : ComponentBase, IAsyncDisposabl } this.retrievalInfoformation = retrievalInfoResult.Data ?? []; - this.StateHasChanged(); } catch (Exception e) diff --git a/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs b/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs index 18f5d2ed..58811b07 100644 --- a/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs +++ b/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs @@ -9,9 +9,10 @@ public abstract class ERIClientBase(string baseAddress) : IDisposable { WriteIndented = true, AllowTrailingCommas = true, + PropertyNameCaseInsensitive = true, PropertyNamingPolicy = JsonNamingPolicy.CamelCase, DictionaryKeyPolicy = JsonNamingPolicy.CamelCase, - PropertyNameCaseInsensitive = true, + UnmappedMemberHandling = JsonUnmappedMemberHandling.Disallow, Converters = { new JsonStringEnumConverter(JsonNamingPolicy.SnakeCaseUpper), diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md index b1797bd4..5cdac4d8 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md @@ -1,3 +1,6 @@ # v0.9.32, build 207 (2025-03-xx xx:xx UTC) - Added the "Community & Code" section to the about page. It includes links to the GitHub repositories and the project website. -- Improved the ERI client to expect JSON responses and send JSON requests using camel case. \ No newline at end of file +- Improved the ERI client to expect JSON responses and send JSON requests using camel case. +- Improved the ERI client to raise an error when the server responds with additional JSON data that is not expected. +- Improved the error handling in the ERI data source info dialog in cases where servers respond with an invalid message. +- Improved the error handling for the entire RAG process. \ No newline at end of file From 6a4a7dc0d6fbb40f6170f1bfd62d0e6fa96e38a4 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 8 Mar 2025 13:56:38 +0100 Subject: [PATCH 053/110] Improved the augmentation & generation of RAG (#314) --- .../Assistants/AssistantBase.razor.cs | 2 +- app/MindWork AI Studio/Chat/ChatRole.cs | 1 - app/MindWork AI Studio/Chat/ChatThread.cs | 32 ++++++++++++++++--- app/MindWork AI Studio/Chat/ContentImage.cs | 2 +- app/MindWork AI Studio/Chat/ContentText.cs | 5 +-- app/MindWork AI Studio/Chat/IContent.cs | 2 +- .../Components/ChatComponent.razor.cs | 2 +- app/MindWork AI Studio/Pages/Writer.razor.cs | 2 +- .../Provider/Anthropic/ProviderAnthropic.cs | 1 - .../Provider/DeepSeek/ProviderDeepSeek.cs | 1 - .../Provider/Fireworks/ProviderFireworks.cs | 1 - .../Provider/GWDG/ProviderGWDG.cs | 1 - .../Provider/Google/ProviderGoogle.cs | 1 - .../Provider/Groq/ProviderGroq.cs | 1 - .../Provider/Helmholtz/ProviderHelmholtz.cs | 1 - .../Provider/Mistral/ProviderMistral.cs | 1 - .../Provider/OpenAI/ProviderOpenAI.cs | 1 - .../Provider/SelfHosted/ProviderSelfHosted.cs | 1 - .../Provider/X/ProviderX.cs | 1 - .../Settings/DataModel/DataSourceERI_V1.cs | 4 +-- .../AugmentationProcesses/AugmentationOne.cs | 18 ++--------- .../RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs | 26 ++++++++++++++- .../wwwroot/changelog/v0.9.32.md | 6 +++- 23 files changed, 69 insertions(+), 44 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs index f6582c39..fc9fcfff 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs @@ -293,7 +293,7 @@ public abstract partial class AssistantBase : ComponentBase, IMessageBusReceiver // Use the selected provider to get the AI response. // By awaiting this line, we wait for the entire // content to be streamed. - await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.providerSettings.Model, this.lastUserPrompt, this.chatThread); + this.chatThread = await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.providerSettings.Model, this.lastUserPrompt, this.chatThread); this.isProcessing = false; this.StateHasChanged(); diff --git a/app/MindWork AI Studio/Chat/ChatRole.cs b/app/MindWork AI Studio/Chat/ChatRole.cs index d4e61e4b..339be971 100644 --- a/app/MindWork AI Studio/Chat/ChatRole.cs +++ b/app/MindWork AI Studio/Chat/ChatRole.cs @@ -12,7 +12,6 @@ public enum ChatRole USER, AI, AGENT, - RAG, } /// <summary> diff --git a/app/MindWork AI Studio/Chat/ChatThread.cs b/app/MindWork AI Studio/Chat/ChatThread.cs index d7dbf9a4..73182e7c 100644 --- a/app/MindWork AI Studio/Chat/ChatThread.cs +++ b/app/MindWork AI Studio/Chat/ChatThread.cs @@ -40,6 +40,11 @@ public sealed record ChatThread /// </summary> public IReadOnlyList<DataSourceAgentSelected> AISelectedDataSources { get; set; } = []; + /// <summary> + /// The augmented data for this chat thread. Will be inserted into the system prompt. + /// </summary> + public string AugmentedData { get; set; } = string.Empty; + /// <summary> /// The name of the chat thread. Usually generated by an AI model or manually edited by the user. /// </summary> @@ -74,31 +79,48 @@ public sealed record ChatThread /// <returns>The prepared system prompt.</returns> public string PrepareSystemPrompt(SettingsManager settingsManager, ChatThread chatThread, ILogger logger) { + var isAugmentedDataAvailable = !string.IsNullOrWhiteSpace(chatThread.AugmentedData); + var systemPromptWithAugmentedData = isAugmentedDataAvailable switch + { + true => $""" + {chatThread.SystemPrompt} + + {chatThread.AugmentedData} + """, + + false => chatThread.SystemPrompt, + }; + + if(isAugmentedDataAvailable) + logger.LogInformation("Augmented data is available for the chat thread."); + else + logger.LogInformation("No augmented data is available for the chat thread."); + // // Prepare the system prompt: // string systemPromptText; var logMessage = $"Using no profile for chat thread '{chatThread.Name}'."; if (string.IsNullOrWhiteSpace(chatThread.SelectedProfile)) - systemPromptText = chatThread.SystemPrompt; + systemPromptText = systemPromptWithAugmentedData; else { if(!Guid.TryParse(chatThread.SelectedProfile, out var profileId)) - systemPromptText = chatThread.SystemPrompt; + systemPromptText = systemPromptWithAugmentedData; else { if(chatThread.SelectedProfile == Profile.NO_PROFILE.Id || profileId == Guid.Empty) - systemPromptText = chatThread.SystemPrompt; + systemPromptText = systemPromptWithAugmentedData; else { var profile = settingsManager.ConfigurationData.Profiles.FirstOrDefault(x => x.Id == chatThread.SelectedProfile); if(profile == default) - systemPromptText = chatThread.SystemPrompt; + systemPromptText = systemPromptWithAugmentedData; else { logMessage = $"Using profile '{profile.Name}' for chat thread '{chatThread.Name}'."; systemPromptText = $""" - {chatThread.SystemPrompt} + {systemPromptWithAugmentedData} {profile.ToSystemPrompt()} """; diff --git a/app/MindWork AI Studio/Chat/ContentImage.cs b/app/MindWork AI Studio/Chat/ContentImage.cs index 9f09e87c..c7e785eb 100644 --- a/app/MindWork AI Studio/Chat/ContentImage.cs +++ b/app/MindWork AI Studio/Chat/ContentImage.cs @@ -28,7 +28,7 @@ public sealed class ContentImage : IContent, IImageSource public Func<Task> StreamingEvent { get; set; } = () => Task.CompletedTask; /// <inheritdoc /> - public Task CreateFromProviderAsync(IProvider provider, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default) + public Task<ChatThread> CreateFromProviderAsync(IProvider provider, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default) { throw new NotImplementedException(); } diff --git a/app/MindWork AI Studio/Chat/ContentText.cs b/app/MindWork AI Studio/Chat/ContentText.cs index 82b5334c..0dccd262 100644 --- a/app/MindWork AI Studio/Chat/ContentText.cs +++ b/app/MindWork AI Studio/Chat/ContentText.cs @@ -36,10 +36,10 @@ public sealed class ContentText : IContent public Func<Task> StreamingEvent { get; set; } = () => Task.CompletedTask; /// <inheritdoc /> - public async Task CreateFromProviderAsync(IProvider provider, Model chatModel, IContent? lastPrompt, ChatThread? chatThread, CancellationToken token = default) + public async Task<ChatThread> CreateFromProviderAsync(IProvider provider, Model chatModel, IContent? lastPrompt, ChatThread? chatThread, CancellationToken token = default) { if(chatThread is null) - return; + return new(); // Call the RAG process. Right now, we only have one RAG process: if (lastPrompt is not null) @@ -115,6 +115,7 @@ public sealed class ContentText : IContent // Inform the UI that the streaming is done: await this.StreamingDone(); + return chatThread; } #endregion diff --git a/app/MindWork AI Studio/Chat/IContent.cs b/app/MindWork AI Studio/Chat/IContent.cs index 8ca94025..be3bf097 100644 --- a/app/MindWork AI Studio/Chat/IContent.cs +++ b/app/MindWork AI Studio/Chat/IContent.cs @@ -41,7 +41,7 @@ public interface IContent /// <summary> /// Uses the provider to create the content. /// </summary> - public Task CreateFromProviderAsync(IProvider provider, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default); + public Task<ChatThread> CreateFromProviderAsync(IProvider provider, Model chatModel, IContent? lastPrompt, ChatThread? chatChatThread, CancellationToken token = default); /// <summary> /// Returns the corresponding ERI content type. diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor.cs b/app/MindWork AI Studio/Components/ChatComponent.razor.cs index 67d805d2..2e05c0fe 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor.cs +++ b/app/MindWork AI Studio/Components/ChatComponent.razor.cs @@ -475,7 +475,7 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable // Use the selected provider to get the AI response. // By awaiting this line, we wait for the entire // content to be streamed. - await aiText.CreateFromProviderAsync(this.Provider.CreateProvider(this.Logger), this.Provider.Model, lastUserPrompt, this.ChatThread, this.cancellationTokenSource.Token); + this.ChatThread = await aiText.CreateFromProviderAsync(this.Provider.CreateProvider(this.Logger), this.Provider.Model, lastUserPrompt, this.ChatThread, this.cancellationTokenSource.Token); } this.cancellationTokenSource = null; diff --git a/app/MindWork AI Studio/Pages/Writer.razor.cs b/app/MindWork AI Studio/Pages/Writer.razor.cs index 76409c32..42b23abc 100644 --- a/app/MindWork AI Studio/Pages/Writer.razor.cs +++ b/app/MindWork AI Studio/Pages/Writer.razor.cs @@ -139,7 +139,7 @@ public partial class Writer : MSGComponentBase, IAsyncDisposable this.isStreaming = true; this.StateHasChanged(); - await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.providerSettings.Model, lastUserPrompt, this.chatThread); + this.chatThread = await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.providerSettings.Model, lastUserPrompt, this.chatThread); this.suggestion = aiText.Text; this.isStreaming = false; diff --git a/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs b/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs index a900095d..7693d21f 100644 --- a/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs +++ b/app/MindWork AI Studio/Provider/Anthropic/ProviderAnthropic.cs @@ -38,7 +38,6 @@ public sealed class ProviderAnthropic(ILogger logger) : BaseProvider("https://ap ChatRole.USER => "user", ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", - ChatRole.RAG => "assistant", _ => "user", }, diff --git a/app/MindWork AI Studio/Provider/DeepSeek/ProviderDeepSeek.cs b/app/MindWork AI Studio/Provider/DeepSeek/ProviderDeepSeek.cs index c58e914b..b4ce57a0 100644 --- a/app/MindWork AI Studio/Provider/DeepSeek/ProviderDeepSeek.cs +++ b/app/MindWork AI Studio/Provider/DeepSeek/ProviderDeepSeek.cs @@ -49,7 +49,6 @@ public sealed class ProviderDeepSeek(ILogger logger) : BaseProvider("https://api ChatRole.USER => "user", ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", - ChatRole.RAG => "assistant", ChatRole.SYSTEM => "system", _ => "user", diff --git a/app/MindWork AI Studio/Provider/Fireworks/ProviderFireworks.cs b/app/MindWork AI Studio/Provider/Fireworks/ProviderFireworks.cs index 88801a1f..66817fc2 100644 --- a/app/MindWork AI Studio/Provider/Fireworks/ProviderFireworks.cs +++ b/app/MindWork AI Studio/Provider/Fireworks/ProviderFireworks.cs @@ -49,7 +49,6 @@ public class ProviderFireworks(ILogger logger) : BaseProvider("https://api.firew ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", ChatRole.SYSTEM => "system", - ChatRole.RAG => "assistant", _ => "user", }, diff --git a/app/MindWork AI Studio/Provider/GWDG/ProviderGWDG.cs b/app/MindWork AI Studio/Provider/GWDG/ProviderGWDG.cs index 40054cf8..c0562a69 100644 --- a/app/MindWork AI Studio/Provider/GWDG/ProviderGWDG.cs +++ b/app/MindWork AI Studio/Provider/GWDG/ProviderGWDG.cs @@ -49,7 +49,6 @@ public sealed class ProviderGWDG(ILogger logger) : BaseProvider("https://chat-ai ChatRole.USER => "user", ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", - ChatRole.RAG => "assistant", ChatRole.SYSTEM => "system", _ => "user", diff --git a/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs b/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs index 4fd12ab6..942cb245 100644 --- a/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs +++ b/app/MindWork AI Studio/Provider/Google/ProviderGoogle.cs @@ -50,7 +50,6 @@ public class ProviderGoogle(ILogger logger) : BaseProvider("https://generativela ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", ChatRole.SYSTEM => "system", - ChatRole.RAG => "assistant", _ => "user", }, diff --git a/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs b/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs index 10e8899b..f32a31b5 100644 --- a/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs +++ b/app/MindWork AI Studio/Provider/Groq/ProviderGroq.cs @@ -50,7 +50,6 @@ public class ProviderGroq(ILogger logger) : BaseProvider("https://api.groq.com/o ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", ChatRole.SYSTEM => "system", - ChatRole.RAG => "assistant", _ => "user", }, diff --git a/app/MindWork AI Studio/Provider/Helmholtz/ProviderHelmholtz.cs b/app/MindWork AI Studio/Provider/Helmholtz/ProviderHelmholtz.cs index 005475e8..b8450503 100644 --- a/app/MindWork AI Studio/Provider/Helmholtz/ProviderHelmholtz.cs +++ b/app/MindWork AI Studio/Provider/Helmholtz/ProviderHelmholtz.cs @@ -49,7 +49,6 @@ public sealed class ProviderHelmholtz(ILogger logger) : BaseProvider("https://ap ChatRole.USER => "user", ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", - ChatRole.RAG => "assistant", ChatRole.SYSTEM => "system", _ => "user", diff --git a/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs b/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs index 4395920a..024f60d3 100644 --- a/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs +++ b/app/MindWork AI Studio/Provider/Mistral/ProviderMistral.cs @@ -48,7 +48,6 @@ public sealed class ProviderMistral(ILogger logger) : BaseProvider("https://api. ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", ChatRole.SYSTEM => "system", - ChatRole.RAG => "assistant", _ => "user", }, diff --git a/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs b/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs index f9019259..ed092174 100644 --- a/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs +++ b/app/MindWork AI Studio/Provider/OpenAI/ProviderOpenAI.cs @@ -76,7 +76,6 @@ public sealed class ProviderOpenAI(ILogger logger) : BaseProvider("https://api.o ChatRole.USER => "user", ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", - ChatRole.RAG => "assistant", ChatRole.SYSTEM => systemPromptRole, _ => "user", diff --git a/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs b/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs index 73c101a6..4ba45c6b 100644 --- a/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs +++ b/app/MindWork AI Studio/Provider/SelfHosted/ProviderSelfHosted.cs @@ -46,7 +46,6 @@ public sealed class ProviderSelfHosted(ILogger logger, Host host, string hostnam ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", ChatRole.SYSTEM => "system", - ChatRole.RAG => "assistant", _ => "user", }, diff --git a/app/MindWork AI Studio/Provider/X/ProviderX.cs b/app/MindWork AI Studio/Provider/X/ProviderX.cs index df927d73..a8334c8d 100644 --- a/app/MindWork AI Studio/Provider/X/ProviderX.cs +++ b/app/MindWork AI Studio/Provider/X/ProviderX.cs @@ -50,7 +50,6 @@ public sealed class ProviderX(ILogger logger) : BaseProvider("https://api.x.ai/v ChatRole.AI => "assistant", ChatRole.AGENT => "assistant", ChatRole.SYSTEM => "system", - ChatRole.RAG => "assistant", _ => "user", }, diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs index a9e40231..d02c6bfe 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs @@ -97,7 +97,7 @@ public readonly record struct DataSourceERI_V1 : IERIDataSource Links = eriContext.Links, Category = eriContext.Type.ToRetrievalContentCategory(), MatchedText = eriContext.MatchedContent, - DataSourceName = eriContext.Name, + DataSourceName = this.Name, SurroundingContent = eriContext.SurroundingContent, }); break; @@ -111,7 +111,7 @@ public readonly record struct DataSourceERI_V1 : IERIDataSource Source = eriContext.MatchedContent, Category = eriContext.Type.ToRetrievalContentCategory(), SourceType = ContentImageSource.BASE64, - DataSourceName = eriContext.Name, + DataSourceName = this.Name, }); break; diff --git a/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs b/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs index fd6e30af..fff91251 100644 --- a/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs +++ b/app/MindWork AI Studio/Tools/RAG/AugmentationProcesses/AugmentationOne.cs @@ -66,22 +66,8 @@ public sealed class AugmentationOne : IAugmentationProcess // Let's convert all retrieval contexts to Markdown: await retrievalContexts.AsMarkdown(sb, token); - // - // Append the entire augmentation to the chat thread, - // just before the user prompt: - // - chatThread.Blocks.Insert(chatThread.Blocks.Count - 1, new() - { - Role = ChatRole.RAG, - Time = DateTimeOffset.UtcNow, - ContentType = ContentType.TEXT, - HideFromUser = true, - Content = new ContentText - { - Text = sb.ToString(), - } - }); - + // Add the augmented data to the chat thread: + chatThread.AugmentedData = sb.ToString(); return chatThread; } diff --git a/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs b/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs index 13e32500..ae7c078b 100644 --- a/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs +++ b/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs @@ -38,6 +38,30 @@ public sealed class AISrcSelWithRetCtxVal : IRagProcess // makes sense to proceed with the RAG process: var proceedWithRAG = true; + // + // We read the last block in the chat thread. We need to re-arrange + // the order of blocks later, after the augmentation process takes + // place: + // + if(chatThread.Blocks.Count == 0) + { + logger.LogError("The chat thread is empty. Skipping the RAG process."); + return chatThread; + } + + if (chatThread.Blocks.Last().Role != ChatRole.AI) + { + logger.LogError("The last block in the chat thread is not the AI block. There is something wrong with the chat thread. Skipping the RAG process."); + return chatThread; + } + + // + // At this point in time, the chat thread contains already the + // last block, which is the waiting AI block. We need to remove + // this block before we call some parts of the RAG process: + // + var chatThreadWithoutWaitingAIBlock = chatThread with { Blocks = chatThread.Blocks[..^1] }; + // // When the user wants to bind data sources to the chat, we // have to check if the data sources are available for the @@ -84,7 +108,7 @@ public sealed class AISrcSelWithRetCtxVal : IRagProcess // var retrievalTasks = new List<Task<IReadOnlyList<IRetrievalContext>>>(selectedDataSources.Count); foreach (var dataSource in selectedDataSources) - retrievalTasks.Add(dataSource.RetrieveDataAsync(lastPrompt, chatThread, token)); + retrievalTasks.Add(dataSource.RetrieveDataAsync(lastPrompt, chatThreadWithoutWaitingAIBlock, token)); // // Wait for all retrieval tasks to finish: diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md index 5cdac4d8..007b7d72 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md @@ -3,4 +3,8 @@ - Improved the ERI client to expect JSON responses and send JSON requests using camel case. - Improved the ERI client to raise an error when the server responds with additional JSON data that is not expected. - Improved the error handling in the ERI data source info dialog in cases where servers respond with an invalid message. -- Improved the error handling for the entire RAG process. \ No newline at end of file +- Improved the error handling for the entire RAG process. +- Improved chat thread persistence after modifications through the RAG process. +- Improved the augmentation and generation part of RAG by passing the augmented data into the system prompt. +- Fixed the chat thread we use for the data retrieval by removing the last block, which is meant to be for the final AI answer. +- Fixed the data source name for ERI data sources when performing data retrieval. \ No newline at end of file From 99622cec48b076da85b413cb25943038a5f1fbcb Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 8 Mar 2025 14:23:24 +0100 Subject: [PATCH 054/110] Fixed the default data source selection when replacing the chat (#315) --- app/MindWork AI Studio/Components/ChatComponent.razor.cs | 3 +++ app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor.cs b/app/MindWork AI Studio/Components/ChatComponent.razor.cs index 2e05c0fe..d8dee123 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor.cs +++ b/app/MindWork AI Studio/Components/ChatComponent.razor.cs @@ -275,6 +275,9 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable { var chatDefaultOptions = this.SettingsManager.ConfigurationData.Chat.PreselectedDataSourceOptions.CreateCopy(); this.earlyDataSourceOptions = chatDefaultOptions; + if(this.ChatThread is not null) + this.ChatThread.DataSourceOptions = chatDefaultOptions; + this.dataSourceSelectionComponent?.ChangeOptionWithoutSaving(chatDefaultOptions); } diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md index 007b7d72..7289da82 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md @@ -7,4 +7,5 @@ - Improved chat thread persistence after modifications through the RAG process. - Improved the augmentation and generation part of RAG by passing the augmented data into the system prompt. - Fixed the chat thread we use for the data retrieval by removing the last block, which is meant to be for the final AI answer. -- Fixed the data source name for ERI data sources when performing data retrieval. \ No newline at end of file +- Fixed the data source name for ERI data sources when performing data retrieval. +- Fixed the default data source selection when replacing the current chat with a new one. \ No newline at end of file From 371731ac131d783e953acd8b5a57bc718e34c1b3 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 8 Mar 2025 14:38:38 +0100 Subject: [PATCH 055/110] Upgraded dependencies (#316) --- .../MindWork AI Studio.csproj | 2 +- app/MindWork AI Studio/packages.lock.json | 8 +-- .../wwwroot/changelog/v0.9.32.md | 3 +- .../SourceCodeRules/SourceCodeRules.csproj | 4 +- runtime/Cargo.lock | 51 +++++++++++-------- runtime/Cargo.toml | 11 ++-- 6 files changed, 45 insertions(+), 34 deletions(-) diff --git a/app/MindWork AI Studio/MindWork AI Studio.csproj b/app/MindWork AI Studio/MindWork AI Studio.csproj index 7160b815..21c02959 100644 --- a/app/MindWork AI Studio/MindWork AI Studio.csproj +++ b/app/MindWork AI Studio/MindWork AI Studio.csproj @@ -46,7 +46,7 @@ <ItemGroup> <PackageReference Include="CodeBeam.MudBlazor.Extensions" Version="7.1.0" /> - <PackageReference Include="HtmlAgilityPack" Version="1.11.72" /> + <PackageReference Include="HtmlAgilityPack" Version="1.11.74" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.2" /> <PackageReference Include="MudBlazor" Version="7.16.0" /> <PackageReference Include="MudBlazor.Markdown" Version="7.14.0" /> diff --git a/app/MindWork AI Studio/packages.lock.json b/app/MindWork AI Studio/packages.lock.json index 5d302021..22246176 100644 --- a/app/MindWork AI Studio/packages.lock.json +++ b/app/MindWork AI Studio/packages.lock.json @@ -18,9 +18,9 @@ }, "HtmlAgilityPack": { "type": "Direct", - "requested": "[1.11.72, )", - "resolved": "1.11.72", - "contentHash": "RNLgXxTFdIGFI+o5l8c2aJ2L5StIRn9Uv8HKR76p7QP4ZUL26wzpWUCWh08xWUdkL2kocl+Xhv6VUu0rA1npVg==" + "requested": "[1.11.74, )", + "resolved": "1.11.74", + "contentHash": "q0wRGbegtr4sZXjCNoV3OeRLTOcTNJQKiO9etNVSKPoTo33unmSK8Ahg36C4jIg/Hd3aw8YnTQjtKpBy+wlOpg==" }, "Microsoft.Extensions.FileProviders.Embedded": { "type": "Direct", @@ -207,6 +207,6 @@ "contentHash": "7WaVMHklpT3Ye2ragqRIwlFRsb6kOk63BOGADV0fan3ulVfGLUYkDi5yNUsZS/7FVNkWbtHAlDLmu4WnHGfqvQ==" } }, - "net8.0/osx-x64": {} + "net8.0/osx-arm64": {} } } \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md index 7289da82..5ff89780 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md @@ -8,4 +8,5 @@ - Improved the augmentation and generation part of RAG by passing the augmented data into the system prompt. - Fixed the chat thread we use for the data retrieval by removing the last block, which is meant to be for the final AI answer. - Fixed the data source name for ERI data sources when performing data retrieval. -- Fixed the default data source selection when replacing the current chat with a new one. \ No newline at end of file +- Fixed the default data source selection when replacing the current chat with a new one. +- Upgraded code dependencies. \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/SourceCodeRules.csproj b/app/SourceCodeRules/SourceCodeRules/SourceCodeRules.csproj index 8cf49a2a..e4a60599 100644 --- a/app/SourceCodeRules/SourceCodeRules/SourceCodeRules.csproj +++ b/app/SourceCodeRules/SourceCodeRules/SourceCodeRules.csproj @@ -19,8 +19,8 @@ <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> - <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0" /> - <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.12.0" /> + <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.13.0" /> + <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.13.0" /> </ItemGroup> </Project> diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index a6422bf5..b67bb21b 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -377,9 +377,12 @@ dependencies = [ [[package]] name = "cc" -version = "1.1.6" +version = "1.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2aba8f4e9906c7ce3c73463f62a7f0c65183ada1a2d47e397cc8810827f9694f" +checksum = "be714c154be609ec7f5dad223a33bf1482fff90472de28f7362806e6d4832b8c" +dependencies = [ + "shlex", +] [[package]] name = "cesu8" @@ -2181,9 +2184,9 @@ dependencies = [ [[package]] name = "keyring" -version = "3.6.1" +version = "3.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f8fe839464d4e4b37d756d7e910063696af79a7e877282cb1825e4ec5f10833" +checksum = "1961983669d57bdfe6c0f3ef8e4c229b5ef751afcc7d87e4271d2f71f6ccfa8b" dependencies = [ "byteorder", "dbus-secret-service", @@ -2214,9 +2217,9 @@ checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.155" +version = "0.2.170" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "875b3680cb2f8f71bdcf9a30f38d48282f5d3c95cbf9b3fa57269bb5d5c06828" [[package]] name = "libdbus-sys" @@ -2261,9 +2264,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.22" +version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" +checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" [[package]] name = "loom" @@ -2365,6 +2368,7 @@ dependencies = [ "rand_chacha 0.9.0", "rcgen", "reqwest 0.12.12", + "ring", "rocket", "serde", "serde_json", @@ -2758,9 +2762,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" [[package]] name = "open" @@ -3557,15 +3561,14 @@ dependencies = [ [[package]] name = "ring" -version = "0.17.8" +version = "0.17.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" +checksum = "70ac5d832aa16abd7d1def883a8545280c20a60f523a370aa3a9617c2b8550ee" dependencies = [ "cc", "cfg-if", "getrandom 0.2.15", "libc", - "spin", "untrusted", "windows-sys 0.52.0", ] @@ -3873,18 +3876,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.217" +version = "1.0.218" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" +checksum = "e8dfc9d19bdbf6d17e22319da49161d5d0108e4188e8b680aef6299eed22df60" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.217" +version = "1.0.218" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" +checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" dependencies = [ "proc-macro2", "quote", @@ -4028,6 +4031,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" version = "1.4.2" @@ -4719,9 +4728,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.42.0" +version = "1.44.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +checksum = "9975ea0f48b5aa3972bf2d888c238182458437cc2a19374b81b25cdf1023fb3a" dependencies = [ "backtrace", "bytes", @@ -4736,9 +4745,9 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.4.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" +checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 0293056e..65be7f4e 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -11,14 +11,14 @@ tauri-build = { version = "1.5", features = [] } [dependencies] tauri = { version = "1.8", features = [ "http-all", "updater", "shell-sidecar", "shell-open", "dialog"] } tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" } -serde = { version = "1.0.217", features = ["derive"] } +serde = { version = "1.0.218", features = ["derive"] } serde_json = "1.0.134" -keyring = { version = "3.6.1", features = ["apple-native", "windows-native", "sync-secret-service"] } +keyring = { version = "3.6.2", features = ["apple-native", "windows-native", "sync-secret-service"] } arboard = "3.4.1" -tokio = { version = "1.42", features = ["rt", "rt-multi-thread", "macros"] } +tokio = { version = "1.44", features = ["rt", "rt-multi-thread", "macros"] } flexi_logger = "0.29.8" -log = { version = "0.4", features = ["kv"] } -once_cell = "1.20" +log = { version = "0.4.26", features = ["kv"] } +once_cell = "1.20.3" rocket = { version = "0.5.1", features = ["json", "tls"] } rand = "0.9" rand_chacha = "0.9" @@ -33,6 +33,7 @@ rcgen = { version = "0.13.2", features = ["pem"] } # Fixes security vulnerability downstream, where the upstream is not fixed yet: url = "2.5" +ring = "0.17.13" [target.'cfg(target_os = "linux")'.dependencies] # See issue https://github.com/tauri-apps/tauri/issues/4470 From 030990ee90affc390b751343ba1400a656ef92b0 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 8 Mar 2025 20:13:08 +0100 Subject: [PATCH 056/110] Improved data security for chat threads (#317) --- app/MindWork AI Studio/Chat/ChatThread.cs | 5 ++ .../Chat/ChatThreadExtensions.cs | 58 +++++++++++++++++++ .../Chat/ContentBlockComponent.razor | 2 +- app/MindWork AI Studio/Chat/ContentText.cs | 7 +++ .../Components/ChatComponent.razor | 12 +++- .../Components/ChatComponent.razor.cs | 20 +++++++ .../RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs | 51 ++++++++++++++++ .../wwwroot/changelog/v0.9.32.md | 2 + 8 files changed, 154 insertions(+), 3 deletions(-) create mode 100644 app/MindWork AI Studio/Chat/ChatThreadExtensions.cs diff --git a/app/MindWork AI Studio/Chat/ChatThread.cs b/app/MindWork AI Studio/Chat/ChatThread.cs index 73182e7c..d6c870aa 100644 --- a/app/MindWork AI Studio/Chat/ChatThread.cs +++ b/app/MindWork AI Studio/Chat/ChatThread.cs @@ -45,6 +45,11 @@ public sealed record ChatThread /// </summary> public string AugmentedData { get; set; } = string.Empty; + /// <summary> + /// The data security to use, derived from the data sources used so far. + /// </summary> + public DataSourceSecurity DataSecurity { get; set; } = DataSourceSecurity.NOT_SPECIFIED; + /// <summary> /// The name of the chat thread. Usually generated by an AI model or manually edited by the user. /// </summary> diff --git a/app/MindWork AI Studio/Chat/ChatThreadExtensions.cs b/app/MindWork AI Studio/Chat/ChatThreadExtensions.cs new file mode 100644 index 00000000..6b1b6500 --- /dev/null +++ b/app/MindWork AI Studio/Chat/ChatThreadExtensions.cs @@ -0,0 +1,58 @@ +using AIStudio.Provider.SelfHosted; +using AIStudio.Settings.DataModel; + +namespace AIStudio.Chat; + +public static class ChatThreadExtensions +{ + /// <summary> + /// Checks if the specified provider is allowed for the chat thread. + /// </summary> + /// <remarks> + /// We don't check if the provider is allowed to use the data sources of the chat thread. + /// That kind of check is done in the RAG process itself.<br/><br/> + /// + /// One thing which is not so obvious: after RAG was used on this thread, the entire chat + /// thread is kind of a data source by itself. Why? Because the augmentation data collected + /// from the data sources is stored in the chat thread. This means we must check if the + /// selected provider is allowed to use this thread's data. + /// </remarks> + /// <param name="chatThread">The chat thread to check.</param> + /// <param name="provider">The provider to check.</param> + /// <returns>True, when the provider is allowed for the chat thread. False, otherwise.</returns> + public static bool IsLLMProviderAllowed<T>(this ChatThread? chatThread, T provider) + { + // No chat thread available means we have a new chat. That's fine: + if (chatThread is null) + return true; + + // The chat thread is available, but the data security is not specified. + // Means, we never used RAG or RAG was enabled, but no data sources were selected. + // That's fine as well: + if (chatThread.DataSecurity is DataSourceSecurity.NOT_SPECIFIED) + return true; + + // + // Is the provider self-hosted? + // + var isSelfHostedProvider = provider switch + { + ProviderSelfHosted => true, + AIStudio.Settings.Provider p => p.IsSelfHosted, + + _ => false, + }; + + // + // Check the chat data security against the selected provider: + // + return isSelfHostedProvider switch + { + // The provider is self-hosted -- we can use any data source: + true => true, + + // The provider is not self-hosted -- it depends on the data security of the chat thread: + false => chatThread.DataSecurity is not DataSourceSecurity.SELF_HOSTED, + }; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Chat/ContentBlockComponent.razor b/app/MindWork AI Studio/Chat/ContentBlockComponent.razor index 826cfdc0..f1c93b65 100644 --- a/app/MindWork AI Studio/Chat/ContentBlockComponent.razor +++ b/app/MindWork AI Studio/Chat/ContentBlockComponent.razor @@ -27,7 +27,7 @@ @if (this.IsLastContentBlock && this.Role is ChatRole.AI && this.RegenerateFunc is not null) { <MudTooltip Text="Regenerate" Placement="Placement.Bottom"> - <MudIconButton Icon="@Icons.Material.Filled.Recycling" Color="Color.Default" OnClick="@this.RegenerateBlock"/> + <MudIconButton Icon="@Icons.Material.Filled.Recycling" Color="Color.Default" Disabled="@(!this.RegenerateEnabled())" OnClick="@this.RegenerateBlock"/> </MudTooltip> } @if (this.RemoveBlockFunc is not null) diff --git a/app/MindWork AI Studio/Chat/ContentText.cs b/app/MindWork AI Studio/Chat/ContentText.cs index 0dccd262..38872edf 100644 --- a/app/MindWork AI Studio/Chat/ContentText.cs +++ b/app/MindWork AI Studio/Chat/ContentText.cs @@ -41,6 +41,13 @@ public sealed class ContentText : IContent if(chatThread is null) return new(); + if(!chatThread.IsLLMProviderAllowed(provider)) + { + var logger = Program.SERVICE_PROVIDER.GetService<ILogger<ContentText>>()!; + logger.LogError("The provider is not allowed for this chat thread due to data security reasons. Skipping the AI process."); + return chatThread; + } + // Call the RAG process. Right now, we only have one RAG process: if (lastPrompt is not null) { diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor b/app/MindWork AI Studio/Components/ChatComponent.razor index 06dd07b2..703d9175 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor +++ b/app/MindWork AI Studio/Components/ChatComponent.razor @@ -24,7 +24,7 @@ IsLastContentBlock="@isLastBlock" IsSecondToLastBlock="@isSecondLastBlock" RegenerateFunc="@this.RegenerateBlock" - RegenerateEnabled="@(() => this.IsProviderSelected)" + RegenerateEnabled="@(() => this.IsProviderSelected && this.ChatThread.IsLLMProviderAllowed(this.Provider))" EditLastBlockFunc="@this.EditLastBlock" EditLastUserBlockFunc="@this.EditLastUserBlock"/> } @@ -46,7 +46,7 @@ Adornment="Adornment.End" AdornmentIcon="@Icons.Material.Filled.Send" OnAdornmentClick="() => this.SendMessage()" - ReadOnly="!this.IsProviderSelected || this.isStreaming" + Disabled="@this.IsInputForbidden()" Immediate="@true" OnKeyUp="this.InputKeyEvent" UserAttributes="@USER_INPUT_ATTRIBUTES" @@ -113,6 +113,14 @@ { <DataSourceSelection @ref="@this.dataSourceSelectionComponent" PopoverTriggerMode="PopoverTriggerMode.BUTTON" PopoverButtonClasses="ma-3" LLMProvider="@this.Provider" DataSourceOptions="@this.GetCurrentDataSourceOptions()" DataSourceOptionsChanged="@(async options => await this.SetCurrentDataSourceOptions(options))" DataSourcesAISelected="@this.GetAgentSelectedDataSources()"/> } + + @if (!this.ChatThread.IsLLMProviderAllowed(this.Provider)) + { + <MudTooltip Text="The selected provider is not allowed in this chat due to data security reasons." Placement="@TOOLBAR_TOOLTIP_PLACEMENT"> + <MudIconButton Icon="@Icons.Material.Filled.Error" Color="Color.Error"/> + </MudTooltip> + } + <MudIconButton /> </MudToolBar> </FooterContent> </InnerScrolling> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor.cs b/app/MindWork AI Studio/Components/ChatComponent.razor.cs index d8dee123..f3b6b742 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor.cs +++ b/app/MindWork AI Studio/Components/ChatComponent.razor.cs @@ -340,6 +340,20 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable this.earlyDataSourceOptions = updatedOptions; } + private bool IsInputForbidden() + { + if (!this.IsProviderSelected) + return true; + + if(this.isStreaming) + return true; + + if(!this.ChatThread.IsLLMProviderAllowed(this.Provider)) + return true; + + return false; + } + private async Task InputKeyEvent(KeyboardEventArgs keyEvent) { if(this.dataSourceSelectionComponent?.IsVisible ?? false) @@ -374,6 +388,9 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable if (!this.IsProviderSelected) return; + if(!this.ChatThread.IsLLMProviderAllowed(this.Provider)) + return; + // We need to blur the focus away from the input field // to be able to clear the field: await this.inputField.BlurAsync(); @@ -776,6 +793,9 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable if(this.ChatThread is null) return; + if(!this.ChatThread.IsLLMProviderAllowed(this.Provider)) + return; + this.ChatThread.Remove(aiBlock, removeForRegenerate: true); this.hasUnsavedChanges = true; this.StateHasChanged(); diff --git a/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs b/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs index ae7c078b..2736f7b0 100644 --- a/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs +++ b/app/MindWork AI Studio/Tools/RAG/RAGProcesses/AISrcSelWithRetCtxVal.cs @@ -1,6 +1,7 @@ using AIStudio.Chat; using AIStudio.Provider; using AIStudio.Settings; +using AIStudio.Settings.DataModel; using AIStudio.Tools.RAG.AugmentationProcesses; using AIStudio.Tools.RAG.DataSourceSelectionProcesses; using AIStudio.Tools.Services; @@ -96,6 +97,56 @@ public sealed class AISrcSelWithRetCtxVal : IRagProcess logger.LogWarning("No data sources are selected. The RAG process is skipped."); proceedWithRAG = false; } + else + { + var previousDataSecurity = chatThread.DataSecurity; + + // + // Update the data security of the chat thread. We consider the current data security + // of the chat thread and the data security of the selected data sources: + // + var dataSecurityRestrictedToSelfHosted = selectedDataSources.Any(x => x.SecurityPolicy is DataSourceSecurity.SELF_HOSTED); + chatThread.DataSecurity = dataSecurityRestrictedToSelfHosted switch + { + // + // + // Case: the data sources which are selected have a security policy + // of SELF_HOSTED (at least one data source). + // + // When the policy was already set to ALLOW_ANY, we restrict it + // to SELF_HOSTED. + // + true => DataSourceSecurity.SELF_HOSTED, + + // + // Case: the data sources which are selected have a security policy + // of ALLOW_ANY (none of the data sources has a SELF_HOSTED policy). + // + // When the policy was already set to SELF_HOSTED, we must keep that. + // + false => chatThread.DataSecurity switch + { + // + // When the policy was not specified yet, we set it to ALLOW_ANY. + // + DataSourceSecurity.NOT_SPECIFIED => DataSourceSecurity.ALLOW_ANY, + DataSourceSecurity.ALLOW_ANY => DataSourceSecurity.ALLOW_ANY, + + // + // When the policy was already set to SELF_HOSTED, we must keep that. + // This is important since the thread might already contain data + // from a data source with a SELF_HOSTED policy. + // + DataSourceSecurity.SELF_HOSTED => DataSourceSecurity.SELF_HOSTED, + + // Default case: we use the current data security of the chat thread. + _ => chatThread.DataSecurity, + } + }; + + if (previousDataSecurity != chatThread.DataSecurity) + logger.LogInformation($"The data security of the chat thread was updated from '{previousDataSecurity}' to '{chatThread.DataSecurity}'."); + } // // Trigger the retrieval part of the (R)AG process: diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md index 5ff89780..fa8328e3 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md @@ -1,5 +1,6 @@ # v0.9.32, build 207 (2025-03-xx xx:xx UTC) - Added the "Community & Code" section to the about page. It includes links to the GitHub repositories and the project website. +- Improved data security by preventing the use of cloud LLMs after confidential data has been retrieved previously. - Improved the ERI client to expect JSON responses and send JSON requests using camel case. - Improved the ERI client to raise an error when the server responds with additional JSON data that is not expected. - Improved the error handling in the ERI data source info dialog in cases where servers respond with an invalid message. @@ -9,4 +10,5 @@ - Fixed the chat thread we use for the data retrieval by removing the last block, which is meant to be for the final AI answer. - Fixed the data source name for ERI data sources when performing data retrieval. - Fixed the default data source selection when replacing the current chat with a new one. +- Fixed the state of the re-generate button in the chat thread, when no provider is selected or the data security is preventing the use of cloud LLMs. - Upgraded code dependencies. \ No newline at end of file From 032c7ee56efb2e7e3e9af91c2db13e5333839670 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 8 Mar 2025 21:04:17 +0100 Subject: [PATCH 057/110] Added the retrieval process section for ERI data sources (#318) --- .../Dialogs/DataSourceERI-V1InfoDialog.razor | 88 +++++++++---------- .../DataSourceERI-V1InfoDialog.razor.cs | 2 + .../Dialogs/DataSourceERI_V1Dialog.razor | 16 +++- .../Dialogs/DataSourceERI_V1Dialog.razor.cs | 26 ++++++ .../Settings/DataModel/DataSourceERI_V1.cs | 5 +- .../Settings/IERIDataSource.cs | 5 ++ .../Tools/Validation/DataSourceValidation.cs | 8 ++ .../wwwroot/changelog/v0.9.32.md | 1 + 8 files changed, 103 insertions(+), 48 deletions(-) diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor index 41344b9b..dd6d2773 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor @@ -42,53 +42,49 @@ else { <MudExpansionPanels Class="mb-3"> - @for (var index = 0; index < this.retrievalInfoformation.Count; index++) - { - var info = this.retrievalInfoformation[index]; - <ExpansionPanel HeaderText="@this.RetrievalName(info)" HeaderIcon="@Icons.Material.Filled.Info" IsExpanded="index == 0"> - <TextInfoLines Label="Description" MaxLines="14" Value="@info.Description" ClipboardTooltipSubject="the retrieval description"/> - <TextInfoLines Label="Parameters" MaxLines="14" Value="@this.RetrievalParameters(info)" ClipboardTooltipSubject="the retrieval parameters"/> - - @if (!string.IsNullOrWhiteSpace(info.Link)) - { - <MudButton Href="@info.Link" Target="_blank" Class="mt-3" Color="Color.Primary" StartIcon="@Icons.Material.Filled.OpenInNew"> - Open web link, show more information - </MudButton> - } + <ExpansionPanel HeaderText="@this.RetrievalName(this.selectedRetrievalInfo)" HeaderIcon="@Icons.Material.Filled.Info"> + <TextInfoLines Label="Description" MaxLines="14" Value="@this.selectedRetrievalInfo.Description" ClipboardTooltipSubject="the retrieval description"/> + <TextInfoLines Label="Parameters" MaxLines="14" Value="@this.RetrievalParameters(this.selectedRetrievalInfo)" ClipboardTooltipSubject="the retrieval parameters"/> - <MudText Typo="Typo.h6" Class="mt-3"> - Embeddings - </MudText> - @* ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract *@ - @if (info.Embeddings is null || !info.Embeddings.Any()) - { - <MudJustifiedText Typo="Typo.body1" Color="Color.Info" Class="mb-3"> - The data source does not provide any embedding information. - </MudJustifiedText> - } - else - { - <MudExpansionPanels> - @for (var embeddingIndex = 0; embeddingIndex < info.Embeddings.Count; embeddingIndex++) - { - var embedding = info.Embeddings[embeddingIndex]; - <ExpansionPanel HeaderText="@embedding.EmbeddingName" HeaderIcon="@Icons.Material.Filled.Info" IsExpanded="embeddingIndex == 0"> - <TextInfoLine Icon="@Icons.Material.Filled.FormatShapes" Label="Type" Value="@embedding.EmbeddingType" ClipboardTooltipSubject="the embedding type"/> - <TextInfoLines Label="Description" MaxLines="14" Value="@embedding.Description" ClipboardTooltipSubject="the embedding description"/> - <TextInfoLines Label="When to use" MaxLines="3" Value="@embedding.UsedWhen" ClipboardTooltipSubject="when is the embedding used"/> - - @if (!string.IsNullOrWhiteSpace(embedding.Link)) - { - <MudButton Href="@embedding.Link" Target="_blank" Class="mt-3" Color="Color.Primary" StartIcon="@Icons.Material.Filled.OpenInNew"> - Open web link, show more information - </MudButton> - } - </ExpansionPanel> - } - </MudExpansionPanels> - } - </ExpansionPanel> - } + @if (!string.IsNullOrWhiteSpace(this.selectedRetrievalInfo.Link)) + { + <MudButton Href="@this.selectedRetrievalInfo.Link" Target="_blank" Class="mt-3" Color="Color.Primary" StartIcon="@Icons.Material.Filled.OpenInNew"> + Open web link, show more information + </MudButton> + } + + <MudText Typo="Typo.h6" Class="mt-3"> + Embeddings + </MudText> + @* ReSharper disable once ConditionIsAlwaysTrueOrFalseAccordingToNullableAPIContract *@ + @if (this.selectedRetrievalInfo.Embeddings is null || !this.selectedRetrievalInfo.Embeddings.Any()) + { + <MudJustifiedText Typo="Typo.body1" Color="Color.Info" Class="mb-3"> + The data source does not provide any embedding information. + </MudJustifiedText> + } + else + { + <MudExpansionPanels> + @for (var embeddingIndex = 0; embeddingIndex < this.selectedRetrievalInfo.Embeddings.Count; embeddingIndex++) + { + var embedding = this.selectedRetrievalInfo.Embeddings[embeddingIndex]; + <ExpansionPanel HeaderText="@embedding.EmbeddingName" HeaderIcon="@Icons.Material.Filled.Info" IsExpanded="embeddingIndex == 0"> + <TextInfoLine Icon="@Icons.Material.Filled.FormatShapes" Label="Type" Value="@embedding.EmbeddingType" ClipboardTooltipSubject="the embedding type"/> + <TextInfoLines Label="Description" MaxLines="14" Value="@embedding.Description" ClipboardTooltipSubject="the embedding description"/> + <TextInfoLines Label="When to use" MaxLines="3" Value="@embedding.UsedWhen" ClipboardTooltipSubject="when is the embedding used"/> + + @if (!string.IsNullOrWhiteSpace(embedding.Link)) + { + <MudButton Href="@embedding.Link" Target="_blank" Class="mt-3" Color="Color.Primary" StartIcon="@Icons.Material.Filled.OpenInNew"> + Open web link, show more information + </MudButton> + } + </ExpansionPanel> + } + </MudExpansionPanels> + } + </ExpansionPanel> </MudExpansionPanels> } diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs index 5f5a4428..af173516 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs @@ -42,6 +42,7 @@ public partial class DataSourceERI_V1InfoDialog : ComponentBase, IAsyncDisposabl private string serverDescription = string.Empty; private ProviderType securityRequirements = ProviderType.NONE; private IReadOnlyList<RetrievalInfo> retrievalInfoformation = []; + private RetrievalInfo selectedRetrievalInfo; private bool IsOperationInProgress { get; set; } = true; @@ -130,6 +131,7 @@ public partial class DataSourceERI_V1InfoDialog : ComponentBase, IAsyncDisposabl } this.retrievalInfoformation = retrievalInfoResult.Data ?? []; + this.selectedRetrievalInfo = this.retrievalInfoformation.FirstOrDefault(x => x.Id == this.DataSource.SelectedRetrievalId); this.StateHasChanged(); } catch (Exception e) diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor index fcc9fff0..a37a2d4d 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor @@ -109,11 +109,25 @@ InputType="InputType.Password" UserAttributes="@SPELLCHECK_ATTRIBUTES"/> } + + @if (this.availableRetrievalProcesses.Count > 0) + { + <MudSelect @bind-Value="@this.dataSelectedRetrievalProcess" Text="@this.dataSelectedRetrievalProcess.Name" Label="Select one retrieval process" Class="mb-3" OpenIcon="@Icons.Material.Filled.ExpandMore" AdornmentColor="Color.Info" Adornment="Adornment.Start" Validation="@this.dataSourceValidation.ValidateRetrievalProcess"> + @foreach (var retrievalProcess in this.availableRetrievalProcesses) + { + <MudSelectItem Value="@retrievalProcess"> + @retrievalProcess.Name + </MudSelectItem> + } + </MudSelect> + } <MudSelect @bind-Value="@this.dataSecurityPolicy" Text="@this.dataSecurityPolicy.ToSelectionText()" Label="Your security policy" Class="mb-3" OpenIcon="@Icons.Material.Filled.ExpandMore" AdornmentColor="Color.Info" Adornment="Adornment.Start" Validation="@this.dataSourceValidation.ValidateSecurityPolicy"> @foreach (var policy in Enum.GetValues<DataSourceSecurity>()) { - <MudSelectItem Value="@policy">@policy.ToSelectionText()</MudSelectItem> + <MudSelectItem Value="@policy"> + @policy.ToSelectionText() + </MudSelectItem> } </MudSelect> diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs index e042f92a..dd0f9cea 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs @@ -8,6 +8,8 @@ using AIStudio.Tools.Validation; using Microsoft.AspNetCore.Components; +using RetrievalInfo = AIStudio.Tools.ERIClient.DataModel.RetrievalInfo; + // ReSharper disable InconsistentNaming namespace AIStudio.Dialogs; @@ -59,6 +61,8 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId private int dataPort; private AuthMethod dataAuthMethod; private string dataUsername = string.Empty; + private List<RetrievalInfo> availableRetrievalProcesses = []; + private RetrievalInfo dataSelectedRetrievalProcess; // We get the form reference from Blazor code to validate it manually: private MudForm form = null!; @@ -91,6 +95,9 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId // When editing, we need to load the data: if(this.IsEditing) { + // + // Assign the data to the form fields: + // this.dataEditingPreviousInstanceName = this.DataSource.Name.ToLowerInvariant(); this.dataNum = this.DataSource.Num; this.dataId = this.DataSource.Id; @@ -114,6 +121,12 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId await this.form.Validate(); } } + + // Load the data: + await this.TestConnection(); + + // Select the retrieval process: + this.dataSelectedRetrievalProcess = this.availableRetrievalProcesses.FirstOrDefault(n => n.Id == this.DataSource.SelectedRetrievalId); } await base.OnInitializedAsync(); @@ -153,6 +166,7 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId Username = this.dataUsername, Type = DataSourceType.ERI_V1, SecurityPolicy = this.dataSecurityPolicy, + SelectedRetrievalId = this.dataSelectedRetrievalProcess.Id, }; } @@ -224,6 +238,18 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId this.dataSourceSecurityRequirements = securityRequirementsRequest.Data; + var retrievalInfoRequest = await client.GetRetrievalInfoAsync(cts.Token); + if (!retrievalInfoRequest.Successful) + { + await this.form.Validate(); + + Array.Resize(ref this.dataIssues, this.dataIssues.Length + 1); + this.dataIssues[^1] = retrievalInfoRequest.Message; + return; + } + + this.availableRetrievalProcesses = retrievalInfoRequest.Data ?? []; + this.connectionTested = true; this.connectionSuccessfulTested = true; this.Logger.LogInformation("Connection to the ERI v1 server was successful tested."); diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs index d02c6bfe..c755be8d 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs @@ -51,6 +51,9 @@ public readonly record struct DataSourceERI_V1 : IERIDataSource /// <inheritdoc /> public ERIVersion Version { get; init; } = ERIVersion.V1; + /// <inheritdoc /> + public string SelectedRetrievalId { get; init; } + /// <inheritdoc /> public async Task<IReadOnlyList<IRetrievalContext>> RetrieveDataAsync(IContent lastPrompt, ChatThread thread, CancellationToken token = default) { @@ -74,7 +77,7 @@ public readonly record struct DataSourceERI_V1 : IERIDataSource Thread = await thread.ToERIChatThread(token), MaxMatches = 10, - RetrievalProcessId = null, // The ERI server selects the retrieval process when multiple processes are available + RetrievalProcessId = string.IsNullOrWhiteSpace(this.SelectedRetrievalId) ? null : this.SelectedRetrievalId, Parameters = null, // The ERI server selects useful default parameters }; diff --git a/app/MindWork AI Studio/Settings/IERIDataSource.cs b/app/MindWork AI Studio/Settings/IERIDataSource.cs index 35e37791..55138978 100644 --- a/app/MindWork AI Studio/Settings/IERIDataSource.cs +++ b/app/MindWork AI Studio/Settings/IERIDataSource.cs @@ -29,4 +29,9 @@ public interface IERIDataSource : IExternalDataSource /// The ERI specification to use. /// </summary> public ERIVersion Version { get; init; } + + /// <summary> + /// The ID of the selected retrieval process. + /// </summary> + public string SelectedRetrievalId { get; init; } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs b/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs index b3f85426..d97edb31 100644 --- a/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs +++ b/app/MindWork AI Studio/Tools/Validation/DataSourceValidation.cs @@ -92,6 +92,14 @@ public sealed class DataSourceValidation return null; } + + public string? ValidateRetrievalProcess(RetrievalInfo retrievalInfo) + { + if(retrievalInfo == default) + return "Please select one retrieval process."; + + return null; + } public string? ValidatingName(string dataSourceName) { diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md index fa8328e3..977ec39b 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md @@ -1,5 +1,6 @@ # v0.9.32, build 207 (2025-03-xx xx:xx UTC) - Added the "Community & Code" section to the about page. It includes links to the GitHub repositories and the project website. +- Added the retrieval process section for ERI data sources in the configuration dialog. Like all RAG functions, this is hidden behind the RAG feature flag in the app settings due to its preview status. - Improved data security by preventing the use of cloud LLMs after confidential data has been retrieved previously. - Improved the ERI client to expect JSON responses and send JSON requests using camel case. - Improved the ERI client to raise an error when the server responds with additional JSON data that is not expected. From e11211d215f2bd5129d53e793c2bdec55d7a801d Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 8 Mar 2025 21:13:18 +0100 Subject: [PATCH 058/110] Updated the code contributions section on the supporter page (#319) --- app/MindWork AI Studio/Pages/Supporters.razor | 1 + app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md | 1 + 2 files changed, 2 insertions(+) diff --git a/app/MindWork AI Studio/Pages/Supporters.razor b/app/MindWork AI Studio/Pages/Supporters.razor index d1fc2d3d..91a744a3 100644 --- a/app/MindWork AI Studio/Pages/Supporters.razor +++ b/app/MindWork AI Studio/Pages/Supporters.razor @@ -78,6 +78,7 @@ <MudList T="string"> <Supporter Name="DevNullx64" Type="SupporterType.INDIVIDUAL" URL="https://github.com/DevNullx64" Acknowledgment="Thanks Luc for your build script contribution."/> <Supporter Name="SolsticeSpectrum" Type="SupporterType.INDIVIDUAL" URL="https://github.com/SolsticeSpectrum" Acknowledgment="Thanks for your build script contribution."/> + <Supporter Name="peerschuett" Type="SupporterType.INDIVIDUAL" URL="https://github.com/peerschuett" Acknowledgment="Thanks for your contributions to the project."/> </MudList> </MudPaper> </MudItem> diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md index 977ec39b..bc18a130 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md @@ -12,4 +12,5 @@ - Fixed the data source name for ERI data sources when performing data retrieval. - Fixed the default data source selection when replacing the current chat with a new one. - Fixed the state of the re-generate button in the chat thread, when no provider is selected or the data security is preventing the use of cloud LLMs. +- Updated the code contributions section in the supporter page. Thanks `peerschuett` for being our next contributor. - Upgraded code dependencies. \ No newline at end of file From 4eb51f947a70218d105df4a7a37dfb5af93d0267 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 8 Mar 2025 21:24:39 +0100 Subject: [PATCH 059/110] Prepared release v0.9.32 (#320) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 1 + .../Settings/DataModel/DataSourceERI_V1.cs | 2 +- app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md | 2 +- .../SourceCodeRules/SourceCodeRules.csproj | 4 ++-- metadata.txt | 8 ++++---- runtime/Cargo.lock | 2 +- runtime/Cargo.toml | 2 +- runtime/tauri.conf.json | 2 +- 8 files changed, 12 insertions(+), 11 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index 6981386c..c0f7db9a 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,6 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ + new (207, "v0.9.32, build 207 (2025-03-08 20:15 UTC)", "v0.9.32.md"), new (206, "v0.9.31, build 206 (2025-03-03 15:33 UTC)", "v0.9.31.md"), new (205, "v0.9.30, build 205 (2025-02-24 19:55 UTC)", "v0.9.30.md"), new (204, "v0.9.29, build 204 (2025-02-24 13:48 UTC)", "v0.9.29.md"), diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs index c755be8d..305c1f09 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs @@ -52,7 +52,7 @@ public readonly record struct DataSourceERI_V1 : IERIDataSource public ERIVersion Version { get; init; } = ERIVersion.V1; /// <inheritdoc /> - public string SelectedRetrievalId { get; init; } + public string SelectedRetrievalId { get; init; } = string.Empty; /// <inheritdoc /> public async Task<IReadOnlyList<IRetrievalContext>> RetrieveDataAsync(IContent lastPrompt, ChatThread thread, CancellationToken token = default) diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md index bc18a130..62a9a86c 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.32.md @@ -1,4 +1,4 @@ -# v0.9.32, build 207 (2025-03-xx xx:xx UTC) +# v0.9.32, build 207 (2025-03-08 20:15 UTC) - Added the "Community & Code" section to the about page. It includes links to the GitHub repositories and the project website. - Added the retrieval process section for ERI data sources in the configuration dialog. Like all RAG functions, this is hidden behind the RAG feature flag in the app settings due to its preview status. - Improved data security by preventing the use of cloud LLMs after confidential data has been retrieved previously. diff --git a/app/SourceCodeRules/SourceCodeRules/SourceCodeRules.csproj b/app/SourceCodeRules/SourceCodeRules/SourceCodeRules.csproj index e4a60599..8cf49a2a 100644 --- a/app/SourceCodeRules/SourceCodeRules/SourceCodeRules.csproj +++ b/app/SourceCodeRules/SourceCodeRules/SourceCodeRules.csproj @@ -19,8 +19,8 @@ <PrivateAssets>all</PrivateAssets> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> </PackageReference> - <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.13.0" /> - <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.13.0" /> + <PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0" /> + <PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.12.0" /> </ItemGroup> </Project> diff --git a/metadata.txt b/metadata.txt index e53de536..7f7339d9 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ -0.9.31 -2025-03-03 15:33:03 UTC -206 +0.9.32 +2025-03-08 20:15:02 UTC +207 8.0.113 (commit 8f216348dc) 8.0.13 (commit eba546b0f0) 1.85.0 (commit 4d91de4e4) 7.16.0 1.8.1 -2e84f10a977, release +5a726577ca2, release diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index b67bb21b..a0600468 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -2350,7 +2350,7 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mindwork-ai-studio" -version = "0.9.31" +version = "0.9.32" dependencies = [ "aes", "arboard", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 65be7f4e..a14c4e2b 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindwork-ai-studio" -version = "0.9.31" +version = "0.9.32" edition = "2021" description = "MindWork AI Studio" authors = ["Thorsten Sommer"] diff --git a/runtime/tauri.conf.json b/runtime/tauri.conf.json index cfbe3b3a..09dcf8ff 100644 --- a/runtime/tauri.conf.json +++ b/runtime/tauri.conf.json @@ -6,7 +6,7 @@ }, "package": { "productName": "MindWork AI Studio", - "version": "0.9.31" + "version": "0.9.32" }, "tauri": { "allowlist": { From c5acce7278a30dbc99f2326eb208cd87107d58d2 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 10 Mar 2025 08:46:51 +0100 Subject: [PATCH 060/110] Added next changelog (#321) --- app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md new file mode 100644 index 00000000..6b27d3ea --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md @@ -0,0 +1 @@ +# v0.9.33, build 208 (2025-03-xx xx:xx UTC) From 94028b2c0614ce455066f365754e53892ae2e441 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 11 Mar 2025 09:11:06 +0100 Subject: [PATCH 061/110] Fixed a bug concerning authentication methods for added ERI servers (#323) --- app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs | 3 ++- app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs index dd0f9cea..dd88c1df 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs @@ -190,8 +190,9 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId var cts = new CancellationTokenSource(TimeSpan.FromSeconds(14)); var dataSource = new DataSourceERI_V1 { + AuthMethod = this.dataAuthMethod, Hostname = this.dataHostname, - Port = this.dataPort + Port = this.dataPort, }; using var client = ERIClientFactory.Get(ERIVersion.V1, dataSource); diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md index 6b27d3ea..557fb627 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md @@ -1 +1,2 @@ -# v0.9.33, build 208 (2025-03-xx xx:xx UTC) +# v0.9.33, build 208 (2025-03-11 08:xx UTC) +- Fixed a bug where the authentication methods for added ERI servers were not applied correctly. From 0125f48f6110157deb20d3c5a9f15a65ead18de1 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 11 Mar 2025 09:26:22 +0100 Subject: [PATCH 062/110] Prepared release v0.9.33 (#324) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 1 + app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md | 4 ++-- metadata.txt | 8 ++++---- runtime/Cargo.lock | 2 +- runtime/Cargo.toml | 2 +- runtime/tauri.conf.json | 2 +- 6 files changed, 10 insertions(+), 9 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index c0f7db9a..419f335d 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,6 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ + new (208, "v0.9.33, build 208 (2025-03-11 08:14 UTC)", "v0.9.33.md"), new (207, "v0.9.32, build 207 (2025-03-08 20:15 UTC)", "v0.9.32.md"), new (206, "v0.9.31, build 206 (2025-03-03 15:33 UTC)", "v0.9.31.md"), new (205, "v0.9.30, build 205 (2025-02-24 19:55 UTC)", "v0.9.30.md"), diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md index 557fb627..49725cbe 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.33.md @@ -1,2 +1,2 @@ -# v0.9.33, build 208 (2025-03-11 08:xx UTC) -- Fixed a bug where the authentication methods for added ERI servers were not applied correctly. +# v0.9.33, build 208 (2025-03-11 08:14 UTC) +- Fixed a bug where the authentication methods for added ERI servers were not applied correctly. Thanks Kerstin `KeSah001` for reporting this issue. \ No newline at end of file diff --git a/metadata.txt b/metadata.txt index 7f7339d9..50af0bcd 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ -0.9.32 -2025-03-08 20:15:02 UTC -207 +0.9.33 +2025-03-11 08:14:02 UTC +208 8.0.113 (commit 8f216348dc) 8.0.13 (commit eba546b0f0) 1.85.0 (commit 4d91de4e4) 7.16.0 1.8.1 -5a726577ca2, release +94028b2c061, release diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index a0600468..c1311ce5 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -2350,7 +2350,7 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mindwork-ai-studio" -version = "0.9.32" +version = "0.9.33" dependencies = [ "aes", "arboard", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index a14c4e2b..307dc670 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindwork-ai-studio" -version = "0.9.32" +version = "0.9.33" edition = "2021" description = "MindWork AI Studio" authors = ["Thorsten Sommer"] diff --git a/runtime/tauri.conf.json b/runtime/tauri.conf.json index 09dcf8ff..77dfcb48 100644 --- a/runtime/tauri.conf.json +++ b/runtime/tauri.conf.json @@ -6,7 +6,7 @@ }, "package": { "productName": "MindWork AI Studio", - "version": "0.9.32" + "version": "0.9.33" }, "tauri": { "allowlist": { From 2429788ccc02f211dfcfa1b4a1c806cca7538cb1 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 11 Mar 2025 13:57:47 +0100 Subject: [PATCH 063/110] Fixed secret retrieval for connection testing while adding an ERI data source (#325) --- .../Agents/AgentDataSourceSelection.cs | 2 +- .../DataSourceERI-V1InfoDialog.razor.cs | 2 +- .../Dialogs/DataSourceERI_V1Dialog.razor.cs | 12 +--- .../Settings/DataModel/DataSourceERI_V1.cs | 2 +- .../Tools/ERIClient/ERIClientBase.cs | 8 ++- .../Tools/ERIClient/ERIClientFactory.cs | 2 +- .../Tools/ERIClient/ERIClientV1.cs | 56 ++++++++++++------- .../Tools/ERIClient/IERIClient.cs | 5 +- .../Tools/Services/DataSourceService.cs | 2 +- .../wwwroot/changelog/v0.9.34.md | 2 + 10 files changed, 53 insertions(+), 40 deletions(-) create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.34.md diff --git a/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs b/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs index 74357139..6a0f0957 100644 --- a/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs +++ b/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs @@ -199,7 +199,7 @@ public sealed class AgentDataSourceSelection (ILogger<AgentDataSourceSelection> // Call the ERI server to get the server description: // using var eriClient = ERIClientFactory.Get(eriDataSource.Version, eriDataSource)!; - var authResponse = await eriClient.AuthenticateAsync(eriDataSource, rustService, token); + var authResponse = await eriClient.AuthenticateAsync(rustService, cancellationToken: token); if (authResponse.Successful) { var serverDescriptionResponse = await eriClient.GetDataSourceInfoAsync(token); diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs index af173516..75b76bdb 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs @@ -98,7 +98,7 @@ public partial class DataSourceERI_V1InfoDialog : ComponentBase, IAsyncDisposabl return; } - var loginResult = await client.AuthenticateAsync(this.DataSource, this.RustService); + var loginResult = await client.AuthenticateAsync(this.RustService); if (!loginResult.Successful) { this.dataIssues.Add(loginResult.Message); diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs index dd88c1df..81612a8e 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs @@ -188,14 +188,8 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId try { var cts = new CancellationTokenSource(TimeSpan.FromSeconds(14)); - var dataSource = new DataSourceERI_V1 - { - AuthMethod = this.dataAuthMethod, - Hostname = this.dataHostname, - Port = this.dataPort, - }; - - using var client = ERIClientFactory.Get(ERIVersion.V1, dataSource); + this.DataSource = this.CreateDataSource(); + using var client = ERIClientFactory.Get(ERIVersion.V1, this.DataSource); if(client is null) { await this.form.Validate(); @@ -217,7 +211,7 @@ public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId this.availableAuthMethods = authSchemes.Data!.Select(n => n.AuthMethod).ToList(); - var loginResult = await client.AuthenticateAsync(this.DataSource, this.RustService, cts.Token); + var loginResult = await client.AuthenticateAsync(this.RustService, this.dataSecret, cts.Token); if (!loginResult.Successful) { await this.form.Validate(); diff --git a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs index 305c1f09..cc43a3eb 100644 --- a/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs +++ b/app/MindWork AI Studio/Settings/DataModel/DataSourceERI_V1.cs @@ -62,7 +62,7 @@ public readonly record struct DataSourceERI_V1 : IERIDataSource var logger = Program.SERVICE_PROVIDER.GetRequiredService<ILogger<DataSourceERI_V1>>(); using var eriClient = ERIClientFactory.Get(this.Version, this)!; - var authResponse = await eriClient.AuthenticateAsync(this, rustService, token); + var authResponse = await eriClient.AuthenticateAsync(rustService, cancellationToken: token); if (authResponse.Successful) { var retrievalRequest = new RetrievalRequest diff --git a/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs b/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs index 58811b07..5458bedc 100644 --- a/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs +++ b/app/MindWork AI Studio/Tools/ERIClient/ERIClientBase.cs @@ -1,10 +1,14 @@ using System.Text.Json; using System.Text.Json.Serialization; +using AIStudio.Settings; + namespace AIStudio.Tools.ERIClient; -public abstract class ERIClientBase(string baseAddress) : IDisposable +public abstract class ERIClientBase(IERIDataSource dataSource) : IDisposable { + protected readonly IERIDataSource dataSource = dataSource; + protected static readonly JsonSerializerOptions JSON_OPTIONS = new() { WriteIndented = true, @@ -21,7 +25,7 @@ public abstract class ERIClientBase(string baseAddress) : IDisposable protected readonly HttpClient httpClient = new() { - BaseAddress = new Uri(baseAddress), + BaseAddress = new Uri($"{dataSource.Hostname}:{dataSource.Port}"), }; protected string securityToken = string.Empty; diff --git a/app/MindWork AI Studio/Tools/ERIClient/ERIClientFactory.cs b/app/MindWork AI Studio/Tools/ERIClient/ERIClientFactory.cs index 28581646..0beb0f64 100644 --- a/app/MindWork AI Studio/Tools/ERIClient/ERIClientFactory.cs +++ b/app/MindWork AI Studio/Tools/ERIClient/ERIClientFactory.cs @@ -7,7 +7,7 @@ public static class ERIClientFactory { public static IERIClient? Get(ERIVersion version, IERIDataSource dataSource) => version switch { - ERIVersion.V1 => new ERIClientV1($"{dataSource.Hostname}:{dataSource.Port}"), + ERIVersion.V1 => new ERIClientV1(dataSource), _ => null }; diff --git a/app/MindWork AI Studio/Tools/ERIClient/ERIClientV1.cs b/app/MindWork AI Studio/Tools/ERIClient/ERIClientV1.cs index c57d927a..178849dd 100644 --- a/app/MindWork AI Studio/Tools/ERIClient/ERIClientV1.cs +++ b/app/MindWork AI Studio/Tools/ERIClient/ERIClientV1.cs @@ -7,7 +7,7 @@ using AIStudio.Tools.Services; namespace AIStudio.Tools.ERIClient; -public class ERIClientV1(string baseAddress) : ERIClientBase(baseAddress), IERIClient +public class ERIClientV1(IERIDataSource dataSource) : ERIClientBase(dataSource), IERIClient { #region Implementation of IERIClient @@ -59,13 +59,13 @@ public class ERIClientV1(string baseAddress) : ERIClientBase(baseAddress), IERIC } } - public async Task<APIResponse<AuthResponse>> AuthenticateAsync(IERIDataSource dataSource, RustService rustService, CancellationToken cancellationToken = default) + public async Task<APIResponse<AuthResponse>> AuthenticateAsync(RustService rustService, string? temporarySecret = null, CancellationToken cancellationToken = default) { try { - var authMethod = dataSource.AuthMethod; - var username = dataSource.Username; - switch (dataSource.AuthMethod) + var authMethod = this.dataSource.AuthMethod; + var username = this.dataSource.Username; + switch (this.dataSource.AuthMethod) { case AuthMethod.NONE: using (var request = new HttpRequestMessage(HttpMethod.Post, $"auth?authMethod={authMethod}")) @@ -99,17 +99,24 @@ public class ERIClientV1(string baseAddress) : ERIClientBase(baseAddress), IERIC } case AuthMethod.USERNAME_PASSWORD: - var passwordResponse = await rustService.GetSecret(dataSource); - if (!passwordResponse.Success) + string password; + if (string.IsNullOrWhiteSpace(temporarySecret)) { - return new() + var passwordResponse = await rustService.GetSecret(this.dataSource); + if (!passwordResponse.Success) { - Successful = false, - Message = "Failed to retrieve the password." - }; - } + return new() + { + Successful = false, + Message = "Failed to retrieve the password." + }; + } + + password = await passwordResponse.Secret.Decrypt(Program.ENCRYPTION); + } + else + password = temporarySecret; - var password = await passwordResponse.Secret.Decrypt(Program.ENCRYPTION); using (var request = new HttpRequestMessage(HttpMethod.Post, $"auth?authMethod={authMethod}")) { // We must send both values inside the header. The username field is named 'user'. @@ -146,17 +153,24 @@ public class ERIClientV1(string baseAddress) : ERIClientBase(baseAddress), IERIC } case AuthMethod.TOKEN: - var tokenResponse = await rustService.GetSecret(dataSource); - if (!tokenResponse.Success) + string token; + if (string.IsNullOrWhiteSpace(temporarySecret)) { - return new() + var tokenResponse = await rustService.GetSecret(this.dataSource); + if (!tokenResponse.Success) { - Successful = false, - Message = "Failed to retrieve the access token." - }; - } + return new() + { + Successful = false, + Message = "Failed to retrieve the access token." + }; + } + + token = await tokenResponse.Secret.Decrypt(Program.ENCRYPTION); + } + else + token = temporarySecret; - var token = await tokenResponse.Secret.Decrypt(Program.ENCRYPTION); using (var request = new HttpRequestMessage(HttpMethod.Post, $"auth?authMethod={authMethod}")) { request.Headers.Add("Authorization", $"Bearer {token}"); diff --git a/app/MindWork AI Studio/Tools/ERIClient/IERIClient.cs b/app/MindWork AI Studio/Tools/ERIClient/IERIClient.cs index 0408e8d3..80d8c4f7 100644 --- a/app/MindWork AI Studio/Tools/ERIClient/IERIClient.cs +++ b/app/MindWork AI Studio/Tools/ERIClient/IERIClient.cs @@ -1,4 +1,3 @@ -using AIStudio.Settings; using AIStudio.Tools.ERIClient.DataModel; using AIStudio.Tools.Services; @@ -19,11 +18,11 @@ public interface IERIClient : IDisposable /// <summary> /// Authenticate the user to the ERI server. /// </summary> - /// <param name="dataSource">The data source to use.</param> /// <param name="rustService">The Rust service.</param> + /// <param name="temporarySecret">The temporary secret when adding a new data source, and the secret is not yet stored in the OS.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>The authentication response.</returns> - public Task<APIResponse<AuthResponse>> AuthenticateAsync(IERIDataSource dataSource, RustService rustService, CancellationToken cancellationToken = default); + public Task<APIResponse<AuthResponse>> AuthenticateAsync(RustService rustService, string? temporarySecret = null, CancellationToken cancellationToken = default); /// <summary> /// Retrieves the data source information from the ERI server. diff --git a/app/MindWork AI Studio/Tools/Services/DataSourceService.cs b/app/MindWork AI Studio/Tools/Services/DataSourceService.cs index de593088..f545aca5 100644 --- a/app/MindWork AI Studio/Tools/Services/DataSourceService.cs +++ b/app/MindWork AI Studio/Tools/Services/DataSourceService.cs @@ -113,7 +113,7 @@ public sealed class DataSourceService } this.logger.LogInformation($"Authenticating with ERI source '{source.Name}' (id={source.Id})..."); - var loginResult = await client.AuthenticateAsync(eriSource, this.rustService, cancellationTokenSource.Token); + var loginResult = await client.AuthenticateAsync(this.rustService, cancellationToken: cancellationTokenSource.Token); if (!loginResult.Successful) { this.logger.LogWarning($"Authentication with ERI source '{source.Name}' (id={source.Id}) failed. We skip this source. Reason: {loginResult.Message}"); diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.34.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.34.md new file mode 100644 index 00000000..6442ae43 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.34.md @@ -0,0 +1,2 @@ +# v0.9.34, build 209 (2025-03-11 xx:xx UTC) +- Fixed another bug related to ERI server authentication when adding new servers. \ No newline at end of file From eccf65f0a63874039c928b6f3039d90efb9181ee Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 11 Mar 2025 14:12:36 +0100 Subject: [PATCH 064/110] Prepared release v0.9.34 (#326) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 1 + app/MindWork AI Studio/wwwroot/changelog/v0.9.34.md | 2 +- metadata.txt | 8 ++++---- runtime/Cargo.lock | 2 +- runtime/Cargo.toml | 2 +- runtime/tauri.conf.json | 2 +- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index 419f335d..a1ac8d3c 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,6 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ + new (209, "v0.9.34, build 209 (2025-03-11 13:02 UTC)", "v0.9.34.md"), new (208, "v0.9.33, build 208 (2025-03-11 08:14 UTC)", "v0.9.33.md"), new (207, "v0.9.32, build 207 (2025-03-08 20:15 UTC)", "v0.9.32.md"), new (206, "v0.9.31, build 206 (2025-03-03 15:33 UTC)", "v0.9.31.md"), diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.34.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.34.md index 6442ae43..2793accb 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.34.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.34.md @@ -1,2 +1,2 @@ -# v0.9.34, build 209 (2025-03-11 xx:xx UTC) +# v0.9.34, build 209 (2025-03-11 13:02 UTC) - Fixed another bug related to ERI server authentication when adding new servers. \ No newline at end of file diff --git a/metadata.txt b/metadata.txt index 50af0bcd..269ee5de 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ -0.9.33 -2025-03-11 08:14:02 UTC -208 +0.9.34 +2025-03-11 13:02:01 UTC +209 8.0.113 (commit 8f216348dc) 8.0.13 (commit eba546b0f0) 1.85.0 (commit 4d91de4e4) 7.16.0 1.8.1 -94028b2c061, release +2429788ccc0, release diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index c1311ce5..5c30b660 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -2350,7 +2350,7 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mindwork-ai-studio" -version = "0.9.33" +version = "0.9.34" dependencies = [ "aes", "arboard", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 307dc670..112b8d9a 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindwork-ai-studio" -version = "0.9.33" +version = "0.9.34" edition = "2021" description = "MindWork AI Studio" authors = ["Thorsten Sommer"] diff --git a/runtime/tauri.conf.json b/runtime/tauri.conf.json index 77dfcb48..5835c478 100644 --- a/runtime/tauri.conf.json +++ b/runtime/tauri.conf.json @@ -6,7 +6,7 @@ }, "package": { "productName": "MindWork AI Studio", - "version": "0.9.33" + "version": "0.9.34" }, "tauri": { "allowlist": { From 8a23b54e565329414b51f0b777953fe068e9215c Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Wed, 12 Mar 2025 09:06:56 +0100 Subject: [PATCH 065/110] Added next changelog (#328) --- app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md new file mode 100644 index 00000000..388c568f --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md @@ -0,0 +1 @@ +# v0.9.35, build 210 (2025-03-xx xx:xx UTC) \ No newline at end of file From 200964422db1c56d12e339188cc46e7fe434be5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peer=20Sch=C3=BCtt?= <20603780+peerschuett@users.noreply.github.com> Date: Wed, 12 Mar 2025 11:31:01 +0100 Subject: [PATCH 066/110] Included a settings icon to every assistant that lets you edit the settings (#327) --- .../Assistants/Agenda/AssistantAgenda.razor | 2 +- .../Agenda/AssistantAgenda.razor.cs | 4 +- .../Assistants/AssistantBase.razor | 15 ++++-- .../Assistants/AssistantBase.razor.cs | 21 ++++++-- .../Assistants/AssistantBaseCore.cs | 2 +- .../BiasDay/BiasOfTheDayAssistant.razor | 2 +- .../BiasDay/BiasOfTheDayAssistant.razor.cs | 4 +- .../Assistants/Coding/AssistantCoding.razor | 2 +- .../Coding/AssistantCoding.razor.cs | 6 ++- .../Assistants/EMail/AssistantEMail.razor | 2 +- .../Assistants/EMail/AssistantEMail.razor.cs | 6 ++- .../Assistants/ERI/AssistantERI.razor | 2 +- .../Assistants/ERI/AssistantERI.razor.cs | 4 +- .../AssistantGrammarSpelling.razor | 2 +- .../AssistantGrammarSpelling.razor.cs | 6 ++- .../IconFinder/AssistantIconFinder.razor | 2 +- .../IconFinder/AssistantIconFinder.razor.cs | 7 ++- .../JobPosting/AssistantJobPostings.razor | 2 +- .../JobPosting/AssistantJobPostings.razor.cs | 4 +- .../LegalCheck/AssistantLegalCheck.razor | 2 +- .../LegalCheck/AssistantLegalCheck.razor.cs | 6 ++- .../Assistants/MyTasks/AssistantMyTasks.razor | 2 +- .../MyTasks/AssistantMyTasks.razor.cs | 4 +- .../AssistantRewriteImprove.razor | 2 +- .../AssistantRewriteImprove.razor.cs | 6 ++- .../Synonym/AssistantSynonyms.razor | 2 +- .../Synonym/AssistantSynonyms.razor.cs | 5 +- .../AssistantTextSummarizer.razor | 2 +- .../AssistantTextSummarizer.razor.cs | 6 ++- .../Translation/AssistantTranslation.razor | 2 +- .../Translation/AssistantTranslation.razor.cs | 6 ++- .../Components/AssistantBlock.razor | 11 ++-- .../Components/AssistantBlock.razor.cs | 18 +++++-- .../Components/ProviderSelection.razor.cs | 3 +- .../Components/ReadWebContent.razor | 2 +- .../Settings/SettingsPanelAgenda.razor | 32 ------------ .../Settings/SettingsPanelAgenda.razor.cs | 3 -- .../SettingsPanelAgentContentCleaner.razor | 2 +- ...ettingsPanelAgentDataSourceSelection.razor | 2 +- ...PanelAgentRetrievalContextValidation.razor | 2 +- .../Settings/SettingsPanelAssistantBias.razor | 29 ----------- .../Settings/SettingsPanelCoding.razor | 18 ------- .../Settings/SettingsPanelCoding.razor.cs | 3 -- .../Settings/SettingsPanelERIServer.razor | 19 ------- .../Settings/SettingsPanelERIServer.razor.cs | 3 -- .../SettingsPanelGrammarSpelling.razor | 15 ------ .../SettingsPanelGrammarSpelling.razor.cs | 3 -- .../Settings/SettingsPanelIconFinder.razor | 11 ---- .../Settings/SettingsPanelIconFinder.razor.cs | 3 -- .../Settings/SettingsPanelJobPostings.razor | 22 -------- .../SettingsPanelJobPostings.razor.cs | 3 -- .../Settings/SettingsPanelLegalCheck.razor | 14 ------ .../Settings/SettingsPanelLegalCheck.razor.cs | 3 -- .../Settings/SettingsPanelMyTasks.razor | 16 ------ .../Settings/SettingsPanelMyTasks.razor.cs | 3 -- .../Settings/SettingsPanelRewrite.razor | 17 ------- .../Settings/SettingsPanelRewrite.razor.cs | 3 -- .../Settings/SettingsPanelSynonyms.razor | 15 ------ .../Settings/SettingsPanelSynonyms.razor.cs | 3 -- .../SettingsPanelTextSummarizer.razor | 24 --------- .../SettingsPanelTextSummarizer.razor.cs | 3 -- .../Settings/SettingsPanelTranslation.razor | 20 -------- .../SettingsPanelTranslation.razor.cs | 3 -- .../Settings/SettingsPanelWritingEMails.razor | 19 ------- .../SettingsPanelWritingEMails.razor.cs | 3 -- .../Settings/SettingsDialogAgenda.razor | 43 ++++++++++++++++ .../Settings/SettingsDialogAgenda.razor.cs | 5 ++ .../SettingsDialogAssistantBias.razor | 40 +++++++++++++++ .../SettingsDialogAssistantBias.razor.cs} | 5 +- .../Dialogs/Settings/SettingsDialogBase.cs | 50 +++++++++++++++++++ .../Settings/SettingsDialogCoding.razor | 29 +++++++++++ .../Settings/SettingsDialogCoding.razor.cs | 3 ++ .../Settings/SettingsDialogERIServer.razor | 30 +++++++++++ .../Settings/SettingsDialogERIServer.razor.cs | 3 ++ .../SettingsDialogGrammarSpelling.razor | 26 ++++++++++ .../SettingsDialogGrammarSpelling.razor.cs | 3 ++ .../Settings/SettingsDialogIconFinder.razor | 22 ++++++++ .../SettingsDialogIconFinder.razor.cs | 3 ++ .../Settings/SettingsDialogJobPostings.razor | 33 ++++++++++++ .../SettingsDialogJobPostings.razor.cs | 3 ++ .../Settings/SettingsDialogLegalCheck.razor | 24 +++++++++ .../SettingsDialogLegalCheck.razor.cs | 3 ++ .../Settings/SettingsDialogMyTasks.razor | 27 ++++++++++ .../Settings/SettingsDialogMyTasks.razor.cs | 3 ++ .../Settings/SettingsDialogRewrite.razor | 28 +++++++++++ .../Settings/SettingsDialogRewrite.razor.cs | 3 ++ .../Settings/SettingsDialogSynonyms.razor | 26 ++++++++++ .../Settings/SettingsDialogSynonyms.razor.cs | 3 ++ .../SettingsDialogTextSummarizer.razor | 35 +++++++++++++ .../SettingsDialogTextSummarizer.razor.cs | 3 ++ .../Settings/SettingsDialogTranslation.razor | 30 +++++++++++ .../SettingsDialogTranslation.razor.cs | 5 ++ .../SettingsDialogWritingEMails.razor | 30 +++++++++++ .../SettingsDialogWritingEMails.razor.cs | 3 ++ app/MindWork AI Studio/Pages/Assistants.razor | 29 +++++------ app/MindWork AI Studio/Pages/Settings.razor | 37 ++++---------- .../Tools/JsRuntimeExtensions.cs | 3 +- app/MindWork AI Studio/Tools/NoComponent.cs | 16 ++++++ 98 files changed, 685 insertions(+), 411 deletions(-) delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelAgenda.razor delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelAgenda.razor.cs delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelAssistantBias.razor delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelCoding.razor delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelCoding.razor.cs delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelERIServer.razor delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelERIServer.razor.cs delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelGrammarSpelling.razor delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelGrammarSpelling.razor.cs delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelIconFinder.razor delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelIconFinder.razor.cs delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelJobPostings.razor delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelJobPostings.razor.cs delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelLegalCheck.razor delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelLegalCheck.razor.cs delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelMyTasks.razor delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelMyTasks.razor.cs delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelRewrite.razor delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelRewrite.razor.cs delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelSynonyms.razor delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelSynonyms.razor.cs delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelTextSummarizer.razor delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelTextSummarizer.razor.cs delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelTranslation.razor delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelTranslation.razor.cs delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelWritingEMails.razor delete mode 100644 app/MindWork AI Studio/Components/Settings/SettingsPanelWritingEMails.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor rename app/MindWork AI Studio/{Components/Settings/SettingsPanelAssistantBias.razor.cs => Dialogs/Settings/SettingsDialogAssistantBias.razor.cs} (90%) create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogERIServer.razor create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogERIServer.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor.cs create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor create mode 100644 app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor.cs create mode 100644 app/MindWork AI Studio/Tools/NoComponent.cs diff --git a/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor b/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor index 018800c6..f18c9ab7 100644 --- a/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor +++ b/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor @@ -1,5 +1,5 @@ @attribute [Route(Routes.ASSISTANT_AGENDA)] -@inherits AssistantBaseCore +@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogAgenda> <MudTextField T="string" @bind-Text="@this.inputName" Validation="@this.ValidateName" Label="Meeting Name" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Tag" Variant="Variant.Outlined" Margin="Margin.Dense" UserAttributes="@USER_INPUT_ATTRIBUTES" HelperText="Name the meeting, seminar, etc." Placeholder="Weekly jour fixe" Class="mb-3"/> <MudTextField T="string" @bind-Text="@this.inputTopic" Validation="@this.ValidateTopic" Label="Topic" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.EventNote" Variant="Variant.Outlined" Margin="Margin.Dense" UserAttributes="@USER_INPUT_ATTRIBUTES" HelperText="Describe the topic of the meeting, seminar, etc. Is it about quantum computing, software engineering, or is it a general business meeting?" Placeholder="Project meeting" Class="mb-3"/> diff --git a/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor.cs b/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor.cs index 531c2df1..7153efe9 100644 --- a/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor.cs +++ b/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor.cs @@ -1,10 +1,12 @@ using System.Text; using AIStudio.Chat; +using AIStudio.Components.Settings; +using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.Agenda; -public partial class AssistantAgenda : AssistantBaseCore +public partial class AssistantAgenda : AssistantBaseCore<SettingsDialogAgenda> { public override Tools.Components Component => Tools.Components.AGENDA_ASSISTANT; diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor b/app/MindWork AI Studio/Assistants/AssistantBase.razor index 90a86b0e..21d92846 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor @@ -1,4 +1,5 @@ @using AIStudio.Chat +@typeparam TSettings <div class="inner-scrolling-context"> @@ -9,9 +10,16 @@ <InnerScrolling> <ChildContent> <MudForm @ref="@(this.form)" @bind-IsValid="@(this.inputIsValid)" @bind-Errors="@(this.inputIssues)" FieldChanged="@this.TriggerFormChange" Class="pr-2"> - <MudText Typo="Typo.body1" Align="Align.Justify" Class="mb-6"> - @this.Description - </MudText> + <MudGrid Class="mb-2"> + <MudItem xs="10"> + <MudText Typo="Typo.body1" Align="Align.Justify"> + @this.Description + </MudText> + </MudItem> + <MudItem xs="2" Class="d-flex justify-end align-start"> + <MudIconButton Variant="Variant.Filled" Icon="@Icons.Material.Filled.Settings" OnClick="() => this.OpenSettingsDialog()"/> + </MudItem> + </MudGrid> @if (this.Body is not null) { @@ -22,6 +30,7 @@ <MudButton Disabled="@this.SubmitDisabled" Variant="Variant.Filled" Class="mb-3" OnClick="() => this.SubmitAction()" Style="@this.SubmitButtonStyle"> @this.SubmitText </MudButton> + } </MudForm> <Issues IssuesData="@(this.inputIssues)"/> diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs index fc9fcfff..4fd10eb0 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs @@ -1,4 +1,6 @@ using AIStudio.Chat; +using AIStudio.Components.Settings; +using AIStudio.Dialogs.Settings; using AIStudio.Provider; using AIStudio.Settings; using AIStudio.Tools.Services; @@ -9,13 +11,18 @@ using MudBlazor.Utilities; using Timer = System.Timers.Timer; +using DialogOptions = AIStudio.Dialogs.DialogOptions; + namespace AIStudio.Assistants; -public abstract partial class AssistantBase : ComponentBase, IMessageBusReceiver, IDisposable +public abstract partial class AssistantBase<TSettings> : ComponentBase, IMessageBusReceiver, IDisposable where TSettings : IComponent { [Inject] protected SettingsManager SettingsManager { get; init; } = null!; + [Inject] + private IDialogService DialogService { get; init; } = null!; + [Inject] protected IJSRuntime JsRuntime { get; init; } = null!; @@ -35,7 +42,7 @@ public abstract partial class AssistantBase : ComponentBase, IMessageBusReceiver protected NavigationManager NavigationManager { get; init; } = null!; [Inject] - protected ILogger<AssistantBase> Logger { get; init; } = null!; + protected ILogger<AssistantBase<TSettings>> Logger { get; init; } = null!; [Inject] private MudTheme ColorTheme { get; init; } = null!; @@ -68,7 +75,7 @@ public abstract partial class AssistantBase : ComponentBase, IMessageBusReceiver protected abstract string SubmitText { get; } protected abstract Func<Task> SubmitAction { get; } - + protected virtual bool SubmitDisabled => false; private protected virtual RenderFragment? Body => null; @@ -151,7 +158,7 @@ public abstract partial class AssistantBase : ComponentBase, IMessageBusReceiver #region Implementation of IMessageBusReceiver - public string ComponentName => nameof(AssistantBase); + public string ComponentName => nameof(AssistantBase<TSettings>); public Task ProcessMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) { @@ -315,6 +322,12 @@ public abstract partial class AssistantBase : ComponentBase, IMessageBusReceiver return icon; } + protected async Task OpenSettingsDialog() + { + var dialogParameters = new DialogParameters(); + await this.DialogService.ShowAsync<TSettings>("Open Settings", dialogParameters, DialogOptions.FULLSCREEN); + } + protected Task SendToAssistant(Tools.Components destination, SendToButton sendToButton) { if (!destination.AllowSendTo()) diff --git a/app/MindWork AI Studio/Assistants/AssistantBaseCore.cs b/app/MindWork AI Studio/Assistants/AssistantBaseCore.cs index 96b16a1e..eccc8ce5 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBaseCore.cs +++ b/app/MindWork AI Studio/Assistants/AssistantBaseCore.cs @@ -7,7 +7,7 @@ namespace AIStudio.Assistants; // See https://stackoverflow.com/a/77300384/2258393 for why this class is necessary // -public abstract class AssistantBaseCore : AssistantBase +public abstract class AssistantBaseCore<TSettings> : AssistantBase<TSettings> where TSettings : IComponent { private protected sealed override RenderFragment Body => this.BuildRenderTree; diff --git a/app/MindWork AI Studio/Assistants/BiasDay/BiasOfTheDayAssistant.razor b/app/MindWork AI Studio/Assistants/BiasDay/BiasOfTheDayAssistant.razor index f5acf481..2a5a9b19 100644 --- a/app/MindWork AI Studio/Assistants/BiasDay/BiasOfTheDayAssistant.razor +++ b/app/MindWork AI Studio/Assistants/BiasDay/BiasOfTheDayAssistant.razor @@ -1,5 +1,5 @@ @attribute [Route(Routes.ASSISTANT_BIAS)] -@inherits AssistantBaseCore +@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogAssistantBias> <MudText Typo="Typo.body1"> <b>Links:</b> diff --git a/app/MindWork AI Studio/Assistants/BiasDay/BiasOfTheDayAssistant.razor.cs b/app/MindWork AI Studio/Assistants/BiasDay/BiasOfTheDayAssistant.razor.cs index 576e4332..c83b5096 100644 --- a/app/MindWork AI Studio/Assistants/BiasDay/BiasOfTheDayAssistant.razor.cs +++ b/app/MindWork AI Studio/Assistants/BiasDay/BiasOfTheDayAssistant.razor.cs @@ -1,11 +1,13 @@ using System.Text; using AIStudio.Chat; +using AIStudio.Components.Settings; +using AIStudio.Dialogs.Settings; using AIStudio.Settings.DataModel; namespace AIStudio.Assistants.BiasDay; -public partial class BiasOfTheDayAssistant : AssistantBaseCore +public partial class BiasOfTheDayAssistant : AssistantBaseCore<SettingsDialogAssistantBias> { public override Tools.Components Component => Tools.Components.BIAS_DAY_ASSISTANT; diff --git a/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor b/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor index 6af0819d..92cc8a78 100644 --- a/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor +++ b/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor @@ -1,5 +1,5 @@ @attribute [Route(Routes.ASSISTANT_CODING)] -@inherits AssistantBaseCore +@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogCoding> <MudExpansionPanels Class="mb-3"> @for (var contextIndex = 0; contextIndex < this.codingContexts.Count; contextIndex++) diff --git a/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor.cs b/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor.cs index c8a61123..aecb93c5 100644 --- a/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor.cs +++ b/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor.cs @@ -1,8 +1,10 @@ using System.Text; +using AIStudio.Components.Settings; +using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.Coding; -public partial class AssistantCoding : AssistantBaseCore +public partial class AssistantCoding : AssistantBaseCore<SettingsDialogCoding> { public override Tools.Components Component => Tools.Components.CODING_ASSISTANT; @@ -31,7 +33,7 @@ public partial class AssistantCoding : AssistantBaseCore protected override string SubmitText => "Get Support"; protected override Func<Task> SubmitAction => this.GetSupport; - + protected override void ResetForm() { this.codingContexts.Clear(); diff --git a/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor b/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor index 57c57876..7a441dc0 100644 --- a/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor +++ b/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor @@ -1,5 +1,5 @@ @attribute [Route(Routes.ASSISTANT_EMAIL)] -@inherits AssistantBaseCore +@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogWritingEMails> <MudTextSwitch Label="Is there a history, a previous conversation?" @bind-Value="@this.provideHistory" LabelOn="Yes, I provide the previous conversation" LabelOff="No, I don't provide a previous conversation" /> @if (this.provideHistory) diff --git a/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor.cs b/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor.cs index 4606f4b3..48dc194e 100644 --- a/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor.cs +++ b/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor.cs @@ -1,10 +1,12 @@ using System.Text; using AIStudio.Chat; +using AIStudio.Components.Settings; +using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.EMail; -public partial class AssistantEMail : AssistantBaseCore +public partial class AssistantEMail : AssistantBaseCore<SettingsDialogWritingEMails> { public override Tools.Components Component => Tools.Components.EMAIL_ASSISTANT; @@ -27,7 +29,7 @@ public partial class AssistantEMail : AssistantBaseCore protected override string SubmitText => "Create email"; protected override Func<Task> SubmitAction => this.CreateMail; - + protected override ChatThread ConvertToChatThread => (this.chatThread ?? new()) with { SystemPrompt = SystemPrompts.DEFAULT, diff --git a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor index 0677cbc7..83eda3ec 100644 --- a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor +++ b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor @@ -1,7 +1,7 @@ @attribute [Route(Routes.ASSISTANT_ERI)] @using AIStudio.Settings.DataModel @using MudExtensions -@inherits AssistantBaseCore +@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogERIServer> <MudJustifiedText Typo="Typo.body1" Class="mb-3"> You can imagine it like this: Hypothetically, when Wikipedia implemented the ERI, it would vectorize diff --git a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs index b6553ee2..d86dcdaf 100644 --- a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs +++ b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs @@ -2,7 +2,9 @@ using System.Text; using System.Text.RegularExpressions; using AIStudio.Chat; +using AIStudio.Components.Settings; using AIStudio.Dialogs; +using AIStudio.Dialogs.Settings; using AIStudio.Settings.DataModel; using Microsoft.AspNetCore.Components; @@ -11,7 +13,7 @@ using DialogOptions = AIStudio.Dialogs.DialogOptions; namespace AIStudio.Assistants.ERI; -public partial class AssistantERI : AssistantBaseCore +public partial class AssistantERI : AssistantBaseCore<SettingsDialogERIServer> { [Inject] private HttpClient HttpClient { get; set; } = null!; diff --git a/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor b/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor index 18a4280f..b6a500a0 100644 --- a/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor +++ b/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor @@ -1,5 +1,5 @@ @attribute [Route(Routes.ASSISTANT_GRAMMAR_SPELLING)] -@inherits AssistantBaseCore +@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogGrammarSpelling> <MudTextField T="string" @bind-Text="@this.inputText" Validation="@this.ValidateText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="Your input to check" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/> <EnumSelection T="CommonLanguages" NameFunc="@(language => language.NameSelectingOptional())" @bind-Value="@this.selectedTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="Language" AllowOther="@true" OtherValue="CommonLanguages.OTHER" @bind-OtherInput="@this.customTargetLanguage" ValidateOther="@this.ValidateCustomLanguage" LabelOther="Custom language" /> diff --git a/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor.cs b/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor.cs index 29cf4866..97742c2d 100644 --- a/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor.cs +++ b/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor.cs @@ -1,8 +1,10 @@ using AIStudio.Chat; +using AIStudio.Components.Settings; +using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.GrammarSpelling; -public partial class AssistantGrammarSpelling : AssistantBaseCore +public partial class AssistantGrammarSpelling : AssistantBaseCore<SettingsDialogGrammarSpelling> { public override Tools.Components Component => Tools.Components.GRAMMAR_SPELLING_ASSISTANT; @@ -42,7 +44,7 @@ public partial class AssistantGrammarSpelling : AssistantBaseCore protected override string SubmitText => "Proofread"; protected override Func<Task> SubmitAction => this.ProofreadText; - + protected override ChatThread ConvertToChatThread => (this.chatThread ?? new()) with { SystemPrompt = SystemPrompts.DEFAULT, diff --git a/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor b/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor index af241b87..576558ac 100644 --- a/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor +++ b/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor @@ -1,5 +1,5 @@ @attribute [Route(Routes.ASSISTANT_ICON_FINDER)] -@inherits AssistantBaseCore +@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogIconFinder> <MudTextField T="string" @bind-Text="@this.inputContext" Validation="@this.ValidatingContext" AdornmentIcon="@Icons.Material.Filled.Description" Adornment="Adornment.Start" Label="Your context" Variant="Variant.Outlined" Lines="3" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/> diff --git a/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor.cs b/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor.cs index 54348344..ef518bab 100644 --- a/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor.cs +++ b/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor.cs @@ -1,6 +1,9 @@ +using AIStudio.Components.Settings; +using AIStudio.Dialogs.Settings; + namespace AIStudio.Assistants.IconFinder; -public partial class AssistantIconFinder : AssistantBaseCore +public partial class AssistantIconFinder : AssistantBaseCore<SettingsDialogIconFinder> { public override Tools.Components Component => Tools.Components.ICON_FINDER_ASSISTANT; @@ -32,7 +35,7 @@ public partial class AssistantIconFinder : AssistantBaseCore protected override string SubmitText => "Find Icon"; protected override Func<Task> SubmitAction => this.FindIcon; - + protected override void ResetForm() { this.inputContext = string.Empty; diff --git a/app/MindWork AI Studio/Assistants/JobPosting/AssistantJobPostings.razor b/app/MindWork AI Studio/Assistants/JobPosting/AssistantJobPostings.razor index ba419227..b92cbd31 100644 --- a/app/MindWork AI Studio/Assistants/JobPosting/AssistantJobPostings.razor +++ b/app/MindWork AI Studio/Assistants/JobPosting/AssistantJobPostings.razor @@ -1,5 +1,5 @@ @attribute [Route(Routes.ASSISTANT_JOB_POSTING)] -@inherits AssistantBaseCore +@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogJobPostings> <MudTextField T="string" @bind-Text="@this.inputCompanyName" Label="(Optional) The company name" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Warehouse" Variant="Variant.Outlined" Margin="Margin.Dense" UserAttributes="@USER_INPUT_ATTRIBUTES" Class="mb-3"/> <MudTextField T="string" @bind-Text="@this.inputCountryLegalFramework" Label="Provide the country, where the company is located" Validation="@this.ValidateCountryLegalFramework" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Flag" Variant="Variant.Outlined" Margin="Margin.Dense" UserAttributes="@USER_INPUT_ATTRIBUTES" Class="mb-3" HelperText="This is important to consider the legal framework of the country."/> diff --git a/app/MindWork AI Studio/Assistants/JobPosting/AssistantJobPostings.razor.cs b/app/MindWork AI Studio/Assistants/JobPosting/AssistantJobPostings.razor.cs index 164abde7..4834c677 100644 --- a/app/MindWork AI Studio/Assistants/JobPosting/AssistantJobPostings.razor.cs +++ b/app/MindWork AI Studio/Assistants/JobPosting/AssistantJobPostings.razor.cs @@ -1,8 +1,10 @@ using AIStudio.Chat; +using AIStudio.Components.Settings; +using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.JobPosting; -public partial class AssistantJobPostings : AssistantBaseCore +public partial class AssistantJobPostings : AssistantBaseCore<SettingsDialogJobPostings> { public override Tools.Components Component => Tools.Components.JOB_POSTING_ASSISTANT; diff --git a/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor b/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor index f8494ea6..7dc781fd 100644 --- a/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor +++ b/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor @@ -1,5 +1,5 @@ @attribute [Route(Routes.ASSISTANT_LEGAL_CHECK)] -@inherits AssistantBaseCore +@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogLegalCheck> @if (!this.SettingsManager.ConfigurationData.LegalCheck.HideWebContentReader) { diff --git a/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor.cs b/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor.cs index 45755675..7e8bf222 100644 --- a/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor.cs +++ b/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor.cs @@ -1,8 +1,10 @@ using AIStudio.Chat; +using AIStudio.Components.Settings; +using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.LegalCheck; -public partial class AssistantLegalCheck : AssistantBaseCore +public partial class AssistantLegalCheck : AssistantBaseCore<SettingsDialogLegalCheck> { public override Tools.Components Component => Tools.Components.LEGAL_CHECK_ASSISTANT; @@ -29,7 +31,7 @@ public partial class AssistantLegalCheck : AssistantBaseCore protected override string SubmitText => "Ask your questions"; protected override Func<Task> SubmitAction => this.AksQuestions; - + protected override bool SubmitDisabled => this.isAgentRunning; protected override ChatThread ConvertToChatThread => (this.chatThread ?? new()) with diff --git a/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor b/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor index 23154c8b..6ffb9c74 100644 --- a/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor +++ b/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor @@ -1,5 +1,5 @@ @attribute [Route(Routes.ASSISTANT_MY_TASKS)] -@inherits AssistantBaseCore +@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogMyTasks> <ProfileFormSelection Validation="@this.ValidateProfile" @bind-Profile="@this.currentProfile"/> <MudTextField T="string" @bind-Text="@this.inputText" Validation="@this.ValidatingText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="Text or email" Variant="Variant.Outlined" Lines="12" AutoGrow="@true" MaxLines="24" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/> diff --git a/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor.cs b/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor.cs index b0e52a18..7be85b28 100644 --- a/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor.cs +++ b/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor.cs @@ -1,9 +1,11 @@ using AIStudio.Chat; +using AIStudio.Components.Settings; +using AIStudio.Dialogs.Settings; using AIStudio.Settings; namespace AIStudio.Assistants.MyTasks; -public partial class AssistantMyTasks : AssistantBaseCore +public partial class AssistantMyTasks : AssistantBaseCore<SettingsDialogMyTasks> { public override Tools.Components Component => Tools.Components.MY_TASKS_ASSISTANT; diff --git a/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor b/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor index c599ad12..05feda39 100644 --- a/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor +++ b/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor @@ -1,5 +1,5 @@ @attribute [Route(Routes.ASSISTANT_REWRITE)] -@inherits AssistantBaseCore +@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogRewrite> <MudTextField T="string" @bind-Text="@this.inputText" Validation="@this.ValidateText" AdornmentIcon="@Icons.Material.Filled.DocumentScanner" Adornment="Adornment.Start" Label="Your input to improve" Variant="Variant.Outlined" Lines="6" AutoGrow="@true" MaxLines="12" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/> <EnumSelection T="CommonLanguages" NameFunc="@(language => language.NameSelectingOptional())" @bind-Value="@this.selectedTargetLanguage" Icon="@Icons.Material.Filled.Translate" Label="Language" AllowOther="@true" OtherValue="CommonLanguages.OTHER" @bind-OtherInput="@this.customTargetLanguage" ValidateOther="@this.ValidateCustomLanguage" LabelOther="Custom language" /> diff --git a/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor.cs b/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor.cs index 216f85a9..440a4e7d 100644 --- a/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor.cs +++ b/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor.cs @@ -1,8 +1,10 @@ using AIStudio.Chat; +using AIStudio.Components.Settings; +using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.RewriteImprove; -public partial class AssistantRewriteImprove : AssistantBaseCore +public partial class AssistantRewriteImprove : AssistantBaseCore<SettingsDialogRewrite> { public override Tools.Components Component => Tools.Components.REWRITE_ASSISTANT; @@ -43,7 +45,7 @@ public partial class AssistantRewriteImprove : AssistantBaseCore protected override string SubmitText => "Improve"; protected override Func<Task> SubmitAction => this.RewriteText; - + protected override ChatThread ConvertToChatThread => (this.chatThread ?? new()) with { SystemPrompt = SystemPrompts.DEFAULT, diff --git a/app/MindWork AI Studio/Assistants/Synonym/AssistantSynonyms.razor b/app/MindWork AI Studio/Assistants/Synonym/AssistantSynonyms.razor index 5ce13aab..0a960303 100644 --- a/app/MindWork AI Studio/Assistants/Synonym/AssistantSynonyms.razor +++ b/app/MindWork AI Studio/Assistants/Synonym/AssistantSynonyms.razor @@ -1,5 +1,5 @@ @attribute [Route(Routes.ASSISTANT_SYNONYMS)] -@inherits AssistantBaseCore +@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogSynonyms> <MudTextField T="string" @bind-Text="@this.inputText" Validation="@this.ValidatingText" AdornmentIcon="@Icons.Material.Filled.Spellcheck" Adornment="Adornment.Start" Label="Your word or phrase" Variant="Variant.Outlined" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/> <MudTextField T="string" @bind-Text="@this.inputContext" AdornmentIcon="@Icons.Material.Filled.Description" Adornment="Adornment.Start" Lines="2" AutoGrow="@false" Label="(Optional) The context for the given word or phrase" Variant="Variant.Outlined" Class="mb-3" UserAttributes="@USER_INPUT_ATTRIBUTES"/> diff --git a/app/MindWork AI Studio/Assistants/Synonym/AssistantSynonyms.razor.cs b/app/MindWork AI Studio/Assistants/Synonym/AssistantSynonyms.razor.cs index c849b685..2244e7af 100644 --- a/app/MindWork AI Studio/Assistants/Synonym/AssistantSynonyms.razor.cs +++ b/app/MindWork AI Studio/Assistants/Synonym/AssistantSynonyms.razor.cs @@ -1,8 +1,9 @@ using AIStudio.Chat; +using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.Synonym; -public partial class AssistantSynonyms : AssistantBaseCore +public partial class AssistantSynonyms : AssistantBaseCore<SettingsDialogSynonyms> { public override Tools.Components Component => Tools.Components.SYNONYMS_ASSISTANT; @@ -54,7 +55,7 @@ public partial class AssistantSynonyms : AssistantBaseCore protected override string SubmitText => "Find synonyms"; protected override Func<Task> SubmitAction => this.FindSynonyms; - + protected override ChatThread ConvertToChatThread => (this.chatThread ?? new()) with { SystemPrompt = SystemPrompts.DEFAULT, diff --git a/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor b/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor index 5302a1aa..c1b05d99 100644 --- a/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor +++ b/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor @@ -1,5 +1,5 @@ @attribute [Route(Routes.ASSISTANT_SUMMARIZER)] -@inherits AssistantBaseCore +@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogTextSummarizer> @if (!this.SettingsManager.ConfigurationData.TextSummarizer.HideWebContentReader) { diff --git a/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor.cs b/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor.cs index fb9244b0..d0df48c4 100644 --- a/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor.cs +++ b/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor.cs @@ -1,8 +1,10 @@ using AIStudio.Chat; +using AIStudio.Components.Settings; +using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.TextSummarizer; -public partial class AssistantTextSummarizer : AssistantBaseCore +public partial class AssistantTextSummarizer : AssistantBaseCore<SettingsDialogTextSummarizer> { public override Tools.Components Component => Tools.Components.TEXT_SUMMARIZER_ASSISTANT; @@ -32,7 +34,7 @@ public partial class AssistantTextSummarizer : AssistantBaseCore protected override string SubmitText => "Summarize"; protected override Func<Task> SubmitAction => this.SummarizeText; - + protected override bool SubmitDisabled => this.isAgentRunning; protected override ChatThread ConvertToChatThread => (this.chatThread ?? new()) with diff --git a/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor b/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor index fa158797..f1a6467c 100644 --- a/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor +++ b/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor @@ -1,5 +1,5 @@ @attribute [Route(Routes.ASSISTANT_TRANSLATION)] -@inherits AssistantBaseCore +@inherits AssistantBaseCore<AIStudio.Dialogs.Settings.SettingsDialogTranslation> @if (!this.SettingsManager.ConfigurationData.Translation.HideWebContentReader) { diff --git a/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor.cs b/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor.cs index 785aae4c..c29a862c 100644 --- a/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor.cs +++ b/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor.cs @@ -1,8 +1,10 @@ using AIStudio.Chat; +using AIStudio.Components.Settings; +using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.Translation; -public partial class AssistantTranslation : AssistantBaseCore +public partial class AssistantTranslation : AssistantBaseCore<SettingsDialogTranslation> { public override Tools.Components Component => Tools.Components.TRANSLATION_ASSISTANT; @@ -28,7 +30,7 @@ public partial class AssistantTranslation : AssistantBaseCore protected override string SubmitText => "Translate"; protected override Func<Task> SubmitAction => () => this.TranslateText(true); - + protected override bool SubmitDisabled => this.isAgentRunning; protected override ChatThread ConvertToChatThread => (this.chatThread ?? new()) with diff --git a/app/MindWork AI Studio/Components/AssistantBlock.razor b/app/MindWork AI Studio/Components/AssistantBlock.razor index 0fc497af..3d0d9723 100644 --- a/app/MindWork AI Studio/Components/AssistantBlock.razor +++ b/app/MindWork AI Studio/Components/AssistantBlock.razor @@ -1,3 +1,5 @@ +@typeparam TSettings + <MudCard Outlined="@true" Style="@this.BlockStyle"> <MudCardHeader> <CardHeaderContent> @@ -17,8 +19,11 @@ </MudStack> </MudCardContent> <MudCardActions> - <MudButton Size="Size.Large" Variant="Variant.Filled" StartIcon="@this.Icon" Color="Color.Default" Href="@this.Link"> - @this.ButtonText - </MudButton> + <MudButtonGroup Variant="Variant.Outlined"> + <MudButton Size="Size.Large" Variant="Variant.Filled" StartIcon="@this.Icon" Color="Color.Default" Href="@this.Link"> + @this.ButtonText + </MudButton> + <MudIconButton Variant="Variant.Text" Icon="@Icons.Material.Filled.Settings" Color="Color.Default" OnClick="@this.OpenSettingsDialog"/> + </MudButtonGroup> </MudCardActions> </MudCard> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/AssistantBlock.razor.cs b/app/MindWork AI Studio/Components/AssistantBlock.razor.cs index 2d109c61..df5c84cd 100644 --- a/app/MindWork AI Studio/Components/AssistantBlock.razor.cs +++ b/app/MindWork AI Studio/Components/AssistantBlock.razor.cs @@ -2,9 +2,11 @@ using AIStudio.Settings; using Microsoft.AspNetCore.Components; +using DialogOptions = AIStudio.Dialogs.DialogOptions; + namespace AIStudio.Components; -public partial class AssistantBlock : ComponentBase, IMessageBusReceiver, IDisposable +public partial class AssistantBlock<TSettings> : ComponentBase, IMessageBusReceiver, IDisposable where TSettings : IComponent { [Parameter] public string Name { get; set; } = string.Empty; @@ -29,6 +31,16 @@ public partial class AssistantBlock : ComponentBase, IMessageBusReceiver, IDispo [Inject] private MessageBus MessageBus { get; init; } = null!; + + [Inject] + private IDialogService DialogService { get; init; } = null!; + + private async Task OpenSettingsDialog() + { + var dialogParameters = new DialogParameters(); + + await this.DialogService.ShowAsync<TSettings>("Open Settings", dialogParameters, DialogOptions.FULLSCREEN); + } #region Overrides of ComponentBase @@ -44,7 +56,7 @@ public partial class AssistantBlock : ComponentBase, IMessageBusReceiver, IDispo #region Implementation of IMessageBusReceiver - public string ComponentName => nameof(AssistantBlock); + public string ComponentName => nameof(AssistantBlock<TSettings>); public Task ProcessMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) { @@ -64,7 +76,7 @@ public partial class AssistantBlock : ComponentBase, IMessageBusReceiver, IDispo } #endregion - + private string BorderColor => this.SettingsManager.IsDarkMode switch { true => this.ColorTheme.GetCurrentPalette(this.SettingsManager).GrayLight, diff --git a/app/MindWork AI Studio/Components/ProviderSelection.razor.cs b/app/MindWork AI Studio/Components/ProviderSelection.razor.cs index c5a0e3ba..be84e294 100644 --- a/app/MindWork AI Studio/Components/ProviderSelection.razor.cs +++ b/app/MindWork AI Studio/Components/ProviderSelection.razor.cs @@ -1,6 +1,7 @@ using System.Diagnostics.CodeAnalysis; using AIStudio.Assistants; +using AIStudio.Dialogs.Settings; using AIStudio.Provider; using AIStudio.Settings; @@ -11,7 +12,7 @@ namespace AIStudio.Components; public partial class ProviderSelection : ComponentBase { [CascadingParameter] - public AssistantBase? AssistantBase { get; set; } + public AssistantBase<NoComponent>? AssistantBase { get; set; } [Parameter] public AIStudio.Settings.Provider ProviderSettings { get; set; } diff --git a/app/MindWork AI Studio/Components/ReadWebContent.razor b/app/MindWork AI Studio/Components/ReadWebContent.razor index 1d83309c..9cb451b2 100644 --- a/app/MindWork AI Studio/Components/ReadWebContent.razor +++ b/app/MindWork AI Studio/Components/ReadWebContent.razor @@ -2,7 +2,7 @@ <MudTextSwitch Label="Read content from web?" Disabled="@this.AgentIsRunning" @bind-Value="@this.showWebContentReader" LabelOn="Show web content options" LabelOff="Hide web content options" /> @if (this.showWebContentReader) { - <MudTextSwitch Label="Cleanup content by using a LLM agent?" @bind-Value="@this.useContentCleanerAgent" Validation="@this.ValidateProvider" Disabled="@this.AgentIsRunning" LabelOn="The content is cleaned using an LLM agent: the main content is extracted, advertisements and other irrelevant things are attempted to be removed; relative links are attempted to be converted into absolute links so that they can be used." LabelOff="No content cleaning" /> + <MudTextSwitch Label="Cleanup content by using an LLM agent?" @bind-Value="@this.useContentCleanerAgent" Validation="@this.ValidateProvider" Disabled="@this.AgentIsRunning" LabelOn="The content is cleaned using an LLM agent: the main content is extracted, advertisements and other irrelevant things are attempted to be removed; relative links are attempted to be converted into absolute links so that they can be used." LabelOff="No content cleaning" /> <MudStack Row="@true" AlignItems="@AlignItems.Baseline" Class="mb-3"> <MudTextField T="string" Label="URL from which to load the content" @bind-Value="@this.providedURL" Validation="@this.ValidateURL" Adornment="Adornment.Start" AdornmentIcon="@Icons.Material.Filled.Link" Placeholder="https://..." HelperText="Loads the content from your URL. Does not work when the content is hidden behind a paywall." Variant="Variant.Outlined" Immediate="@true" Disabled="@this.AgentIsRunning"/> <MudButton Disabled="@(!this.IsReady || this.AgentIsRunning)" Variant="Variant.Filled" Size="Size.Large" Color="Color.Primary" StartIcon="@Icons.Material.Filled.Download" OnClick="() => this.LoadFromWeb()"> diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelAgenda.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgenda.razor deleted file mode 100644 index 6412d159..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelAgenda.razor +++ /dev/null @@ -1,32 +0,0 @@ -@using AIStudio.Settings -@inherits SettingsPanelBase - -<ExpansionPanel HeaderIcon="@Icons.Material.Filled.CalendarToday" HeaderText="Assistant: Agenda Options"> - <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect agenda options?" LabelOn="Agenda options are preselected" LabelOff="No agenda options are preselected" State="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Agenda.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect most agenda options. This is might be useful when you need to create similar agendas often."/> - <ConfigurationText OptionDescription="Preselect a name?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.Tag" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectName)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectName = updatedText)" /> - <ConfigurationText OptionDescription="Preselect a topic?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.EventNote" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectTopic)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectTopic = updatedText)" /> - <ConfigurationText OptionDescription="Preselect an objective?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.Flag" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectObjective)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectObjective = updatedText)" /> - <ConfigurationText OptionDescription="Preselect a moderator?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.Person3" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectModerator)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectModerator = updatedText)" /> - <ConfigurationText OptionDescription="Preselect a duration?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.Schedule" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectDuration)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectDuration = updatedText)" /> - <ConfigurationText OptionDescription="Preselect a start time?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.Schedule" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectStartTime)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectStartTime = updatedText)" /> - <ConfigurationOption OptionDescription="Preselect whether the participants should get to know each other" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" LabelOn="Participants should get to know each other" LabelOff="Participants do not need to get to know each other" State="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectIntroduceParticipants)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Agenda.PreselectIntroduceParticipants = updatedState)" /> - <ConfigurationSelect OptionDescription="Preselect the number of participants" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectNumberParticipants)" Data="@ConfigurationSelectDataFactory.GetNumberParticipantsData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectNumberParticipants = selectedValue)" OptionHelp="How many participants should be preselected?"/> - <ConfigurationOption OptionDescription="Preselect whether the participants should actively involved" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" LabelOn="Participants should be actively involved" LabelOff="Participants do not need to be actively involved" State="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectActiveParticipation)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Agenda.PreselectActiveParticipation = updatedState)" /> - <ConfigurationOption OptionDescription="Preselect whether the meeting is virtual" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" LabelOn="Meeting is virtual" LabelOff="Meeting is in person" State="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectIsMeetingVirtual)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Agenda.PreselectIsMeetingVirtual = updatedState)" /> - <ConfigurationText OptionDescription="Preselect a location?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.MyLocation" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectLocation)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectLocation = updatedText)" /> - <ConfigurationOption OptionDescription="Preselect whether there is a joint dinner" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" LabelOn="There is a joint dinner" LabelOff="There is no joint dinner" State="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectJointDinner)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Agenda.PreselectJointDinner = updatedState)" /> - <ConfigurationOption OptionDescription="Preselect whether there is a social event" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" LabelOn="There is a social event" LabelOff="There is no social event" State="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectSocialActivity)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Agenda.PreselectSocialActivity = updatedState)" /> - <ConfigurationOption OptionDescription="Preselect whether participants needs to arrive and depart" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" LabelOn="Participants need to arrive and depart" LabelOff="Participants do not need to arrive and depart" State="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectArriveAndDepart)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Agenda.PreselectArriveAndDepart = updatedState)" /> - <ConfigurationSlider T="int" OptionDescription="Preselect the approx. lunch time" Min="30" Max="120" Step="5" Unit="minutes" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Value="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectLunchTime)" ValueUpdate="@(updatedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectLunchTime = updatedValue)" /> - <ConfigurationSlider T="int" OptionDescription="Preselect the approx. break time" Min="10" Max="60" Step="5" Unit="minutes" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Value="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectBreakTime)" ValueUpdate="@(updatedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectBreakTime = updatedValue)" /> - <ConfigurationSelect OptionDescription="Preselect the agenda language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesTranslationData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which agenda language should be preselected?"/> - @if (this.SettingsManager.ConfigurationData.Agenda.PreselectedTargetLanguage is CommonLanguages.OTHER) - { - <ConfigurationText OptionDescription="Preselect another agenda language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectedOtherLanguage = updatedText)"/> - } - <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Agenda.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Agenda.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.AGENDA_ASSISTANT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectedProvider = selectedValue)"/> - <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> - </MudPaper> -</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelAgenda.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgenda.razor.cs deleted file mode 100644 index 82368a5c..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelAgenda.razor.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelAgenda : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentContentCleaner.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentContentCleaner.razor index 6bdd3770..8da6ff3e 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentContentCleaner.razor +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentContentCleaner.razor @@ -6,7 +6,7 @@ Use Case: this agent is used to clean up text content. It extracts the main content, removes advertisements and other irrelevant things, and attempts to convert relative links into absolute links so that they can be used. </MudText> - <ConfigurationOption OptionDescription="Preselect text content cleaner options?" LabelOn="Options are preselected" LabelOff="No options are preselected" State="@(() => this.SettingsManager.ConfigurationData.TextContentCleaner.PreselectAgentOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.TextContentCleaner.PreselectAgentOptions = updatedState)" OptionHelp="When enabled, you can preselect some agent options. This is might be useful when you prefer a LLM."/> + <ConfigurationOption OptionDescription="Preselect text content cleaner options?" LabelOn="Options are preselected" LabelOff="No options are preselected" State="@(() => this.SettingsManager.ConfigurationData.TextContentCleaner.PreselectAgentOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.TextContentCleaner.PreselectAgentOptions = updatedState)" OptionHelp="When enabled, you can preselect some agent options. This is might be useful when you prefer an LLM."/> <ConfigurationProviderSelection Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextContentCleaner.PreselectAgentOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.TextContentCleaner.PreselectedAgentProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.TextContentCleaner.PreselectedAgentProvider = selectedValue)"/> </MudPaper> </ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentDataSourceSelection.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentDataSourceSelection.razor index da2a6afe..f3c1df20 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentDataSourceSelection.razor +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentDataSourceSelection.razor @@ -5,7 +5,7 @@ <MudText Typo="Typo.body1" Class="mb-3"> Use Case: this agent is used to select the appropriate data sources for the current prompt. </MudText> - <ConfigurationOption OptionDescription="Preselect data source selection options?" LabelOn="Options are preselected" LabelOff="No options are preselected" State="@(() => this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectAgentOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectAgentOptions = updatedState)" OptionHelp="When enabled, you can preselect some agent options. This is might be useful when you prefer a LLM."/> + <ConfigurationOption OptionDescription="Preselect data source selection options?" LabelOn="Options are preselected" LabelOff="No options are preselected" State="@(() => this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectAgentOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectAgentOptions = updatedState)" OptionHelp="When enabled, you can preselect some agent options. This is might be useful when you prefer an LLM."/> <ConfigurationProviderSelection Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectAgentOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectedAgentProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.AgentDataSourceSelection.PreselectedAgentProvider = selectedValue)"/> </MudPaper> </ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentRetrievalContextValidation.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentRetrievalContextValidation.razor index 8d94af22..7de4ea81 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentRetrievalContextValidation.razor +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelAgentRetrievalContextValidation.razor @@ -10,7 +10,7 @@ @if (this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.EnableRetrievalContextValidation) { <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect retrieval context validation options?" LabelOn="Options are preselected" LabelOff="No options are preselected" State="@(() => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectAgentOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectAgentOptions = updatedState)" OptionHelp="When enabled, you can preselect some agent options. This is might be useful when you prefer a LLM."/> + <ConfigurationOption OptionDescription="Preselect retrieval context validation options?" LabelOn="Options are preselected" LabelOff="No options are preselected" State="@(() => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectAgentOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectAgentOptions = updatedState)" OptionHelp="When enabled, you can preselect some agent options. This is might be useful when you prefer an LLM."/> <ConfigurationSlider T="int" OptionDescription="How many validation agents should work simultaneously?" Min="1" Max="100" Step="1" Unit="agents" Value="@(() => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.NumParallelValidations)" ValueUpdate="@(updatedValue => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.NumParallelValidations = updatedValue)" OptionHelp="More active agents also mean that a corresponding number of requests are made simultaneously. Some providers limit the number of requests per minute. When you are unsure, choose a low setting between 1 to 6 agents."/> <ConfigurationProviderSelection Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectAgentOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectedAgentProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.AgentRetrievalContextValidation.PreselectedAgentProvider = selectedValue)"/> </MudPaper> diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelAssistantBias.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelAssistantBias.razor deleted file mode 100644 index 40f178e2..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelAssistantBias.razor +++ /dev/null @@ -1,29 +0,0 @@ -@using AIStudio.Settings -@using AIStudio.Settings.DataModel -@inherits SettingsPanelBase - -<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Psychology" HeaderText="Assistant: Bias of the Day"> - - <ConfigurationOption OptionDescription="Restrict to one bias a day?" LabelOn="Yes, you can only retrieve one bias per day" LabelOff="No restriction. You can retrieve as many biases as you want per day." State="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.RestrictOneBiasPerDay)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.BiasOfTheDay.RestrictOneBiasPerDay = updatedState)"/> - - <MudField Label="Statistics" Variant="Variant.Outlined" Class="mb-2"> - <MudText Typo="Typo.body1"> - You have learned about @this.SettingsManager.ConfigurationData.BiasOfTheDay.UsedBias.Count out of @BiasCatalog.ALL_BIAS.Count biases. - </MudText> - <MudButton Size="Size.Small" Variant="Variant.Filled" StartIcon="@Icons.Material.Filled.Restore" Color="Color.Error" OnClick="@(() => this.ResetBiasOfTheDayHistory())"> - Reset - </MudButton> - </MudField> - - <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect options?" LabelOn="Options are preselected" LabelOff="No options are preselected" State="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect options. This is might be useful when you prefer a specific language or LLM model."/> - <ConfigurationSelect OptionDescription="Preselect the language" Disabled="@(() => !this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesOptionalData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which language should be preselected?"/> - @if (this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedTargetLanguage is CommonLanguages.OTHER) - { - <ConfigurationText OptionDescription="Preselect another language" Disabled="@(() => !this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedOtherLanguage = updatedText)"/> - } - <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> - <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.BiasOfTheDay.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.BIAS_DAY_ASSISTANT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedProvider = selectedValue)"/> - </MudPaper> -</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelCoding.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelCoding.razor deleted file mode 100644 index 12bf8795..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelCoding.razor +++ /dev/null @@ -1,18 +0,0 @@ -@using AIStudio.Assistants.Coding -@using AIStudio.Settings -@inherits SettingsPanelBase - -<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Code" HeaderText="Assistant: Coding Options"> - <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect coding options?" LabelOn="Coding options are preselected" LabelOff="No coding options are preselected" State="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Coding.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the coding options. This is might be useful when you prefer a specific programming language or LLM model."/> - <ConfigurationOption OptionDescription="Preselect compiler messages?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" LabelOn="Compiler messages are preselected" LabelOff="Compiler messages are not preselected" State="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectCompilerMessages)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Coding.PreselectCompilerMessages = updatedState)" /> - <ConfigurationSelect OptionDescription="Preselect a programming language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedProgrammingLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonCodingLanguagesData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.PreselectedProgrammingLanguage = selectedValue)" OptionHelp="Which programming language should be preselected for added contexts?"/> - @if (this.SettingsManager.ConfigurationData.Coding.PreselectedProgrammingLanguage is CommonCodingLanguages.OTHER) - { - <ConfigurationText OptionDescription="Preselect another programming language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" Icon="@Icons.Material.Filled.Code" Text="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedOtherProgrammingLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Coding.PreselectedOtherProgrammingLanguage = updatedText)"/> - } - <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.CODING_ASSISTANT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.PreselectedProvider = selectedValue)"/> - <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> - </MudPaper> -</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelCoding.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelCoding.razor.cs deleted file mode 100644 index 060a30a6..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelCoding.razor.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelCoding : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelERIServer.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelERIServer.razor deleted file mode 100644 index 62d2fd0c..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelERIServer.razor +++ /dev/null @@ -1,19 +0,0 @@ -@using AIStudio.Settings -@inherits SettingsPanelBase - -<ExpansionPanel HeaderIcon="@Icons.Material.Filled.PrivateConnectivity" HeaderText="Assistant: ERI Server Options"> - <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect ERI server options?" LabelOn="ERI server options are preselected" LabelOff="No ERI server options are preselected" State="@(() => this.SettingsManager.ConfigurationData.ERI.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.ERI.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect some ERI server options."/> - <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.ERI.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.ERI.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.ERI.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.ERI.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.ERI.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.ERI.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> - - <MudText Typo="Typo.body1" Class="mb-3"> - Most ERI server options can be customized and saved directly in the ERI server assistant. - For this, the ERI server assistant has an auto-save function. - </MudText> - - <MudButton Size="Size.Large" Variant="Variant.Filled" StartIcon="@Icons.Material.Filled.PrivateConnectivity" Color="Color.Default" Href="@Routes.ASSISTANT_ERI"> - Switch to ERI server assistant - </MudButton> - </MudPaper> -</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelERIServer.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelERIServer.razor.cs deleted file mode 100644 index 0e01ed2f..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelERIServer.razor.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelERIServer : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelGrammarSpelling.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelGrammarSpelling.razor deleted file mode 100644 index 73b31ca6..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelGrammarSpelling.razor +++ /dev/null @@ -1,15 +0,0 @@ -@using AIStudio.Settings -@inherits SettingsPanelBase - -<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Edit" HeaderText="Assistant: Grammar & Spelling Checker"> - <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect grammar & spell checker options?" LabelOn="Grammar & spell checker options are preselected" LabelOff="No grammar & spell checker options are preselected" State="@(() => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the grammar & spell checker options. This is might be useful when you prefer a specific language or LLM model."/> - <ConfigurationSelect OptionDescription="Preselect the target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesOptionalData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which target language should be preselected?"/> - @if (this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedTargetLanguage is CommonLanguages.OTHER) - { - <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedOtherLanguage = updatedText)"/> - } - <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.GrammarSpelling.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.GrammarSpelling.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.GRAMMAR_SPELLING_ASSISTANT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedProvider = selectedValue)"/> - </MudPaper> -</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelGrammarSpelling.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelGrammarSpelling.razor.cs deleted file mode 100644 index b15d58a6..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelGrammarSpelling.razor.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelGrammarSpelling : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelIconFinder.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelIconFinder.razor deleted file mode 100644 index 76317e92..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelIconFinder.razor +++ /dev/null @@ -1,11 +0,0 @@ -@using AIStudio.Settings -@inherits SettingsPanelBase - -<ExpansionPanel HeaderIcon="@Icons.Material.Filled.FindInPage" HeaderText="Assistant: Icon Finder Options"> - <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect icon options?" LabelOn="Icon options are preselected" LabelOff="No icon options are preselected" State="@(() => this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the icon options. This is might be useful when you prefer a specific icon source or LLM model."/> - <ConfigurationSelect OptionDescription="Preselect the icon source" Disabled="@(() => !this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.IconFinder.PreselectedSource)" Data="@ConfigurationSelectDataFactory.GetIconSourcesData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.IconFinder.PreselectedSource = selectedValue)" OptionHelp="Which icon source should be preselected?"/> - <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.IconFinder.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.IconFinder.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.ICON_FINDER_ASSISTANT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.IconFinder.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.IconFinder.PreselectedProvider = selectedValue)"/> - </MudPaper> -</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelIconFinder.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelIconFinder.razor.cs deleted file mode 100644 index e545163b..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelIconFinder.razor.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelIconFinder : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelJobPostings.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelJobPostings.razor deleted file mode 100644 index b9b56a55..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelJobPostings.razor +++ /dev/null @@ -1,22 +0,0 @@ -@using AIStudio.Settings -@inherits SettingsPanelBase - -<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Work" HeaderText="Assistant: Job Postings"> - <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect job posting options?" LabelOn="Job posting options are preselected" LabelOff="No job posting options are preselected" State="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect some job posting options. This is might be useful when you prefer a specific LLM model."/> - <ConfigurationText OptionDescription="Preselect the company name?" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.Warehouse" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedCompanyName)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectedCompanyName = updatedText)" /> - <ConfigurationText OptionDescription="Preselect some mandatory information about the job posting?" NumLines="6" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.TextSnippet" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedMandatoryInformation)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectedMandatoryInformation = updatedText)" /> - <ConfigurationText OptionDescription="Preselect the job description?" NumLines="3" MaxLines="6" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.Settings" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedJobDescription)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectedJobDescription = updatedText)" /> - <ConfigurationText OptionDescription="Preselect the job qualifications?" NumLines="3" MaxLines="6" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.Settings" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedQualifications)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectedQualifications = updatedText)" /> - <ConfigurationText OptionDescription="Preselect the job responsibilities?" NumLines="3" MaxLines="6" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.Settings" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedResponsibilities)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectedResponsibilities = updatedText)" /> - <ConfigurationText OptionDescription="Preselect the work location?" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.MyLocation" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedWorkLocation)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectedWorkLocation = updatedText)" /> - <ConfigurationText OptionDescription="Preselect the country (legal framework)?" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.Flag" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedCountryLegalFramework)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectedCountryLegalFramework = updatedText)" /> - <ConfigurationSelect OptionDescription="Preselect the language" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesOptionalData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.JobPostings.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which target language should be preselected?"/> - @if (this.SettingsManager.ConfigurationData.JobPostings.PreselectedTargetLanguage is CommonLanguages.OTHER) - { - <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectOtherLanguage = updatedText)"/> - } - <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.JobPostings.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.JobPostings.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.JOB_POSTING_ASSISTANT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.JobPostings.PreselectedProvider = selectedValue)"/> - </MudPaper> -</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelJobPostings.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelJobPostings.razor.cs deleted file mode 100644 index 20ecab68..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelJobPostings.razor.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelJobPostings : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelLegalCheck.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelLegalCheck.razor deleted file mode 100644 index 00c2f7d4..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelLegalCheck.razor +++ /dev/null @@ -1,14 +0,0 @@ -@using AIStudio.Settings -@inherits SettingsPanelBase - -<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Gavel" HeaderText="Assistant: Legal Check"> - <ConfigurationOption OptionDescription="Hide the web content reader?" LabelOn="Web content reader is hidden" LabelOff="Web content reader is shown" State="@(() => this.SettingsManager.ConfigurationData.LegalCheck.HideWebContentReader)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.LegalCheck.HideWebContentReader = updatedState)" OptionHelp="When activated, the web content reader is hidden and cannot be used. As a result, the user interface becomes a bit easier to use."/> - <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect legal check options?" LabelOn="Legal check options are preselected" LabelOff="No legal check options are preselected" State="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect some legal check options. This is might be useful when you prefer a specific LLM model."/> - <ConfigurationOption OptionDescription="Preselect the web content reader?" Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions || this.SettingsManager.ConfigurationData.LegalCheck.HideWebContentReader)" LabelOn="Web content reader is preselected" LabelOff="Web content reader is not preselected" State="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectWebContentReader)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.LegalCheck.PreselectWebContentReader = updatedState)" OptionHelp="When enabled, the web content reader is preselected. This is might be useful when you prefer to load legal content from the web very often."/> - <ConfigurationOption OptionDescription="Preselect the content cleaner agent?" Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions || this.SettingsManager.ConfigurationData.LegalCheck.HideWebContentReader)" LabelOn="Content cleaner agent is preselected" LabelOff="Content cleaner agent is not preselected" State="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectContentCleanerAgent)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.LegalCheck.PreselectContentCleanerAgent = updatedState)" OptionHelp="When enabled, the content cleaner agent is preselected. This is might be useful when you prefer to clean up the legal content before translating it."/> - <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.LegalCheck.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.LegalCheck.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.LEGAL_CHECK_ASSISTANT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.LegalCheck.PreselectedProvider = selectedValue)"/> - <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.LegalCheck.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> - </MudPaper> -</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelLegalCheck.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelLegalCheck.razor.cs deleted file mode 100644 index 66db4693..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelLegalCheck.razor.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelLegalCheck : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelMyTasks.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelMyTasks.razor deleted file mode 100644 index 2a443f76..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelMyTasks.razor +++ /dev/null @@ -1,16 +0,0 @@ -@using AIStudio.Settings -@inherits SettingsPanelBase - -<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Task" HeaderText="Assistant: My Tasks"> - <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect options?" LabelOn="Options are preselected" LabelOff="No options are preselected" State="@(() => this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect options. This is might be useful when you prefer a specific language or LLM model."/> - <ConfigurationSelect OptionDescription="Preselect the language" Disabled="@(() => !this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.MyTasks.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesOptionalData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.MyTasks.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which language should be preselected?"/> - @if (this.SettingsManager.ConfigurationData.MyTasks.PreselectedTargetLanguage is CommonLanguages.OTHER) - { - <ConfigurationText OptionDescription="Preselect another language" Disabled="@(() => !this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.MyTasks.PreselectOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.MyTasks.PreselectOtherLanguage = updatedText)"/> - } - <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.MyTasks.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.MyTasks.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> - <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.MyTasks.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.MyTasks.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.MY_TASKS_ASSISTANT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.MyTasks.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.MyTasks.PreselectedProvider = selectedValue)"/> - </MudPaper> -</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelMyTasks.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelMyTasks.razor.cs deleted file mode 100644 index 2c4291dc..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelMyTasks.razor.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelMyTasks : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelRewrite.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelRewrite.razor deleted file mode 100644 index fe911994..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelRewrite.razor +++ /dev/null @@ -1,17 +0,0 @@ -@using AIStudio.Settings -@inherits SettingsPanelBase - -<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Edit" HeaderText="Assistant: Rewrite & Improve Text"> - <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect rewrite & improve text options?" LabelOn="Rewrite & improve text options are preselected" LabelOff="No rewrite & improve text options are preselected" State="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the rewrite & improve text options. This is might be useful when you prefer a specific language or LLM model."/> - <ConfigurationSelect OptionDescription="Preselect the target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesOptionalData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which target language should be preselected?"/> - @if (this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedTargetLanguage is CommonLanguages.OTHER) - { - <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedOtherLanguage = updatedText)"/> - } - <ConfigurationSelect OptionDescription="Preselect a writing style" Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedWritingStyle)" Data="@ConfigurationSelectDataFactory.GetWritingStyles4RewriteData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedWritingStyle = selectedValue)" OptionHelp="Which writing style should be preselected?"/> - <ConfigurationSelect OptionDescription="Preselect a sentence structure" Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedSentenceStructure)" Data="@ConfigurationSelectDataFactory.GetSentenceStructureData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedSentenceStructure = selectedValue)" OptionHelp="Which voice should be preselected for the sentence structure?"/> - <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.REWRITE_ASSISTANT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedProvider = selectedValue)"/> - </MudPaper> -</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelRewrite.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelRewrite.razor.cs deleted file mode 100644 index ca72bef5..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelRewrite.razor.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelRewrite : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelSynonyms.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelSynonyms.razor deleted file mode 100644 index 6468c537..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelSynonyms.razor +++ /dev/null @@ -1,15 +0,0 @@ -@using AIStudio.Settings -@inherits SettingsPanelBase - -<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Spellcheck" HeaderText="Assistant: Synonyms"> - <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect synonym options?" LabelOn="Synonym options are preselected" LabelOff="No synonym options are preselected" State="@(() => this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect synonym options. This is might be useful when you prefer a specific language or LLM model."/> - <ConfigurationSelect OptionDescription="Preselect the language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Synonyms.PreselectedLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesOptionalData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Synonyms.PreselectedLanguage = selectedValue)" OptionHelp="Which language should be preselected?"/> - @if (this.SettingsManager.ConfigurationData.Synonyms.PreselectedLanguage is CommonLanguages.OTHER) - { - <ConfigurationText OptionDescription="Preselect another language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.Synonyms.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Synonyms.PreselectedOtherLanguage = updatedText)"/> - } - <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Synonyms.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Synonyms.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.SYNONYMS_ASSISTANT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Synonyms.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Synonyms.PreselectedProvider = selectedValue)"/> - </MudPaper> -</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelSynonyms.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelSynonyms.razor.cs deleted file mode 100644 index c4a9ee40..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelSynonyms.razor.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelSynonyms : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelTextSummarizer.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelTextSummarizer.razor deleted file mode 100644 index f8afa494..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelTextSummarizer.razor +++ /dev/null @@ -1,24 +0,0 @@ -@using AIStudio.Assistants.TextSummarizer -@using AIStudio.Settings -@inherits SettingsPanelBase - -<ExpansionPanel HeaderIcon="@Icons.Material.Filled.TextSnippet" HeaderText="Assistant: Text Summarizer Options"> - <ConfigurationOption OptionDescription="Hide the web content reader?" LabelOn="Web content reader is hidden" LabelOff="Web content reader is shown" State="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.HideWebContentReader)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.TextSummarizer.HideWebContentReader = updatedState)" OptionHelp="When activated, the web content reader is hidden and cannot be used. As a result, the user interface becomes a bit easier to use."/> - <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect summarizer options?" LabelOn="Summarizer options are preselected" LabelOff="No summarizer options are preselected" State="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the text summarizer options. This is might be useful when you prefer a specific language, complexity, or LLM."/> - <ConfigurationOption OptionDescription="Preselect the web content reader?" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions || this.SettingsManager.ConfigurationData.TextSummarizer.HideWebContentReader)" LabelOn="Web content reader is preselected" LabelOff="Web content reader is not preselected" State="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectWebContentReader)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectWebContentReader = updatedState)" OptionHelp="When enabled, the web content reader is preselected. This is might be useful when you prefer to load content from the web very often."/> - <ConfigurationOption OptionDescription="Preselect the content cleaner agent?" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions || this.SettingsManager.ConfigurationData.TextSummarizer.HideWebContentReader)" LabelOn="Content cleaner agent is preselected" LabelOff="Content cleaner agent is not preselected" State="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectContentCleanerAgent)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectContentCleanerAgent = updatedState)" OptionHelp="When enabled, the content cleaner agent is preselected. This is might be useful when you prefer to clean up the content before summarize it."/> - <ConfigurationSelect OptionDescription="Preselect the target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which target language should be preselected?"/> - @if (this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedTargetLanguage is CommonLanguages.OTHER) - { - <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedOtherLanguage = updatedText)"/> - } - <ConfigurationSelect OptionDescription="Preselect the summarizer complexity" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedComplexity)" Data="@ConfigurationSelectDataFactory.GetComplexityData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedComplexity = selectedValue)" OptionHelp="Which summarizer complexity should be preselected?"/> - @if(this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedComplexity is Complexity.SCIENTIFIC_LANGUAGE_OTHER_EXPERTS) - { - <ConfigurationText OptionDescription="Preselect your expertise" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" Icon="@Icons.Material.Filled.Person" Text="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedExpertInField)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedExpertInField = updatedText)"/> - } - <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.TextSummarizer.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.TEXT_SUMMARIZER_ASSISTANT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedProvider = selectedValue)"/> - </MudPaper> -</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelTextSummarizer.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelTextSummarizer.razor.cs deleted file mode 100644 index 8eab6d8c..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelTextSummarizer.razor.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelTextSummarizer : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelTranslation.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelTranslation.razor deleted file mode 100644 index 6ad87762..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelTranslation.razor +++ /dev/null @@ -1,20 +0,0 @@ -@using AIStudio.Settings -@inherits SettingsPanelBase - -<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Translate" HeaderText="Assistant: Translator Options"> - <ConfigurationSlider T="int" OptionDescription="How fast should the live translation react?" Min="500" Max="3_000" Step="100" Unit="milliseconds" Value="@(() => this.SettingsManager.ConfigurationData.Translation.DebounceIntervalMilliseconds)" ValueUpdate="@(updatedValue => this.SettingsManager.ConfigurationData.Translation.DebounceIntervalMilliseconds = updatedValue)"/> - <ConfigurationOption OptionDescription="Hide the web content reader?" LabelOn="Web content reader is hidden" LabelOff="Web content reader is shown" State="@(() => this.SettingsManager.ConfigurationData.Translation.HideWebContentReader)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Translation.HideWebContentReader = updatedState)" OptionHelp="When activated, the web content reader is hidden and cannot be used. As a result, the user interface becomes a bit easier to use."/> - <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect translator options?" LabelOn="Translator options are preselected" LabelOff="No translator options are preselected" State="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Translation.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the translator options. This is might be useful when you prefer a specific target language or LLM model."/> - <ConfigurationOption OptionDescription="Preselect the web content reader?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions || this.SettingsManager.ConfigurationData.Translation.HideWebContentReader)" LabelOn="Web content reader is preselected" LabelOff="Web content reader is not preselected" State="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectWebContentReader)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Translation.PreselectWebContentReader = updatedState)" OptionHelp="When enabled, the web content reader is preselected. This is might be useful when you prefer to load content from the web very often."/> - <ConfigurationOption OptionDescription="Preselect the content cleaner agent?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions || this.SettingsManager.ConfigurationData.Translation.HideWebContentReader)" LabelOn="Content cleaner agent is preselected" LabelOff="Content cleaner agent is not preselected" State="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectContentCleanerAgent)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Translation.PreselectContentCleanerAgent = updatedState)" OptionHelp="When enabled, the content cleaner agent is preselected. This is might be useful when you prefer to clean up the content before translating it."/> - <ConfigurationOption OptionDescription="Preselect live translation?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" LabelOn="Live translation is preselected" LabelOff="Live translation is not preselected" State="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectLiveTranslation)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Translation.PreselectLiveTranslation = updatedState)" /> - <ConfigurationSelect OptionDescription="Preselect the target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Translation.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which target language should be preselected?"/> - @if (this.SettingsManager.ConfigurationData.Translation.PreselectedTargetLanguage is CommonLanguages.OTHER) - { - <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Translation.PreselectOtherLanguage = updatedText)"/> - } - <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Translation.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Translation.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.TRANSLATION_ASSISTANT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Translation.PreselectedProvider = selectedValue)"/> - </MudPaper> -</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelTranslation.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelTranslation.razor.cs deleted file mode 100644 index d68b5789..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelTranslation.razor.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelTranslation : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelWritingEMails.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelWritingEMails.razor deleted file mode 100644 index 0126ecf2..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelWritingEMails.razor +++ /dev/null @@ -1,19 +0,0 @@ -@using AIStudio.Settings -@inherits SettingsPanelBase - -<ExpansionPanel HeaderIcon="@Icons.Material.Filled.Email" HeaderText="Assistant: Writing E-Mails"> - <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> - <ConfigurationOption OptionDescription="Preselect e-mail options?" LabelOn="E-Mail options are preselected" LabelOff="No e-mail options are preselected" State="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.EMail.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the e-mail options. This is might be useful when you prefer a specific language or LLM model."/> - <ConfigurationText OptionDescription="Preselect a greeting?" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" Icon="@Icons.Material.Filled.Person" Text="@(() => this.SettingsManager.ConfigurationData.EMail.Greeting)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.EMail.Greeting = updatedText)" /> - <ConfigurationText OptionDescription="Preselect your name for the closing salutation?" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" Icon="@Icons.Material.Filled.Person" Text="@(() => this.SettingsManager.ConfigurationData.EMail.SenderName)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.EMail.SenderName = updatedText)" /> - <ConfigurationSelect OptionDescription="Preselect the target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesTranslationData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which target language should be preselected?"/> - @if (this.SettingsManager.ConfigurationData.EMail.PreselectedTargetLanguage is CommonLanguages.OTHER) - { - <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.EMail.PreselectOtherLanguage = updatedText)"/> - } - <ConfigurationSelect OptionDescription="Preselect a writing style" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectedWritingStyle)" Data="@ConfigurationSelectDataFactory.GetWritingStyles4EMailData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.PreselectedWritingStyle = selectedValue)" OptionHelp="Which writing style should be preselected?"/> - <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.EMAIL_ASSISTANT" Data="@this.AvailableLLMProvidersFunc()" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.PreselectedProvider = selectedValue)"/> - <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> - </MudPaper> -</ExpansionPanel> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelWritingEMails.razor.cs b/app/MindWork AI Studio/Components/Settings/SettingsPanelWritingEMails.razor.cs deleted file mode 100644 index 5d87b618..00000000 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelWritingEMails.razor.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelWritingEMails : SettingsPanelBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor new file mode 100644 index 00000000..dc510ef9 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor @@ -0,0 +1,43 @@ +@using AIStudio.Settings +@inherits SettingsDialogBase + +<MudDialog> + <TitleContent> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.CalendarToday" Class="mr-2" /> + Assistant: Agenda Planner Options + </MudText> + </TitleContent> + <DialogContent> + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect agenda options?" LabelOn="Agenda options are preselected" LabelOff="No agenda options are preselected" State="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Agenda.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect most agenda options. This is might be useful when you need to create similar agendas often."/> + <ConfigurationText OptionDescription="Preselect a name?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.Tag" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectName)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectName = updatedText)" /> + <ConfigurationText OptionDescription="Preselect a topic?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.EventNote" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectTopic)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectTopic = updatedText)" /> + <ConfigurationText OptionDescription="Preselect an objective?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.Flag" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectObjective)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectObjective = updatedText)" /> + <ConfigurationText OptionDescription="Preselect a moderator?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.Person3" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectModerator)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectModerator = updatedText)" /> + <ConfigurationText OptionDescription="Preselect a duration?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.Schedule" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectDuration)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectDuration = updatedText)" /> + <ConfigurationText OptionDescription="Preselect a start time?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.Schedule" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectStartTime)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectStartTime = updatedText)" /> + <ConfigurationOption OptionDescription="Preselect whether the participants should get to know each other" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" LabelOn="Participants should get to know each other" LabelOff="Participants do not need to get to know each other" State="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectIntroduceParticipants)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Agenda.PreselectIntroduceParticipants = updatedState)" /> + <ConfigurationSelect OptionDescription="Preselect the number of participants" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectNumberParticipants)" Data="@ConfigurationSelectDataFactory.GetNumberParticipantsData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectNumberParticipants = selectedValue)" OptionHelp="How many participants should be preselected?"/> + <ConfigurationOption OptionDescription="Preselect whether the participants should actively involved" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" LabelOn="Participants should be actively involved" LabelOff="Participants do not need to be actively involved" State="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectActiveParticipation)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Agenda.PreselectActiveParticipation = updatedState)" /> + <ConfigurationOption OptionDescription="Preselect whether the meeting is virtual" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" LabelOn="Meeting is virtual" LabelOff="Meeting is in person" State="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectIsMeetingVirtual)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Agenda.PreselectIsMeetingVirtual = updatedState)" /> + <ConfigurationText OptionDescription="Preselect a location?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.MyLocation" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectLocation)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectLocation = updatedText)" /> + <ConfigurationOption OptionDescription="Preselect whether there is a joint dinner" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" LabelOn="There is a joint dinner" LabelOff="There is no joint dinner" State="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectJointDinner)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Agenda.PreselectJointDinner = updatedState)" /> + <ConfigurationOption OptionDescription="Preselect whether there is a social event" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" LabelOn="There is a social event" LabelOff="There is no social event" State="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectSocialActivity)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Agenda.PreselectSocialActivity = updatedState)" /> + <ConfigurationOption OptionDescription="Preselect whether participants needs to arrive and depart" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" LabelOn="Participants need to arrive and depart" LabelOff="Participants do not need to arrive and depart" State="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectArriveAndDepart)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Agenda.PreselectArriveAndDepart = updatedState)" /> + <ConfigurationSlider T="int" OptionDescription="Preselect the approx. lunch time" Min="30" Max="120" Step="5" Unit="minutes" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Value="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectLunchTime)" ValueUpdate="@(updatedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectLunchTime = updatedValue)" /> + <ConfigurationSlider T="int" OptionDescription="Preselect the approx. break time" Min="10" Max="60" Step="5" Unit="minutes" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Value="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectBreakTime)" ValueUpdate="@(updatedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectBreakTime = updatedValue)" /> + <ConfigurationSelect OptionDescription="Preselect the agenda language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesTranslationData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which agenda language should be preselected?"/> + @if (this.SettingsManager.ConfigurationData.Agenda.PreselectedTargetLanguage is CommonLanguages.OTHER) + { + <ConfigurationText OptionDescription="Preselect another agenda language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectedOtherLanguage = updatedText)"/> + } + <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Agenda.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Agenda.MinimumProviderConfidence = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.AGENDA_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectedProvider = selectedValue)"/> + <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> + </MudPaper> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor.cs new file mode 100644 index 00000000..94333b70 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor.cs @@ -0,0 +1,5 @@ +using AIStudio.Dialogs.Settings; + +namespace AIStudio.Dialogs.Settings; + +public partial class SettingsDialogAgenda : SettingsDialogBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor new file mode 100644 index 00000000..9bce0888 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor @@ -0,0 +1,40 @@ +@using AIStudio.Settings +@using AIStudio.Settings.DataModel +@inherits SettingsDialogBase +<MudDialog> + <TitleContent> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.Psychology" Class="mr-2" /> + Assistant: Bias of the Day Options + </MudText> + </TitleContent> + <DialogContent> + <MudField Label="Assistant: Bias of the Day" Variant="Variant.Outlined" Class="mb-4"> + <ConfigurationOption OptionDescription="Restrict to one bias a day?" LabelOn="Yes, you can only retrieve one bias per day" LabelOff="No restriction. You can retrieve as many biases as you want per day." State="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.RestrictOneBiasPerDay)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.BiasOfTheDay.RestrictOneBiasPerDay = updatedState)"/> + + <MudField Label="Statistics" Variant="Variant.Outlined" Class="mb-2"> + <MudText Typo="Typo.body1"> + You have learned about @this.SettingsManager.ConfigurationData.BiasOfTheDay.UsedBias.Count out of @BiasCatalog.ALL_BIAS.Count biases. + </MudText> + <MudButton Size="Size.Small" Variant="Variant.Filled" StartIcon="@Icons.Material.Filled.Restore" Color="Color.Error" OnClick="@(() => this.ResetBiasOfTheDayHistory())"> + Reset + </MudButton> + </MudField> + + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect options?" LabelOn="Options are preselected" LabelOff="No options are preselected" State="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect options. This is might be useful when you prefer a specific language or LLM model."/> + <ConfigurationSelect OptionDescription="Preselect the language" Disabled="@(() => !this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesOptionalData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which language should be preselected?"/> + @if (this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedTargetLanguage is CommonLanguages.OTHER) + { + <ConfigurationText OptionDescription="Preselect another language" Disabled="@(() => !this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedOtherLanguage = updatedText)"/> + } + <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> + <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.BiasOfTheDay.MinimumProviderConfidence = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.BIAS_DAY_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedProvider = selectedValue)"/> + </MudPaper> + </MudField> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelAssistantBias.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor.cs similarity index 90% rename from app/MindWork AI Studio/Components/Settings/SettingsPanelAssistantBias.razor.cs rename to app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor.cs index 375d644b..19fbafce 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelAssistantBias.razor.cs +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor.cs @@ -2,9 +2,9 @@ using AIStudio.Dialogs; using DialogOptions = AIStudio.Dialogs.DialogOptions; -namespace AIStudio.Components.Settings; +namespace AIStudio.Dialogs.Settings; -public partial class SettingsPanelAssistantBias : SettingsPanelBase +public partial class SettingsDialogAssistantBias : SettingsDialogBase { private async Task ResetBiasOfTheDayHistory() { @@ -24,4 +24,5 @@ public partial class SettingsPanelAssistantBias : SettingsPanelBase await this.MessageBus.SendMessage<bool>(this, Event.CONFIGURATION_CHANGED); } + } \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs new file mode 100644 index 00000000..f788148b --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs @@ -0,0 +1,50 @@ +using System.Diagnostics.CodeAnalysis; +using System.Runtime.CompilerServices; +using AIStudio.Settings; +using AIStudio.Tools.Services; + +using Microsoft.AspNetCore.Components; + +namespace AIStudio.Dialogs.Settings; + +public abstract class SettingsDialogBase : ComponentBase +{ + [CascadingParameter] + protected MudDialogInstance MudDialog { get; set; } = null!; + + [Parameter] + public List<ConfigurationSelectData<string>> AvailableLLMProviders { get; set; } = new(); + + [Inject] + protected SettingsManager SettingsManager { get; init; } = null!; + + [Inject] + protected IDialogService DialogService { get; init; } = null!; + + [Inject] + protected MessageBus MessageBus { get; init; } = null!; + + [Inject] + protected RustService RustService { get; init; } = null!; + + #region Overrides of ComponentBase + + /// <inheritdoc /> + protected override void OnInitialized() + { + this.UpdateProviders(); + base.OnInitialized(); + } + + #endregion + + protected void Close() => this.MudDialog.Cancel(); + + [SuppressMessage("Usage", "MWAIS0001:Direct access to `Providers` is not allowed")] + private void UpdateProviders() + { + this.AvailableLLMProviders.Clear(); + foreach (var provider in this.SettingsManager.ConfigurationData.Providers) + this.AvailableLLMProviders.Add(new (provider.InstanceName, provider.Id)); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor new file mode 100644 index 00000000..668c3128 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor @@ -0,0 +1,29 @@ +@using AIStudio.Assistants.Coding +@using AIStudio.Settings +@inherits SettingsDialogBase + +<MudDialog> + <TitleContent> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.Code" Class="mr-2" /> + Assistant: Coding Options + </MudText> + </TitleContent> + <DialogContent> + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect coding options?" LabelOn="Coding options are preselected" LabelOff="No coding options are preselected" State="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Coding.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the coding options. This is might be useful when you prefer a specific programming language or LLM model."/> + <ConfigurationOption OptionDescription="Preselect compiler messages?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" LabelOn="Compiler messages are preselected" LabelOff="Compiler messages are not preselected" State="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectCompilerMessages)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Coding.PreselectCompilerMessages = updatedState)" /> + <ConfigurationSelect OptionDescription="Preselect a programming language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedProgrammingLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonCodingLanguagesData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.PreselectedProgrammingLanguage = selectedValue)" OptionHelp="Which programming language should be preselected for added contexts?"/> + @if (this.SettingsManager.ConfigurationData.Coding.PreselectedProgrammingLanguage is CommonCodingLanguages.OTHER) + { + <ConfigurationText OptionDescription="Preselect another programming language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" Icon="@Icons.Material.Filled.Code" Text="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedOtherProgrammingLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Coding.PreselectedOtherProgrammingLanguage = updatedText)"/> + } + <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.MinimumProviderConfidence = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.CODING_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.PreselectedProvider = selectedValue)"/> + <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> + </MudPaper> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor.cs new file mode 100644 index 00000000..f914bd72 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor.cs @@ -0,0 +1,3 @@ +namespace AIStudio.Dialogs.Settings; + +public partial class SettingsDialogCoding : SettingsDialogBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogERIServer.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogERIServer.razor new file mode 100644 index 00000000..071f1c81 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogERIServer.razor @@ -0,0 +1,30 @@ +@using AIStudio.Settings +@inherits SettingsDialogBase + +<MudDialog> + <TitleContent> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.PrivateConnectivity" Class="mr-2" /> + Assistant: ERI Server Options + </MudText> + </TitleContent> + <DialogContent> + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect ERI server options?" LabelOn="ERI server options are preselected" LabelOff="No ERI server options are preselected" State="@(() => this.SettingsManager.ConfigurationData.ERI.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.ERI.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect some ERI server options."/> + <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.ERI.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.ERI.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.ERI.MinimumProviderConfidence = selectedValue)"/> + <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.ERI.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.ERI.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.ERI.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> + + <MudText Typo="Typo.body1" Class="mb-3"> + Most ERI server options can be customized and saved directly in the ERI server assistant. + For this, the ERI server assistant has an auto-save function. + </MudText> + + <MudButton Size="Size.Large" Variant="Variant.Filled" StartIcon="@Icons.Material.Filled.PrivateConnectivity" Color="Color.Default" Href="@Routes.ASSISTANT_ERI"> + Switch to ERI server assistant + </MudButton> + </MudPaper> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogERIServer.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogERIServer.razor.cs new file mode 100644 index 00000000..d2f36c8a --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogERIServer.razor.cs @@ -0,0 +1,3 @@ +namespace AIStudio.Dialogs.Settings; + +public partial class SettingsDialogERIServer : SettingsDialogBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor new file mode 100644 index 00000000..fd1d0f51 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor @@ -0,0 +1,26 @@ +@using AIStudio.Settings +@inherits SettingsDialogBase + +<MudDialog> + <TitleContent> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.Edit" Class="mr-2" /> + Assistant: Grammar & Spelling Checker Options + </MudText> + </TitleContent> + <DialogContent> + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect grammar & spell checker options?" LabelOn="Grammar & spell checker options are preselected" LabelOff="No grammar & spell checker options are preselected" State="@(() => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the grammar & spell checker options. This is might be useful when you prefer a specific language or LLM model."/> + <ConfigurationSelect OptionDescription="Preselect the target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesOptionalData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which target language should be preselected?"/> + @if (this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedTargetLanguage is CommonLanguages.OTHER) + { + <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedOtherLanguage = updatedText)"/> + } + <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.GrammarSpelling.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.GrammarSpelling.MinimumProviderConfidence = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.GRAMMAR_SPELLING_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedProvider = selectedValue)"/> + </MudPaper> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor.cs new file mode 100644 index 00000000..e2a0da0c --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor.cs @@ -0,0 +1,3 @@ +namespace AIStudio.Dialogs.Settings; + +public partial class SettingsDialogGrammarSpelling : SettingsDialogBase; diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor new file mode 100644 index 00000000..b452820e --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor @@ -0,0 +1,22 @@ +@using AIStudio.Settings +@inherits SettingsDialogBase + +<MudDialog> + <TitleContent> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.FindInPage" Class="mr-2" /> + Assistant: Icon Finder Options + </MudText> + </TitleContent> + <DialogContent> + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect icon options?" LabelOn="Icon options are preselected" LabelOff="No icon options are preselected" State="@(() => this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the icon options. This is might be useful when you prefer a specific icon source or LLM model."/> + <ConfigurationSelect OptionDescription="Preselect the icon source" Disabled="@(() => !this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.IconFinder.PreselectedSource)" Data="@ConfigurationSelectDataFactory.GetIconSourcesData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.IconFinder.PreselectedSource = selectedValue)" OptionHelp="Which icon source should be preselected?"/> + <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.IconFinder.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.IconFinder.MinimumProviderConfidence = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.ICON_FINDER_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.IconFinder.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.IconFinder.PreselectedProvider = selectedValue)"/> + </MudPaper> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor.cs new file mode 100644 index 00000000..708efdd0 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor.cs @@ -0,0 +1,3 @@ +namespace AIStudio.Dialogs.Settings; + +public partial class SettingsDialogIconFinder : SettingsDialogBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor new file mode 100644 index 00000000..6d1fc3c8 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor @@ -0,0 +1,33 @@ +@using AIStudio.Settings +@inherits SettingsDialogBase + +<MudDialog> + <TitleContent> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.Work" Class="mr-2" /> + Assistant: Job Posting Options + </MudText> + </TitleContent> + <DialogContent> + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect job posting options?" LabelOn="Job posting options are preselected" LabelOff="No job posting options are preselected" State="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect some job posting options. This is might be useful when you prefer a specific LLM model."/> + <ConfigurationText OptionDescription="Preselect the company name?" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.Warehouse" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedCompanyName)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectedCompanyName = updatedText)" /> + <ConfigurationText OptionDescription="Preselect some mandatory information about the job posting?" NumLines="6" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.TextSnippet" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedMandatoryInformation)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectedMandatoryInformation = updatedText)" /> + <ConfigurationText OptionDescription="Preselect the job description?" NumLines="3" MaxLines="6" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.Settings" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedJobDescription)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectedJobDescription = updatedText)" /> + <ConfigurationText OptionDescription="Preselect the job qualifications?" NumLines="3" MaxLines="6" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.Settings" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedQualifications)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectedQualifications = updatedText)" /> + <ConfigurationText OptionDescription="Preselect the job responsibilities?" NumLines="3" MaxLines="6" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.Settings" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedResponsibilities)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectedResponsibilities = updatedText)" /> + <ConfigurationText OptionDescription="Preselect the work location?" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.MyLocation" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedWorkLocation)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectedWorkLocation = updatedText)" /> + <ConfigurationText OptionDescription="Preselect the country (legal framework)?" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.Flag" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedCountryLegalFramework)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectedCountryLegalFramework = updatedText)" /> + <ConfigurationSelect OptionDescription="Preselect the language" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesOptionalData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.JobPostings.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which target language should be preselected?"/> + @if (this.SettingsManager.ConfigurationData.JobPostings.PreselectedTargetLanguage is CommonLanguages.OTHER) + { + <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectOtherLanguage = updatedText)"/> + } + <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.JobPostings.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.JobPostings.MinimumProviderConfidence = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.JOB_POSTING_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.JobPostings.PreselectedProvider = selectedValue)"/> + </MudPaper> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor.cs new file mode 100644 index 00000000..328adc2f --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor.cs @@ -0,0 +1,3 @@ +namespace AIStudio.Dialogs.Settings; + +public partial class SettingsDialogJobPostings : SettingsDialogBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor new file mode 100644 index 00000000..0573e489 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor @@ -0,0 +1,24 @@ +@using AIStudio.Settings +@inherits SettingsDialogBase +<MudDialog> + <TitleContent> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.Gavel" Class="mr-2" /> + Assistant: Legal Check Options + </MudText> + </TitleContent> + <DialogContent> + <ConfigurationOption OptionDescription="Hide the web content reader?" LabelOn="Web content reader is hidden" LabelOff="Web content reader is shown" State="@(() => this.SettingsManager.ConfigurationData.LegalCheck.HideWebContentReader)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.LegalCheck.HideWebContentReader = updatedState)" OptionHelp="When activated, the web content reader is hidden and cannot be used. As a result, the user interface becomes a bit easier to use."/> + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect legal check options?" LabelOn="Legal check options are preselected" LabelOff="No legal check options are preselected" State="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect some legal check options. This is might be useful when you prefer a specific LLM model."/> + <ConfigurationOption OptionDescription="Preselect the web content reader?" Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions || this.SettingsManager.ConfigurationData.LegalCheck.HideWebContentReader)" LabelOn="Web content reader is preselected" LabelOff="Web content reader is not preselected" State="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectWebContentReader)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.LegalCheck.PreselectWebContentReader = updatedState)" OptionHelp="When enabled, the web content reader is preselected. This is might be useful when you prefer to load legal content from the web very often."/> + <ConfigurationOption OptionDescription="Preselect the content cleaner agent?" Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions || this.SettingsManager.ConfigurationData.LegalCheck.HideWebContentReader)" LabelOn="Content cleaner agent is preselected" LabelOff="Content cleaner agent is not preselected" State="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectContentCleanerAgent)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.LegalCheck.PreselectContentCleanerAgent = updatedState)" OptionHelp="When enabled, the content cleaner agent is preselected. This is might be useful when you prefer to clean up the legal content before translating it."/> + <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.LegalCheck.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.LegalCheck.MinimumProviderConfidence = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.LEGAL_CHECK_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.LegalCheck.PreselectedProvider = selectedValue)"/> + <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.LegalCheck.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> + </MudPaper> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor.cs new file mode 100644 index 00000000..9139c228 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor.cs @@ -0,0 +1,3 @@ +namespace AIStudio.Dialogs.Settings; + +public partial class SettingsDialogLegalCheck : SettingsDialogBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor new file mode 100644 index 00000000..7660612f --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor @@ -0,0 +1,27 @@ +@using AIStudio.Settings +@inherits SettingsDialogBase + +<MudDialog> + <TitleContent> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.Task" Class="mr-2" /> + Assistant: My Tasks Options + </MudText> + </TitleContent> + <DialogContent> + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect options?" LabelOn="Options are preselected" LabelOff="No options are preselected" State="@(() => this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect options. This is might be useful when you prefer a specific language or LLM model."/> + <ConfigurationSelect OptionDescription="Preselect the language" Disabled="@(() => !this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.MyTasks.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesOptionalData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.MyTasks.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which language should be preselected?"/> + @if (this.SettingsManager.ConfigurationData.MyTasks.PreselectedTargetLanguage is CommonLanguages.OTHER) + { + <ConfigurationText OptionDescription="Preselect another language" Disabled="@(() => !this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.MyTasks.PreselectOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.MyTasks.PreselectOtherLanguage = updatedText)"/> + } + <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.MyTasks.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.MyTasks.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> + <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.MyTasks.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.MyTasks.MinimumProviderConfidence = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.MY_TASKS_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.MyTasks.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.MyTasks.PreselectedProvider = selectedValue)"/> + </MudPaper> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor.cs new file mode 100644 index 00000000..d18c9860 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor.cs @@ -0,0 +1,3 @@ +namespace AIStudio.Dialogs.Settings; + +public partial class SettingsDialogMyTasks : SettingsDialogBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor new file mode 100644 index 00000000..79931580 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor @@ -0,0 +1,28 @@ +@using AIStudio.Settings +@inherits SettingsDialogBase + +<MudDialog> + <TitleContent> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.Edit" Class="mr-2" /> + Assistant: Rewrite & Improve Text Options + </MudText> + </TitleContent> + <DialogContent> + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect rewrite & improve text options?" LabelOn="Rewrite & improve text options are preselected" LabelOff="No rewrite & improve text options are preselected" State="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the rewrite & improve text options. This is might be useful when you prefer a specific language or LLM model."/> + <ConfigurationSelect OptionDescription="Preselect the target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesOptionalData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which target language should be preselected?"/> + @if (this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedTargetLanguage is CommonLanguages.OTHER) + { + <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedOtherLanguage = updatedText)"/> + } + <ConfigurationSelect OptionDescription="Preselect a writing style" Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedWritingStyle)" Data="@ConfigurationSelectDataFactory.GetWritingStyles4RewriteData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedWritingStyle = selectedValue)" OptionHelp="Which writing style should be preselected?"/> + <ConfigurationSelect OptionDescription="Preselect a sentence structure" Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedSentenceStructure)" Data="@ConfigurationSelectDataFactory.GetSentenceStructureData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedSentenceStructure = selectedValue)" OptionHelp="Which voice should be preselected for the sentence structure?"/> + <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.MinimumProviderConfidence = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.REWRITE_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedProvider = selectedValue)"/> + </MudPaper> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor.cs new file mode 100644 index 00000000..12a74394 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor.cs @@ -0,0 +1,3 @@ +namespace AIStudio.Dialogs.Settings; + +public partial class SettingsDialogRewrite : SettingsDialogBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor new file mode 100644 index 00000000..d36328f5 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor @@ -0,0 +1,26 @@ +@using AIStudio.Settings +@inherits SettingsDialogBase + +<MudDialog> + <TitleContent> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.Spellcheck" Class="mr-2" /> + Assistant: Synonyms Options + </MudText> + </TitleContent> + <DialogContent> + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect synonym options?" LabelOn="Synonym options are preselected" LabelOff="No synonym options are preselected" State="@(() => this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect synonym options. This is might be useful when you prefer a specific language or LLM model."/> + <ConfigurationSelect OptionDescription="Preselect the language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Synonyms.PreselectedLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesOptionalData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Synonyms.PreselectedLanguage = selectedValue)" OptionHelp="Which language should be preselected?"/> + @if (this.SettingsManager.ConfigurationData.Synonyms.PreselectedLanguage is CommonLanguages.OTHER) + { + <ConfigurationText OptionDescription="Preselect another language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.Synonyms.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Synonyms.PreselectedOtherLanguage = updatedText)"/> + } + <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Synonyms.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Synonyms.MinimumProviderConfidence = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.SYNONYMS_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Synonyms.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Synonyms.PreselectedProvider = selectedValue)"/> + </MudPaper> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor.cs new file mode 100644 index 00000000..729e02c0 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor.cs @@ -0,0 +1,3 @@ +namespace AIStudio.Dialogs.Settings; + +public partial class SettingsDialogSynonyms : SettingsDialogBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor new file mode 100644 index 00000000..6dcf4ee4 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor @@ -0,0 +1,35 @@ +@using AIStudio.Assistants.TextSummarizer +@using AIStudio.Settings +@inherits SettingsDialogBase + +<MudDialog> + <TitleContent> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.TextSnippet" Class="mr-2" /> + Assistant: Text Summarizer Options + </MudText> + </TitleContent> + <DialogContent> + <ConfigurationOption OptionDescription="Hide the web content reader?" LabelOn="Web content reader is hidden" LabelOff="Web content reader is shown" State="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.HideWebContentReader)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.TextSummarizer.HideWebContentReader = updatedState)" OptionHelp="When activated, the web content reader is hidden and cannot be used. As a result, the user interface becomes a bit easier to use."/> + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect summarizer options?" LabelOn="Summarizer options are preselected" LabelOff="No summarizer options are preselected" State="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the text summarizer options. This is might be useful when you prefer a specific language, complexity, or LLM."/> + <ConfigurationOption OptionDescription="Preselect the web content reader?" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions || this.SettingsManager.ConfigurationData.TextSummarizer.HideWebContentReader)" LabelOn="Web content reader is preselected" LabelOff="Web content reader is not preselected" State="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectWebContentReader)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectWebContentReader = updatedState)" OptionHelp="When enabled, the web content reader is preselected. This is might be useful when you prefer to load content from the web very often."/> + <ConfigurationOption OptionDescription="Preselect the content cleaner agent?" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions || this.SettingsManager.ConfigurationData.TextSummarizer.HideWebContentReader)" LabelOn="Content cleaner agent is preselected" LabelOff="Content cleaner agent is not preselected" State="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectContentCleanerAgent)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectContentCleanerAgent = updatedState)" OptionHelp="When enabled, the content cleaner agent is preselected. This is might be useful when you prefer to clean up the content before summarize it."/> + <ConfigurationSelect OptionDescription="Preselect the target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which target language should be preselected?"/> + @if (this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedTargetLanguage is CommonLanguages.OTHER) + { + <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedOtherLanguage = updatedText)"/> + } + <ConfigurationSelect OptionDescription="Preselect the summarizer complexity" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedComplexity)" Data="@ConfigurationSelectDataFactory.GetComplexityData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedComplexity = selectedValue)" OptionHelp="Which summarizer complexity should be preselected?"/> + @if(this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedComplexity is Complexity.SCIENTIFIC_LANGUAGE_OTHER_EXPERTS) + { + <ConfigurationText OptionDescription="Preselect your expertise" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" Icon="@Icons.Material.Filled.Person" Text="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedExpertInField)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedExpertInField = updatedText)"/> + } + <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.TextSummarizer.MinimumProviderConfidence = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.TEXT_SUMMARIZER_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedProvider = selectedValue)"/> + </MudPaper> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor.cs new file mode 100644 index 00000000..de7bb910 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor.cs @@ -0,0 +1,3 @@ +namespace AIStudio.Dialogs.Settings; + +public partial class SettingsDialogTextSummarizer : SettingsDialogBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor new file mode 100644 index 00000000..4da35455 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor @@ -0,0 +1,30 @@ +@using AIStudio.Settings +@inherits SettingsDialogBase +<MudDialog> + <TitleContent> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.Translate" Class="mr-2" /> + Assistant: Translator Options + </MudText> + </TitleContent> + <DialogContent> + <ConfigurationSlider T="int" OptionDescription="How fast should the live translation react?" Min="500" Max="3_000" Step="100" Unit="milliseconds" Value="@(() => this.SettingsManager.ConfigurationData.Translation.DebounceIntervalMilliseconds)" ValueUpdate="@(updatedValue => this.SettingsManager.ConfigurationData.Translation.DebounceIntervalMilliseconds = updatedValue)"/> + <ConfigurationOption OptionDescription="Hide the web content reader?" LabelOn="Web content reader is hidden" LabelOff="Web content reader is shown" State="@(() => this.SettingsManager.ConfigurationData.Translation.HideWebContentReader)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Translation.HideWebContentReader = updatedState)" OptionHelp="When activated, the web content reader is hidden and cannot be used. As a result, the user interface becomes a bit easier to use."/> + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect translator options?" LabelOn="Translator options are preselected" LabelOff="No translator options are preselected" State="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Translation.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the translator options. This is might be useful when you prefer a specific target language or LLM model."/> + <ConfigurationOption OptionDescription="Preselect the web content reader?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions || this.SettingsManager.ConfigurationData.Translation.HideWebContentReader)" LabelOn="Web content reader is preselected" LabelOff="Web content reader is not preselected" State="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectWebContentReader)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Translation.PreselectWebContentReader = updatedState)" OptionHelp="When enabled, the web content reader is preselected. This is might be useful when you prefer to load content from the web very often."/> + <ConfigurationOption OptionDescription="Preselect the content cleaner agent?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions || this.SettingsManager.ConfigurationData.Translation.HideWebContentReader)" LabelOn="Content cleaner agent is preselected" LabelOff="Content cleaner agent is not preselected" State="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectContentCleanerAgent)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Translation.PreselectContentCleanerAgent = updatedState)" OptionHelp="When enabled, the content cleaner agent is preselected. This is might be useful when you prefer to clean up the content before translating it."/> + <ConfigurationOption OptionDescription="Preselect live translation?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" LabelOn="Live translation is preselected" LabelOff="Live translation is not preselected" State="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectLiveTranslation)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.Translation.PreselectLiveTranslation = updatedState)" /> + <ConfigurationSelect OptionDescription="Preselect the target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Translation.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which target language should be preselected?"/> + @if (this.SettingsManager.ConfigurationData.Translation.PreselectedTargetLanguage is CommonLanguages.OTHER) + { + <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Translation.PreselectOtherLanguage = updatedText)"/> + } + <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Translation.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Translation.MinimumProviderConfidence = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.TRANSLATION_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Translation.PreselectedProvider = selectedValue)"/> + </MudPaper> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor.cs new file mode 100644 index 00000000..83c8a290 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor.cs @@ -0,0 +1,5 @@ +using AIStudio.Dialogs.Settings; + +namespace AIStudio.Dialogs.Settings; + +public partial class SettingsDialogTranslation : SettingsDialogBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor new file mode 100644 index 00000000..27ac9e7a --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor @@ -0,0 +1,30 @@ +@using AIStudio.Settings +@inherits SettingsDialogBase + +<MudDialog> + <TitleContent> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.Email" Class="mr-2" /> + Assistant: Writing E-Mails Options + </MudText> + </TitleContent> + <DialogContent> + <MudPaper Class="pa-3 mb-8 border-dashed border rounded-lg"> + <ConfigurationOption OptionDescription="Preselect e-mail options?" LabelOn="E-Mail options are preselected" LabelOff="No e-mail options are preselected" State="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.EMail.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the e-mail options. This is might be useful when you prefer a specific language or LLM model."/> + <ConfigurationText OptionDescription="Preselect a greeting?" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" Icon="@Icons.Material.Filled.Person" Text="@(() => this.SettingsManager.ConfigurationData.EMail.Greeting)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.EMail.Greeting = updatedText)"/> + <ConfigurationText OptionDescription="Preselect your name for the closing salutation?" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" Icon="@Icons.Material.Filled.Person" Text="@(() => this.SettingsManager.ConfigurationData.EMail.SenderName)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.EMail.SenderName = updatedText)"/> + <ConfigurationSelect OptionDescription="Preselect the target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectedTargetLanguage)" Data="@ConfigurationSelectDataFactory.GetCommonLanguagesTranslationData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.PreselectedTargetLanguage = selectedValue)" OptionHelp="Which target language should be preselected?"/> + @if (this.SettingsManager.ConfigurationData.EMail.PreselectedTargetLanguage is CommonLanguages.OTHER) + { + <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.EMail.PreselectOtherLanguage = updatedText)"/> + } + <ConfigurationSelect OptionDescription="Preselect a writing style" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectedWritingStyle)" Data="@ConfigurationSelectDataFactory.GetWritingStyles4EMailData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.PreselectedWritingStyle = selectedValue)" OptionHelp="Which writing style should be preselected?"/> + <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.MinimumProviderConfidence = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.EMAIL_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.PreselectedProvider = selectedValue)"/> + <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> + </MudPaper> + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor.cs new file mode 100644 index 00000000..11c04324 --- /dev/null +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor.cs @@ -0,0 +1,3 @@ +namespace AIStudio.Dialogs.Settings; + +public partial class SettingsDialogWritingEMails : SettingsDialogBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Assistants.razor b/app/MindWork AI Studio/Pages/Assistants.razor index 9cef736d..58c0deb1 100644 --- a/app/MindWork AI Studio/Pages/Assistants.razor +++ b/app/MindWork AI Studio/Pages/Assistants.razor @@ -1,3 +1,4 @@ +@using AIStudio.Dialogs.Settings @using AIStudio.Settings.DataModel @attribute [Route(Routes.ASSISTANTS)] @@ -12,40 +13,40 @@ General </MudText> <MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3"> - <AssistantBlock Name="Text Summarizer" Description="Using a LLM to summarize a given text." Icon="@Icons.Material.Filled.TextSnippet" Link="@Routes.ASSISTANT_SUMMARIZER"/> - <AssistantBlock Name="Translation" Description="Translate text into another language." Icon="@Icons.Material.Filled.Translate" Link="@Routes.ASSISTANT_TRANSLATION"/> - <AssistantBlock Name="Grammar & Spelling" Description="Check grammar and spelling of a given text." Icon="@Icons.Material.Filled.Edit" Link="@Routes.ASSISTANT_GRAMMAR_SPELLING"/> - <AssistantBlock Name="Rewrite & Improve" Description="Rewrite and improve a given text for a chosen style." Icon="@Icons.Material.Filled.Edit" Link="@Routes.ASSISTANT_REWRITE"/> - <AssistantBlock Name="Synonyms" Description="Find synonyms for a given word or phrase." Icon="@Icons.Material.Filled.Spellcheck" Link="@Routes.ASSISTANT_SYNONYMS"/> + <AssistantBlock TSettings="SettingsDialogTextSummarizer" Name="Text Summarizer" Description="Use an LLM to summarize a given text." Icon="@Icons.Material.Filled.TextSnippet" Link="@Routes.ASSISTANT_SUMMARIZER"/> + <AssistantBlock TSettings="SettingsDialogTranslation" Name="Translation" Description="Translate text into another language." Icon="@Icons.Material.Filled.Translate" Link="@Routes.ASSISTANT_TRANSLATION"/> + <AssistantBlock TSettings="SettingsDialogGrammarSpelling" Name="Grammar & Spelling" Description="Check grammar and spelling of a given text." Icon="@Icons.Material.Filled.Edit" Link="@Routes.ASSISTANT_GRAMMAR_SPELLING"/> + <AssistantBlock TSettings="SettingsDialogRewrite" Name="Rewrite & Improve" Description="Rewrite and improve a given text for a chosen style." Icon="@Icons.Material.Filled.Edit" Link="@Routes.ASSISTANT_REWRITE"/> + <AssistantBlock TSettings="SettingsDialogSynonyms" Name="Synonyms" Description="Find synonyms for a given word or phrase." Icon="@Icons.Material.Filled.Spellcheck" Link="@Routes.ASSISTANT_SYNONYMS"/> </MudStack> <MudText Typo="Typo.h4" Class="mb-2 mr-3 mt-6"> Business </MudText> <MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3"> - <AssistantBlock Name="E-Mail" Description="Generate an e-mail for a given context." Icon="@Icons.Material.Filled.Email" Link="@Routes.ASSISTANT_EMAIL"/> - <AssistantBlock Name="My Tasks" Description="Analyze a text or an email for tasks you need to complete." Icon="@Icons.Material.Filled.Task" Link="@Routes.ASSISTANT_MY_TASKS"/> - <AssistantBlock Name="Agenda Planner" Description="Generate an agenda for a given meeting, seminar, etc." Icon="@Icons.Material.Filled.CalendarToday" Link="@Routes.ASSISTANT_AGENDA"/> - <AssistantBlock Name="Job Posting" Description="Generate a job posting for a given job description." Icon="@Icons.Material.Filled.Work" Link="@Routes.ASSISTANT_JOB_POSTING"/> - <AssistantBlock Name="Legal Check" Description="Ask a question about a legal document." Icon="@Icons.Material.Filled.Gavel" Link="@Routes.ASSISTANT_LEGAL_CHECK"/> - <AssistantBlock Name="Icon Finder" Description="Using a LLM to find an icon for a given context." Icon="@Icons.Material.Filled.FindInPage" Link="@Routes.ASSISTANT_ICON_FINDER"/> + <AssistantBlock TSettings="SettingsDialogWritingEMails" Name="E-Mail" Description="Generate an e-mail for a given context." Icon="@Icons.Material.Filled.Email" Link="@Routes.ASSISTANT_EMAIL"/> + <AssistantBlock TSettings="SettingsDialogMyTasks" Name="My Tasks" Description="Analyze a text or an email for tasks you need to complete." Icon="@Icons.Material.Filled.Task" Link="@Routes.ASSISTANT_MY_TASKS"/> + <AssistantBlock TSettings="SettingsDialogAgenda" Name="Agenda Planner" Description="Generate an agenda for a given meeting, seminar, etc." Icon="@Icons.Material.Filled.CalendarToday" Link="@Routes.ASSISTANT_AGENDA"/> + <AssistantBlock TSettings="SettingsDialogJobPostings" Name="Job Posting" Description="Generate a job posting for a given job description." Icon="@Icons.Material.Filled.Work" Link="@Routes.ASSISTANT_JOB_POSTING"/> + <AssistantBlock TSettings="SettingsDialogLegalCheck" Name="Legal Check" Description="Ask a question about a legal document." Icon="@Icons.Material.Filled.Gavel" Link="@Routes.ASSISTANT_LEGAL_CHECK"/> + <AssistantBlock TSettings="SettingsDialogIconFinder" Name="Icon Finder" Description="Use an LLM to find an icon for a given context." Icon="@Icons.Material.Filled.FindInPage" Link="@Routes.ASSISTANT_ICON_FINDER"/> </MudStack> <MudText Typo="Typo.h4" Class="mb-2 mr-3 mt-6"> Learning </MudText> <MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3"> - <AssistantBlock Name="Bias of the Day" Description="Learn about one cognitive bias every day." Icon="@Icons.Material.Filled.Psychology" Link="@Routes.ASSISTANT_BIAS"/> + <AssistantBlock TSettings="SettingsDialogAssistantBias" Name="Bias of the Day" Description="Learn about one cognitive bias every day." Icon="@Icons.Material.Filled.Psychology" Link="@Routes.ASSISTANT_BIAS"/> </MudStack> <MudText Typo="Typo.h4" Class="mb-2 mr-3 mt-6"> Software Engineering </MudText> <MudStack Row="@true" Wrap="@Wrap.Wrap" Class="mb-3"> - <AssistantBlock Name="Coding" Description="Get coding and debugging support from a LLM." Icon="@Icons.Material.Filled.Code" Link="@Routes.ASSISTANT_CODING"/> + <AssistantBlock TSettings="SettingsDialogCoding" Name="Coding" Description="Get coding and debugging support from an LLM." Icon="@Icons.Material.Filled.Code" Link="@Routes.ASSISTANT_CODING"/> @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) { - <AssistantBlock Name="ERI Server" Description="Generate an ERI server to integrate business systems." Icon="@Icons.Material.Filled.PrivateConnectivity" Link="@Routes.ASSISTANT_ERI"/> + <AssistantBlock TSettings="SettingsDialogERIServer" Name="ERI Server" Description="Generate an ERI server to integrate business systems." Icon="@Icons.Material.Filled.PrivateConnectivity" Link="@Routes.ASSISTANT_ERI"/> } </MudStack> diff --git a/app/MindWork AI Studio/Pages/Settings.razor b/app/MindWork AI Studio/Pages/Settings.razor index 4170eb81..3516096b 100644 --- a/app/MindWork AI Studio/Pages/Settings.razor +++ b/app/MindWork AI Studio/Pages/Settings.razor @@ -7,44 +7,25 @@ <InnerScrolling> <MudExpansionPanels Class="mb-3" MultiExpansion="@false"> - <SettingsPanelProviders @bind-AvailableLLMProviders="@this.availableLLMProviders" /> - + <SettingsPanelProviders @bind-AvailableLLMProviders="@this.availableLLMProviders"/> + @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) { <SettingsPanelEmbeddings AvailableLLMProvidersFunc="() => this.availableLLMProviders" @bind-AvailableEmbeddingProviders="@this.availableEmbeddingProviders"/> <SettingsPanelDataSources AvailableLLMProvidersFunc="() => this.availableLLMProviders" AvailableEmbeddingsFunc="() => this.availableEmbeddingProviders" @bind-AvailableDataSources="@this.availableDataSources"/> } - <SettingsPanelProfiles AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelApp AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelChat AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelWorkspaces AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelIconFinder AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelTranslation AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelCoding AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - - @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) - { - <SettingsPanelERIServer AvailableLLMProvidersFunc="() => this.availableLLMProviders"/> - } - - <SettingsPanelTextSummarizer AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelAgenda AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelGrammarSpelling AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelRewrite AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelWritingEMails AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelJobPostings AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelLegalCheck AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelSynonyms AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelMyTasks AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - <SettingsPanelAssistantBias AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> - + <SettingsPanelProfiles AvailableLLMProvidersFunc="() => this.availableLLMProviders"/> + <SettingsPanelApp AvailableLLMProvidersFunc="() => this.availableLLMProviders"/> + <SettingsPanelChat AvailableLLMProvidersFunc="() => this.availableLLMProviders"/> + <SettingsPanelWorkspaces AvailableLLMProvidersFunc="() => this.availableLLMProviders"/> + @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) { <SettingsPanelAgentDataSourceSelection AvailableLLMProvidersFunc="() => this.availableLLMProviders"/> <SettingsPanelAgentRetrievalContextValidation AvailableLLMProvidersFunc="() => this.availableLLMProviders"/> } - - <SettingsPanelAgentContentCleaner AvailableLLMProvidersFunc="() => this.availableLLMProviders" /> + + <SettingsPanelAgentContentCleaner AvailableLLMProvidersFunc="() => this.availableLLMProviders"/> </MudExpansionPanels> </InnerScrolling> </div> \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/JsRuntimeExtensions.cs b/app/MindWork AI Studio/Tools/JsRuntimeExtensions.cs index c78bf2d0..e00cf16a 100644 --- a/app/MindWork AI Studio/Tools/JsRuntimeExtensions.cs +++ b/app/MindWork AI Studio/Tools/JsRuntimeExtensions.cs @@ -1,4 +1,5 @@ using AIStudio.Assistants; +using AIStudio.Dialogs.Settings; namespace AIStudio.Tools; @@ -6,7 +7,7 @@ public static class JsRuntimeExtensions { public static async Task GenerateAndShowDiff(this IJSRuntime jsRuntime, string text1, string text2) { - await jsRuntime.InvokeVoidAsync("generateDiff", text1, text2, AssistantBase.RESULT_DIV_ID, AssistantBase.BEFORE_RESULT_DIV_ID); + await jsRuntime.InvokeVoidAsync("generateDiff", text1, text2, AssistantBase<NoComponent>.RESULT_DIV_ID, AssistantBase<NoComponent>.BEFORE_RESULT_DIV_ID); } public static async Task ClearDiv(this IJSRuntime jsRuntime, string divId) diff --git a/app/MindWork AI Studio/Tools/NoComponent.cs b/app/MindWork AI Studio/Tools/NoComponent.cs new file mode 100644 index 00000000..f0072efa --- /dev/null +++ b/app/MindWork AI Studio/Tools/NoComponent.cs @@ -0,0 +1,16 @@ +using Microsoft.AspNetCore.Components; + +namespace AIStudio.Tools; + +public sealed class NoComponent: IComponent +{ + public void Attach(RenderHandle renderHandle) + { + throw new NotImplementedException(); + } + + public Task SetParametersAsync(ParameterView parameters) + { + throw new NotImplementedException(); + } +} \ No newline at end of file From d399b025a97a6172458f1b3c7e415e91e2fddb0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Peer=20Sch=C3=BCtt?= <20603780+peerschuett@users.noreply.github.com> Date: Wed, 12 Mar 2025 11:58:43 +0100 Subject: [PATCH 067/110] Added changelog for newest features of #327 (#329) --- app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md index 388c568f..56666cfb 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md @@ -1 +1,2 @@ -# v0.9.35, build 210 (2025-03-xx xx:xx UTC) \ No newline at end of file +# v0.9.35, build 210 (2025-03-xx xx:xx UTC) +- A settings icon was added to all assistants and the assistants overview. The icon opens a dialog that displays all settings that can be changed. The settings aren't shown on the settings overview page anymore for a better overview. \ No newline at end of file From 850d56cfcf23e0d4f13c40fec56d6dfc5e67b64a Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Wed, 12 Mar 2025 13:10:28 +0100 Subject: [PATCH 068/110] Enhance build & release workflow (#330) --- .github/workflows/build-and-release.yml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index d5e54401..878375c3 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -1,6 +1,8 @@ name: Build and Release on: push: + branches: + - main tags: - "v*.*.*" @@ -566,6 +568,7 @@ jobs: name: Prepare & create release runs-on: ubuntu-latest needs: [build_main, read_metadata, build_linux_arm64] + if: startsWith(github.ref, 'refs/tags/v') steps: - name: Create artifact directory run: mkdir -p $GITHUB_WORKSPACE/artifacts @@ -723,6 +726,7 @@ jobs: name: Publish release runs-on: ubuntu-latest needs: [read_metadata, create_release] + if: startsWith(github.ref, 'refs/tags/v') permissions: contents: write From 5cc6e141c2133f1d4a6d86dd9fdaed5222a38fb7 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Wed, 12 Mar 2025 13:18:28 +0100 Subject: [PATCH 069/110] GitHub workflow: added tag check for metadata processing (#331) --- .github/workflows/build-and-release.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index 878375c3..2ebf8a82 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -48,6 +48,7 @@ jobs: echo "version=${version}" >> "$GITHUB_OUTPUT" - name: Check tag vs. metadata version + if: startsWith(github.ref, 'refs/tags/v') run: | # Ensure, that the tag matches the version in the metadata file: if [ "${GITHUB_REF}" != "refs/tags/${FORMATTED_VERSION}" ]; then From 2e8444b5e3e0d362c666c2edb8e7cfb49f588687 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Wed, 12 Mar 2025 18:05:27 +0100 Subject: [PATCH 070/110] Code maintenance (#332) --- .../Assistants/Agenda/AssistantAgenda.razor.cs | 1 - .../Assistants/AssistantBase.razor | 1 + .../Assistants/AssistantBase.razor.cs | 13 +------------ .../Assistants/AssistantLowerBase.cs | 12 ++++++++++++ .../BiasDay/BiasOfTheDayAssistant.razor.cs | 1 - .../Assistants/Coding/AssistantCoding.razor.cs | 2 +- .../Assistants/EMail/AssistantEMail.razor.cs | 1 - .../Assistants/ERI/AssistantERI.razor.cs | 1 - .../AssistantGrammarSpelling.razor.cs | 1 - .../IconFinder/AssistantIconFinder.razor.cs | 1 - .../JobPosting/AssistantJobPostings.razor.cs | 1 - .../LegalCheck/AssistantLegalCheck.razor.cs | 1 - .../Assistants/MyTasks/AssistantMyTasks.razor.cs | 1 - .../RewriteImprove/AssistantRewriteImprove.razor.cs | 1 - .../TextSummarizer/AssistantTextSummarizer.razor.cs | 1 - .../Translation/AssistantTranslation.razor.cs | 1 - .../Components/ProviderSelection.razor.cs | 1 - .../Dialogs/Settings/SettingsDialogAgenda.razor.cs | 2 -- .../Settings/SettingsDialogAssistantBias.razor.cs | 4 ---- .../Dialogs/Settings/SettingsDialogBase.cs | 5 +---- .../Settings/SettingsDialogTranslation.razor.cs | 2 -- app/MindWork AI Studio/Tools/JsRuntimeExtensions.cs | 3 +-- 22 files changed, 17 insertions(+), 40 deletions(-) create mode 100644 app/MindWork AI Studio/Assistants/AssistantLowerBase.cs diff --git a/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor.cs b/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor.cs index 7153efe9..6e1c4d52 100644 --- a/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor.cs +++ b/app/MindWork AI Studio/Assistants/Agenda/AssistantAgenda.razor.cs @@ -1,7 +1,6 @@ using System.Text; using AIStudio.Chat; -using AIStudio.Components.Settings; using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.Agenda; diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor b/app/MindWork AI Studio/Assistants/AssistantBase.razor index 21d92846..634b55e4 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor @@ -1,4 +1,5 @@ @using AIStudio.Chat +@inherits AssistantLowerBase @typeparam TSettings <div class="inner-scrolling-context"> diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs index 4fd10eb0..7c42e0a8 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs @@ -1,6 +1,4 @@ using AIStudio.Chat; -using AIStudio.Components.Settings; -using AIStudio.Dialogs.Settings; using AIStudio.Provider; using AIStudio.Settings; using AIStudio.Tools.Services; @@ -15,7 +13,7 @@ using DialogOptions = AIStudio.Dialogs.DialogOptions; namespace AIStudio.Assistants; -public abstract partial class AssistantBase<TSettings> : ComponentBase, IMessageBusReceiver, IDisposable where TSettings : IComponent +public abstract partial class AssistantBase<TSettings> : AssistantLowerBase, IMessageBusReceiver, IDisposable where TSettings : IComponent { [Inject] protected SettingsManager SettingsManager { get; init; } = null!; @@ -35,9 +33,6 @@ public abstract partial class AssistantBase<TSettings> : ComponentBase, IMessage [Inject] protected RustService RustService { get; init; } = null!; - [Inject] - protected DataSourceService DataSourceService { get; init; } = null!; - [Inject] protected NavigationManager NavigationManager { get; init; } = null!; @@ -50,10 +45,6 @@ public abstract partial class AssistantBase<TSettings> : ComponentBase, IMessage [Inject] private MessageBus MessageBus { get; init; } = null!; - internal const string RESULT_DIV_ID = "assistantResult"; - internal const string BEFORE_RESULT_DIV_ID = "beforeAssistantResult"; - internal const string AFTER_RESULT_DIV_ID = "afterAssistantResult"; - protected abstract string Title { get; } protected abstract string Description { get; } @@ -99,8 +90,6 @@ public abstract partial class AssistantBase<TSettings> : ComponentBase, IMessage protected virtual ChatThread ConvertToChatThread => this.chatThread ?? new(); protected virtual IReadOnlyList<IButtonData> FooterButtons => []; - - protected static readonly Dictionary<string, object?> USER_INPUT_ATTRIBUTES = new(); protected AIStudio.Settings.Provider providerSettings; protected MudForm? form; diff --git a/app/MindWork AI Studio/Assistants/AssistantLowerBase.cs b/app/MindWork AI Studio/Assistants/AssistantLowerBase.cs new file mode 100644 index 00000000..8e053015 --- /dev/null +++ b/app/MindWork AI Studio/Assistants/AssistantLowerBase.cs @@ -0,0 +1,12 @@ +using Microsoft.AspNetCore.Components; + +namespace AIStudio.Assistants; + +public abstract class AssistantLowerBase : ComponentBase +{ + protected static readonly Dictionary<string, object?> USER_INPUT_ATTRIBUTES = new(); + + internal const string RESULT_DIV_ID = "assistantResult"; + internal const string BEFORE_RESULT_DIV_ID = "beforeAssistantResult"; + internal const string AFTER_RESULT_DIV_ID = "afterAssistantResult"; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Assistants/BiasDay/BiasOfTheDayAssistant.razor.cs b/app/MindWork AI Studio/Assistants/BiasDay/BiasOfTheDayAssistant.razor.cs index c83b5096..94356393 100644 --- a/app/MindWork AI Studio/Assistants/BiasDay/BiasOfTheDayAssistant.razor.cs +++ b/app/MindWork AI Studio/Assistants/BiasDay/BiasOfTheDayAssistant.razor.cs @@ -1,7 +1,6 @@ using System.Text; using AIStudio.Chat; -using AIStudio.Components.Settings; using AIStudio.Dialogs.Settings; using AIStudio.Settings.DataModel; diff --git a/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor.cs b/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor.cs index aecb93c5..61e94865 100644 --- a/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor.cs +++ b/app/MindWork AI Studio/Assistants/Coding/AssistantCoding.razor.cs @@ -1,5 +1,5 @@ using System.Text; -using AIStudio.Components.Settings; + using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.Coding; diff --git a/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor.cs b/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor.cs index 48dc194e..7a91f1c8 100644 --- a/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor.cs +++ b/app/MindWork AI Studio/Assistants/EMail/AssistantEMail.razor.cs @@ -1,7 +1,6 @@ using System.Text; using AIStudio.Chat; -using AIStudio.Components.Settings; using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.EMail; diff --git a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs index d86dcdaf..c752f4cb 100644 --- a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs +++ b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor.cs @@ -2,7 +2,6 @@ using System.Text; using System.Text.RegularExpressions; using AIStudio.Chat; -using AIStudio.Components.Settings; using AIStudio.Dialogs; using AIStudio.Dialogs.Settings; using AIStudio.Settings.DataModel; diff --git a/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor.cs b/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor.cs index 97742c2d..4a0e53c1 100644 --- a/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor.cs +++ b/app/MindWork AI Studio/Assistants/GrammarSpelling/AssistantGrammarSpelling.razor.cs @@ -1,5 +1,4 @@ using AIStudio.Chat; -using AIStudio.Components.Settings; using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.GrammarSpelling; diff --git a/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor.cs b/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor.cs index ef518bab..a071a81e 100644 --- a/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor.cs +++ b/app/MindWork AI Studio/Assistants/IconFinder/AssistantIconFinder.razor.cs @@ -1,4 +1,3 @@ -using AIStudio.Components.Settings; using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.IconFinder; diff --git a/app/MindWork AI Studio/Assistants/JobPosting/AssistantJobPostings.razor.cs b/app/MindWork AI Studio/Assistants/JobPosting/AssistantJobPostings.razor.cs index 4834c677..651824dd 100644 --- a/app/MindWork AI Studio/Assistants/JobPosting/AssistantJobPostings.razor.cs +++ b/app/MindWork AI Studio/Assistants/JobPosting/AssistantJobPostings.razor.cs @@ -1,5 +1,4 @@ using AIStudio.Chat; -using AIStudio.Components.Settings; using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.JobPosting; diff --git a/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor.cs b/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor.cs index 7e8bf222..218563fe 100644 --- a/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor.cs +++ b/app/MindWork AI Studio/Assistants/LegalCheck/AssistantLegalCheck.razor.cs @@ -1,5 +1,4 @@ using AIStudio.Chat; -using AIStudio.Components.Settings; using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.LegalCheck; diff --git a/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor.cs b/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor.cs index 7be85b28..3a512615 100644 --- a/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor.cs +++ b/app/MindWork AI Studio/Assistants/MyTasks/AssistantMyTasks.razor.cs @@ -1,5 +1,4 @@ using AIStudio.Chat; -using AIStudio.Components.Settings; using AIStudio.Dialogs.Settings; using AIStudio.Settings; diff --git a/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor.cs b/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor.cs index 440a4e7d..0fb45089 100644 --- a/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor.cs +++ b/app/MindWork AI Studio/Assistants/RewriteImprove/AssistantRewriteImprove.razor.cs @@ -1,5 +1,4 @@ using AIStudio.Chat; -using AIStudio.Components.Settings; using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.RewriteImprove; diff --git a/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor.cs b/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor.cs index d0df48c4..c5fc437c 100644 --- a/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor.cs +++ b/app/MindWork AI Studio/Assistants/TextSummarizer/AssistantTextSummarizer.razor.cs @@ -1,5 +1,4 @@ using AIStudio.Chat; -using AIStudio.Components.Settings; using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.TextSummarizer; diff --git a/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor.cs b/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor.cs index c29a862c..628190cd 100644 --- a/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor.cs +++ b/app/MindWork AI Studio/Assistants/Translation/AssistantTranslation.razor.cs @@ -1,5 +1,4 @@ using AIStudio.Chat; -using AIStudio.Components.Settings; using AIStudio.Dialogs.Settings; namespace AIStudio.Assistants.Translation; diff --git a/app/MindWork AI Studio/Components/ProviderSelection.razor.cs b/app/MindWork AI Studio/Components/ProviderSelection.razor.cs index be84e294..66158211 100644 --- a/app/MindWork AI Studio/Components/ProviderSelection.razor.cs +++ b/app/MindWork AI Studio/Components/ProviderSelection.razor.cs @@ -1,7 +1,6 @@ using System.Diagnostics.CodeAnalysis; using AIStudio.Assistants; -using AIStudio.Dialogs.Settings; using AIStudio.Provider; using AIStudio.Settings; diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor.cs index 94333b70..261d6b31 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor.cs +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor.cs @@ -1,5 +1,3 @@ -using AIStudio.Dialogs.Settings; - namespace AIStudio.Dialogs.Settings; public partial class SettingsDialogAgenda : SettingsDialogBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor.cs index 19fbafce..75767049 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor.cs +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor.cs @@ -1,7 +1,3 @@ -using AIStudio.Dialogs; - -using DialogOptions = AIStudio.Dialogs.DialogOptions; - namespace AIStudio.Dialogs.Settings; public partial class SettingsDialogAssistantBias : SettingsDialogBase diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs index f788148b..430d61d0 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs @@ -1,7 +1,6 @@ using System.Diagnostics.CodeAnalysis; -using System.Runtime.CompilerServices; + using AIStudio.Settings; -using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; @@ -24,8 +23,6 @@ public abstract class SettingsDialogBase : ComponentBase [Inject] protected MessageBus MessageBus { get; init; } = null!; - [Inject] - protected RustService RustService { get; init; } = null!; #region Overrides of ComponentBase diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor.cs index 83c8a290..1dc31ea8 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor.cs +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor.cs @@ -1,5 +1,3 @@ -using AIStudio.Dialogs.Settings; - namespace AIStudio.Dialogs.Settings; public partial class SettingsDialogTranslation : SettingsDialogBase; \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/JsRuntimeExtensions.cs b/app/MindWork AI Studio/Tools/JsRuntimeExtensions.cs index e00cf16a..702d2732 100644 --- a/app/MindWork AI Studio/Tools/JsRuntimeExtensions.cs +++ b/app/MindWork AI Studio/Tools/JsRuntimeExtensions.cs @@ -1,5 +1,4 @@ using AIStudio.Assistants; -using AIStudio.Dialogs.Settings; namespace AIStudio.Tools; @@ -7,7 +6,7 @@ public static class JsRuntimeExtensions { public static async Task GenerateAndShowDiff(this IJSRuntime jsRuntime, string text1, string text2) { - await jsRuntime.InvokeVoidAsync("generateDiff", text1, text2, AssistantBase<NoComponent>.RESULT_DIV_ID, AssistantBase<NoComponent>.BEFORE_RESULT_DIV_ID); + await jsRuntime.InvokeVoidAsync("generateDiff", text1, text2, AssistantLowerBase.RESULT_DIV_ID, AssistantLowerBase.BEFORE_RESULT_DIV_ID); } public static async Task ClearDiv(this IJSRuntime jsRuntime, string divId) From ce8d84a12a20eaefa7275bf1661b4d0bce03ae78 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Wed, 12 Mar 2025 19:12:56 +0100 Subject: [PATCH 071/110] Migrate to .NET 9 & MudBlazor 8 (#333) --- .../Agents/AgentDataSourceSelection.cs | 20 -- .../Agents/AgentRetrievalContextValidation.cs | 3 - .../Components/ConfidenceInfo.razor | 2 +- .../Components/ConfidenceInfo.razor.cs | 2 +- .../Components/ProfileSelection.razor | 2 +- .../Dialogs/ConfirmDialog.razor.cs | 2 +- .../DataSourceERI-V1InfoDialog.razor.cs | 2 +- .../Dialogs/DataSourceERI_V1Dialog.razor.cs | 2 +- .../DataSourceLocalDirectoryDialog.razor.cs | 2 +- ...ataSourceLocalDirectoryInfoDialog.razor.cs | 2 +- .../DataSourceLocalFileDialog.razor.cs | 2 +- .../DataSourceLocalFileInfoDialog.razor.cs | 2 +- .../Dialogs/EmbeddingMethodDialog.razor.cs | 2 +- .../Dialogs/EmbeddingProviderDialog.razor.cs | 2 +- .../Dialogs/ProfileDialog.razor.cs | 2 +- .../Dialogs/ProviderDialog.razor.cs | 2 +- .../Dialogs/RetrievalProcessDialog.razor.cs | 2 +- .../Dialogs/Settings/SettingsDialogBase.cs | 2 +- .../Dialogs/SingleInputDialog.razor.cs | 2 +- .../Dialogs/UpdateDialog.razor.cs | 2 +- .../Dialogs/WorkspaceSelectionDialog.razor.cs | 2 +- .../MindWork AI Studio.csproj | 13 +- .../Tools/ThreadSafeRandom.cs | 2 +- app/MindWork AI Studio/packages.lock.json | 174 +++++++++--------- .../wwwroot/changelog/v0.9.35.md | 5 +- metadata.txt | 8 +- 26 files changed, 119 insertions(+), 144 deletions(-) diff --git a/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs b/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs index 6a0f0957..6fe1f4e2 100644 --- a/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs +++ b/app/MindWork AI Studio/Agents/AgentDataSourceSelection.cs @@ -315,26 +315,6 @@ public sealed class AgentDataSourceSelection (ILogger<AgentDataSourceSelection> return []; } } - - /// <summary> - /// Extracts the JSON list from the given text. The text may contain additional - /// information around the JSON list. The method tries to extract the JSON list - /// from the text. - /// </summary> - /// <remarks> - /// Algorithm: The method searches for the first line that contains only a '[' character. - /// Then, it searches for the first line that contains only a ']' character. The method - /// returns the text between these two lines (including the brackets). When the method - /// cannot find the JSON list, it returns an empty string. - /// <br/><br/> - /// This overload is using strings instead of spans. We can use this overload in any - /// async method. Thus, it is a wrapper around the span-based method. Yes, we are losing - /// the memory efficiency of the span-based method, but we still gain the performance - /// of the span-based method: the entire search algorithm is span-based. - /// </remarks> - /// <param name="text">The text that may contain the JSON list.</param> - /// <returns>The extracted JSON list.</returns> - private static string ExtractJson(string text) => ExtractJson(text.AsSpan()).ToString(); /// <summary> /// Extracts the JSON list from the given text. The text may contain additional diff --git a/app/MindWork AI Studio/Agents/AgentRetrievalContextValidation.cs b/app/MindWork AI Studio/Agents/AgentRetrievalContextValidation.cs index 3f4bf4c2..9a4fdff5 100644 --- a/app/MindWork AI Studio/Agents/AgentRetrievalContextValidation.cs +++ b/app/MindWork AI Studio/Agents/AgentRetrievalContextValidation.cs @@ -319,9 +319,6 @@ public sealed class AgentRetrievalContextValidation (ILogger<AgentRetrievalConte } } - // A wrapper around the span version, because we need to call this method from an async context. - private static string ExtractJson(string text) => ExtractJson(text.AsSpan()).ToString(); - private static ReadOnlySpan<char> ExtractJson(ReadOnlySpan<char> input) { // diff --git a/app/MindWork AI Studio/Components/ConfidenceInfo.razor b/app/MindWork AI Studio/Components/ConfidenceInfo.razor index 48a8becc..7870c9a9 100644 --- a/app/MindWork AI Studio/Components/ConfidenceInfo.razor +++ b/app/MindWork AI Studio/Components/ConfidenceInfo.razor @@ -20,7 +20,7 @@ <MudText Typo="Typo.h5">Confidence Card</MudText> </CardHeaderContent> </MudCardHeader> - <MudCardContent Style="max-height: 50vh; overflow: auto;"> + <MudCardContent Style="max-height: 50vh; max-width: 35vw; overflow: auto;"> <MudText Typo="Typo.h6">Description</MudText> <MudMarkdown Value="@this.currentConfidence.Description"/> diff --git a/app/MindWork AI Studio/Components/ConfidenceInfo.razor.cs b/app/MindWork AI Studio/Components/ConfidenceInfo.razor.cs index b586a2fe..3bad56ea 100644 --- a/app/MindWork AI Studio/Components/ConfidenceInfo.razor.cs +++ b/app/MindWork AI Studio/Components/ConfidenceInfo.razor.cs @@ -59,7 +59,7 @@ public partial class ConfidenceInfo : ComponentBase, IMessageBusReceiver, IDispo private string GetCurrentConfidenceColor() => $"color: {this.currentConfidence.Level.GetColor(this.SettingsManager)};"; - private string GetPopoverStyle() => $"border-color: {this.currentConfidence.Level.GetColor(this.SettingsManager)}; max-width: calc(35vw);"; + private string GetPopoverStyle() => $"border-color: {this.currentConfidence.Level.GetColor(this.SettingsManager)};"; #region Implementation of IMessageBusReceiver diff --git a/app/MindWork AI Studio/Components/ProfileSelection.razor b/app/MindWork AI Studio/Components/ProfileSelection.razor index 44f242bf..f4acf35a 100644 --- a/app/MindWork AI Studio/Components/ProfileSelection.razor +++ b/app/MindWork AI Studio/Components/ProfileSelection.razor @@ -1,5 +1,5 @@ <MudTooltip Text="You can switch between your profiles here" Placement="Placement.Top"> - <MudMenu StartIcon="@Icons.Material.Filled.Person4" EndIcon="@Icons.Material.Filled.KeyboardArrowDown" Label="@this.CurrentProfile.Name" Variant="Variant.Filled" Color="Color.Default" Class="@this.MarginClass"> + <MudMenu TransformOrigin="@Origin.BottomLeft" AnchorOrigin="Origin.TopLeft" StartIcon="@Icons.Material.Filled.Person4" EndIcon="@Icons.Material.Filled.KeyboardArrowDown" Label="@this.CurrentProfile.Name" Variant="Variant.Filled" Color="Color.Default" Class="@this.MarginClass"> @foreach (var profile in this.SettingsManager.ConfigurationData.Profiles.GetAllProfiles()) { <MudMenuItem OnClick="() => this.SelectionChanged(profile)"> diff --git a/app/MindWork AI Studio/Dialogs/ConfirmDialog.razor.cs b/app/MindWork AI Studio/Dialogs/ConfirmDialog.razor.cs index 05fd6be9..78fb9ad3 100644 --- a/app/MindWork AI Studio/Dialogs/ConfirmDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/ConfirmDialog.razor.cs @@ -8,7 +8,7 @@ namespace AIStudio.Dialogs; public partial class ConfirmDialog : ComponentBase { [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; [Parameter] public string Message { get; set; } = string.Empty; diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs index 75b76bdb..2594ee58 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI-V1InfoDialog.razor.cs @@ -17,7 +17,7 @@ namespace AIStudio.Dialogs; public partial class DataSourceERI_V1InfoDialog : ComponentBase, IAsyncDisposable, ISecretId { [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; [Parameter] public DataSourceERI_V1 DataSource { get; set; } diff --git a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs index 81612a8e..e3547d9d 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceERI_V1Dialog.razor.cs @@ -16,7 +16,7 @@ namespace AIStudio.Dialogs; public partial class DataSourceERI_V1Dialog : ComponentBase, ISecretId { [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; [Parameter] public bool IsEditing { get; set; } diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor.cs index 30cccbe5..16c2e677 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryDialog.razor.cs @@ -9,7 +9,7 @@ namespace AIStudio.Dialogs; public partial class DataSourceLocalDirectoryDialog : ComponentBase { [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; [Parameter] public bool IsEditing { get; set; } diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor.cs index ee525e01..af8c0df8 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalDirectoryInfoDialog.razor.cs @@ -12,7 +12,7 @@ namespace AIStudio.Dialogs; public partial class DataSourceLocalDirectoryInfoDialog : ComponentBase, IAsyncDisposable { [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; [Parameter] public DataSourceLocalDirectory DataSource { get; set; } diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs index 726f2113..902899fe 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileDialog.razor.cs @@ -9,7 +9,7 @@ namespace AIStudio.Dialogs; public partial class DataSourceLocalFileDialog : ComponentBase { [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; [Parameter] public bool IsEditing { get; set; } diff --git a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor.cs b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor.cs index a4a5c4a3..7dc204c1 100644 --- a/app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/DataSourceLocalFileInfoDialog.razor.cs @@ -8,7 +8,7 @@ namespace AIStudio.Dialogs; public partial class DataSourceLocalFileInfoDialog : ComponentBase { [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; [Parameter] public DataSourceLocalFile DataSource { get; set; } diff --git a/app/MindWork AI Studio/Dialogs/EmbeddingMethodDialog.razor.cs b/app/MindWork AI Studio/Dialogs/EmbeddingMethodDialog.razor.cs index c2733fbc..36ee9417 100644 --- a/app/MindWork AI Studio/Dialogs/EmbeddingMethodDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/EmbeddingMethodDialog.razor.cs @@ -8,7 +8,7 @@ namespace AIStudio.Dialogs; public partial class EmbeddingMethodDialog : ComponentBase { [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; /// <summary> /// The user chosen embedding name. diff --git a/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs b/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs index 759d9a17..1d09fa52 100644 --- a/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/EmbeddingProviderDialog.razor.cs @@ -12,7 +12,7 @@ namespace AIStudio.Dialogs; public partial class EmbeddingProviderDialog : ComponentBase, ISecretId { [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; /// <summary> /// The embedding's number in the list. diff --git a/app/MindWork AI Studio/Dialogs/ProfileDialog.razor.cs b/app/MindWork AI Studio/Dialogs/ProfileDialog.razor.cs index 7391c1d5..28b9b4b1 100644 --- a/app/MindWork AI Studio/Dialogs/ProfileDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/ProfileDialog.razor.cs @@ -7,7 +7,7 @@ namespace AIStudio.Dialogs; public partial class ProfileDialog : ComponentBase { [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; /// <summary> /// The profile's number in the list. diff --git a/app/MindWork AI Studio/Dialogs/ProviderDialog.razor.cs b/app/MindWork AI Studio/Dialogs/ProviderDialog.razor.cs index 4e76b473..f1a71739 100644 --- a/app/MindWork AI Studio/Dialogs/ProviderDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/ProviderDialog.razor.cs @@ -15,7 +15,7 @@ namespace AIStudio.Dialogs; public partial class ProviderDialog : ComponentBase, ISecretId { [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; /// <summary> /// The provider's number in the list. diff --git a/app/MindWork AI Studio/Dialogs/RetrievalProcessDialog.razor.cs b/app/MindWork AI Studio/Dialogs/RetrievalProcessDialog.razor.cs index df01a7c1..99b5d9f8 100644 --- a/app/MindWork AI Studio/Dialogs/RetrievalProcessDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/RetrievalProcessDialog.razor.cs @@ -8,7 +8,7 @@ namespace AIStudio.Dialogs; public partial class RetrievalProcessDialog : ComponentBase { [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; /// <summary> /// The user chosen retrieval process name. diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs index 430d61d0..a4732c67 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs @@ -9,7 +9,7 @@ namespace AIStudio.Dialogs.Settings; public abstract class SettingsDialogBase : ComponentBase { [CascadingParameter] - protected MudDialogInstance MudDialog { get; set; } = null!; + protected IMudDialogInstance MudDialog { get; set; } = null!; [Parameter] public List<ConfigurationSelectData<string>> AvailableLLMProviders { get; set; } = new(); diff --git a/app/MindWork AI Studio/Dialogs/SingleInputDialog.razor.cs b/app/MindWork AI Studio/Dialogs/SingleInputDialog.razor.cs index 5b0e8e88..914b20e4 100644 --- a/app/MindWork AI Studio/Dialogs/SingleInputDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/SingleInputDialog.razor.cs @@ -7,7 +7,7 @@ namespace AIStudio.Dialogs; public partial class SingleInputDialog : ComponentBase { [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; [Parameter] public string Message { get; set; } = string.Empty; diff --git a/app/MindWork AI Studio/Dialogs/UpdateDialog.razor.cs b/app/MindWork AI Studio/Dialogs/UpdateDialog.razor.cs index aefd5518..555cb182 100644 --- a/app/MindWork AI Studio/Dialogs/UpdateDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/UpdateDialog.razor.cs @@ -15,7 +15,7 @@ public partial class UpdateDialog : ComponentBase private static readonly MetaDataAttribute META_DATA = ASSEMBLY.GetCustomAttribute<MetaDataAttribute>()!; [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; [Parameter] public UpdateResponse UpdateResponse { get; set; } diff --git a/app/MindWork AI Studio/Dialogs/WorkspaceSelectionDialog.razor.cs b/app/MindWork AI Studio/Dialogs/WorkspaceSelectionDialog.razor.cs index f123fc87..f2c3d090 100644 --- a/app/MindWork AI Studio/Dialogs/WorkspaceSelectionDialog.razor.cs +++ b/app/MindWork AI Studio/Dialogs/WorkspaceSelectionDialog.razor.cs @@ -9,7 +9,7 @@ namespace AIStudio.Dialogs; public partial class WorkspaceSelectionDialog : ComponentBase { [CascadingParameter] - private MudDialogInstance MudDialog { get; set; } = null!; + private IMudDialogInstance MudDialog { get; set; } = null!; [Parameter] public string Message { get; set; } = string.Empty; diff --git a/app/MindWork AI Studio/MindWork AI Studio.csproj b/app/MindWork AI Studio/MindWork AI Studio.csproj index 21c02959..0c0edf80 100644 --- a/app/MindWork AI Studio/MindWork AI Studio.csproj +++ b/app/MindWork AI Studio/MindWork AI Studio.csproj @@ -5,7 +5,7 @@ <PropertyGroup> <Authors>Thorsten Sommer</Authors> - <TargetFramework>net8.0</TargetFramework> + <TargetFramework>net9.0</TargetFramework> <Nullable>enable</Nullable> <WarningsAsErrors>CS8600;CS8602;CS8603</WarningsAsErrors> <ImplicitUsings>enable</ImplicitUsings> @@ -31,6 +31,7 @@ CS8974: Converting method group to non-delegate type; Did you intend to invoke the method? We have this issue with MudBlazor validation methods. --> <NoWarn>IL2026, CS8974</NoWarn> + <LangVersion>latest</LangVersion> </PropertyGroup> <ItemGroup> @@ -45,11 +46,11 @@ </ItemGroup> <ItemGroup> - <PackageReference Include="CodeBeam.MudBlazor.Extensions" Version="7.1.0" /> - <PackageReference Include="HtmlAgilityPack" Version="1.11.74" /> - <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.2" /> - <PackageReference Include="MudBlazor" Version="7.16.0" /> - <PackageReference Include="MudBlazor.Markdown" Version="7.14.0" /> + <PackageReference Include="CodeBeam.MudBlazor.Extensions" Version="8.0.0" /> + <PackageReference Include="HtmlAgilityPack" Version="1.12.0" /> + <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.3" /> + <PackageReference Include="MudBlazor" Version="8.3.0" /> + <PackageReference Include="MudBlazor.Markdown" Version="8.0.0" /> <PackageReference Include="ReverseMarkdown" Version="4.6.0" /> </ItemGroup> diff --git a/app/MindWork AI Studio/Tools/ThreadSafeRandom.cs b/app/MindWork AI Studio/Tools/ThreadSafeRandom.cs index 27bb61ad..61aeca15 100644 --- a/app/MindWork AI Studio/Tools/ThreadSafeRandom.cs +++ b/app/MindWork AI Studio/Tools/ThreadSafeRandom.cs @@ -3,7 +3,7 @@ namespace AIStudio.Tools; /// <inheritdoc /> public sealed class ThreadSafeRandom : Random { - private static readonly object LOCK = new(); + private static readonly Lock LOCK = new(); #region Overrides of Random diff --git a/app/MindWork AI Studio/packages.lock.json b/app/MindWork AI Studio/packages.lock.json index 22246176..d9f4caab 100644 --- a/app/MindWork AI Studio/packages.lock.json +++ b/app/MindWork AI Studio/packages.lock.json @@ -1,61 +1,61 @@ { "version": 1, "dependencies": { - "net8.0": { + "net9.0": { "CodeBeam.MudBlazor.Extensions": { "type": "Direct", - "requested": "[7.1.0, )", - "resolved": "7.1.0", - "contentHash": "qbyCT4XMc/lbi2XdkUh9aSPu97RUPDisU7fpTCU0Q4nGywqJsAxrwcpaxJqoycq+uj3smwX5zOn6yzfsHUObeQ==", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "MNxReFDmME1OLhHsD7lrfQZ9cMu5X60PIvidyFueq0ddDKHlagHS6CuYBZRQ62rHqmocdHWOLyJ73t2Im0NnWw==", "dependencies": { "BuildBundlerMinifier": "3.2.449", - "CsvHelper": "31.0.3", - "Microsoft.AspNetCore.Components": "8.0.11", - "Microsoft.AspNetCore.Components.Web": "8.0.11", - "MudBlazor": "7.15.0", + "CsvHelper": "33.0.1", + "Microsoft.AspNetCore.Components": "9.0.1", + "Microsoft.AspNetCore.Components.Web": "9.0.1", + "MudBlazor": "8.0.0", "ZXing.Net": "0.16.9" } }, "HtmlAgilityPack": { "type": "Direct", - "requested": "[1.11.74, )", - "resolved": "1.11.74", - "contentHash": "q0wRGbegtr4sZXjCNoV3OeRLTOcTNJQKiO9etNVSKPoTo33unmSK8Ahg36C4jIg/Hd3aw8YnTQjtKpBy+wlOpg==" + "requested": "[1.12.0, )", + "resolved": "1.12.0", + "contentHash": "VHtVZmfoYhQyA/POvZRLuTpCz1zhzIDrdYRJIRV73e9wKAzjW71biYNOHOWx8MxEX3TE4TWVfx1QDRoZcj2AWw==" }, "Microsoft.Extensions.FileProviders.Embedded": { "type": "Direct", - "requested": "[9.0.2, )", - "resolved": "9.0.2", - "contentHash": "guQjtnav6bkds3jBqvzLUN3CtFhrwwE2MvES4kukalrFnRkFCncumYBrycM3urilJ7ffetA1/XBcD5ChMJa+AA==", + "requested": "[9.0.3, )", + "resolved": "9.0.3", + "contentHash": "UKfKGlZ7jKfe6v4rLsjnH/mGbD3e4YD9EK+Uobu+KIxwfhZuLLCtXm4CWTOf2s1t+ItmMs0QqbSJAXaMXCxLOw==", "dependencies": { - "Microsoft.Extensions.FileProviders.Abstractions": "9.0.2" + "Microsoft.Extensions.FileProviders.Abstractions": "9.0.3" } }, "Microsoft.NET.ILLink.Tasks": { "type": "Direct", - "requested": "[8.0.13, )", - "resolved": "8.0.13", - "contentHash": "R19ZTaRiQAK+xo9ZwaHbF/1vb1wwR1Wn5+sqp9v8+CDjbdS8R6qftKdw0VSXWKm7VAMi7P+NCU4zxDzhEWcAwQ==" + "requested": "[9.0.3, )", + "resolved": "9.0.3", + "contentHash": "1rqGTfubVg0qj2PsK6esyq3PIxtYJYrN3LsYUV9RrvH3anmt3fT3ozYdAZZH4U8JU/pt5pPIUk8NBSu26wtekA==" }, "MudBlazor": { "type": "Direct", - "requested": "[7.16.0, )", - "resolved": "7.16.0", - "contentHash": "68bEFn7MLCyOB4yYxtvZG+AA+bZbxBDcIOhnSVFrHrAg8LLXVw1LxHCp9EyRktlREpnoAO1JxINp+5WeHc9Z4w==", + "requested": "[8.3.0, )", + "resolved": "8.3.0", + "contentHash": "DLc1aK8AgSas82AERWLLefWKadIF7HhYhvgO8Y7jYLZe5v1r4v3rX9pzrzTsQkuPGe6y65tob73kM6gael+WdQ==", "dependencies": { - "Microsoft.AspNetCore.Components": "8.0.8", - "Microsoft.AspNetCore.Components.Web": "8.0.8", - "Microsoft.Extensions.Localization": "8.0.8" + "Microsoft.AspNetCore.Components": "9.0.1", + "Microsoft.AspNetCore.Components.Web": "9.0.1", + "Microsoft.Extensions.Localization": "9.0.1" } }, "MudBlazor.Markdown": { "type": "Direct", - "requested": "[7.14.0, )", - "resolved": "7.14.0", - "contentHash": "c6kFfMgUxKxYK1AkGHRNg5B9jw+iwxelBuDpaI5N+guOleT37BxYetYlD0iOew/n1plhobynUJn3Kk4MXhv6RA==", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "0DcXQFEIgKJsaMCDva0Ck3gempoctyc7s8GLK5VagozlZdXql6W4SKX/imM/NfyfV7SxLrUTRJyLJX0Te+02sQ==", "dependencies": { - "Markdig": "0.37.0", - "MudBlazor": "7.14.0" + "Markdig": "0.40.0", + "MudBlazor": "8.0.0" } }, "ReverseMarkdown": { @@ -74,132 +74,126 @@ }, "CsvHelper": { "type": "Transitive", - "resolved": "31.0.3", - "contentHash": "ygck8DR4mG/VDA/LgIVVGpEtXXPDVaaNZNJGrOAJ4pckVw4MbAQ3n/u6YFDv3bwlQhlxTmPhCyk5E4hxe96Crg==" + "resolved": "33.0.1", + "contentHash": "fev4lynklAU2A9GVMLtwarkwaanjSYB4wUqO2nOJX5hnzObORzUqVLe+bDYCUyIIRQM4o5Bsq3CcyJR89iMmEQ==" }, "Markdig": { "type": "Transitive", - "resolved": "0.37.0", - "contentHash": "biiu4MTPFjW55qw6v5Aphtj0MjDLJ14x8ndZwkJUHIeqvaSGKeqhLY7S7Vu/S3k7/c9KwhhnaCDP9hdFNUhcNA==" + "resolved": "0.40.0", + "contentHash": "4ve14zs+gt1irldTQE3y5FLAHuzmhW7T99lAAvVipe/q2LWT/nUCO0iICb9TXGvMX6n7Z1OZroFXkdSy91rO8w==" }, "Microsoft.AspNetCore.Authorization": { "type": "Transitive", - "resolved": "8.0.11", - "contentHash": "ACaLyjBSz9WUzbaJe0Sv09/FihRNHYlRUIj3uQ8CZFFByf6Qwv3+PXnbltidFKz2iOyqdvppQias3emdQUY2nA==", + "resolved": "9.0.1", + "contentHash": "WgLlLBlMczb2+QLNG6sM95OUZ0EBztz60k/N75tjIgpyu0SdpIfYytAmX/7JJAjRTZF0c/CrWaQV+SH9FuGsrA==", "dependencies": { - "Microsoft.AspNetCore.Metadata": "8.0.11", - "Microsoft.Extensions.Logging.Abstractions": "8.0.2", - "Microsoft.Extensions.Options": "8.0.2" + "Microsoft.AspNetCore.Metadata": "9.0.1", + "Microsoft.Extensions.Logging.Abstractions": "9.0.1", + "Microsoft.Extensions.Options": "9.0.1" } }, "Microsoft.AspNetCore.Components": { "type": "Transitive", - "resolved": "8.0.11", - "contentHash": "kyhSQcVEQvMnv2BNRn7JRgYCr+PIO5Uh1mhIFdCNycxE/k8NsI72sV693s1KVmVebMA8g3hTBmfBEheWb3hhww==", + "resolved": "9.0.1", + "contentHash": "6pwfbQKNtvPkbF4tCGiAKGyt6BVpu58xAXz7u2YXcUKTNmNxrymbG1mEyMc0EPzVdnquDDqTyfXM3mC1EJycxQ==", "dependencies": { - "Microsoft.AspNetCore.Authorization": "8.0.11", - "Microsoft.AspNetCore.Components.Analyzers": "8.0.11" + "Microsoft.AspNetCore.Authorization": "9.0.1", + "Microsoft.AspNetCore.Components.Analyzers": "9.0.1" } }, "Microsoft.AspNetCore.Components.Analyzers": { "type": "Transitive", - "resolved": "8.0.11", - "contentHash": "4JtFt5IR0ixuFpwY6D2Xi5R+vZQ6iykd2EuG3puHETCOZOgYG8M538LCY1lbgQTkHOL04YKDjQTQu8PU/BaXRQ==" + "resolved": "9.0.1", + "contentHash": "I8Rs4LXT5UQxM5Nin2+Oj8aSY2heszSZ3EyTLgt3mxmfiRPrVO7D8NNSsf1voI2Gb0qFJceof/J5c9E+nfNuHw==" }, "Microsoft.AspNetCore.Components.Forms": { "type": "Transitive", - "resolved": "8.0.11", - "contentHash": "60g+idqaiVhPVNOqauy/vH5lREpjcuKl3/w6zJhdU1PFWg4jtdoyIPQH+qxBKsUohkELhH3cRfzGRKElVuZuwg==", + "resolved": "9.0.1", + "contentHash": "KyULVU32bLz74LWDwPEwNUEllTehzWJuM7YAsz80rMKEzvR0K8cRjRzO0fnN/nfydMeLRRlbI0xj8wnEAymLVw==", "dependencies": { - "Microsoft.AspNetCore.Components": "8.0.11" + "Microsoft.AspNetCore.Components": "9.0.1" } }, "Microsoft.AspNetCore.Components.Web": { "type": "Transitive", - "resolved": "8.0.11", - "contentHash": "IDmjQ/K7hv6zUEz2LsCkQBngZx6PMnty8OdSPf0hYGMpC+4Yi37pgCc/25fFu3CSBe8nDirqTrqKtfToHWCpbw==", + "resolved": "9.0.1", + "contentHash": "LI0vjYEd9MaDZPDQxPCn4gGYDkEC5U9rp1nWZo7rPozJxgTG2zU3WERujxTi2LeAC2ZzdXlOVCrUyPQ55LZV2A==", "dependencies": { - "Microsoft.AspNetCore.Components": "8.0.11", - "Microsoft.AspNetCore.Components.Forms": "8.0.11", - "Microsoft.Extensions.DependencyInjection": "8.0.1", - "Microsoft.Extensions.Primitives": "8.0.0", - "Microsoft.JSInterop": "8.0.11", - "System.IO.Pipelines": "8.0.0" + "Microsoft.AspNetCore.Components": "9.0.1", + "Microsoft.AspNetCore.Components.Forms": "9.0.1", + "Microsoft.Extensions.DependencyInjection": "9.0.1", + "Microsoft.Extensions.Primitives": "9.0.1", + "Microsoft.JSInterop": "9.0.1" } }, "Microsoft.AspNetCore.Metadata": { "type": "Transitive", - "resolved": "8.0.11", - "contentHash": "cy04xnMSTXTkRPjEwseRz57R5zjR/CWsdEOHH6NhWbNl97k+U1w6dSjqIOC7kv08tyzmM30FzIilSDtE5HdL/A==" + "resolved": "9.0.1", + "contentHash": "EZnHifamF7IFEIyjAKMtJM3I/94OIe72i3P09v5oL0twmsmfQwal6Ni3m8lbB5mge3jWFhMozeW+rUdRSqnXRQ==" }, "Microsoft.Extensions.DependencyInjection": { "type": "Transitive", - "resolved": "8.0.1", - "contentHash": "BmANAnR5Xd4Oqw7yQ75xOAYODybZQRzdeNucg7kS5wWKd2PNnMdYtJ2Vciy0QLylRmv42DGl5+AFL9izA6F1Rw==", + "resolved": "9.0.1", + "contentHash": "qZI42ASAe3hr2zMSA6UjM92pO1LeDq5DcwkgSowXXPY8I56M76pEKrnmsKKbxagAf39AJxkH2DY4sb72ixyOrg==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.1" } }, "Microsoft.Extensions.DependencyInjection.Abstractions": { "type": "Transitive", - "resolved": "8.0.2", - "contentHash": "3iE7UF7MQkCv1cxzCahz+Y/guQbTqieyxyaWKhrRO91itI9cOKO76OHeQDahqG4MmW5umr3CcCvGmK92lWNlbg==" + "resolved": "9.0.1", + "contentHash": "Tr74eP0oQ3AyC24ch17N8PuEkrPbD0JqIfENCYqmgKYNOmL8wQKzLJu3ObxTUDrjnn4rHoR1qKa37/eQyHmCDA==" }, "Microsoft.Extensions.FileProviders.Abstractions": { "type": "Transitive", - "resolved": "9.0.2", - "contentHash": "IcOBmTlr2jySswU+3x8c3ql87FRwTVPQgVKaV5AXzPT5u0VItfNU8SMbESpdSp5STwxT/1R99WYszgHWsVkzhg==", + "resolved": "9.0.3", + "contentHash": "umczZ3+QPpzlrW/lkvy+IB0p52+qZ5w++aqx2lTCMOaPKzwcbVdrJgiQ3ajw5QWBp7gChLUiCYkSlWUpfjv24g==", "dependencies": { - "Microsoft.Extensions.Primitives": "9.0.2" + "Microsoft.Extensions.Primitives": "9.0.3" } }, "Microsoft.Extensions.Localization": { "type": "Transitive", - "resolved": "8.0.8", - "contentHash": "n32ZGmc2UOv9R/xsBHQPOxBsqCSAAJSoMtFqoQ8zOegB2P+H6+773OyCWg4jRBkO/3dmCyBJXB0yLAOVW2/C/w==", + "resolved": "9.0.1", + "contentHash": "UgvX4Yb2T3tEsKT30ktZr0H7kTRPapCgEH0bdTwxiEGSdA39/hAQMvvb+vgHpqmevDU5+puyI9ujRkmmbF946w==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.1", - "Microsoft.Extensions.Localization.Abstractions": "8.0.8", - "Microsoft.Extensions.Logging.Abstractions": "8.0.1", - "Microsoft.Extensions.Options": "8.0.2" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.1", + "Microsoft.Extensions.Localization.Abstractions": "9.0.1", + "Microsoft.Extensions.Logging.Abstractions": "9.0.1", + "Microsoft.Extensions.Options": "9.0.1" } }, "Microsoft.Extensions.Localization.Abstractions": { "type": "Transitive", - "resolved": "8.0.8", - "contentHash": "WYIsqP/A6dH/LWJznrvgoNPc7Q+CUJD0E78765GL3aonBtyFK1BKtPzBvvlnrr3SVqSO2r6xJCLgCEiCMG1gfA==" + "resolved": "9.0.1", + "contentHash": "CABog43lyaZQMjmlktuImCy6zmAzRBaXqN81uPaMQjlp//ISDVYItZPh6KWpWRF4MY/B67X5oDc3JTUpfdocZw==" }, "Microsoft.Extensions.Logging.Abstractions": { "type": "Transitive", - "resolved": "8.0.2", - "contentHash": "nroMDjS7hNBPtkZqVBbSiQaQjWRDxITI8Y7XnDs97rqG3EbzVTNLZQf7bIeUJcaHOV8bca47s1Uxq94+2oGdxA==", + "resolved": "9.0.1", + "contentHash": "w2gUqXN/jNIuvqYwX3lbXagsizVNXYyt6LlF57+tMve4JYCEgCMMAjRce6uKcDASJgpMbErRT1PfHy2OhbkqEA==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.2" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.1" } }, "Microsoft.Extensions.Options": { "type": "Transitive", - "resolved": "8.0.2", - "contentHash": "dWGKvhFybsaZpGmzkGCbNNwBD1rVlWzrZKANLW/CcbFJpCEceMCGzT7zZwHOGBCbwM0SzBuceMj5HN1LKV1QqA==", + "resolved": "9.0.1", + "contentHash": "nggoNKnWcsBIAaOWHA+53XZWrslC7aGeok+aR+epDPRy7HI7GwMnGZE8yEsL2Onw7kMOHVHwKcsDls1INkNUJQ==", "dependencies": { - "Microsoft.Extensions.DependencyInjection.Abstractions": "8.0.0", - "Microsoft.Extensions.Primitives": "8.0.0" + "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.1", + "Microsoft.Extensions.Primitives": "9.0.1" } }, "Microsoft.Extensions.Primitives": { "type": "Transitive", - "resolved": "9.0.2", - "contentHash": "puBMtKe/wLuYa7H6docBkLlfec+h8L35DXqsDKKJgW0WY5oCwJ3cBJKcDaZchv6knAyqOMfsl6VUbaR++E5LXA==" + "resolved": "9.0.3", + "contentHash": "yCCJHvBcRyqapMSNzP+kTc57Eaavq2cr5Tmuil6/XVnipQf5xmskxakSQ1enU6S4+fNg3sJ27WcInV64q24JsA==" }, "Microsoft.JSInterop": { "type": "Transitive", - "resolved": "8.0.11", - "contentHash": "UYSbAkNGTWVUne3I04/9IRQel3Bt1Ww6Y5cjvZEZ89rWhBD1yWu7YDotvQS62V6mgSfFaXXPGrCUm1VG824QXw==" - }, - "System.IO.Pipelines": { - "type": "Transitive", - "resolved": "8.0.0", - "contentHash": "FHNOatmUq0sqJOkTx+UF/9YK1f180cnW5FVqnQMvYUN0elp6wFzbtPSiqbo1/ru8ICp43JM1i7kKkk6GsNGHlA==" + "resolved": "9.0.1", + "contentHash": "/xBwIfb0YoC2Muv6EsHjxpqZw2aKv94+i0g0FWZvqvGv3DeAy+8wipAuECVvKYEs2EIclRD41bjajHLoD6mTtw==" }, "ZXing.Net": { "type": "Transitive", @@ -207,6 +201,6 @@ "contentHash": "7WaVMHklpT3Ye2ragqRIwlFRsb6kOk63BOGADV0fan3ulVfGLUYkDi5yNUsZS/7FVNkWbtHAlDLmu4WnHGfqvQ==" } }, - "net8.0/osx-arm64": {} + "net9.0/osx-arm64": {} } } \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md index 56666cfb..7b1b711c 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md @@ -1,2 +1,5 @@ # v0.9.35, build 210 (2025-03-xx xx:xx UTC) -- A settings icon was added to all assistants and the assistants overview. The icon opens a dialog that displays all settings that can be changed. The settings aren't shown on the settings overview page anymore for a better overview. \ No newline at end of file +- A settings icon was added to all assistants and the assistants overview. The icon opens a dialog that displays all settings that can be changed. The settings aren't shown on the settings overview page anymore for a better overview. +- Migrated to .NET 9.0.3 +- Migrated to MudBlazor 8.3.0 +- Upgraded all dependencies to the latest versions \ No newline at end of file diff --git a/metadata.txt b/metadata.txt index 269ee5de..9d7fe801 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ 0.9.34 2025-03-11 13:02:01 UTC 209 -8.0.113 (commit 8f216348dc) -8.0.13 (commit eba546b0f0) +9.0.104 (commit 2750432faa) +9.0.3 (commit 831d23e561) 1.85.0 (commit 4d91de4e4) -7.16.0 +8.3.0 1.8.1 -2429788ccc0, release +4b3b80dc9d7, release From ee6142515307da762d61842e0a6374cb4851751e Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Wed, 12 Mar 2025 19:36:05 +0100 Subject: [PATCH 072/110] Prepared release v0.9.35 (#334) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 1 + app/MindWork AI Studio/build.nu | 6 +++--- app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md | 2 +- documentation/Build.md | 2 +- metadata.txt | 8 ++++---- runtime/Cargo.lock | 2 +- runtime/Cargo.toml | 2 +- runtime/tauri.conf.json | 2 +- 8 files changed, 13 insertions(+), 12 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index a1ac8d3c..d0fbaa83 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,6 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ + new (210, "v0.9.35, build 210 (2025-03-12 18:22 UTC)", "v0.9.35.md"), new (209, "v0.9.34, build 209 (2025-03-11 13:02 UTC)", "v0.9.34.md"), new (208, "v0.9.33, build 208 (2025-03-11 08:14 UTC)", "v0.9.33.md"), new (207, "v0.9.32, build 207 (2025-03-08 20:15 UTC)", "v0.9.32.md"), diff --git a/app/MindWork AI Studio/build.nu b/app/MindWork AI Studio/build.nu index cf69e3e6..3c9c2e4e 100755 --- a/app/MindWork AI Studio/build.nu +++ b/app/MindWork AI Studio/build.nu @@ -3,7 +3,7 @@ def main [] {} def are_assets_exist [rid: string] { - $"bin/release/net8.0/($rid)/publish/wwwroot/_content/MudBlazor/MudBlazor.min.css" | path exists + $"bin/release/net9.0/($rid)/publish/wwwroot/_content/MudBlazor/MudBlazor.min.css" | path exists } def "main help" [] { @@ -63,7 +63,7 @@ def "main fix_web_assets" [] { mkdir wwwroot/system # Copy the web assets from the first RID to the source project: - let source_paths = glob --depth 99 bin/release/net8.0/($rid)/publish/wwwroot/_content/* + let source_paths = glob --depth 99 bin/release/net9.0/($rid)/publish/wwwroot/_content/* for source_path in $source_paths { cp --recursive --force --update $source_path wwwroot/system/ @@ -112,7 +112,7 @@ def "main publish" [] { } } - let published_path = $"bin/release/net8.0/($rid)/publish/($published_filename_dotnet)" + let published_path = $"bin/release/net9.0/($rid)/publish/($published_filename_dotnet)" let final_path = $"bin/dist/($final_filename)" if ($published_path | path exists) { diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md index 7b1b711c..6aa6a723 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md @@ -1,4 +1,4 @@ -# v0.9.35, build 210 (2025-03-xx xx:xx UTC) +# v0.9.35, build 210 (2025-03-12 18:22 UTC) - A settings icon was added to all assistants and the assistants overview. The icon opens a dialog that displays all settings that can be changed. The settings aren't shown on the settings overview page anymore for a better overview. - Migrated to .NET 9.0.3 - Migrated to MudBlazor 8.3.0 diff --git a/documentation/Build.md b/documentation/Build.md index 795c65b2..2f620eac 100644 --- a/documentation/Build.md +++ b/documentation/Build.md @@ -2,7 +2,7 @@ You just want to use the app? Then simply [download the appropriate setup for your operating system](Setup.md). This chapter is intended for developers who want to modify and customize the code. ## Prerequisites -1. Install the [.NET 8 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/8.0). +1. Install the [.NET 9 SDK](https://dotnet.microsoft.com/en-us/download/dotnet/9.0). 2. [Install the Rust compiler](https://www.rust-lang.org/tools/install) in the latest version. 3. Met the prerequisites for building [Tauri](https://tauri.app/v1/guides/getting-started/prerequisites/). Node.js is **not** required, though. 4. Install the Tauri CLI by running `cargo install --version 1.6.2 tauri-cli`. diff --git a/metadata.txt b/metadata.txt index 9d7fe801..ea740553 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ -0.9.34 -2025-03-11 13:02:01 UTC -209 +0.9.35 +2025-03-12 18:22:04 UTC +210 9.0.104 (commit 2750432faa) 9.0.3 (commit 831d23e561) 1.85.0 (commit 4d91de4e4) 8.3.0 1.8.1 -4b3b80dc9d7, release +ce8d84a12a2, release diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index 5c30b660..025fa77b 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -2350,7 +2350,7 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mindwork-ai-studio" -version = "0.9.34" +version = "0.9.35" dependencies = [ "aes", "arboard", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 112b8d9a..d6835ac7 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindwork-ai-studio" -version = "0.9.34" +version = "0.9.35" edition = "2021" description = "MindWork AI Studio" authors = ["Thorsten Sommer"] diff --git a/runtime/tauri.conf.json b/runtime/tauri.conf.json index 5835c478..a0b3688a 100644 --- a/runtime/tauri.conf.json +++ b/runtime/tauri.conf.json @@ -6,7 +6,7 @@ }, "package": { "productName": "MindWork AI Studio", - "version": "0.9.34" + "version": "0.9.35" }, "tauri": { "allowlist": { From 64a7c9ab5351e9a4d9bf684f1e26c764c1236fa0 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Wed, 12 Mar 2025 20:02:40 +0100 Subject: [PATCH 073/110] Fixed the static web assets (#335) --- .../MudExtensions.min.css.br | Bin 0 -> 3401 bytes .../MudExtensions.min.css.gz | Bin 0 -> 4133 bytes .../MudExtensions.min.js.br | Bin 0 -> 1428 bytes .../MudExtensions.min.js.gz | Bin 0 -> 1621 bytes .../MudBlazor.Markdown.MathJax.min.js.br | Bin 0 -> 204607 bytes .../MudBlazor.Markdown.MathJax.min.js.gz | Bin 0 -> 269164 bytes .../MudBlazor.Markdown.min.css | 2 +- .../MudBlazor.Markdown.min.css.br | Bin 0 -> 475 bytes .../MudBlazor.Markdown.min.css.gz | Bin 0 -> 605 bytes .../MudBlazor.Markdown.min.js.br | Bin 0 -> 237564 bytes .../MudBlazor.Markdown.min.js.gz | Bin 0 -> 305367 bytes .../code-styles/a11y-dark.min.css.br | Bin 0 -> 282 bytes .../code-styles/a11y-dark.min.css.gz | Bin 0 -> 360 bytes .../code-styles/a11y-light.min.css.br | 2 ++ .../code-styles/a11y-light.min.css.gz | Bin 0 -> 354 bytes .../code-styles/agate.min.css.br | Bin 0 -> 340 bytes .../code-styles/agate.min.css.gz | Bin 0 -> 426 bytes .../code-styles/an-old-hope.min.css.br | Bin 0 -> 222 bytes .../code-styles/an-old-hope.min.css.gz | Bin 0 -> 290 bytes .../code-styles/androidstudio.min.css.br | Bin 0 -> 209 bytes .../code-styles/androidstudio.min.css.gz | Bin 0 -> 273 bytes .../code-styles/arduino-light.min.css.br | Bin 0 -> 278 bytes .../code-styles/arduino-light.min.css.gz | Bin 0 -> 339 bytes .../code-styles/arta.min.css.br | Bin 0 -> 211 bytes .../code-styles/arta.min.css.gz | Bin 0 -> 280 bytes .../code-styles/ascetic.min.css.br | 1 + .../code-styles/ascetic.min.css.gz | Bin 0 -> 206 bytes .../atom-one-dark-reasonable.min.css.br | Bin 0 -> 362 bytes .../atom-one-dark-reasonable.min.css.gz | Bin 0 -> 457 bytes .../code-styles/atom-one-dark.min.css.br | Bin 0 -> 282 bytes .../code-styles/atom-one-dark.min.css.gz | Bin 0 -> 359 bytes .../code-styles/atom-one-light.min.css.br | 3 +++ .../code-styles/atom-one-light.min.css.gz | Bin 0 -> 359 bytes .../code-styles/base16/apathy.min.css.br | Bin 0 -> 364 bytes .../code-styles/base16/apathy.min.css.gz | Bin 0 -> 453 bytes .../code-styles/base16/apprentice.min.css.br | 2 ++ .../code-styles/base16/apprentice.min.css.gz | Bin 0 -> 439 bytes .../code-styles/base16/ashes.min.css.br | Bin 0 -> 365 bytes .../code-styles/base16/ashes.min.css.gz | Bin 0 -> 442 bytes .../base16/atelier-cave-light.min.css.br | Bin 0 -> 370 bytes .../base16/atelier-cave-light.min.css.gz | Bin 0 -> 459 bytes .../code-styles/base16/atelier-cave.min.css.br | Bin 0 -> 370 bytes .../code-styles/base16/atelier-cave.min.css.gz | Bin 0 -> 461 bytes .../base16/atelier-dune-light.min.css.br | Bin 0 -> 371 bytes .../base16/atelier-dune-light.min.css.gz | Bin 0 -> 460 bytes .../code-styles/base16/atelier-dune.min.css.br | Bin 0 -> 371 bytes .../code-styles/base16/atelier-dune.min.css.gz | Bin 0 -> 462 bytes .../base16/atelier-estuary-light.min.css.br | Bin 0 -> 373 bytes .../base16/atelier-estuary-light.min.css.gz | Bin 0 -> 462 bytes .../base16/atelier-estuary.min.css.br | Bin 0 -> 374 bytes .../base16/atelier-estuary.min.css.gz | Bin 0 -> 462 bytes .../base16/atelier-forest-light.min.css.br | Bin 0 -> 373 bytes .../base16/atelier-forest-light.min.css.gz | Bin 0 -> 462 bytes .../base16/atelier-forest.min.css.br | Bin 0 -> 372 bytes .../base16/atelier-forest.min.css.gz | Bin 0 -> 462 bytes .../base16/atelier-heath-light.min.css.br | Bin 0 -> 367 bytes .../base16/atelier-heath-light.min.css.gz | Bin 0 -> 458 bytes .../base16/atelier-heath.min.css.br | Bin 0 -> 369 bytes .../base16/atelier-heath.min.css.gz | Bin 0 -> 458 bytes .../base16/atelier-lakeside-light.min.css.br | Bin 0 -> 374 bytes .../base16/atelier-lakeside-light.min.css.gz | Bin 0 -> 460 bytes .../base16/atelier-lakeside.min.css.br | Bin 0 -> 372 bytes .../base16/atelier-lakeside.min.css.gz | Bin 0 -> 460 bytes .../base16/atelier-plateau-light.min.css.br | Bin 0 -> 369 bytes .../base16/atelier-plateau-light.min.css.gz | Bin 0 -> 460 bytes .../base16/atelier-plateau.min.css.br | Bin 0 -> 368 bytes .../base16/atelier-plateau.min.css.gz | Bin 0 -> 461 bytes .../base16/atelier-savanna-light.min.css.br | Bin 0 -> 372 bytes .../base16/atelier-savanna-light.min.css.gz | Bin 0 -> 460 bytes .../base16/atelier-savanna.min.css.br | Bin 0 -> 373 bytes .../base16/atelier-savanna.min.css.gz | Bin 0 -> 462 bytes .../base16/atelier-seaside-light.min.css.br | Bin 0 -> 367 bytes .../base16/atelier-seaside-light.min.css.gz | Bin 0 -> 458 bytes .../base16/atelier-seaside.min.css.br | Bin 0 -> 366 bytes .../base16/atelier-seaside.min.css.gz | Bin 0 -> 457 bytes .../atelier-sulphurpool-light.min.css.br | Bin 0 -> 369 bytes .../atelier-sulphurpool-light.min.css.gz | Bin 0 -> 459 bytes .../base16/atelier-sulphurpool.min.css.br | Bin 0 -> 368 bytes .../base16/atelier-sulphurpool.min.css.gz | Bin 0 -> 460 bytes .../code-styles/base16/atlas.min.css.br | Bin 0 -> 371 bytes .../code-styles/base16/atlas.min.css.gz | Bin 0 -> 460 bytes .../code-styles/base16/bespin.min.css.br | Bin 0 -> 373 bytes .../code-styles/base16/bespin.min.css.gz | Bin 0 -> 453 bytes .../base16/black-metal-bathory.min.css.br | 1 + .../base16/black-metal-bathory.min.css.gz | Bin 0 -> 437 bytes .../base16/black-metal-burzum.min.css.br | 2 ++ .../base16/black-metal-burzum.min.css.gz | Bin 0 -> 432 bytes .../base16/black-metal-dark-funeral.min.css.br | 4 ++++ .../base16/black-metal-dark-funeral.min.css.gz | Bin 0 -> 438 bytes .../base16/black-metal-gorgoroth.min.css.br | 3 +++ .../base16/black-metal-gorgoroth.min.css.gz | Bin 0 -> 439 bytes .../base16/black-metal-immortal.min.css.br | Bin 0 -> 346 bytes .../base16/black-metal-immortal.min.css.gz | Bin 0 -> 434 bytes .../base16/black-metal-khold.min.css.br | Bin 0 -> 352 bytes .../base16/black-metal-khold.min.css.gz | Bin 0 -> 439 bytes .../base16/black-metal-marduk.min.css.br | 2 ++ .../base16/black-metal-marduk.min.css.gz | Bin 0 -> 437 bytes .../base16/black-metal-mayhem.min.css.br | Bin 0 -> 353 bytes .../base16/black-metal-mayhem.min.css.gz | Bin 0 -> 437 bytes .../base16/black-metal-nile.min.css.br | 3 +++ .../base16/black-metal-nile.min.css.gz | Bin 0 -> 434 bytes .../base16/black-metal-venom.min.css.br | Bin 0 -> 350 bytes .../base16/black-metal-venom.min.css.gz | Bin 0 -> 438 bytes .../code-styles/base16/black-metal.min.css.br | Bin 0 -> 349 bytes .../code-styles/base16/black-metal.min.css.gz | Bin 0 -> 436 bytes .../code-styles/base16/brewer.min.css.br | Bin 0 -> 370 bytes .../code-styles/base16/brewer.min.css.gz | Bin 0 -> 460 bytes .../code-styles/base16/bright.min.css.br | Bin 0 -> 363 bytes .../code-styles/base16/bright.min.css.gz | Bin 0 -> 451 bytes .../code-styles/base16/brogrammer.min.css.br | Bin 0 -> 366 bytes .../code-styles/base16/brogrammer.min.css.gz | Bin 0 -> 455 bytes .../base16/brush-trees-dark.min.css.br | Bin 0 -> 369 bytes .../base16/brush-trees-dark.min.css.gz | Bin 0 -> 451 bytes .../code-styles/base16/brush-trees.min.css.br | Bin 0 -> 369 bytes .../code-styles/base16/brush-trees.min.css.gz | Bin 0 -> 449 bytes .../code-styles/base16/chalk.min.css.br | Bin 0 -> 375 bytes .../code-styles/base16/chalk.min.css.gz | Bin 0 -> 451 bytes .../code-styles/base16/circus.min.css.br | Bin 0 -> 356 bytes .../code-styles/base16/circus.min.css.gz | Bin 0 -> 444 bytes .../code-styles/base16/classic-dark.min.css.br | Bin 0 -> 367 bytes .../code-styles/base16/classic-dark.min.css.gz | Bin 0 -> 455 bytes .../base16/classic-light.min.css.br | Bin 0 -> 365 bytes .../base16/classic-light.min.css.gz | Bin 0 -> 455 bytes .../code-styles/base16/codeschool.min.css.br | Bin 0 -> 372 bytes .../code-styles/base16/codeschool.min.css.gz | Bin 0 -> 461 bytes .../code-styles/base16/colors.min.css.br | Bin 0 -> 365 bytes .../code-styles/base16/colors.min.css.gz | Bin 0 -> 449 bytes .../code-styles/base16/cupcake.min.css.br | Bin 0 -> 370 bytes .../code-styles/base16/cupcake.min.css.gz | Bin 0 -> 458 bytes .../code-styles/base16/cupertino.min.css.br | 3 +++ .../code-styles/base16/cupertino.min.css.gz | Bin 0 -> 443 bytes .../code-styles/base16/danqing.min.css.br | Bin 0 -> 372 bytes .../code-styles/base16/danqing.min.css.gz | Bin 0 -> 458 bytes .../code-styles/base16/darcula.min.css.br | Bin 0 -> 368 bytes .../code-styles/base16/darcula.min.css.gz | Bin 0 -> 454 bytes .../code-styles/base16/dark-violet.min.css.br | 4 ++++ .../code-styles/base16/dark-violet.min.css.gz | Bin 0 -> 450 bytes .../code-styles/base16/darkmoss.min.css.br | Bin 0 -> 372 bytes .../code-styles/base16/darkmoss.min.css.gz | Bin 0 -> 462 bytes .../code-styles/base16/darktooth.min.css.br | Bin 0 -> 371 bytes .../code-styles/base16/darktooth.min.css.gz | Bin 0 -> 462 bytes .../code-styles/base16/decaf.min.css.br | Bin 0 -> 365 bytes .../code-styles/base16/decaf.min.css.gz | Bin 0 -> 448 bytes .../code-styles/base16/default-dark.min.css.br | Bin 0 -> 366 bytes .../code-styles/base16/default-dark.min.css.gz | Bin 0 -> 453 bytes .../base16/default-light.min.css.br | Bin 0 -> 365 bytes .../base16/default-light.min.css.gz | Bin 0 -> 453 bytes .../code-styles/base16/dirtysea.min.css.br | Bin 0 -> 360 bytes .../code-styles/base16/dirtysea.min.css.gz | Bin 0 -> 437 bytes .../code-styles/base16/dracula.min.css.br | Bin 0 -> 360 bytes .../code-styles/base16/dracula.min.css.gz | Bin 0 -> 445 bytes .../code-styles/base16/edge-dark.min.css.br | Bin 0 -> 351 bytes .../code-styles/base16/edge-dark.min.css.gz | Bin 0 -> 438 bytes .../code-styles/base16/edge-light.min.css.br | Bin 0 -> 350 bytes .../code-styles/base16/edge-light.min.css.gz | Bin 0 -> 433 bytes .../code-styles/base16/eighties.min.css.br | Bin 0 -> 360 bytes .../code-styles/base16/eighties.min.css.gz | Bin 0 -> 448 bytes .../code-styles/base16/embers.min.css.br | Bin 0 -> 363 bytes .../code-styles/base16/embers.min.css.gz | Bin 0 -> 445 bytes .../base16/equilibrium-dark.min.css.br | Bin 0 -> 372 bytes .../base16/equilibrium-dark.min.css.gz | Bin 0 -> 462 bytes .../base16/equilibrium-gray-dark.min.css.br | Bin 0 -> 361 bytes .../base16/equilibrium-gray-dark.min.css.gz | Bin 0 -> 453 bytes .../base16/equilibrium-gray-light.min.css.br | Bin 0 -> 362 bytes .../base16/equilibrium-gray-light.min.css.gz | Bin 0 -> 451 bytes .../base16/equilibrium-light.min.css.br | Bin 0 -> 371 bytes .../base16/equilibrium-light.min.css.gz | Bin 0 -> 459 bytes .../code-styles/base16/espresso.min.css.br | Bin 0 -> 365 bytes .../code-styles/base16/espresso.min.css.gz | Bin 0 -> 453 bytes .../code-styles/base16/eva-dim.min.css.br | Bin 0 -> 373 bytes .../code-styles/base16/eva-dim.min.css.gz | Bin 0 -> 458 bytes .../code-styles/base16/eva.min.css.br | Bin 0 -> 365 bytes .../code-styles/base16/eva.min.css.gz | Bin 0 -> 451 bytes .../code-styles/base16/flat.min.css.br | Bin 0 -> 366 bytes .../code-styles/base16/flat.min.css.gz | Bin 0 -> 456 bytes .../code-styles/base16/framer.min.css.br | Bin 0 -> 362 bytes .../code-styles/base16/framer.min.css.gz | Bin 0 -> 451 bytes .../code-styles/base16/fruit-soda.min.css.br | Bin 0 -> 364 bytes .../code-styles/base16/fruit-soda.min.css.gz | Bin 0 -> 459 bytes .../code-styles/base16/gigavolt.min.css.br | Bin 0 -> 371 bytes .../code-styles/base16/gigavolt.min.css.gz | Bin 0 -> 458 bytes .../code-styles/base16/github.min.css.br | Bin 0 -> 350 bytes .../code-styles/base16/github.min.css.gz | Bin 0 -> 442 bytes .../code-styles/base16/google-dark.min.css.br | Bin 0 -> 364 bytes .../code-styles/base16/google-dark.min.css.gz | Bin 0 -> 450 bytes .../code-styles/base16/google-light.min.css.br | Bin 0 -> 360 bytes .../code-styles/base16/google-light.min.css.gz | Bin 0 -> 448 bytes .../base16/grayscale-dark.min.css.br | Bin 0 -> 356 bytes .../base16/grayscale-dark.min.css.gz | Bin 0 -> 438 bytes .../base16/grayscale-light.min.css.br | Bin 0 -> 353 bytes .../base16/grayscale-light.min.css.gz | Bin 0 -> 435 bytes .../code-styles/base16/green-screen.min.css.br | Bin 0 -> 326 bytes .../code-styles/base16/green-screen.min.css.gz | Bin 0 -> 402 bytes .../base16/gruvbox-dark-hard.min.css.br | Bin 0 -> 368 bytes .../base16/gruvbox-dark-hard.min.css.gz | Bin 0 -> 459 bytes .../base16/gruvbox-dark-medium.min.css.br | Bin 0 -> 368 bytes .../base16/gruvbox-dark-medium.min.css.gz | Bin 0 -> 458 bytes .../base16/gruvbox-dark-pale.min.css.br | Bin 0 -> 363 bytes .../base16/gruvbox-dark-pale.min.css.gz | Bin 0 -> 444 bytes .../base16/gruvbox-dark-soft.min.css.br | Bin 0 -> 369 bytes .../base16/gruvbox-dark-soft.min.css.gz | Bin 0 -> 459 bytes .../base16/gruvbox-light-hard.min.css.br | Bin 0 -> 369 bytes .../base16/gruvbox-light-hard.min.css.gz | Bin 0 -> 462 bytes .../base16/gruvbox-light-medium.min.css.br | Bin 0 -> 369 bytes .../base16/gruvbox-light-medium.min.css.gz | Bin 0 -> 461 bytes .../base16/gruvbox-light-soft.min.css.br | Bin 0 -> 369 bytes .../base16/gruvbox-light-soft.min.css.gz | Bin 0 -> 461 bytes .../code-styles/base16/hardcore.min.css.br | Bin 0 -> 365 bytes .../code-styles/base16/hardcore.min.css.gz | Bin 0 -> 453 bytes .../base16/harmonic16-dark.min.css.br | Bin 0 -> 363 bytes .../base16/harmonic16-dark.min.css.gz | Bin 0 -> 444 bytes .../base16/harmonic16-light.min.css.br | Bin 0 -> 364 bytes .../base16/harmonic16-light.min.css.gz | Bin 0 -> 445 bytes .../code-styles/base16/heetch-dark.min.css.br | Bin 0 -> 373 bytes .../code-styles/base16/heetch-dark.min.css.gz | Bin 0 -> 461 bytes .../code-styles/base16/heetch-light.min.css.br | Bin 0 -> 368 bytes .../code-styles/base16/heetch-light.min.css.gz | Bin 0 -> 459 bytes .../code-styles/base16/helios.min.css.br | Bin 0 -> 364 bytes .../code-styles/base16/helios.min.css.gz | Bin 0 -> 459 bytes .../code-styles/base16/hopscotch.min.css.br | Bin 0 -> 367 bytes .../code-styles/base16/hopscotch.min.css.gz | Bin 0 -> 459 bytes .../code-styles/base16/horizon-dark.min.css.br | Bin 0 -> 369 bytes .../code-styles/base16/horizon-dark.min.css.gz | Bin 0 -> 458 bytes .../base16/horizon-light.min.css.br | Bin 0 -> 367 bytes .../base16/horizon-light.min.css.gz | Bin 0 -> 451 bytes .../base16/humanoid-dark.min.css.br | Bin 0 -> 366 bytes .../base16/humanoid-dark.min.css.gz | Bin 0 -> 459 bytes .../base16/humanoid-light.min.css.br | Bin 0 -> 368 bytes .../base16/humanoid-light.min.css.gz | Bin 0 -> 456 bytes .../code-styles/base16/ia-dark.min.css.br | Bin 0 -> 367 bytes .../code-styles/base16/ia-dark.min.css.gz | Bin 0 -> 451 bytes .../code-styles/base16/ia-light.min.css.br | Bin 0 -> 362 bytes .../code-styles/base16/ia-light.min.css.gz | Bin 0 -> 450 bytes .../code-styles/base16/icy-dark.min.css.br | Bin 0 -> 370 bytes .../code-styles/base16/icy-dark.min.css.gz | Bin 0 -> 459 bytes .../code-styles/base16/ir-black.min.css.br | Bin 0 -> 365 bytes .../code-styles/base16/ir-black.min.css.gz | Bin 0 -> 455 bytes .../code-styles/base16/isotope.min.css.br | Bin 0 -> 348 bytes .../code-styles/base16/isotope.min.css.gz | Bin 0 -> 431 bytes .../code-styles/base16/kimber.min.css.br | Bin 0 -> 367 bytes .../code-styles/base16/kimber.min.css.gz | Bin 0 -> 455 bytes .../code-styles/base16/london-tube.min.css.br | 2 ++ .../code-styles/base16/london-tube.min.css.gz | Bin 0 -> 459 bytes .../code-styles/base16/macintosh.min.css.br | Bin 0 -> 361 bytes .../code-styles/base16/macintosh.min.css.gz | Bin 0 -> 447 bytes .../code-styles/base16/marrakesh.min.css.br | Bin 0 -> 369 bytes .../code-styles/base16/marrakesh.min.css.gz | Bin 0 -> 461 bytes .../code-styles/base16/materia.min.css.br | Bin 0 -> 366 bytes .../code-styles/base16/materia.min.css.gz | Bin 0 -> 450 bytes .../base16/material-darker.min.css.br | Bin 0 -> 364 bytes .../base16/material-darker.min.css.gz | Bin 0 -> 452 bytes .../base16/material-lighter.min.css.br | Bin 0 -> 369 bytes .../base16/material-lighter.min.css.gz | Bin 0 -> 457 bytes .../base16/material-palenight.min.css.br | Bin 0 -> 372 bytes .../base16/material-palenight.min.css.gz | Bin 0 -> 458 bytes .../base16/material-vivid.min.css.br | Bin 0 -> 371 bytes .../base16/material-vivid.min.css.gz | Bin 0 -> 460 bytes .../code-styles/base16/material.min.css.br | Bin 0 -> 366 bytes .../code-styles/base16/material.min.css.gz | Bin 0 -> 457 bytes .../base16/mellow-purple.min.css.br | Bin 0 -> 370 bytes .../base16/mellow-purple.min.css.gz | Bin 0 -> 460 bytes .../code-styles/base16/mexico-light.min.css.br | Bin 0 -> 365 bytes .../code-styles/base16/mexico-light.min.css.gz | Bin 0 -> 455 bytes .../code-styles/base16/mocha.min.css.br | Bin 0 -> 370 bytes .../code-styles/base16/mocha.min.css.gz | Bin 0 -> 458 bytes .../code-styles/base16/monokai.min.css.br | Bin 0 -> 363 bytes .../code-styles/base16/monokai.min.css.gz | Bin 0 -> 456 bytes .../code-styles/base16/nebula.min.css.br | Bin 0 -> 372 bytes .../code-styles/base16/nebula.min.css.gz | Bin 0 -> 461 bytes .../code-styles/base16/nord.min.css.br | Bin 0 -> 366 bytes .../code-styles/base16/nord.min.css.gz | Bin 0 -> 456 bytes .../code-styles/base16/nova.min.css.br | Bin 0 -> 356 bytes .../code-styles/base16/nova.min.css.gz | Bin 0 -> 440 bytes .../code-styles/base16/ocean.min.css.br | Bin 0 -> 370 bytes .../code-styles/base16/ocean.min.css.gz | Bin 0 -> 460 bytes .../code-styles/base16/oceanicnext.min.css.br | Bin 0 -> 368 bytes .../code-styles/base16/oceanicnext.min.css.gz | Bin 0 -> 458 bytes .../code-styles/base16/one-light.min.css.br | Bin 0 -> 364 bytes .../code-styles/base16/one-light.min.css.gz | Bin 0 -> 459 bytes .../code-styles/base16/onedark.min.css.br | Bin 0 -> 372 bytes .../code-styles/base16/onedark.min.css.gz | Bin 0 -> 461 bytes .../code-styles/base16/outrun-dark.min.css.br | Bin 0 -> 368 bytes .../code-styles/base16/outrun-dark.min.css.gz | Bin 0 -> 456 bytes .../base16/papercolor-dark.min.css.br | Bin 0 -> 365 bytes .../base16/papercolor-dark.min.css.gz | Bin 0 -> 439 bytes .../base16/papercolor-light.min.css.br | Bin 0 -> 349 bytes .../base16/papercolor-light.min.css.gz | Bin 0 -> 432 bytes .../code-styles/base16/paraiso.min.css.br | Bin 0 -> 368 bytes .../code-styles/base16/paraiso.min.css.gz | Bin 0 -> 459 bytes .../code-styles/base16/pasque.min.css.br | Bin 0 -> 370 bytes .../code-styles/base16/pasque.min.css.gz | Bin 0 -> 460 bytes .../code-styles/base16/phd.min.css.br | Bin 0 -> 369 bytes .../code-styles/base16/phd.min.css.gz | Bin 0 -> 461 bytes .../code-styles/base16/pico.min.css.br | Bin 0 -> 367 bytes .../code-styles/base16/pico.min.css.gz | Bin 0 -> 454 bytes .../code-styles/base16/pop.min.css.br | Bin 0 -> 363 bytes .../code-styles/base16/pop.min.css.gz | Bin 0 -> 448 bytes .../code-styles/base16/porple.min.css.br | Bin 0 -> 368 bytes .../code-styles/base16/porple.min.css.gz | Bin 0 -> 459 bytes .../code-styles/base16/qualia.min.css.br | Bin 0 -> 361 bytes .../code-styles/base16/qualia.min.css.gz | Bin 0 -> 447 bytes .../code-styles/base16/railscasts.min.css.br | Bin 0 -> 368 bytes .../code-styles/base16/railscasts.min.css.gz | Bin 0 -> 459 bytes .../code-styles/base16/rebecca.min.css.br | Bin 0 -> 366 bytes .../code-styles/base16/rebecca.min.css.gz | Bin 0 -> 450 bytes .../base16/ros-pine-dawn.min.css.br | Bin 0 -> 373 bytes .../base16/ros-pine-dawn.min.css.gz | Bin 0 -> 460 bytes .../base16/ros-pine-moon.min.css.br | Bin 0 -> 370 bytes .../base16/ros-pine-moon.min.css.gz | Bin 0 -> 455 bytes .../code-styles/base16/ros-pine.min.css.br | Bin 0 -> 370 bytes .../code-styles/base16/ros-pine.min.css.gz | Bin 0 -> 457 bytes .../code-styles/base16/sagelight.min.css.br | Bin 0 -> 361 bytes .../code-styles/base16/sagelight.min.css.gz | Bin 0 -> 447 bytes .../code-styles/base16/sandcastle.min.css.br | Bin 0 -> 359 bytes .../code-styles/base16/sandcastle.min.css.gz | Bin 0 -> 446 bytes .../code-styles/base16/seti-ui.min.css.br | Bin 0 -> 364 bytes .../code-styles/base16/seti-ui.min.css.gz | Bin 0 -> 457 bytes .../code-styles/base16/shapeshifter.min.css.br | Bin 0 -> 362 bytes .../code-styles/base16/shapeshifter.min.css.gz | Bin 0 -> 458 bytes .../code-styles/base16/silk-dark.min.css.br | Bin 0 -> 374 bytes .../code-styles/base16/silk-dark.min.css.gz | Bin 0 -> 457 bytes .../code-styles/base16/silk-light.min.css.br | Bin 0 -> 371 bytes .../code-styles/base16/silk-light.min.css.gz | Bin 0 -> 459 bytes .../code-styles/base16/snazzy.min.css.br | Bin 0 -> 369 bytes .../code-styles/base16/snazzy.min.css.gz | Bin 0 -> 457 bytes .../base16/solar-flare-light.min.css.br | Bin 0 -> 371 bytes .../base16/solar-flare-light.min.css.gz | Bin 0 -> 460 bytes .../code-styles/base16/solar-flare.min.css.br | Bin 0 -> 375 bytes .../code-styles/base16/solar-flare.min.css.gz | Bin 0 -> 460 bytes .../base16/solarized-dark.min.css.br | Bin 0 -> 371 bytes .../base16/solarized-dark.min.css.gz | Bin 0 -> 463 bytes .../base16/solarized-light.min.css.br | Bin 0 -> 367 bytes .../base16/solarized-light.min.css.gz | Bin 0 -> 462 bytes .../code-styles/base16/spacemacs.min.css.br | Bin 0 -> 363 bytes .../code-styles/base16/spacemacs.min.css.gz | Bin 0 -> 460 bytes .../code-styles/base16/summercamp.min.css.br | Bin 0 -> 373 bytes .../code-styles/base16/summercamp.min.css.gz | Bin 0 -> 458 bytes .../base16/summerfruit-dark.min.css.br | Bin 0 -> 362 bytes .../base16/summerfruit-dark.min.css.gz | Bin 0 -> 447 bytes .../base16/summerfruit-light.min.css.br | Bin 0 -> 360 bytes .../base16/summerfruit-light.min.css.gz | Bin 0 -> 445 bytes .../synth-midnight-terminal-dark.min.css.br | Bin 0 -> 371 bytes .../synth-midnight-terminal-dark.min.css.gz | Bin 0 -> 460 bytes .../synth-midnight-terminal-light.min.css.br | Bin 0 -> 369 bytes .../synth-midnight-terminal-light.min.css.gz | Bin 0 -> 460 bytes .../code-styles/base16/t3024.min.css.br | Bin 0 -> 368 bytes .../code-styles/base16/t3024.min.css.gz | Bin 0 -> 458 bytes .../code-styles/base16/tango.min.css.br | Bin 0 -> 371 bytes .../code-styles/base16/tango.min.css.gz | Bin 0 -> 458 bytes .../code-styles/base16/tender.min.css.br | Bin 0 -> 368 bytes .../code-styles/base16/tender.min.css.gz | Bin 0 -> 452 bytes .../base16/tomorrow-night.min.css.br | Bin 0 -> 353 bytes .../base16/tomorrow-night.min.css.gz | Bin 0 -> 443 bytes .../code-styles/base16/tomorrow.min.css.br | Bin 0 -> 365 bytes .../code-styles/base16/tomorrow.min.css.gz | Bin 0 -> 458 bytes .../code-styles/base16/twilight.min.css.br | Bin 0 -> 365 bytes .../code-styles/base16/twilight.min.css.gz | Bin 0 -> 456 bytes .../base16/unikitty-dark.min.css.br | Bin 0 -> 372 bytes .../base16/unikitty-dark.min.css.gz | Bin 0 -> 458 bytes .../base16/unikitty-light.min.css.br | Bin 0 -> 370 bytes .../base16/unikitty-light.min.css.gz | Bin 0 -> 457 bytes .../code-styles/base16/vulcan.min.css.br | Bin 0 -> 354 bytes .../code-styles/base16/vulcan.min.css.gz | Bin 0 -> 445 bytes .../base16/windows-10-light.min.css.br | Bin 0 -> 361 bytes .../base16/windows-10-light.min.css.gz | Bin 0 -> 452 bytes .../code-styles/base16/windows-10.min.css.br | Bin 0 -> 365 bytes .../code-styles/base16/windows-10.min.css.gz | Bin 0 -> 453 bytes .../base16/windows-95-light.min.css.br | Bin 0 -> 356 bytes .../base16/windows-95-light.min.css.gz | Bin 0 -> 434 bytes .../code-styles/base16/windows-95.min.css.br | Bin 0 -> 354 bytes .../code-styles/base16/windows-95.min.css.gz | Bin 0 -> 434 bytes .../windows-high-contrast-light.min.css.br | Bin 0 -> 355 bytes .../windows-high-contrast-light.min.css.gz | Bin 0 -> 438 bytes .../base16/windows-high-contrast.min.css.br | 3 +++ .../base16/windows-high-contrast.min.css.gz | Bin 0 -> 436 bytes .../base16/windows-nt-light.min.css.br | Bin 0 -> 360 bytes .../base16/windows-nt-light.min.css.gz | Bin 0 -> 437 bytes .../code-styles/base16/windows-nt.min.css.br | Bin 0 -> 353 bytes .../code-styles/base16/windows-nt.min.css.gz | Bin 0 -> 433 bytes .../code-styles/base16/woodland.min.css.br | Bin 0 -> 371 bytes .../code-styles/base16/woodland.min.css.gz | Bin 0 -> 458 bytes .../code-styles/base16/xcode-dusk.min.css.br | Bin 0 -> 366 bytes .../code-styles/base16/xcode-dusk.min.css.gz | Bin 0 -> 457 bytes .../code-styles/base16/zenburn.min.css.br | Bin 0 -> 361 bytes .../code-styles/base16/zenburn.min.css.gz | Bin 0 -> 445 bytes .../code-styles/brown-paper.min.css.br | Bin 0 -> 209 bytes .../code-styles/brown-paper.min.css.gz | Bin 0 -> 280 bytes .../code-styles/codepen-embed.min.css.br | Bin 0 -> 203 bytes .../code-styles/codepen-embed.min.css.gz | Bin 0 -> 264 bytes .../code-styles/color-brewer.min.css.br | Bin 0 -> 226 bytes .../code-styles/color-brewer.min.css.gz | Bin 0 -> 268 bytes .../code-styles/dark.min.css.br | Bin 0 -> 190 bytes .../code-styles/dark.min.css.gz | Bin 0 -> 245 bytes .../code-styles/default.min.css.br | Bin 0 -> 314 bytes .../code-styles/default.min.css.gz | Bin 0 -> 390 bytes .../code-styles/devibeans.min.css.br | 3 +++ .../code-styles/devibeans.min.css.gz | Bin 0 -> 358 bytes .../code-styles/docco.min.css.br | Bin 0 -> 273 bytes .../code-styles/docco.min.css.gz | Bin 0 -> 337 bytes .../code-styles/far.min.css.br | Bin 0 -> 200 bytes .../code-styles/far.min.css.gz | Bin 0 -> 259 bytes .../code-styles/foundation.min.css.br | Bin 0 -> 232 bytes .../code-styles/foundation.min.css.gz | Bin 0 -> 307 bytes .../code-styles/github-dark-dimmed.min.css.br | Bin 0 -> 328 bytes .../code-styles/github-dark-dimmed.min.css.gz | Bin 0 -> 407 bytes .../code-styles/github-dark.min.css.br | Bin 0 -> 328 bytes .../code-styles/github-dark.min.css.gz | Bin 0 -> 404 bytes .../code-styles/github.min.css.br | Bin 0 -> 321 bytes .../code-styles/github.min.css.gz | Bin 0 -> 399 bytes .../code-styles/gml.min.css.br | Bin 0 -> 235 bytes .../code-styles/gml.min.css.gz | Bin 0 -> 306 bytes .../code-styles/googlecode.min.css.br | Bin 0 -> 257 bytes .../code-styles/googlecode.min.css.gz | Bin 0 -> 322 bytes .../code-styles/gradient-dark.min.css.br | Bin 0 -> 326 bytes .../code-styles/gradient-dark.min.css.gz | Bin 0 -> 398 bytes .../code-styles/gradient-light.min.css.br | Bin 0 -> 343 bytes .../code-styles/gradient-light.min.css.gz | Bin 0 -> 421 bytes .../code-styles/grayscale.min.css.br | Bin 0 -> 635 bytes .../code-styles/grayscale.min.css.gz | Bin 0 -> 738 bytes .../code-styles/hybrid.min.css.br | Bin 0 -> 292 bytes .../code-styles/hybrid.min.css.gz | Bin 0 -> 358 bytes .../code-styles/idea.min.css.br | Bin 0 -> 255 bytes .../code-styles/idea.min.css.gz | Bin 0 -> 340 bytes .../code-styles/ir-black.min.css.br | Bin 0 -> 232 bytes .../code-styles/ir-black.min.css.gz | Bin 0 -> 295 bytes .../code-styles/isbl-editor-dark.min.css.br | Bin 0 -> 295 bytes .../code-styles/isbl-editor-dark.min.css.gz | Bin 0 -> 361 bytes .../code-styles/isbl-editor-light.min.css.br | Bin 0 -> 281 bytes .../code-styles/isbl-editor-light.min.css.gz | Bin 0 -> 346 bytes .../code-styles/kimbie-dark.min.css.br | Bin 0 -> 220 bytes .../code-styles/kimbie-dark.min.css.gz | Bin 0 -> 290 bytes .../code-styles/kimbie-light.min.css.br | Bin 0 -> 222 bytes .../code-styles/kimbie-light.min.css.gz | Bin 0 -> 292 bytes .../code-styles/lightfair.min.css.br | Bin 0 -> 264 bytes .../code-styles/lightfair.min.css.gz | Bin 0 -> 325 bytes .../code-styles/lioshi.min.css.br | Bin 0 -> 245 bytes .../code-styles/lioshi.min.css.gz | Bin 0 -> 308 bytes .../code-styles/magula.min.css.br | Bin 0 -> 212 bytes .../code-styles/magula.min.css.gz | Bin 0 -> 264 bytes .../code-styles/mono-blue.min.css.br | 1 + .../code-styles/mono-blue.min.css.gz | Bin 0 -> 267 bytes .../code-styles/monokai-sublime.min.css.br | Bin 0 -> 261 bytes .../code-styles/monokai-sublime.min.css.gz | Bin 0 -> 328 bytes .../code-styles/monokai.min.css.br | 1 + .../code-styles/monokai.min.css.gz | Bin 0 -> 304 bytes .../code-styles/night-owl.min.css.br | Bin 0 -> 358 bytes .../code-styles/night-owl.min.css.gz | Bin 0 -> 440 bytes .../code-styles/nnfx-dark.min.css.br | Bin 0 -> 305 bytes .../code-styles/nnfx-dark.min.css.gz | Bin 0 -> 379 bytes .../code-styles/nnfx-light.min.css.br | Bin 0 -> 309 bytes .../code-styles/nnfx-light.min.css.gz | Bin 0 -> 379 bytes .../code-styles/nord.min.css.br | Bin 0 -> 585 bytes .../code-styles/nord.min.css.gz | Bin 0 -> 684 bytes .../code-styles/obsidian.min.css.br | Bin 0 -> 275 bytes .../code-styles/obsidian.min.css.gz | Bin 0 -> 338 bytes .../code-styles/paraiso-dark.min.css.br | Bin 0 -> 223 bytes .../code-styles/paraiso-dark.min.css.gz | Bin 0 -> 287 bytes .../code-styles/paraiso-light.min.css.br | Bin 0 -> 244 bytes .../code-styles/paraiso-light.min.css.gz | Bin 0 -> 328 bytes .../code-styles/pojoaque.min.css.br | Bin 0 -> 291 bytes .../code-styles/pojoaque.min.css.gz | Bin 0 -> 373 bytes .../code-styles/purebasic.min.css.br | 1 + .../code-styles/purebasic.min.css.gz | Bin 0 -> 291 bytes .../code-styles/qtcreator-dark.min.css.br | Bin 0 -> 249 bytes .../code-styles/qtcreator-dark.min.css.gz | Bin 0 -> 309 bytes .../code-styles/qtcreator-light.min.css.br | 2 ++ .../code-styles/qtcreator-light.min.css.gz | Bin 0 -> 310 bytes .../code-styles/rainbow.min.css.br | Bin 0 -> 270 bytes .../code-styles/rainbow.min.css.gz | Bin 0 -> 339 bytes .../code-styles/routeros.min.css.br | Bin 0 -> 276 bytes .../code-styles/routeros.min.css.gz | Bin 0 -> 332 bytes .../code-styles/school-book.min.css.br | 3 +++ .../code-styles/school-book.min.css.gz | Bin 0 -> 270 bytes .../code-styles/shades-of-purple.min.css.br | Bin 0 -> 256 bytes .../code-styles/shades-of-purple.min.css.gz | Bin 0 -> 313 bytes .../code-styles/srcery.min.css.br | Bin 0 -> 256 bytes .../code-styles/srcery.min.css.gz | Bin 0 -> 327 bytes .../code-styles/stackoverflow-dark.min.css.br | Bin 0 -> 266 bytes .../code-styles/stackoverflow-dark.min.css.gz | Bin 0 -> 332 bytes .../code-styles/stackoverflow-light.min.css.br | Bin 0 -> 271 bytes .../code-styles/stackoverflow-light.min.css.gz | Bin 0 -> 339 bytes .../code-styles/sunburst.min.css.br | Bin 0 -> 297 bytes .../code-styles/sunburst.min.css.gz | Bin 0 -> 380 bytes .../code-styles/tomorrow-night-blue.min.css.br | Bin 0 -> 219 bytes .../code-styles/tomorrow-night-blue.min.css.gz | Bin 0 -> 284 bytes .../tomorrow-night-bright.min.css.br | Bin 0 -> 221 bytes .../tomorrow-night-bright.min.css.gz | Bin 0 -> 287 bytes .../code-styles/vs.min.css.br | Bin 0 -> 211 bytes .../code-styles/vs.min.css.gz | Bin 0 -> 274 bytes .../code-styles/vs2015.min.css.br | Bin 0 -> 321 bytes .../code-styles/vs2015.min.css.gz | Bin 0 -> 431 bytes .../code-styles/xcode.min.css.br | Bin 0 -> 301 bytes .../code-styles/xcode.min.css.gz | Bin 0 -> 393 bytes .../code-styles/xt256.min.css.br | Bin 0 -> 225 bytes .../code-styles/xt256.min.css.gz | Bin 0 -> 288 bytes .../wwwroot/system/MudBlazor/MudBlazor.min.css | 2 +- .../system/MudBlazor/MudBlazor.min.css.br | Bin 0 -> 40591 bytes .../system/MudBlazor/MudBlazor.min.css.gz | Bin 0 -> 64530 bytes .../system/MudBlazor/MudBlazor.min.js.br | Bin 0 -> 10451 bytes .../system/MudBlazor/MudBlazor.min.js.gz | Bin 0 -> 11710 bytes 500 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 app/MindWork AI Studio/wwwroot/system/CodeBeam.MudBlazor.Extensions/MudExtensions.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/CodeBeam.MudBlazor.Extensions/MudExtensions.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/CodeBeam.MudBlazor.Extensions/MudExtensions.min.js.br create mode 100644 app/MindWork AI Studio/wwwroot/system/CodeBeam.MudBlazor.Extensions/MudExtensions.min.js.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.MathJax.min.js.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.MathJax.min.js.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.js.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.js.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/a11y-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/a11y-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/a11y-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/a11y-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/agate.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/agate.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/an-old-hope.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/an-old-hope.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/androidstudio.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/androidstudio.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/arduino-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/arduino-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/arta.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/arta.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/ascetic.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/ascetic.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-dark-reasonable.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-dark-reasonable.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/apathy.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/apathy.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/apprentice.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/apprentice.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ashes.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ashes.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-cave-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-cave-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-cave.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-cave.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-dune-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-dune-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-dune.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-dune.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-estuary-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-estuary-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-estuary.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-estuary.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-forest-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-forest-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-forest.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-forest.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-heath-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-heath-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-heath.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-heath.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-lakeside-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-lakeside-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-lakeside.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-lakeside.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-plateau-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-plateau-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-plateau.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-plateau.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-savanna-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-savanna-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-savanna.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-savanna.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-seaside-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-seaside-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-seaside.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-seaside.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-sulphurpool-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-sulphurpool-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-sulphurpool.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-sulphurpool.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atlas.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atlas.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/bespin.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/bespin.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-bathory.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-bathory.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-burzum.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-burzum.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-dark-funeral.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-dark-funeral.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-gorgoroth.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-gorgoroth.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-immortal.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-immortal.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-khold.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-khold.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-marduk.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-marduk.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-mayhem.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-mayhem.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-nile.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-nile.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-venom.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-venom.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brewer.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brewer.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/bright.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/bright.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brogrammer.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brogrammer.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brush-trees-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brush-trees-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brush-trees.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brush-trees.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/chalk.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/chalk.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/circus.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/circus.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/classic-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/classic-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/classic-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/classic-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/codeschool.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/codeschool.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/colors.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/colors.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/cupcake.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/cupcake.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/cupertino.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/cupertino.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/danqing.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/danqing.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darcula.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darcula.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dark-violet.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dark-violet.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darkmoss.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darkmoss.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darktooth.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darktooth.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/decaf.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/decaf.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/default-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/default-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/default-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/default-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dirtysea.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dirtysea.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dracula.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dracula.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/edge-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/edge-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/edge-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/edge-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eighties.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eighties.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/embers.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/embers.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-gray-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-gray-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-gray-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-gray-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/espresso.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/espresso.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eva-dim.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eva-dim.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eva.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eva.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/flat.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/flat.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/framer.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/framer.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/fruit-soda.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/fruit-soda.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gigavolt.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gigavolt.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/github.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/github.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/google-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/google-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/google-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/google-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/grayscale-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/grayscale-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/grayscale-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/grayscale-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/green-screen.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/green-screen.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-hard.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-hard.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-medium.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-medium.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-pale.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-pale.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-soft.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-soft.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-hard.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-hard.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-medium.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-medium.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-soft.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-soft.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/hardcore.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/hardcore.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/harmonic16-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/harmonic16-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/harmonic16-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/harmonic16-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/heetch-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/heetch-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/heetch-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/heetch-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/helios.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/helios.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/hopscotch.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/hopscotch.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/horizon-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/horizon-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/horizon-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/horizon-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/humanoid-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/humanoid-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/humanoid-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/humanoid-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ia-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ia-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ia-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ia-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/icy-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/icy-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ir-black.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ir-black.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/isotope.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/isotope.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/kimber.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/kimber.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/london-tube.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/london-tube.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/macintosh.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/macintosh.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/marrakesh.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/marrakesh.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/materia.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/materia.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-darker.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-darker.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-lighter.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-lighter.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-palenight.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-palenight.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-vivid.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-vivid.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mellow-purple.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mellow-purple.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mexico-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mexico-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mocha.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mocha.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/monokai.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/monokai.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nebula.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nebula.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nord.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nord.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nova.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nova.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ocean.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ocean.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/oceanicnext.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/oceanicnext.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/one-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/one-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/onedark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/onedark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/outrun-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/outrun-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/papercolor-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/papercolor-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/papercolor-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/papercolor-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/paraiso.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/paraiso.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pasque.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pasque.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/phd.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/phd.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pico.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pico.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pop.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pop.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/porple.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/porple.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/qualia.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/qualia.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/railscasts.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/railscasts.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/rebecca.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/rebecca.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine-dawn.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine-dawn.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine-moon.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine-moon.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/sagelight.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/sagelight.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/sandcastle.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/sandcastle.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/seti-ui.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/seti-ui.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/shapeshifter.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/shapeshifter.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/silk-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/silk-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/silk-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/silk-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/snazzy.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/snazzy.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solar-flare-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solar-flare-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solar-flare.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solar-flare.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solarized-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solarized-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solarized-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solarized-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/spacemacs.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/spacemacs.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summercamp.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summercamp.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summerfruit-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summerfruit-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summerfruit-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summerfruit-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/synth-midnight-terminal-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/synth-midnight-terminal-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/synth-midnight-terminal-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/synth-midnight-terminal-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/t3024.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/t3024.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tango.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tango.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tender.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tender.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tomorrow-night.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tomorrow-night.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tomorrow.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tomorrow.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/twilight.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/twilight.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/unikitty-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/unikitty-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/unikitty-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/unikitty-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/vulcan.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/vulcan.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-10-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-10-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-10.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-10.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-95-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-95-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-95.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-95.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-high-contrast-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-high-contrast-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-high-contrast.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-high-contrast.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-nt-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-nt-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-nt.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-nt.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/woodland.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/woodland.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/xcode-dusk.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/xcode-dusk.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/zenburn.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/zenburn.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/brown-paper.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/brown-paper.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/codepen-embed.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/codepen-embed.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/color-brewer.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/color-brewer.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/default.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/default.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/devibeans.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/devibeans.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/docco.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/docco.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/far.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/far.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/foundation.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/foundation.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github-dark-dimmed.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github-dark-dimmed.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gml.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gml.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/googlecode.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/googlecode.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gradient-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gradient-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gradient-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gradient-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/grayscale.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/grayscale.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/hybrid.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/hybrid.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/idea.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/idea.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/ir-black.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/ir-black.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/isbl-editor-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/isbl-editor-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/isbl-editor-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/isbl-editor-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/kimbie-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/kimbie-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/kimbie-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/kimbie-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/lightfair.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/lightfair.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/lioshi.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/lioshi.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/magula.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/magula.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/mono-blue.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/mono-blue.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/monokai-sublime.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/monokai-sublime.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/monokai.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/monokai.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/night-owl.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/night-owl.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nnfx-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nnfx-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nnfx-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nnfx-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nord.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nord.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/obsidian.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/obsidian.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/paraiso-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/paraiso-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/paraiso-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/paraiso-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/pojoaque.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/pojoaque.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/purebasic.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/purebasic.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/qtcreator-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/qtcreator-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/qtcreator-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/qtcreator-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/rainbow.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/rainbow.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/routeros.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/routeros.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/school-book.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/school-book.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/shades-of-purple.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/shades-of-purple.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/srcery.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/srcery.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/stackoverflow-dark.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/stackoverflow-dark.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/stackoverflow-light.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/stackoverflow-light.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/sunburst.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/sunburst.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/tomorrow-night-blue.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/tomorrow-night-blue.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/tomorrow-night-bright.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/tomorrow-night-bright.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/vs.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/vs.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/vs2015.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/vs2015.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/xcode.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/xcode.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/xt256.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/xt256.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css.gz create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js.br create mode 100644 app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js.gz diff --git a/app/MindWork AI Studio/wwwroot/system/CodeBeam.MudBlazor.Extensions/MudExtensions.min.css.br b/app/MindWork AI Studio/wwwroot/system/CodeBeam.MudBlazor.Extensions/MudExtensions.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..03036b5dc0d867357dccc6ceab2ab228c579ba1b GIT binary patch literal 3401 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 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/CodeBeam.MudBlazor.Extensions/MudExtensions.min.css.gz b/app/MindWork AI Studio/wwwroot/system/CodeBeam.MudBlazor.Extensions/MudExtensions.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..8262136a6ad5aefec8d429902cbefad7ef9fb756 GIT binary patch literal 4133 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 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/CodeBeam.MudBlazor.Extensions/MudExtensions.min.js.br b/app/MindWork AI Studio/wwwroot/system/CodeBeam.MudBlazor.Extensions/MudExtensions.min.js.br new file mode 100644 index 0000000000000000000000000000000000000000..777ac7c670b475a8e8b0f46fef356ac03bb48c58 GIT binary patch literal 1428 zcmV;F1#9{n&k_I}g>mEa(;~YN?YF534YZll*Eb_ix~Lj~s}a1AbFo^sQv%z+I-O?y zqKdK$o4mKYhwuUyzwZl!vL-nlD4V}B<u_rUcO}04+P{(u<T}2>kdSE2o+O(`@PR@7 z&gQ<o1t!Z9Nm>%7QuZ-iUABd&l&epTfMTTnK+Xf=$O&^yu8(^w4vP(FAcNvI?oGE- zi<lSYD`t~^-s=HLyKwR6-3g@jscpF7hC>%vky&ID00^gQA}YEFgwWSCO@!m#c-v`f zb^h5jbYZ3aggIH3eJ-38Ow;)L;!n;yH7VGn71td<gYiO>WNAy`L|wTV@9`p^xVWX2 z9%5DQ-4Wvvri2B<9jL{*p#%4(QeEoX@x0yIX6nbrC?Oop8vnZ!>ZouBSpa>{x>By_ zl(Ssv!?K>!Q#I^Py7U-8c3&aJHqAwjG4vDa?pQQ*iOJV~baD4{NU26+$h{tyjorE+ zSwJC(Q#=Gw+fohn8C!JTXX9e!XL55qbRkYAzOK$(Pg)&6=OVjkNh?R;X|z)PcM;MY z3yNh(hok%(#NX$#JLqW_2(+wx1yKXoLadAtCy~=B(H|HSAiNSw>>wR+yYGSGPC-bh zun3+cle|)gX<8u~ipdSnc6U47Bq|_m_LKB<Ye1P3L=~lM1%n&Z7GuCo7(Xu<g1X0T ztOCHHlVM$e-<Dp|wr$xVHuKgBU$sN*7RDk2=fEc=+{47Mqv!*fdwEuTqgCW=4W$yu zVfwA@?I@}KJj(p=BMc`wli@gJTGf+|llFb-=aBoEqZDpQTZkCxC5r|TnTjH45O|f* zo0Jz5es)PH{6UG`bzi;pueE&+DV7Ps8EssI)z4;Wb>1`%eXspToeJw_Dj8`Ews{m! zG@Ses+l^c4j1)k?{X{^_r;u9Zd`b$Fy5jrwZb1I69cYZ9Vj5auYD0LY22aLr-BbId z%{;=wGzUVdpn?44-w5yAiBPZv&??wUm~eN$Kv*^?7IPa>XbQz{KkRNu81!L~c|?Ui z5OpA6Zk&3DhF2Xz!H+BRdTRy)lDsP8<Z*PQ`su+UrBLh=Yxt22{2&+x?okN!AvGC| z<Wk*bL`;^Xsq#8kSptnj@j3{y8|aV8oy;#CR%|dEn=p+^5V`gwlqg}{`ygRduDS@P zVdM@KYPNiA&q@V#5Jlocm3P#AbxD|ydDKxK+KxLM8GbgQYE+8Dh$7!87Ir==Nh1@b ztnrxl+-U*|^Ii*E`rm{Fy|2n{-go6J|E+S77#BFbl#+8u=9=J`N~wWwpD5As2-LJ8 z1_uDZp$dZ|PL+9}=p+^!U=dYFhFKz53ENn$cNm3TMH~-F$z&K?=i!hxd-ppX-8X$i zR6`6=DsOUC_xeWa>ORy)!CWHPiPLeJI?rn1C32hB^t+*{J>OG=J`M}wG>j(eZHEfn z9DawPT}1IR7?HwiZ^e<(PG8H`jyalWIoGF)Ez=3#p<g&0;h(IXZ^nA2gEs$c$7ij< zG<11pqVigiPm)u&uab!ZyDf_Fe~ds{x6ZX{uu5cgI%66DoO*F_e5*tnVmzGWEVQrB z;}!DEN44_58(?@hfUblbhL1qiLo1bAZx@5tc9O`eGu*0=-d=u3-^d|q`(x-$n%@W! z=8Yl+`^$rF4&VcUkHjrsTHB;VKLgeH|KqNtXPVyvk*3BlCe~S88@!n0hUd^~I+Iw0 zZk^dffVMq{Th!XG1AS~iVuuLm5Qwck7uL(_Ep1vqN~wxlNnhjDX{)Cjj!C>rnue@C z)*MTg-_z5IZq~2o=L65X-fR3X)0U=Kh{xFVr~y7whH?kqp)~NXlC#$+hgr8^A;S+t iQx{}Szmv<nb!}iX@lZMrK6#NL8MX(+{q)Lx{*(nT&$`wC literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/CodeBeam.MudBlazor.Extensions/MudExtensions.min.js.gz b/app/MindWork AI Studio/wwwroot/system/CodeBeam.MudBlazor.Extensions/MudExtensions.min.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..f02909a74aa6569c8d842a5f5e44f1cf9f1e8261 GIT binary patch literal 1621 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 T$KL4iy`TLJyF6f&&=LRuB^)sb literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.MathJax.min.js.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.MathJax.min.js.br new file mode 100644 index 0000000000000000000000000000000000000000..f6543780ad27c87a576f7f9a491b2281fef4f9b0 GIT binary patch literal 204607 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 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.MathJax.min.js.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.MathJax.min.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..34ef187a7bc030f914141857d995741f64ee2b75 GIT binary patch literal 269164 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�usDw(1|1ZZ+0|JoCO>H=nmTZhOtSo(HdP~D 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Μ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 j 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%0Aynwo<7_V1G1onYp#Cx1I6(Zm%D& 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%0A%S`@v<l0WrT1(A%X+ue@?=T3I+h- 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 Kmfy+`<`Do~iV6Jy literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.css b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.css index 44da7757..51778ccc 100755 --- a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.css +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.css @@ -1 +1 @@ -.mud-markdown-body code:not(.hljs){background:var(--mud-palette-action-disabled-background);color:var(--mud-palette-text-primary)!important;padding:2.5px 7.5px;border-radius:5px}pre code.hljs{display:block!important;overflow-x:auto;padding:1em}.mud-markdown-body .snippet-clipboard-content{position:relative!important}.mud-markdown-body .snippet-clipboard-content:hover>.snippet-clipboard-copy-icon{display:block!important}.mud-markdown-body .snippet-clipboard-content .snippet-clipboard-copy-icon{position:absolute;display:none;top:0;right:0}.mud-markdown-body blockquote{border-left:.25em solid var(--mud-palette-text-disabled);color:var(--mud-palette-text-secondary);background-color:var(--mud-palette-table-hover);padding:.25em 1em;margin:.5em 0 1.25em}.mud-markdown-body blockquote p{margin-bottom:0!important}.mud-markdown-body table{margin:1.25em 0}.mud-markdown-body .mud-link:hover{cursor:pointer!important}.mud-markdown-body ul{list-style-type:disc}.mud-markdown-body ol,.mud-markdown-body ul{padding-left:2em;margin-bottom:1.25em!important}.mud-markdown-body ul ul{list-style-type:circle;margin-bottom:0!important}.mud-markdown-body ul ul ul{list-style-type:square;margin-bottom:0!important}.mud-markdown-body li{display:list-item!important;text-align:-webkit-match-parent}.mud-markdown-body h1,.mud-markdown-body h2{border-bottom:1px solid var(--mud-palette-text-disabled);padding-bottom:.125em;margin-bottom:.4em}.mud-markdown-body h1,.mud-markdown-body h2,.mud-markdown-body h3,.mud-markdown-body h4,.mud-markdown-body h5,.mud-markdown-body h6{scroll-margin-top:5rem;margin-top:.25em;word-wrap:break-word;margin-bottom:.3em!important}.mud-markdown-body .mud-divider{margin:.5em 0;height:.25em}.mud-markdown-body p{margin-bottom:1.25em!important}.mud-markdown-body .mud-expand-panel p,.mud-markdown-body li p{margin-bottom:0!important}.mud-markdown-body p .markdown-error{white-space:pre}.mud-markdown-body img{max-width:100%} \ No newline at end of file +.mud-markdown-body code:not(.hljs){background:var(--mud-palette-action-disabled-background);color:var(--mud-palette-text-primary)!important;padding:2.5px 7.5px;border-radius:5px}pre code.hljs{display:block!important;overflow-x:auto;padding:1em}.mud-markdown-body .snippet-clipboard-content{position:relative!important}.mud-markdown-body .snippet-clipboard-content:hover>.snippet-clipboard-copy-icon{display:block!important}.mud-markdown-body .snippet-clipboard-content .snippet-clipboard-copy-icon{position:absolute;display:none;top:0;right:0}.mud-markdown-body blockquote{border-left:.25em solid var(--mud-palette-text-disabled);color:var(--mud-palette-text-secondary);background-color:var(--mud-palette-table-hover);padding:.25em 1em;margin:.5em 0 1.25em}.mud-markdown-body blockquote p{margin-bottom:0!important}.mud-markdown-body table{margin:1.25em 0}.mud-markdown-body .mud-link:hover{cursor:pointer!important}.mud-markdown-body ul{list-style-type:disc}.mud-markdown-body ol,.mud-markdown-body ul{padding-left:2em;margin-bottom:1.25em!important}.mud-markdown-body ul ul{list-style-type:circle;margin-bottom:0!important}.mud-markdown-body ul ul ul{list-style-type:square;margin-bottom:0!important}.mud-markdown-body li{display:list-item!important;text-align:-webkit-match-parent}.mud-markdown-body h1,.mud-markdown-body h2{border-bottom:1px solid var(--mud-palette-text-disabled);padding-bottom:.125em;margin-bottom:.4em}.mud-markdown-body h1,.mud-markdown-body h2,.mud-markdown-body h3,.mud-markdown-body h4,.mud-markdown-body h5,.mud-markdown-body h6{scroll-margin-top:5rem;margin-top:.25em;word-wrap:break-word;margin-bottom:.3em!important}.mud-markdown-body .mud-divider{margin:.5em 0;height:.25em}.mud-markdown-body p{margin-bottom:1.25em!important}.mud-markdown-body .mud-expand-panel p,.mud-markdown-body li p{margin-bottom:0!important}.mud-markdown-body p .mud-markdown-error{white-space:pre}.mud-markdown-body img{max-width:100%} \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..4d6486c8992572e851c7b3af1125f2772bcf8557 GIT binary patch literal 475 zcmV<10VMt#mInYFsh$2X<nsO8oYot$f2d5m1-wl~^C-5qz*|~dZ)k0|y^gyC9>t>S z5V2+<6FN1a0-gtuLYs5?cn$cMcuTOi`0}6Pa(x<l-q(kzpuBf`H-Nu2al6y=Nx)Jd zIe|YYb4(NFEEtgxaMDz$ZoSSx$E;Ev8}=9O?XbKaMa(DPiA~^eS{$q!Pj|K$zJ;N6 z{AWHr<*wI{%fd`gggWR-LPv9?MX8I@2+=U4=Qlr!@(<3yh%|Cyiz_mW*?YaO<ay=7 zD`z=0*P{*WK`==%5KKQa9>lcCd=Rs1jxv;Y7|y%LEZbALzX@1^dX;HujiHoJ%Mq7s z{h8_Q;maW;yP;SDWC_m}z=RZ9NMycJp7<EjI6A{DY5yLAQ1nGI0VX9I>B=rD61#uk z$^q$31{CP0M^s!6#R_}WW;wIEQgeXD9x?GbFtjhh1J|wPDGW2}vsRS|$=Qd*%--+L zzVnR=++Nq)NqE_>|BLNwyx;0$I-(r$-*^wbN8V$9B1K{nRU{POIfl<jiy#V20Y3MZ zi%Mo=*;lTmLdSxSvGQ);C1&-SJy_(Pn8lA_jrEeyrm&wKzZz*W*um-xD8MA8mQb0W R7JR2ae_c*;v|o(CX`f5?>(2lH literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..3715f81c4e3db11b0b549a54571c0d114db01d5f GIT binary patch literal 605 zcmV-j0;2sNiwFP!000006O~l$Zrd;nd=>A<fCiY1ByBc82KFwp#Kv4?QKjfOfsuC~ z?0j{dk~V(~h!&5><56YXIn^58IO>C{$?XeE4s;-SDjWYN&4$|8&6=qTPHzoADK(}< z<3R+Jv4Rwo!(?g?PF*k0DodU?lOwPb6&YK@``I^aBe9quRW#0FSnFlEio4?1_^oPU z2dvmQ?2=x^-61ke6eo6r!xX*Q>)Mmuyu+d`@T;d@?X>BHF4zlb59R+omnmS3Aj*1- zH5qowQV<9-L`pdJs2RKw+`_fWV@SFgN&U`Vh<k;W!mV~5D^%Pqap}j@iF_weor?wv zPzgmnuNc>j=y|U0MD493f#Eb953i!j<qFy&kw;hD82Q;GpEx6drQk+yR982tn<*ot znxvgwrhFu`fVOH4uQBLyJkN{8^y7Y4MI4SvswNR?_5A)ECIY7veJoI9g_}Yi!{%s& z!FHU8btDV|e7{KN2aicqlD!8d`v}@$vbn3|f8+s9;vC1dyl8W7^GN+O8aXBw*?OoR zQf)%Yfu*<3@Pl9;FN-t5p}cRTnp|Z(u7g%R)EgAl8nKOvh9QsGEOH_?%d_Rrn#J8$ zEq_-3lvyrDwLi33zU0k$i%mBAoQ=L@qpNK6=a4Lu_v*xMd=gfCWjmfHvs68?Q$3rg zYX-AX<N0Gx&!3rU3OU@O10Md_*Q$Z(9lE)-A6NA&9-cz5izbY-3gC;FQ^Dh-4?#Ra rUxL6)JoF6;s1%I_9T{?o*sh1x>{O3V8oij$zaRbrkgL0ymj?g<G}s}n literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.js.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.js.br new file mode 100644 index 0000000000000000000000000000000000000000..86aeeef6163f2d88b8d883214ccbce709cbdede5 GIT binary patch literal 237564 zcmV(uK<mF->WQ8QHAQyp?F;~I+_b8Hjriv8rqF}f?s$_RMI?8U8zugw9s|IR0k#Sb zRMqy+T?YR+#(Ezz0ZB%sMeS;Jns-C9Yk<3pq9o;Qiw96uRaI40-JSf9{q$Wz?-KqZ zkbwR{sZgrcZtL20n+6LpmV_J$m>5e9Wf~_b3<*P<8RQE=u@sbrAeRcYQ~0Kixn)#b zdvD5>kR+vRA)7oew`LdZBXU^d$RrYM(HXbY?KJxy96(8GYK+!tuj+6{gKAB7#E{es zd+cz)bLwdcOD-1@x-x65$rjJjVG~ul>DZEqY*jW87Od$DEpWuq1d!;R5v>#_9ix{Z zMM7r0UKN7rCOzh2P~TO8LB}pJvc_A7=CQy#nU%#n%qKI}!m25ZX+zuzo+m{|7zugL zVVJn^#{{o4Ki2COHexg?1A!w}&b)0gv!M^%rZ#og+DM4(TA+*RPt~PG&l6#+5{1JB z36+8)vQv4aaM|9W2{WXxOC0n@i-TLj;2JA_(UMjeb;gh1m|)S!r!Q8`5?>j4DCg}T z@O^-3ln=_ZuWPM)yhg^~tzp-`ph1&r$;vMNUg6+WJr){Cs5~Y;?ci!>66X_Bi%x|z zaxx(amPIq<&rG!bJ^hm+hXnjuYh)s@toKGgTZWxBs?&F<+E+Ii+*F6iAj`<<<A^Y4 z60=r@zFXzE>!*7Avh>5{j5y~V-v5&?)*dQU!HjC}&#D{-d0ZiHSkKcwxFLYpK}HU? zL$11Fp^T{|A555)H}EIE9twF<QH!0z)2nW(XC}es%vkCfxu6?X*jt8$K)^vXL1bE< zL<>eF47n4T>e~Vo$hhl&ty(Fd0000PA&dy*j)<Z(6(T0;Op|M5iq^O@V?>&mW@=`L z4l$?j0?`k~h~;V>>J9yR8>!PS#65@ODN<w<qwyK1i}BUm5H;eCXdk$|nEYw{%0n8= z8}UJuU-LtRzo`h1uWC+v>i2fJF;iG2SuA(}X*sQJrEfNI*4HCGXwh+U*{&pdu~m*G zbvk>Zh4+Vl{Qh6J|F2&%w<WI;Ug;>cD%Lz#7+^<6!$ePpSn{+q)n4DL!Ynx6E6*?! zA<rxQNe~AC-lUU&WnUHVO=o|)iV0C>p5^v$U+my5r5lzQJP@VWJWHg?@byhgL{GXj zwfdV6b$gz$0k->6K#oi*s_G)cjfqd7d*UMO|81%Nt1T8dNJc^)I$|)+T%YHreu>@Y zMHdJdNN6!Q42jc->^Fb+tyI&hrIaxOpvxd7JF{q9^D$Jczw%fC>&x$*_4Vs?vWvL{ zgbjv0Ck|v;?=!E$+;i+zdZd}552>Z?mJGqpnYGLiZ2+ZK9Bc$GjYHnLb$Rx~r8cYD zofKUtI{j#}vUS?U-0yKf37W$e{_eLlwf|06KL03S`O|Gf4g-T?i-O>0iPK$@XoLG} zQ~z{zyWKoGZ%8O%7E3lz8?v8}vljoO&}rcNe=F4}RVaploNib)ivteWLu$#&gOa<9 z58UCyf1>-?zG&)yU$q;o-Ruqdhn###fB_N+LOA5i$ggOc@0Xdrovtn4<jS+l&a%x6 zvuryHA|A;efoOa*sDvq4sJ9Gj;zIWYT!6SKLL_JFHS42P%UrLaZF0*t6T};Bl^!eq z`^W@y`AfgPenEig1|-?@DO-p+PtUCuIE3Vlx3Xl`a@MJ$vDNhbic;<UV%aVmZ4%x6 zqpMN@1JXPX&}IfpUMtnCD4jz@)QRWJnm5Ko5^EnKn!ED?IV=t++X}Me%vY7Ks?~1x z#(Y5}M4g_&5&i&_DL1Sd9{gvj*|qaq2lN-S&fNu?97u$?!8?0_#`Dcrt*>9NvIQhx z<ZBIE+O_hP857YlHe&HyV6{s;rrdD0{087qYCQaxTE7otAc*E87PI(G$!1Bhn`V<w zHGQQ)-z@ciU2Bc^$Dkibv7%x`^epLEjPy)ATd7r*q}JZ^_MA=EK5yF!+6c-$ZJwYr z>5~8)2}C4|eFYz>&F@-onG}si*o)D`AO<Oi^N+2Xhv2qUm)jA3H5@eD_ti417Cv%Z z^Vaf_eeNLgOTrE%&;&Ie?S+>VZCa!#`h|Z}-?y&a&(G;o)jJ|#dbJNcf^bQi$=L60 zS>La=I<@X8ojoow7@I1lMv%^|{*#O@pt2x%ihxYs`8sDbPM1JiK*v|)EmF1qqm)7N zd=OD?#eXuCNIhf!V0wVXv8OOsU2yVEtsaX~+PmrX$43x(!wq8A0g<C=;0Xgf9o=Pk zN|*nA6weO9TcgP|^Zy?08ABkU2J~(tVRd8sx()<uvQ&@t1?gIf)gjY4Y{osJA@n;P zn<3}NHj&){f-0LRv~8L)V1edWYKm&+xE0N%-?kC7#n{9tp{nN^7tuMXx52G$i8=hw z`MlfGdGU$<w6+NW^6=cD5OG!%#!ncvp>fM_s(tI5TK<1git?XrvD){qK{EO5*(r!T zl5m?6cnPp=xn7=45DgJ?>qSc*Y>)7uhT&noq{9FI+*co^1mTqP&9Yv=p_JE%TsDZW zg3Wwq^&wgS?)IPs@CJ0BVwDq3WXogAeS99kwO3`IFe7lT2b3+;B>xJVN?K;sZq?rN zyd74AWF%aJ;mkOe|36Lpu2I#jiQk!6R!p*2Pk<yGKn$0~nWAZa(SP4;n18&s?coF@ zA=!llW2gD;O@X&qAA?dPZ-=csJuKyb_;ZtC*J(Db8OCDB)9L;v={-|K8;77HI5MV> zbpHSMrP}B8C;*TYNl7*v$!eTG`+m)x9%be1&#Fc<zO(naM{)0cFO1g&jQ3syk`V#W z0zh&J0Ldj$l-~p8zk>Q5sNaFEj`m2^vvTCDQCX6m>$}OUz8lr5Q8#beVNPo>oYenc zrq(y(1EeIX+Dc=bUo0t#Qho2werB;jT=On6A~KWAOaLMhB#Iy@wn$3#n^H-?rRx6g zzWX8&8JP)X0w5azS!|MG)t6LNQ?9$KyT_OP#+b!s%wqe!+3aSsqS~s*+U0Dv<M-{Y zK55VH%2@;iur&-%WkkGtepPkP`Q0;X9hAk|lQ(W;zH;Mxy=UU0qFBPL#Xf_A?`w)u z&s=j#gY50OiNFvZoi^zNw1P8X`b<hX>)h1-_r6t?yINM$+Nv4e!>G1|2^uHTazKP2 zmfv&EJ(K>4qryp8g_E!jme$G2CQ0=SfA4$LtVh&fEi!u>7Lnby$V{-B2CJDROyfj` z3PpuMmY@OuXR6sw*gGRAfQqCebxvgER5WT!&i^yJn6NAE3_#t^0@7iD3!oxE>Fz0$ zj*zPu%G9ZKmvW`69AfFtMd#M=4}ZO>=iL704Q(uIjkQay+k9l+EKR5rN-V(?>kGCb z5$g{Nw173KNTL7U?|Z9af$)s*h@1wGnxY7%s)vd9@SZ%Q8IPiJpn4byDsj(RTg(5O zs=t{%tAyDzlXU!VU&Jxx00(mNsJ+j5p8cMEq{uUacgwSnND=$+9)Ji20jeUpn;J)w z$$@5Cn&I02cdvR*PzNiZMYODff`UT8mEN}!OPyBscczT;JMDDL@B9m2_v;*ow}9YM zRF)!GsL=)NUCA~Rz1Z)!tX|sHlBzCj_$eYkGcyCy&I8S$w<VRlQ=y-CW@khCA%-5- zdnR*6XZV@TK0N9W0X4Qgzc*j06F^F5Bwc@5SVF@BxOLB&H?~&#DJm|dAb*^9@0oeO zt>m_H)uxn&SSSqqfA9BN>5?_KrpX=+TQ>PWdYUq&*^|6-W%1p!?}{WofKYOZNG8A@ z$f_O(s}ygabCJS-Kq&x_QUG99M3R|3O{un8whY&oDXISA6<}Odzo%zAjx=oqj(}g} z<ZjXc96@ks;W_V`0oxO%r%g77V|#^3ABQR&u>aN!zW=|NX&}6B-XEzGMTzCX-@kju zvn0S$2`RKmLKa8>aXL#@gjHXzur;ipLP3pBvO)uM_xnSpUq|d3dWYmeAh9#r_TP)y z{=bt3(tJo@UdNV7vX<H<Ipz*T43}xH;t>w9g`_Xcrt5G~YB2pv1!hcM-KMPQ{zt2Y zfdW!ZlCt|_+4lkjtw+0)M8u;W6`hV>Vf}u%@?}lCFi5Zna@Tf#mSs%)@38*9uKUMw zAp(XlQgioXtp7j2j8ta+JA;6zt(vvHuR0qMwH$&z0~Tp4B;m10P~k|{yq{yQv2M*$ zXqs>jKdqt%2Y%~NzsAb1)Lb7#cZb)ATq2@#nKpjOTtA3+-%pVl@-`HyA!Sqagkwzm z?`Jo0OS=<PAlQ&H&GEg&k*1v$h!HHEk>Aa)Ve6~c&<-QPRM8E|Z4Au0uH!c*veb4X zN%wp}z<>kBA2iXOwEeNSdRA*^YCpRY5do2(A>0}6d>ivU>gd=Yh>Ne0k(U;%#(e*k zs;RP+cA`msahVw+i_EN!1ZJo0<kuG6n9^hwl=u6wtR4zEB*&(Hfr{Lk?%o||C4G(k zzQJE!);W(|P*D-l%1mk5%*L$o`j;lLfqGR0e8MJ{G8e?jki_1@E~N_x_N(~+<LLia zjJfxfSnJy-se~jk%=P_mOg&diUEGEDaU?1Mgl~t~#8lJ@PTAda8t{pRDz-W)Uy1Xy zk~Igd){2-JZZG^H33-sBa(<0vUzyCm(8N9H2VMvWO}AT>9W2JQ%72n8Rk1WwKuy_Y zW=;I<MW!%1zg$znKj9^QjlETw-)1#BRpB+_CyJU`Kse~W{ju!-yKJx4&N(Ewv{n!y ziJke}z&Dd+RZQmFBuuKXWWfGq!#>ABYZ=aZnY?I)A|VNZ$*n0Z%=cw#kF1V#+~I+- zF)INCLFlVi;xGGR11y__<2_6EAA^l8jiix0)3F?@io3t=oC#g{ya<eQGzfw{vY*kp zwbrwCdq=`YKvW1JAIy6*YrRbU9xh4Fq)H3jDvSJ0uI(^dhLaM#$=gb>V1Z=a8yWRO z)_hu9wf4}zD*?hGc%YI=GRMnqW9etRzU!R?#18>=Yimq2v1hFP|5n}o^?#bnmMH=X zoPps02>Qt)^xL8G=abkSYKl*6pjXjYgsvJBA^A63xdyPx4|D;~ZA;^5VAj@%lW%?W zRqGY8&$;}8{vZ9gX}W15_y`)u{-YZ9<(DhyNi`2Z84>)iE%9w+1)LLAf`Ycw3A%gP z#n<=v&V&G_nEt)Z{jqhY<KIup*8`}*90e294#HPd<+Cl6?}C9Y1!yjI{l2k)kR=hS z(>#SW1#BHjD=Nqmla_mB=Kl?Wyrj^T1aKPEghz7>j>C4M9Db`^FI^Ss^<o~5VV>Zc zj1zn&&A{dano)T1gV(XNReG7pWJhHSDEsInzbl&|Ikdz<{2Fn2-3wd$9Ei|nTHf|f z(_UBB)1c6G=P?76^&0w)7M`>x^zHnW=-g!vys_bt6H&d$J`%!BT>>PQVJkMGiBH>D ziarJ!HM+JO*HiPF5nN1cm)>h7l6FaQ66J5o`xL9^9A=MTdd*As(ld<#UmPY98t+`f zi8wObjZVa{eGO8=&n><^ynp`eG5MTk(jN1A6sx`-C?)czV@9pnrcVgSo<I@KngdJ{ z0PE&K$+h0|z9y}r<7ArlE^Quk*Q|0>ftxm^{;ud1sb_D~#xM+K@@W`n1h|jhw;I{> z04l|qu(7!p<dtuTyu^M0nzF=^iYMkd1B$8?pdufJeM*b4%pK;_-1P__010Mp4EF`y zULm%CXZ=@#(RqF}^odPzJrXn}f`HZvpD6k{?9+;|Gl8-##gR3Dw%oY(KXPT+{CpJZ zGsp9`7UCDa+9kq#Srd4gW1d*cCoNZKvbkZ{q1#Z-HC83FN7IRLR>hFW0=nxNQ3mgr zYGi}+k>i*AT8e$2Z8jeY0sU!`H$O{=4)E`jSZfvS9WgY*Lmpna{Sr$vryD0Z)fjck z&QB7rd4KV&bMoaZ5mr|$^Dd^u3kXPnXR0$;em120iC}9d%FQ{GoQ5o`=>-Ros|n~s z)y!d_zHAVc+!zx0{mH?Y-?VC$KC92My`|QShpOqw0Q=o``~4mph_vjmXSGrJV;p_9 zndE=uyF!NTIH52_i?h76jm4a&=(KzOsX1zli3w}nj}T0m3OTt>$f^Vr3=k^SN-qAm zx^%*!*Z$7hwm!p)$sJUbHvZUD+u<>J_;W<qQzb6hB#4`)4{19LD4XN3()k+KUsyTS zTvmi~`}sdLA8!49vvv1ezT%DlrsXC^M#KR2y|tnP$E$2c7SRT_59-XcJ?TT2QtwHZ zC<E5b>zT0G1;qyZol7|EN<E75@z^+eQv3g`f)F4d%xC$*`=MKLPKJT{zHW)<XR~W9 zIcBUVDcVad;_vU!wWguIVo$jaJo~%~{>_`lVLw~$!3it+8@Yr$-sjs*q^xnJnLu7& z@`G!<urbu8)&ctDue<3k-R5fb<BgkP^XDChD#+#kvNGVa0~g#k^jkGuypj`78Za)A zNowrV2=Xxd4h%JJ&PnBOFw)hsSF$P>O`G=Z@($#H{U`lAmevTzeamS?KYyM+!ayj{ z;Ov(!-wR^ntA+@lE*?LJSJH9@R=3ZyPL`$n%$X?_M4HOUbkb_3(|o;q;JTYM<O|!X zEhh3qX?<DgUOH4;V}Mpwfnf&N;Qvb9ydMf#tQ>Wy`q9=)XbM4Ih^DO&>RfE$4*o4@ z9cHLgy6>@9`s*e3po|_CaI3IuceO=Vddass-;q`r*wDB1=;zDh_cZV9P^|(LjJ?mb zlh=-J-&Q9h19u01GR?+HykeCh|3Py_D}97A=>vxO?)F5Qf;|<h9g0(F|1DUze4mk} zN(PMm_lcmBVIt>#6=(JIWwMG^tnY45+pP>tP!)*4+2kK%)99MqfI5+w+$BHlTL_zv z!lpc7pL*|^oqdGGgzO+6IwRHb6Ai%;`94@`tt+>&_cn=+pxz>2IMdsw%W9uCRB2n8 zn3&~h3daO`a433-GDPXo<KNYppjuF)H`db!8@FZLMltYXBD%2oiE&l-lQ@bIt>CnF zsVtSzkyK2Ju9G6!QuWYB#CTLohN>^24My{DRIY}7{LmxE-PvN~)R!s;Z#3$-O`}uX zCr<>sn7vP$jb!2E8C~CH4k%BJ^Uh|onahWRN>;ICh?~B~ZgihlTUoRlF^lhnMi@4% z?5QblHl_DLsEeE<SbT0hHk%8MD3+I=4CL9qmr3Yrb*CG;FUp>PMPM&n!AeC9&zHW> zB%%jP0+uRr4|9|gOxZ!|0ILy0Pds#bp{0j`uFQ{?s~CWobXa?$VLR~X+7zYF___@8 z<9}}qPat`0!WLQqntR>$4!O?FMAq<Ed8jr38eckt%r+Y383yEgH{_T5?Q*M~?lqpb zS=<I(HVcCnO}#)1$jNTcqzz3coqK(OGx3?vY@1Nzrj>vxN6llyy_mF6Am4Ghn(psI zCp_E*)7*N7qyO`O{$xNEAV0zWC3UjE5q`7W-rl#~n7TxqMRQ|-=d|V+hBPCOyMamT z9SNmBgy;7~nSH&z=(pB3pbtuYzN;Tr&A$EC**KC+#T26Cvsr9Xu#sBjwMhjNw(&?1 zlW^~Up8^z3#6Ts_6i{=uOgpob``TqkcW<FWsy~Vge@Z-N7TgoFoKXSLK-;~ekKg?X z9YJ`?WI!U{+<0jBh#lE{JejBCX4tv^C(|SsoCT@}FtIGDkvi&;doeWP)cx)IP+;HK z;Bsu{555DF4x@RQ>k-D;3K3%0@Kj%$nlOv<!wq&?XSmrYL0jOR|C3YzmMTj$aWahV zQ$Qm-Pj&%K;7j{4!>U{5!F1&AF8L!HB#a{UHSaiAby54L_VV{n7Ry@YdPX)2eHZ_$ zs(4+zTigC$Kdw#l4Yk<dGXe&iYbeA?h#-MOy`-ViA0DPWZZDj;7H{O78|NziJmF55 z8Qn~c_4ts&XrXiRg9a1c<9MD}^X#@C#b&$J+ieK4J5Lg-sHZ%U0~I(PPkVZ2!1cO3 zsULHrrPOL35@VVKAOU%n*L|9Th3}G~214_=+-y=p_Vo=nq-*|&EB3J-qp&gy_>Gk^ ztJmoEjp=(tdtzE1{dK>*WsEQdT!sD$3D4l>I%W>XTgFee!;RQEiGws;XbwJvA=1ES z9Q{*<NbbkR>JZT8DD-0@Z=;i^=!Cn0qfZ*8*MW$>U4$c=0joQv$!6fwctIC-@wJ*E z1=b_84&YzT4{UB>Tsc5GzJA}gN59%a17sMJrN%-DsQZNb5xV<wftT<tw3X{`U?dF0 z6R~B3&pU*Y3a*8B6m`&uGi$$lzO$l#-_z$#x7liYd#;i{xW0cdL@(B?zau8j+%(-E z4%t*Jy<#6@l_TCZ5G*c%@IIX-D=D>=wn}3q+_V`ZH%+NBYa83{-!L(+dm}E-Iw~Fc zo=vGs;XKfgh3$p6gEoHn80T;9lM*gEDyu7XFkXrO8w89f!FV%-w>AMr>TK2BLcj%b zOdvl0F7V9XoHGH}f`TRp-)#{$jFyIv{M1&%bRQcKxtshw4cF~-k`F;oaC0*6Pw?^B z!@s4{6@C7#8q(le?`xVxNuzo82iE=}*Y(+{{rX#*f%s#EeBd#`j4o|G?cF+U^tf@~ z8&)}-;2H7+Nj>e}E!7V3$Ox6K>ZKiaN1<`<f5EWcf8Pc){vEVwYW@ssuN$<ov_8GU z3ftnxE8#1=rr&sM<97G~K_IhDTw_VnassL8S6_e7E(wfkyDAOWa$SI=7U&YD$6g3E z9`SV&LS!d5>!Q2v&9xYL4d3nErfqo8EK%7kI~t;IA2S>cFeDsD3m?V_2z=B0cZ?SI zq34_-esC0Ovfqs+VOyVMxh4TH0bn6Q4wPNxey|tda_19`@#F~((87=N_kvq~jldqh z;2ZrGAF{Y{C{C=EG?Y2Nzhop6)hEF^WTcewm(M;$^%s7!MRrl)XOoklbUAR?9>S;4 z-@!_A;G-?jj2a2jrI*iGfd?Mi{hU(e<>O^+qW}LVs)vkW6KPL#Tz15c8QEJLmk6ms zA8d)q7(=NRZw@_9t%%plmJ9AVyb-i-nWz$QXie&uo4u@+WnH(k+3)uUyW?;v?N0#g za@)iKM&8sQegfXs)c&Rm1=hp*4FfoMUb+jqibEUJyF8<Ovn{D_nm$X3#y--T6?)kv zBiWr$gcb5N_jM>Rs-kg8LwxAW(1>2v$F-LPEz_Fn!f;2!^t;u5v#=2o*JJ%X4LZJw zFDmT*g6{$h-!56VZ;d0#9zVvu#~~gtZ>9P#ER-R>v_FJ8^|5Iukl081teK=Ni+Ual z3X4GPDa;rN|ECY~k((vU=Q4KFu6d<S9M4Xa1af}e4a8=zwbKbVj4mqewKd}++^!ri z^QTbHwTRO@t?|p9VoXQ!AKK;XWu;az)3RkhhdR<nF7Yxl_i6n)&0v-Zv{SMnXE8^f z3ewR5DfrNj6kl`xApiI8T1)zGe4J5Vp9Jt|VL4T81b7aVh0aMx3D72A$Sj_7Q?@8N zHRgHwT@4*onUGp%+r*qs)7M;@haz!gJPn-XHpT4#-?amaUSwqtDsns2c|fhdV0^%= z1XhjY7}pFU7~!M1Xm;Se7@P957cLnEow-AprNOKv(T&Mfg--SQk<T1a&o`cFS}Up7 z@sRzl|G;evS8L%$c9FwzO8@BPtq-{J?~BEi=oo8&B-%?xy?gcD*1*T8wmv)N0Zeq$ zofI9QuwZ+#s25=Y5)KsGrg9163uKb)Ts6)7g3B4HTt*fPb)#=i&{?1?8^`JS+MSLa zK@xu>sf9~e)gy3>mpxdxgx2DBjiY1H)wE|hbXPNeruJF89?YO6-bFMnLfH2YPSulZ zfm}8HrCh~1p$X$#nM%4rJ}LAau76#o#IC5&`P?$2j#xYtWqjDHslIi&MvQ*&dH5ik z21)Gks<JCc)lSiA9TWfSyI05{xWjfTq_Aj8ca)EDXIas(qCB?fOlV#XahNGkCrGfb zgKCNMx~+@wgOL*YRgk*cT|q@&OX5EOP27bQ?8;I?tb4{UbxYrA7s#UvEE{lG0GPSt zdynHb;?)h)ubs747|C8}_(=C?n~<sO+b`ZFM2|nPMw{s-659gyxytzF(CqE@@gtaX zU2E^MK_0Y~A9Ao{OA2*J#$QZR!2S-ulza=@d~X8A(QDVBg`ZULSyQ<q$q9|f@DA<u zwo;CfKo9^ipqk~>i?IR{Ry(|`$S-~)1q=~Wz{be2sY&{=Ho!veolSxGDzX*@q4uv- zN#0J^TK~zu7w}RMfp9NIS54*14nL09a=kMvJ;S<Z5!>UG+^3fGNCORKv-d2@cDEy{ zJO^%RWbJ1bn>se>>e*y}c+KKv<=WVr*Hz%21p)0}tIhdxrkSVY*7xXPiOr+Cj*RJ+ z8I713oG!N~9`)dkp~P<6<I$Z2y!eER+AlXErpKYB0j|+C@vYuo9ro}fG3kxezz=M? zCC=)Y&lwp}l?y;{Z--5#uUi<{0f6ID@fl6BeG`?g84utg6796HI+l<{pkg!1M9;|Z zHM{}(;Z2G#nix2D{wY4Lap(laq#{uKV1ZboM-Dw06e@~4!PW=Iz~2*w)0Rd+VoQG8 z|BJ(omPF8Z#whwadjha#|6N1au)lWI{4`!4v!}~8f)u6cYs0~DVmotKQhsf_vb*>Z z;X?^9E(t?ESECk&xnD{XdQg{-QgVxD8m>92>--4hT6Q&W$U`<67hMY*M}pX3+vD<& zd~Mh5z8$f9!j*<xCvNG^P#2*C?u?@eH=bxHPYDt3RD2N9E1m?6uyqEFf6dEZg69?b zYLc`>-NO804kdh>l-5eg5He!T5<^87K}+Auc+!m%)LQ+M(|j;Ic*)_!VV?FSC3i7a zfE!Tg!1g7~C}^RS5H4R*YFvV<a?s@^H|gT$P#dOIUnFxEwEY?3eKw=@Ymc`jzxgo| z=$?P^UD^{jWb2^!J5{pEr~b)d4f{Twrnt-J(0y;kqrCAA@kdcAhvJD7+%4E)$Nm@} zIHXr8hA?YSYq_KqJT6{5D}+wlGyjD19Q8RMhk37t?d%N*bS<;sB0@Kbf&#U+-z(7# zFZm4L%N06rVbjgixKSq04e@*3iuZasdodJs(NV)6hV<<1e=8yt49E6byCK#Om~Js& z+@u^>Al3SE!x+N>fb+Qv!za&x)GAMDQ=Y+NMTmR#I<79BZj1G+*tiiR@oOl>tmDey zOEnY^V8CX1P~c6iG5>*Z@D=9DtzdRO^uvp^cD(mp*9c&MAJDpw!eI5*LBi>;R}k5n zP%Nx_)(jy8evKKEy%17*BOVfM;9jer>?{g8CvRWWSb=eB^9tOr_kz|FIT`xZ_UG+{ z*yTvUq>fqUI1m?-JQVtvgGeJF8>@|L)`j$pV0fIFQ^>#$epwLYMK$D-$<Z%aU|=uc zoG;Gq3|a8Y$#yDyfdS^>@SRe7Uh4+0FPqHZe1g6ULeL-6aY%3k6kJ3VxM&nT@M2Xk zx#SWHH98ev?;e=)_fT5P-b+i<(Rhc8z?&e_=VPPgM$Y*sP8!SVWFn>N4!1f)#R%)( zmba{g1S9NjiC(>cQvBeMesQdsv*~}5KH^3QB2LX?Hut<w&w`bCuwxqhpW^F;x~>B~ z%{D6M{VTuz-ncz;QFMoqeTJGHB^l97kiyIMraJnS-<FSCQ`upXi8kqj2cJy-o934u z$l`G5eqO;~YPY1HtTnRNN|4P^Vh+B<bc=FwFMazta@fWyHT=~NOh6*nC8P05sP*xC zHngt|^8LR0x2pe8ds?0SyhT^JV;=qUydY%0SZ}ZK)c&6q_!2ay82xv%TTXVQSx4W^ zuW#w>;oPTSwyXbkM!Q!m?GG{?aTlNyLg<@VyYqzy8SHkXL(P2bd8WB5RP!v(^_xy5 zH6U<iG5mzC&Zq(#Mn%Rat#Za22fMuewkZ4&s65oRqY)KNhJiBko+`i<_T3LVPZzV~ zcXw*Gdom!P@B|Nc9am8R36%2?<Nwn3=GNW2Wqr-=Hk=*S*Kl~|+`n#RLQ_6mm;ZNa z?X($Zkeg~|(a2eGI^z}23t5@=s?~~k$-0q+LcVJgI0s0)^-OY22|Lw`%XR}PGDM}9 zTQSV7<=MtI?;94NnJiQScV$Lag-18%9Ho~&ZR)j;!4~e*wQEj>Q^$kv4xKQUnv*n; zhlg3P97?XkpgWuHEYDtU8tfglW;yVp8fp494QQWTQihH>(|TmV>q+Z|v)KFtAo5j? zM>MRpN-M5RuGOGc_SHMSg7bB~NsFu9|LSFHEHsrH|D=4Y|8b+SlUNPk@#|MWdP<zQ zl4TBOopIA|tWnn}`GA~mve}Wk3c|!H*NIJuW_EMfQFBSo8HcF+7#Eq8wX=nfc<NMv zs7Yi*;oHsDz;zEXq3FWeRt=0=)O=TVOt@@U_d*+l|9nl8UcnoX@YYv$xD9<@mY)+^ zp~*n3{~4`z6!uXotVo0Tp@O^EjKyd8wssu7&KO|0>)e9a!pmo#zz=kW=5D(mhwf!N zVzq<mc|NuQH_>I9^PzYdZm7)Hkvh>eKCf#och2Qn&9z^xB(te^+GBjXWu_VMmj~;B zR_M2)^A#M`!f(p)0N+k<N(?$rJ&M{t+&*M)?TuTpl@|^Qf9cg;2{S;Reg6V0JfKN{ z;ot~6xPuQ)8xz<da<A6-l<Kmv7>9@gr{V|`GEwH`)j~N_3`cs!b>x0Ptxu1^)!x$3 zRJd2~GfQ;_(jG#I>tlnYRs6thv~c?LPI2Dp7F$NjFVNEXAyAdK13I_~gsoRNd8G^# zo7D{5><T%fBfLBd-t@YeQT5i1bhy{(@9TTSX+^MwfA4gV%YymOnwd?7O|R4+*A)K5 zqIFBis8D_iI(3h}bL>RQZ|+gB+}7TZ!SggI`Eij8a}lp;X@A5W0uEsA{ajK+rXlI~ z!4vK_TQ|rHVgY$i^&~N$`C|B>%-yqzcnp;raC$q>Yn|{t%3XgbI#|yyzoM|Q^s!$a zBc}U9#jt=_NnyMkU%nWOr<<)Mj-1H$g#+9G-Ry5yMKEsiV?#fksN_ID+J;gzNA;u~ z*~{hXC`+Xg#yAf-W*-LVC^ye0B8JJfvohK$7NfjM!sKV0+mb+P>Rt_!ny;Ukl)~%9 zOH;oU>ta?>G|HgvnR0lJsjTbpw^+AQSeBw)M8Sd+9qrhdKGN5^$mv9)s9h6xzz-F6 zwM9q3OI?Q!DnjX@G^j#spV8tfHCr{}FJp~hTNJPv%HQ{MhC=`{;H}<8JY8*~iH)kI zGySh0?4ou#qDIdhVhjx}_z9W4+Yw6qeZDHfT1>x5-xQhIui@3n;4kmjQv2J|cz>a3 z+{%?Gx=nmK0d-cqdAqTVedA>@!lPrGUGB_$q{z-mJ@(+?H@P5cDbTijFMZD8Yw?up zX%OPGGcE1U)j!1kw&}(3?HArlA1=<DZ-&NKCY}7-uG_lK1$p~Ye03lA{HBLT8I-uN z<Q2b{Q>nLCH52E|%asn{+?i&kqwZI;W-TAtxc2ZdqNF;-%ZuKLNCSThDLVrEin%oK zOc==aO!G$+k}ZA;k-gas^I?Up#x9NCg)yZ!fmgys)Mi;=$nqfXm(H@ua8Tzzf&;rI z4V$FRK-;wHXXN{cCGZiUOde@&b`)Z3YEAFgP2`nnhdT_>KKq8tqVC{n(<L+xtrL(< zp-}<bz?aB>f@PW#Gns);5+S?n^W~)OtNl?z2m?SPLU1gInEB?~AaJX%{Cp9XuiA20 z(u}ZOvy99PeYDhb>;<{eR;!dXJ^*=``ra3_(;2t`$_~*l^oHcVf!T5Ajh{2pZSzGE zUDf)fZ}H&HE5mG!#Pf_nmPGZCfo0--m!59(@?T?GlFCgXoVBm~C!TiLfBAKH881%1 zChbb%(A#+MyD;+i5BQBgQ`r4DJig>%+mhw;sU`Xz(fO_IX1T~11J#+Aeq{9;lWlSJ zCY0u4bpEQT@199Dx@GoG3Y3dlnlGcH)@%=Udz7d$uraQwV>30Z%<NTrKRPI}f5$V7 zpjU1vUEi&-+9Y$=QMm5AJo?fX*hyuJU|oN6J&l0qS&9u*vLitbt<M7F^zNdrdI_J3 zwN!Qr#>QADWhcbBv@{nBdhM?jWz1_AZj}{fvAtrcut4!$oO4_6NkRfaVRCh_ekF)< z7XE<~P?VM!v!vFm4Sw(qO8{5emFOQ8vZ--H>d)Y}Ck^4gTf|$MfuT+bUz=9kb(6$y zXiq0dhLb!8Ju_ZoaUwW9o59QlMd?6cI=8}?RTn<x<k)~H9z=%qHGcfVbnWgg*qmc6 z#T&l|;nz~)!Ga$bd59SyE_(@ClzC~@6w2qXP2ju<@BO%UWusN!hVLtlCJ_F@j?GI@ z>lE|TQo&{{V}O~6qgG<KIMYM>&WNA&VHrB4H_#6Q5>TB=1@0Ed>>NR4>W92zu{tkS zz>^ib`R(DvLJt8V#mW?_Fr{!OhZ%;Z-&Yu4mhV7b8|_HYes+m76}&Q_-(-n0*?($q zDkX2HX@ar^hzbA4g!|b=Jb!~y%pI7TZ*)-Z#R^~ha0iYISB_|QpAXYrcwqFO_w%dS zq=#a4jZN<1u(COhmqyFLp&<6j2<s$G6lY$XVd|J67LmUiAC4EKXWSOSvO-1lp8X?& z-cUUwn>1*Dm!u+K17Z9WMy2SsJ2WfL`$Bp@)FH_;YqNNAJ9UQ9rkS5X7bmk=d-I5Q ztL-@NHJezFb(@Vdn~UcxbZ=tOc9tEP*?fEQ#f}|-bkluQ|9hq@POnw;WbQR7o-oRr zec<?h2B8YorzZ(G#1*7=Pjwq=#AL5<d<{R}ebSTQHZm`EQ=y>RLl(m>=ni`~`m42O zmVS4f3tT)dc{=~aQ2IJN_jcS)UTy(9A^n%gHo{crOYQ8nuLxZ5k}^F0O|I9|>N#J- z@y^=Sws+NF&)C#vZ1NXpeK(!d!<H?H!3)vx3M1|W=sw-z4J-X|bZ1Tb4KmIXk9PeI z)J7#!*T<X(#wHMmkYeDw;JTfit$gJSX&#MW$VFB*w*#X}W(EZrei(`LKB0EJEKLz4 zD6y(a*3HW<YJB-7mdf1mQYhZ_oRps|n;gZtYf$`}ddml3VpgjNd8eS;01QyyOmoCa zgh9S$iHGU<YiM7O5nq6gB-8nlel17mvfMmRwa0ulv(Z=!0NOtP*k!FhVS|Ae9?%?H zL9D>W=N!-iHP8`LlEkJn{mmTOB{&{ze3eOWeSlu`Kcu|}<dF}X`v{ro&MJvj@YmZp z`4oDV6G5G|d(Q0pN}Gq_eS4~;l9VypV6-rF(zkk0zBCgRZV!T-G-iD)Q)B{7&AAIZ z!NkEDns?T0QfX0T-(-xN(CtEMyO6rt0*}nP!fvQwyJJjd*%x$$abAMWAIpKG8f{lx zhsK(`xEN8!gCAh_aamSkS`Sc&Xwi=p?3V(4rY5hH$I1uapnwklfJ?hoFSkdgy}w9= zufdLQ!2HTRQ@88d6S>{F6Y75|0kqg}4`Uh6;HB<-VRjSNE(&sKW)RC>FSv`?yfCom z|69>Eu>4TQ;v6>t<v@GlM6Kbq!<kqZD%-Q=w+qU?LZry&lJ^gOIf>q><tl$7c2tZK z0$s@r2bzss`A;I1F974&{jd8zA=*u)?`snWR9VJ)^`bR^Ir~Q8?rc>Qmkd-^Huh`o zRDPl~4C0w+?kwFSd}~zBjiNc31!BhS4Y}nG@9n1J(vS_Dj<SBW8X=FMCRMbH$J~TX zn2>|`tGZ+@th*=uZ9e!Www>|Cec`I?ftqGbWYa0O7``8zj20>z9u{HJ!A?dV$Dh0m z$)Yr6lQ*xjcbjb2SFYnKADVL&9Gyy}v=vDt845?XJP*CUQv_K!%gq$=T@CMpfcu(! zJZL?<iRzyW9zWr2DF^>GbVA^?Kv&%jS&0sg>OyMy-ugLBH+lSxH0ZU9>UbKdSsX+2 zN+`3f!^2sRQ&ndZnVd?hH}Lh#kE1~7H+DHXt;lq!$Xt2?&0Y0EuHGQO#5}ELgiD)f zXM(BY(403J+w4@6dNQNeEc|LlJ2i6%W0&2E54hLk!Puot`9!zvCMGq??op+6>&BBB z>1G&9O`r+6I>#zYRdFe$@8*tWX#0xmQTRSjgt4&_@hwYazw!na$<|8Vg5CIKq1xW( ztL%X<YQm*+7e2fb${sPgwW?=jc0j6)Rd;6Wh?((y6tCytsIodU+ikD~`{SmMY<Om4 z<z2Wt1<8YWjc(##JOpk=>W=EFN2T@$9YEO0TI_9%D63NoGgdz$b|)(JIQ_{p$<M0A zUdJelkLz+V$bE8$WES(d?fPaMv7vb-A5>L_&_S3V4qNej7_Jc@gCzx_xh8&=cLx`* zJ1^bhpp(swe?;RTw_6Lsn>zNC<k<fV{*G5r>$+9kp_BMEe*ACoHCUUemcfDVyE)fS zRF$rloR{es#&h~}OH2*jhql%oE}%5oJ>I%J%-S1eI##$*<nl3McxF#QK8-+aif)?h z0)}Eo%Eq7a0I6m!@}lIdYO_q?p&ivlbVX|u5{n{zjnJy;UMN<iJ6d1uZWcGMnmw&U zN?E|<){gJ&vjs+*%$|*>``c@QkamS$ujnNUa-Y?8tfbZ_693kNDuEq&P^c0mgKo>- zB{(Ht$o4}k-PH&2iIK_Tj2a5d_6`2AYS`y|Q5j*+FNjL=Y!EX#0?ujxcoNrY`}*fj zbgIP(V+Lgu4WUmJH+C03Xc^X$Ym@Q)yh$>t8)MvjZ5GLhIC7;ewv<E@f)*BDO{0RK zTQe)HW*zI#&Npei3M6AHnw<N(6Ff>0RL_3-*&M&+xJ7ZuwEt3a<M;Kfs6}T}`!Q&^ zkPLP1r?pY3ATTwGU)#3dT4Y7x7dI{{i(y&6IP20nm<L`vYHPVyYVJZHa35#QzgIDp zip?g>wN{fQ49Fdbh3-jpn9iO*4^9%zgVv-g;BrvAVzljLzv3`UF6VxPuEbNvPEWQS zlh)Rst%d@1IVpq{OgBYK1?N^t1Xi4NsPiQlo3In^mN4DjM%D968xO;OnNPK}7z@c@ zh}O^2aJFvp5cSeZWVLyNW}rpQZya<l1qvRAHIQgA=t{c^{yn1De_&1NEOa7AsKU@i znWtH4(4gY(j}QzusB1+NWy7AS;th<z)Oha9PpJQnP^n@(>{lH?PK4z%6CxDWV9y{U ze`n*z4ywdevnk5fW!Pj-h`ZOC-NUIFH3sT>ezCCb49<YZ#yx()Dtp8`fYFc8q@%nF z*_3HREgm!H!d_x&1Y+&?`qa{>VM#rA4c#X%lxciG!KtwrtlT<z@S$ou!nMnJmLzot z9sSgU!N8QV`woWGdNZu|kB?)k95i+aS$4;C*t;jPm4lYw=$ur9V{Gxp^{3ceg6P+A zt8}|q!;Y7~4zWvEj;228hvL||0w$lzcDKP7?scquYnaNPH7+tPK<O?esSdC7Ul#sm zKQZV2e)nY%g0g=}8WxW1vT6Z_W8|*kNCV&uO6VIB^m84d3p?pfIX>^MwvwY6#PVk{ zO4L|8>Q3<gdY=EtN{MH`PNPg<d!*zymG=8=2QKz&&%0P-fL?g1Txww2GmU*spy*Mq z;*qS}329b&U3R6NA!9|kk1zdVY>p(d92u_iC`vr?I9xD38(lMq$Le(@6FqCPMSwAH zikmZ7+1WqtCtISIj`{{z1jq`%to3fYHpBj=+lE#R*>eO9pM?bgidS}+01nE$#JtC& z^^jgXdXmDJ2f}dl*)ELQSV9p7{{BV)nl5J;0#N$(MA{sMP=EatIEHx!nSoJ#iWZ=9 zSD?-atoMz6+h<v#Q7dhjK@aD(gL$*EDFe=J5QGs7Hb83#MLDca5bsE@cWCOF7^Maw z2+qq1%Bx$gIyHRelR-sL9M;6zyD#Ch49OblAW+10ld|A8R7@KsEtWWgNNF-Bv0eh! ztT~!cr9u%zW;G(0yanh5DRz4eHET7oNkOh*T$G=QfV@mG1T6i#ICu&H09n(JiD#%C z9`aZg*<<O>kp#?(9HjN!mArKCFuB0+1~b+7^rDTKD{L=1K5J|~T#_o<%m_naR<)@C z&ZQNe6A>55c9kevpa7u3F1Uih3?6eEgmflLAd+j8On?VY+DT~v8~BH3PLNYz8sH3B zv(RIi%|uufVK&G|@F5-UR~9wH5hTo;0ogFir4Pb)JiBN+N%}3M6GJZvL6!fDO8(no zyC$jV;G!%L0t(E7pyXD->efrGkdmE|nuExglIlas2X=GM>_s014g~nf25Zjjh#G%% zCH!NJFaRj76g*f!tUx^B>#`@A$YN?XO&sVakQvD|%?0yB${frc#Y-3kUcw|~X;LhL zfQ*MrI(>p96vIO7LN>CTh6^ApJ1)R|F3ck8Y&|;%qZ(<n!uMPY+VP}7BS9~)hN3$U zePOS`aYpOa1e4Pmd#KJmVKFfV5?~ZQ1#B4=j7YQVR0^-+30f3)2q(~f;q=(E?6o?J zC3RCZFfbL6Vz;P9(>iIV>wRL<D5D^@^5qB3!i~h_4Kij+32!K~H6|{^{!?>34#lF) zv(<*yhyXx=I09lH%SOMY<XIh~0M^#&$&PNa)N)GP@s}eMjPhM(50t%Lw@Yp9`|B4# zJEgKK<Nrvh@X&W{F926x5QgLDGv>r%%keQ7&aii3b1)IfEMcqxJVwi<zvw;BCE?&J zSWVd+d9c;yEsdGNVlW~dBNK28!bpTRh4g8DqZvK?x=~xUSs}dn%&Y#mPFZY5|C$y1 zLr-SBkVK4HrKRrT*JGoy!QJdWtHRcOBW<cEbDiD$pd0i~6b5_j)-!mdRDBjz-Pk8> z*a#k%gh6rQwe{G<Q9kldF2PTVN1q&(Ig#dpdgcpQUu=c+f<Aattc;QiDny!51^v@y zT&=XI2#8N%*0(n3P5LkFx=!rXL&;ma8ZY=L_llV?Ro6-29>n|Iei}VTn7k%$@U&T> zL=NvEp5qR;%I_{|BDr1n`%o9Zb+u1&7^-s`{;?C_z1G!B6^fK5Ay@{_%oC2apmE$? zi(0@4u^(OO+-lyx!6fmvV&6AgXyUV9Bp6#UQDc%kj*kjJFz^0;b1!007EYfVKAqr$ zSwQbPp^`;1fv(M63%}h_w~y9v!g*W>$uEgOhrx20j+EJm?WmtEXHIf~xLrtVeLn#} z>$DZz={A-LE;gGDseO~EF4<H;IHrZAZAe*xG$>JIA{8f(RT3_dECrF<D=;<mQgFyu zjBQwEN1vQl`YRb&Zr<G0Q);%bu2sutU)vB+EM<X){bp2`mKHadxB}dDpN>9MV(Prz zHVZNlqon{sWWc%wo9)LpH}u5yMOkfHg%h88!mMqBChwGfpYgB}-cSi5ia4;#KfR1! z$pRrP_7B*ahd*>-E%{61bNp~wTwPr&7wRj5Hmu3})0morF|_9Ok9louC!d3ICa}?( zVYbHQR80GY{}C&=eoN(pX&B77ZFvVirNt;iFdmOjK<g-9K7f3a8VM1o$pdFV5Qzv3 z4g`cHA?)`?WEON(P|zYKmVkC__&FWTBBV{&%X@jIS%j_~yk|Lrm2qYs=s2RLb5ghG z6`+t}cPs00WOOoU?da|P$yXxb*7IAk>nDN3HY}5ab-M@=5Do^N0#eOr$7P^K^8spV zRR^;i@p67}3M}yNXuH(O)DLRBks<IH+)jz%AAYF<c0(WhI5K)dscKNVv^j!iIXMuJ z+}IJYw!x}%R!`DE*6&5L!RsCbG}&uc<%t=Fn9d>@#1SKpPWfYduY>*d;OfwgHqJ;P zx`aLhj0;!oh5a_AFRKo61$-WiREpk;NCDTva<rvq&|7N1ZhVAp`uQkndMeRLophK? zZ`0=p6^hJ7ae01-95*y%<q%S;WPYI7=p;P7qopTKdfZ@af&!mQ<w@J~nn`C}o#%BF zhLrc^qG$9Ioori3v_YW_Cke&=%&57N2hm%lXw_2|<dJsXT8^MrcufTk%+_w3pqsyL zh9a?&f&(m_qq;LBP#CZ*aMb5zLZ57<7}uud(YV4N#f56pS#)t$g-x;!@orDed8%4t zPlZ_wGV@x<#&SCa=Q2an#8Dr9Cqbf9pNKsBsR0PO^c9gLZ#vMN&;_8U1<IZz5yGFP z)l5|O*1&~^?=l5Sk$f#MYPg&vRK#cTgr1xONJNzfQfi++z0-)+m-Z>DsUXxg#*~jK z0MyN%ugsSzF$YE^)|F$q<?!pCZ4mH04D@yR-o|sc+ypTX#1IEc;@#<vPO5J(Y2b+3 z)~fxs!fn0twEdP1h`Aa8W+?99u@Y{Fgr#W`z!YPM!;BEY(=)hKnPX;?n(g??Ne%vr zRHdW@U?OVdq@>0rG<g?D88{B6I}6mdrNy!uREL^7`OpD1^yqbz>J#+0A&;SX*8Fi} zMgDuQJ{$U=y#zG_$|}GCFh@rWM=QM<-egwE=XQYxVvqnp6e<x{YDOB7n%m-&kj^*( z0fZ$5QU^`0hdRjCDwj(MV--F>0Vr0RONwZ8<89S7tnM3w(!0E(7^85*H$w;MW>#=n z595(-%RbPt{t#4wNgrs)<2(hRH6ZdRyNxav?a^L4vTN}gLnJAl@6Df*-}MB#8}c+Y z>aZA|gU5sTtqNX{mWFYlRhw6?Zd&I^?%K^C?YI)qN)Doz{McrZ%bokz-WFew25phl z!V7`Woam?)A=Uq~lL&Alp7NQ?S)Z+<LnTVgTdtL918@7zgnmUPkTZ1E3XB{}&YA%$ z);@yE*6n#;Zmm)XsP^M%oH#kIZ0aiAR60bvKU@PnGfINtW&#+&a$pZzQBChS4Y#&v zP$X(DCw=Oh3^+MoTCGs1KE>LXPU`rGLPk?}F84|fmUcSgTFX7@mwil^LhLR$$Trmt z?G^Z?IKFYD3J*TRab3;Nzb`bjwo}EcVoZsAKr-X@*jgj%IL_+0dOP;G%_^T9F&s#4 zXLXaMlJc>q$pU|XT2rNWqwE(YB3``7QJ|I4vG$)WA>T!y`g@3SWcEm}2F8&L1k}8# zjxwKHE(1jKiQY{jVO8f5n}h2f^MH%P+}WXeE+M?6E(m%6mJecU(ISYqfAW6gU3l`Z z{0aH^>ybTSJ7cGD4*VFu2WeZ~RgtMAcN(~aWB6J|iO_1G32vqA)zc2pwwYd-4lKOE z$NZAo3o8KXrMvdRc9iYZ!+pm0yPeWlD%+5{%8YCATV%HK`sw5^r>9P6N=4A5O-Ds> zE}FB?$IARwHW#PP@!W(cK-8ycv9~I<=6Gj;ta}~S%MbZJ<F+vU4U%n)nti|bd;&d7 z#VZG!YYs`@p4K&SLOg_zzgub=_|}tJ^k7U*IUt#NmR)e&={FjvKh|Ft=(xOL6^<+b zNnQqR-#3V^89OQY>=qOud%ywxPLo$UWP3V-b(vZ2JemN!Qp0NSzb@?RSgAaib>Aah zmt|Px0AO~cJ58&ws{&&j(fSPYc<yX<r!sgp*`P_v$U1l$`Q%`Jv-NJ}Un!xoza|GK z(#IZJClC}vvh=Q8of;+s9>Af@r$-*tVabMf0-R8C)%b8P0*I-4(=0N{Ed)7b8)frL z-6HkCoPn_^I@+4US#q%B))*0W+_szD)->d3fb)$x8tAG9o$Rr;5o7#Y-upP>`f79y zc70X4PGlu@dIszPX_9pUW6sPvV$S4Dvax8O4`1N`EkM%0s}rBEPR+nQFqNuKWSS6I z1hT%yGfQG+XOQ_o^P2{=zCg#oSJ4$_pw`wGW>8mEXU+P<w5W%DmvsK8Mbry`@Z10f z&)&aG27N!R-|>8BiJQSHy?!uNf*R}uKbTf{?UxQn=FYcjCQo85B<0nhy+=lWqqlD2 zWzdS*kKvfc{HK$X%Od2CsizdE?ed}EmKd-;hLhNl+3;6~u-m<HX8{y$%K|M2>SJ1y zxe2y<qHi>DdGW7p7P24>WLRdM$9cKt8yVia7+f0>m%d36@!J4M{vmhpe-gfA$y*H1 zytW7CVA*#mM6oyu^&Gam@Z=0(K|IE|KUK}`1$M!l?b=93rgte|@2GkKD&%izK<MVi z6FjY(rBDrvf}F`_Cc_D;%19!e?+5JxGj!}VcS^hQv>q2A*!4*ACW|>*>0w4`#pf-H zAtjT6!2a32XPjk<t!@}g&2})3t;O}I00;vKihcs3{}$1Yf3IO*lj4@N6>{)F&Fv?j z^kTcrR=?riSMlngtyn{yiTca~W_6hdxkjUm<`{vjssbMb`ikF?RM<%|)^>4i3VkB_ zLyuk4clLAV#;cfKBkC^Yf%B-EF;ZzX>shO0cSQ@tbQ(crC;wY=9<jS_d15y>zt$`R z2a?Y9w*<H`_{BwD_8BKApep{HLg%j0BG^glq5N%8b^TC9OCb|=T)Lc!3N7(-kF4o# z9cFR`CLd25Vd=_kZ4=hoiH(&I3F2NZDVXKd`Tyfz==RG0|7hJX-UyM}8oEGhS>s$5 zU8%0XzM&?k0kQ|A)rX_M{VvQNWZY?2%<Z69bsv;aHVdN?napcC*V5EP%}Ws|{0W0X zxz%V6XfJTjv!G7Ek$4y9QSM30Z#}A0h<8}#u8Tv#{#dH4f{3P-fRyjn$db86Z{EkW zeJ<d8j;`obk~G#%d2E2n726ZfLc~@j!ozM>@a(9c0>V!3b&9g#0j|AofOg4X@Kat& zB~4C5#P}(x!i<0z)_pdU4&Da32{48TWcqQ#5;0COYcH?L;4OBZ&<5NUjo4?A?JBq6 zWBoXyhZtYhIFHDgXq>JjvBUQ%@#<BUN10l~s9O+N!zdBiABBKkd|?O!A0&EBUuM*j zo~qz1tF&t9RRB?g?co@?r~gIIcQ$2cDt;b+cFw`yKc}<#b#Fv0E#{3yZL=uzG$avD zCKn<oD%QmA6h*vMjHQ&mC?VcH%I&IID<Ib*sCLP67Y#^&GR-r8#Y}Y0(%#3^I}u9v zf;yO%hpc0vQ@M3pJ;jw5Xke%@(!?V?b!DSRL|8l{)W@_87~>R;x0(~N<5b#Bsd0M| z=yJGd_+ds11PwG$r+uy$9RY<{4{CMboaxj^O}gmb%iB1JI>o5e#Ti5AwcxG_wry9g zv!x?*TY>@LlKhsl51&AbD8Cq`oA#=tL??rSM*{j4FzQsW`4p!jx{0qre>5PX>7&62 zAyuNZt!-QZIWvs4ps-zC&tgDbS0fo?+XPmK5l$A<N=vYowT5{m4Morfff}S%0#2&w za@7?}w&-LRyy%6(JqmEj1UZc&3g$Y6CX6dYrUCLi*<;m6e0Dh?aBJEvX18F;{m*Sq zoi3=yEHUym+zwhKh;U~H-GyokTAZPF?JWgE>`f)_s;Vf-3qVK4qnFEa6vP;k>wChH zRs817S(IplWxQObHaQ3qzFR#}oz07!rVJexiQ8B4xZO*F1vi5N1HM3xrbnMwD&e`i z4^SPi2_$&~`;7uHER&5!?MQ2ifG3i=JTdld1bS@SUEXK_bX2$lGTugTjg;7PFwgS7 z_UNM2s3_9*>XuIwoEkWFTi`@H3N2Q3Tzyq4y$Kz2ibgn*j_)4j%}5|fyH%*$akQ)O zV(n(Nxb-n4;#jI(xxd1AopcJlmo8G#*81qcX$NRq3BjWXB(a_D2|Z!mO{1~v7%Xt* zfYi__OCwQh!AS)qrN8<|cX?ng#K1TLqGfI{0+>FF-U{eAh}<@J1a!;CoX|ezi!`pG z=(+c344j<iIm#e0D^A-T015XGsaZr_k3|c^&j{@s1Epjnn92}6B}n!v_|$2+2;b~b z##|js9i~Hp4;VnqwX!EJsz>OX|Ir?;nefH0$!Jwo0knKTmP^Dv%zU;5QAGB}qQ%@! znA;$0wWRdu%-K6O+O+4PG11ETcBre`9lX=JlOp5AC}5(+Gie5cXSciMxiod#5+f2m zSbMt;$|C1*aXNx(D?v4Rlqlfb&*pWxT7sOss5k}#ekk$#nqEPRN8B@Cs}CI;#<7E& ziKv!Uao_>0xHGsVCnhD1CL-`u(+6NX+&^j#LJEL5iZ!Cvj>}4_F*io_CZ@pAYpEpf z%~rZzMc~34iOm(ZJn`nlOly>m>iNsp0LQwyK{LtSaP?%+22%-&_}Z^rN{-}*behGP zz!rOSROK`PnjS&6T4=9~z+Mz#P`%b6)PbD6VzQKUBI1zVAcBHZ9N^p$0TNk>;b?!n z)rQ(zrmg|9994`uE)_<E<eeDLRWbx15K}lm^u>aP-rzZfDHi*6@gr9=3GYK6_BRD7 z$_5VyYaqe3fOSRedh0W8muLtF&!tXx?Xpd?jifM`+t)xR1;?*S1nvG64<0L?kHKJ< zu!tr$LZ{<2rn!vxWbQ@(+PY2C>fEwpg_>tg9#a)0+pF{9u0|&5+z$Z?)S-0U)vLX; zbt-0Skyy58`msutK{QAX&@ZcUR;y4Uusk>wX-SasDVHJuwpKRv!<e8rpG741jLi|0 zo`M4w>~fTPJ;VKSUyn>*0hT}&j5bWN1g5oymPU-}?j^6>6pEY-1B<jL10u=B>cQG* zLQU3ErBM%@TF5LqVUa6EXNN(8N-dX+nW$k*NKVR}2(Bc-ghQT}dfVac-%Dd60MJO+ zRQL#}uZjS4ZBP0anFrEJU#gQGXU5Fu6LU62XS6n86vD;PRm#jNy3EW2U909WMa1;7 z*uXvq$Ha8uc04QU(NH+<Qr#8VI&uW8F-eX`D`rvR!z6KEh7c^M#|EXJ&0_=ymng=n z$J@>E@1!2?<6dAq6?LRZM41ACm6G_TK%rVlp!^$YTogZ!W$LK2s@Zl}z#_>jqRmKC z_Zgy7$IQiorA8i4;z?M+PUecP)~dQ`3OMhObiEKGVXtBk14aeK9NR$>T1uo1(V8gb z7Q?MMNsDq(B}@ql(+zV7bkS%*Q-DYhmSON!tq^H3Vp#re%Fs&^ZIgA>#dLdzyMtMW zXgV-mx2;fSegv}{vp6}bu~$|cQvssHR=?w8bkx%&OoEo>TNaON5nF;0$vYv&7_lXD ztOXgec?4*{{dbJl7A5hkdfyvOCDn&hKOO{dM0@q3z8}l%$_dciI#zAt)i|20KRYzu z_o_b)Z#`fM-y-dt*_ep`+~~TFuh_$cGK|bV6&eR!aP>l67L$U*%*H2B6Gfm#D#FC) zqpWggb4@6I@YaS*O#-f`oHZRW9i`s(Oo|MBRs^*yIQ6Ab#3y{IBQJ>j^e5O_REwH> zP8SJB3vIQwU-}>of(>8D4b6p4=F@3lP#wM>m1~5y0Rss)dd6MH!Fa%EKFNAB2Fq$| za~h1)ogS6=&1;jT3F{T4mo#d7$c>Z+Z#4iqaxLR|$!RCx7C0X%Ok<->zOXD<?+7_C zY7I&W@5Qt*`Zu=rxhI(HX!RP7QN(F0!`}2*EE6DKUgB}^ofAX{Lat2qZ1BuR{vIf* z<h(w%wSny-n3tLD;;nH25Jr+Ml5IyNkp#nNvztjjT_-VZJ{Bc#BPM~HG|K{GPdWKP zL6R8+uBl6F)=sA<fh(%4_O`98kC#<DKT)mzn-2)sdi{d%t*s&-9&j|H$w0JWa5aEW zgA#5WSoHba+R~wog?b03o&b~vc9BA93W)jjls`6(ytNZ{p8-@3<RqiV9AHX$jHWpS z3}%ceX`W{TV~y_=AoJVC)S?^LQjUMH;Txw-(xOoC8Q@Y|%mYH9>?<Mc!*hz;?(88t ztpkiX9i{~#rgd948MVS)9jKavcjcV2kw%?p#7n9iqX=Yh)v)SDWoBf@YZ(SsW?iS! zkxX_iN=y%l`lfl6gCB<y$h{<nB2_B^GvYzaoj;*h14`$;kxnVK%(c?Z7_V&2IgiSe zcsf|_3F*A#9&8Xa*wIOk2F}jGH)ZPQA4s5ZDv#l)^v~VbU6;p7`mZNnQYT(Oy5pGy zS`gC(zoyhj!!wI=j@AcC|4x8$z98e#bRSl0R)kAxx;oswv^kD=j76&MSqoq)0_(?R zxJN@<`4E#{(IPEGo#spWXYHGP<25xuF#`7Lce~Lhj`otQY8mxVRH#K_*Q9z^wo+a) z7`c=j1J-yZei4_Q-19UoJU7GqIJd|70b`8Ma>3Dx<ei%MA5*8|d9%E`;vNBbyx4XX zjn^>!8Jj{G!KI(40O7ys8H+VpyB(dbO|VRuYb&aVpV7Q&=%K0X=g#q$Rb-KGpo<hA zTHoSoP~XySy>6p^q5(p!tjyTM0$)t{S_c&8b%o_QcwFch2)H@(K@LUCc|bBoODB*K zpeX3!e0<N_vZEMqmsOTEXrEOnt3lWuFFThf_}9@0nl~yolv_U<PE6Gg<2O7s-U;fw zOH)!-y(MMZO@Hc#HeeOz^S;R@_S%O4m%A?JXMclMK5pEkb>~x^X<536StH?aauFuR ztOBBo3S<SulUU4eD)q?hi9G1fTAFk-GK^>a)~!B3SdgCU9FmBj?J`AVDu+L6Fw^Gh z93iIYqN`5Oewt-3u}*tB;RBsV*~nt<(UMQ#J{?GH>esKB0tu`(F)F$y&n`O&h@7Bw z-i-=SpNGn8Zja$2f-C!y1N{%V-H(Gwt#kFr#bE<8Z~6SP`6*#sNHoCbaCWs@K}&C? z850Pn^MthT8PAJR9XqdYQcUpBvGa6B!iZ=LdvNo-26!Np5&Wn@GJ2f|LZiFCmobzC zxcB1u#-*dzDx(?FhBH3qK0R>@M?%BVV{(6!yRhtSx7c6%UtL!F=Q`Vul{(V=?}<L$ zYn`&hjXx-DF`K*^4}rok2{~OR@fkx+J`+RfUpb|1MVSr<l*=uwE8SU^{q#Jx<#Ze; zmC%h84SfOm1wTI~C$ED!!XF*HLO{~<u}Q0dwSQDsypwn@nrdUHLK#qf>Ocs7DDBnw zdJ+NKt}&)Li&QDl+-ir-<AhO1DGz_pa#lVz@+4=;lL|7qIy=3FQ_@T|j|F`&%hY86 z^BK9~*jEC&{z`W_=-Q$$thX4Bi1jAunvX^6WhO3m<b$T-sm*zlgscG7je)MY?kqbo zr*~{5e{MMq4q{U+<OBL*1%p^oQ;+v^(DyZkx6eIp^7>-6OAuBJ8wwOgDYMEg#ZA-L zn;i|%@KkfT4b^jc%8<#p1*M<<CBrGWkF8Hdp%I5O$1Q4Y*|G@aj80;RB9G2fNla%; zBwtQL4s)oD6X7#?DJ)sJ&csJ{-*G~l!FiE@3kM+2YQ8I-0D#hAPo>#85N;Kb*0eK` zs4+JMLsBeuFlr1X9*AvwHB;y4sc1#uoS(<ebmTOni=8e2S;a3#Ub(T5M5*EXo;8a- zGbk8##fbr@wokV~Y)9#IOYF6DyGyOPki+Zgokgc-i1ST%>np>VDx9?Ac4xy3mVArd z3eY_cW>9K7``Lu{AYB^o!1rZ{Uku$2cjrvn$a_V%z;^wf+Fak2{{XFm2`P^HV7RlB zB^gs@(Y0gV$HPgwEeltgv!&7N<<@ScppmVXRup`!ur&mgr<vjb7kna~t9SyVxYe0A z%2{YFUqK}XHq*4TL{-$d!)h?FS=Af(sqAS1V(K#>G_|ghHaaq}sxUXq3L|e;kv3Il zzI5C--rCsSF8W>egZh;;f3~izZ^yL#v?OWU|8^Io+2-KdXW5{Q`I&>B8iB|!;23*r zhA3v%cqfm7U>v7xv}cLf?42@v!)U^ccTTWtbRS>bx`FA?5g!cAde$mTyYEEkx>wOj z-tQ%&LFMXY)%}}4<xv==53U`kPs7s%m4cDyz5}U44PbgWs~V^57n`K@8d0MazS%@C zxN#;jsmUoZ0y#U|qz@(<Uk_F#fyJoAs#Sy1Nqf<eV;nzed<M%#gPB{z!Fb_>Q9Q$( zoB3Xi8uUZRVc#J_mBF>p%6}mzIF`ZW5PYV4{J^;@je~FoBu4PX*t*@{@N2GOaA{wd z79$9Aot;&*d||`r;7)?r%}XxHrh=`4>M<b&4c4`uZ@l@3vIL>gn+{4G@_p1Jm2LbR zIGO>=dxAO%3l5{vl@f~rH}XgczgT`gpb>8XE}RA0@mN`Br{tAKgrC$K3|UF9P{XYO z<4A|1rfj~BG<k5Z22~zat-s|Xs>dTnpp=(IM^Zv3#;{}P$k=`31`^~Cn5^~U%Bcez z2^U#_!Hmc;z2ImAe+>jP9Gd@1&p;b3SQmOLJ3T|s4Sa8LrUC>TJzO=6|NTerO<ea% z0WtH<_@jI*8UT|jc+&PS%?f#qlazlX@ady`xmQTx3Z6#AT;9Um#~eTXhc_n1HEW|7 z?YP2FFwBr=H6Ev&lzDYLw4~Fy*-T)`9_riZfSu6M8Jx@?u|8)(Yq#|8jCKai!9R}7 zEg(3NFz>yh)Tn<a2ZdSG!X}jISh}k>th{i6%F@6$GdjMqYpk&AOHONjGgRxOdmaqE zP-FeO#Fy&l7gOX&u!_jXU9XSaT@lN+A9-987LEX81v1wmy2iy`(ekoK3S?6{B`^yP z{Af4QoF8M$)XUqcx$9{;b+Xas!J|9Vd(`Munb!WXWvrczq6y(;rh~P6>yX{zobnXX zl}Co<`U&kfSnjlVDv9Og#qk0e?kG?{V@?=;eNqhUQg4=E50r<&AIEkcp$B18U|`~X zVgQvvvtC{sVH_ZgZ0kQSiE_corL21}0Jr`F&+!M?fwqugz8i^-wgCoEI>Ur4;P})x ziyHBbrRJ+RyJLDvUA5q){(W5wFvP}Z1JfDD&v9zLIDA@LScH8K<#j-${w7*!22vUb z4d~3^R05wF3`Q5V$~jJuH839tz`uXC5n3r)Q-bOz(trn-l%I>B9ED^xoja3~f!CIm z;K859RA_jUFIdt&JpoebGRT-LUmE!-e`s>L@m~Fl3R1EtFUwD5^(w2!5e{|UlJJC( z(wM!oHZXmvXajfBc;#|-UHWkX2S81IA{^A5Fn+z4OxzovjOaH!33{x@MOn9wrW_v; zgzwms<aJ89Imv}YlCE90Q78ReexjsyG&W6hP!x2+2C8GM>HsS5qM)zp5MW304%XgY zW6H*_TR2^Um!AU9$qY5>jt%r;*YNuR28H)ia=vxd6W}8#^s;C0n)}kvfU;vwIT-zV za?GNFj24?$Xb7lbOhrKY)#k^dyd^X+o+bl4XnZx%ftoR<Cc09AkOtRuK$?#pc`O&j zYh{L6o#=!@Rcf#H`{l6d-gvzaI@ZVT<O%r;Fn&5FM$#;rjW_WCxv0OUXU$10ONNCo z#N@JL-{OHh&z>P*)X$IaO=EIBM5q^zn{|X_qBhN!uijqi!%n<;;W_$S_q{I5`%OtN z>-&k##^2H}M<=N43xHFLhPG7gjIVU*mFf0$6dpF+4dv}*m3@H&9fyT8!KtA6^Zm9e z{}^)zu4upPh0Qv%F{m!5r=vD5MDMFDX{T4331dEYQ>SpFSus5dHxGehR_K{!2ENuu zNAI9x6K#_O7q`Ab5v@+js2i~PiwvM1&!V9(?CUPXkA6M&^_hJ=av1)!E}nUjKl#1P z=ccIh8xp(oW+h0d2?<pXn~U<@FFH~lHs~@1@nlNOfIKa%$%`!T_lG>>vj{g8_p6+d z!&zjz2CPph+NR2_I7n$iF8%SpuhuZKt`C_0{3M@(qZYn#Sf67C1dWWt7STy*`@7H> z<8Y<qByN~te%`w%cvF6t;ef2ms)0$Wl&%_<!FifJW>mPD!Ek%sl>3qNfHk}b$N0RL z_r(8YwEC06oaOkEzs=x|Pd>3r=(5Gya`Go_p<biS|8bgva(1!C)=nlKp22AuJEU&? zMfi7GI)<5DU8_HOyEd&dC-y30F#|Mq>w+R@J{Xt0^8072)axP4$5(hW91{eg0m)5< ziUxYL^Y_U01eN67VTFXFjdY0{3!t5+Lm)I9oF6r(brN66t%RAkv!>XM>0s=z)F`=n z=&D*cpM&nOr|8^TRoZ(2G!mur8|gs()oCy7z(Bqlirwfd3bV~CC?W*;Fr<>nG#x|f zGM)5fiNsUsWjmF_hlO=s<4{_(s#dBp^<+s^kNz10tt*dB&MBCT{p1AoG`SSY!Ymu@ zp*%G*>vHG=MxrnG`8+P=ReT+4EY(}sUGB{p&>fNa+v0jxYh~V`GLxX}5w$g^22k;y z*7{U?X2%4WZBTM{Js%u9oNN&qa-mmWEVxF@rH0cOcl|FZ4~V&jQL1k2Mt4-kmYp)9 zE568Nb8DN1bZItqnV9X7fojYUo#@cBg)yDX&d()-^H@hR7gZR^K3sN!#?gg<g_5V) zs(0~k(~Y+S{fa0#s-!cUo+=0&I&tP!0~^m$9X|#MKEydB69E$xaYM6?4XFnbgHUxP zG_SDLt?<&-FqV3muA5<W^JQ;g_<U!`vetJxh(loxcv%=%0C@YzYd|W|jZ)y_x6sNw z$-|HYn}APTSX}PzG76QkB;F+>aHw*7wY#`Lf4<(N1!#RyOAv^rmiJl2BtgDJrFXOz zgEb?4q%R*mwidkK6Jc2(wGtWil%+%r<~mTIBjdy-p2DFHmo5uZWP+bVGnr*Mp3^jD zeL=!33NN}iCq>|_iYRVNJBM|i%a;w}uYeQ|inTqO4puNM(k>N`6g^VEOI?j&n@Vio zu*sE8`5W_no<oNfId$ct7W#$NHt84Z){7Yy-~v?Wj%abh8YwV2GK6g{YzBN=tEnX8 z17#fb@we4;a(i`MN=FPI3$cf>Cp1lfO$<AIL5va<*HG}vebFY01XIK<Vr<j&LN(}r z#=%tbG<Vu^3qynNhDfw*pc1Xqiuf==Zn~^=tdN%QgVwUiLe0R~R$^ZpG|-9w8R^yz z4_R3frY@#7KKyCf<fxu_JRvrr4WOdcwOYzyTcJ}jIlYrS!NE-GKC(V~p+)RAl<iHc zjlQEm4bN!n9=J41-uoEk*XVr`_tBAYdDE;0q0-C7_<<U!M`8^pK7Dpb&f^Ohfh<BF z4!Y{SSy9_*#n;M$@ls=>l$wqu341G}sm6@njb0ME6kX=W?o^$U1!uD}WH3+p09J$9 zc|Y~8=Zaa?!RaW%*0iN&i9`T9Z5i8Dg{BAc7Gt=Yn4C;&VUUC5d*u?k(zH)SGFrxE zRjF%#{ETN`M>@?hw)lRbMezk+QN0DjN?o@bjpaf4NGLxmUqL(kOE9usnW=u5>Aj5U z8(zydyt6*r?O$!$iFTr$(oS8De^y#pX+w6=3=L7T%x7V^&<11a@6{+B(F?ENU_zj< zw<5D7m#ehxxYRs|HyWULos|Mk>pq1LSF!X(HGG);$&r5QHmvqmIlR*yMyZW+GbJK< zknur;hjg0)-L*khhDeTzoJ<ZP$%hY0`?+^`#SU_`E;RxjyrMQNZ_=e>IVJsDG%7vT zOLdz}oJ+Uz+Aep6Q<oC0RS>4XzycbVxc?{pLg~i>zG^KIr4d4|Q>%l!<6542N_73( zokrZe=JF7*PZk);k=H<d-43LJ?O)V`u3*3iz}CDqc-VnfJzC2hlWh`@<55J}<8JLE zbfKkq<8pa(bl+6hyRqLDE8`G`+i;gq(z+IMH}}kvMZ)o%m>xfKGE9|J4Yv?oI*r$V zm>jc-TCZ8JHc_z^p2x5EvH;_n8)CYGhK@<bJt6tH>^@2BNF_GgpmBA6AKkU=k5dO) zXZQJW(NgcY65eT#AyBd?dmFp^xVrt)yX$ptI0IQwbv15;hh0ORC|zC@4N5E5=NcrR z0rj$Wm$WH46B|+&j1fP&X6|+v-BIUMjR<`VM`CdF1~OW84*$`>Gze?oi?QOa^EI$b z7z}}Hk;DoK-M1>%&<T+skNs?7$MI+BFZP+#OndxqN0vO!5OzqeB^gbu<}(#x0QiwJ zwnXf~5H|p_mRAg?R687sEcKpD9#Yp~`3_J@5(jxR32`Bp(m!ai-%#9Z-}Kz)aCFG! z8n5<{7v5Z+cV3+=w3!*i26z}wftUMohgFQDQ+zzi-$m4?<8&v_#SV$aXGL~``Ksx5 zSNR=n5+UI|r|-aM$`RSVloK*znys*LjR1C_Eh=Dl^KSZNA`O<{@Da0Hl!0=#<}OZ1 zZZHoJcw;Fl^-YOO5qGM=M4m|GWg1v{l-#?KfhWOqki1u*{;Jhk)h@z%&R<x*2<vM| z-MrIAhyaSOSr=V>5K#9QxcsJ|n$X|{IspOeS>e;aSv3=&3)orp87rF^1{l9-B-DI` z9)D08<kdqhYjRS?tjoAWbs=C7AIHg1@Skv4FfN#o7tF+Lm|&7oX0pkbmYZXlf3GJI zoIv#nlGix>Goh$Vg$YQFOM%;d4L!@bO<R3oZ7<hB954U3%mrZA?`oAPpIb2+lFm@2 zTu)g`i5)&z`GIhrFy3)G4LF4{*-umS^BOquKcE69HwjS#7oL71!2!tqW}z#;qdUZC zWYsRfed(8F<kZ{QJ6SWRls?r_f>f{60mCBLR7(tOya6MdYRFcuJ<r^nh(Go=QDqLT zdMThuQ1mm)zZnT2P*u`e*hfu%hMeA(oQhCd#yg)Kr~fu@g#Aem2zdN!gQb>KEdW5# zSrYx5=*~*jZWGc?Rp21t-Nhj(yqNJz3m*OY|AT#1^!~cT{eAc+u}kAI>OJ$g*T&dh ze!g?_OKM!Ba7i$^lR}o5NQ-~WIL?0MOieQ^dcuF>o1EYi2>;liFSZ3>qP0898L%Xc z`<-R0^zq(SE93IRkAj(wP?`M6Y$gkX*w@06pyLnfic=Fv!o(M^xg)_&M)eDI1z>Fq zTkQg?I$)@O5xKWS#{aKjHG%bLhRJ>X6&Nt)@-p4~vGN%sIEw^&1+jvPWU4RZ(gda+ z1D3~SAdrH*XKu#~vW>=VU{xk@9;teQ-j(Z(<W8xg1i~0jeI!5nS#)GF|NW58686Ir zW%T7ZNw9~9w$+D*QOuChOV53`6LY3q-+M~Hp4z`U-g=cs-%!Tv@Ts3ar{+P%=!y<< z`k!cD7cTVp)hCDSQ9Twc?(?v)8JF>PlUu8ha9E~9Oj*1_%%rsS5OZ~pcKfEzhaGtg zQwnY`$itZkQsbYKdNheJB?}bowMy#bbnGl#6qnw3fCtrx(n4Mj|CA~=BsgbCae|MA zaq}b3E={>g&JC%Z-Zm!tL;8%5mHJ_?KaI9H`}HhG4j+!=6s)cVykD<jmi(<*wuiC4 zLY~k{69zC3Vb*BvcMb2|WuIemtI+E!e00+VE`2hd*nF&yH-hi3z{y81n;*Q<w6+FZ zkHi)GZ=XliJ=Y+xTRD_&rU#-WqL&DChLWy0COQp~Sji>c)|1|-)@z;(S)U&!p;>em z)Gz9E<4u4*!c6WVO#`@8?X?iFMXVgHhYGQ#JuQSG-*yLLf7(eh9q;?$$sm_WMH?Mg zB#b+D!xMFIAQGSTtKArcMN$<XNO^F1E&wJp+pRmgdGFC5EhGdoncF|Rrs570iLf4O z3Uh`O6<3PEqsqXjf1H_)dAqTLf)SA;?`^ks|D?`(hLn5dU{HNqKg?k1UnG;G#c}%~ z{c!x^J9$6^=5XMRvPGZ;M$$*Xu0Ld5-**`Qk9XQn^B6+l7Jw6*zH|q(hU9@0$AmS& zBr$f<F}Uc9{h=cdaB4U)K}L>3K#PQZlL(#Vte4Z&%n9e{7yZ#>PhPC+$@9jd|Kn6Y z?2QrCUA-q!hx~R~XI1Q>d;|yy-mf0Do8Uk~Qox={a=9xYUy|~0xyCCPS|kYzSdsKD zm)n^;kSCANSHJ_Lo*Upo9mAoiLg6?q3(*1+&ArFp<bDm1UUYIYP!|Yi%R)~PM^1_# z-X%y`eENyJ%*>jWH&bja220$@JzCNOR~-3nKILRe87~DX*banSF)&lKBtp*`2}XjT zWP+^uD4d@9W*^Lz7!}Z#Co$V6_hC;YC+)HEn(VrXx_M#{g*8B$v)Zt_)lR@7HZ<;C zZi$qLUD)OhE+~Mh(~+|%Ei+f)om$$Wx}Kaqe0MgEMWY{jGX)!Myb0J(E*jbi2>oib zR3ieImGY7>DMY2B@+l(_$qV9}evE{3>K6j2+2&**3@j%@zeR<PbwYC~@bk7U<0Utm zG;hdP!+l%J2SA0!m^gn;kqKd`^3$nT$d-aRNQs=LFbHG}%Sz>l-qQ6_59-=?F{6fp z;dG<~_wY^4!Spn7-$>uPVg{C)jU#kwREkc_I)u3R`pUOk-)y)%+vEcCEQAa(u8WbL z)FR0+rIIpZUVytjaBrTyiGf2D&dt}ZhO1`w&;l30O2MgsrlHvdeyPulx{9FB3{^w4 zP&D=KEDbtJ4NIxs#bMBHVHAfz?Kt9%q>j0PE7j2!>7b+1<|46gF4E{AbzZOQ2|6-s ziN&7kYq=F>N&v7b=<kmLPcttpYQa5828d>N#U<`i6{3Z(gN`^BeIxXLFo@OUO4tWL zxiAV3Gv_e@j3Qc@b0eA)*wh6mmcIvaVw$r^{$pOvaFR?)2B=|$)C<zzEqx``MU-EJ z9;6Bi2erkS{x%;1hlikB(?L+2BWrfEP=WAJ%MvFDd8=x1<Ge@kYr8at$$4x0O;o$o zk8}`mda%TXP4%Eh4#+14z0AwSXsU9s>s7)(ZbjUMzO+Se<+?*h)en>}=ga4#UtDt7 zb=cM(Hc)c8XPUhp9IO99Ft<uOe$Dphy(X_%%<pYMadfrjJAk5BE@)QKvhz%W_<S}O zcago5o{cWUJxNn9YFDB*;*S-5yL$Wm&x)uwl!WUL+l)<Aw=tdnL59F#xqGD>{1{kk zzl2tqjaFlyDlu(nD2=`ppXQMl!~q^7uXT`|JZY@0Xkv>ct6`2m_Ughy$G`n^i>kTO zhrp~H7uYfuoim98&IGH+|5TqbnJP#f9w&eu9zxaCD<v8t*{Lbl5Z6<2xfa`tGxXT9 zCfbq=$~M(5?^WeLRpxTQ%OdDLNA9s1T$f`GW#FbM7RJbBmik5qaK}@ETP(|7N9S6z zWG({Ju#PEQXejj`@8!V?BnN9qfvs7e>OkX|Ure_O<;OK^yFmD^c8SEC^(XFl%5U3f z@V_Pu?99|+*)%GafHc_?_i{VyuEhL4l_#3(?GK_&=3H%7n}F#VRu0OisM6A#bODwe zW9a}DBq<JMvq+uh?Dn%^1LdYx(H+APn(2+D4%NK1pzFH6Q=UQX5*aVeJBWgmYe9;7 ztNKC)8?RwskXM?G{-721(br8LYe?32J{y@rrZ|?=nA6nlux1i{69Vg}r%ga%sZZl> z|5Z$FNDvdG8sXv$XrZZ<ku2g$c^*&yC;LQhhVTL*?-52Vt+Mp%@by#dP4kREFz<Gn z`_>5^`mczoWKnx*Fnvzf$O;;;Ov?cZoX}XL_aL~k0AE?>)Brt5jGdS|m8-W^uQpD0 zI0a#`4~Z?bRjsjA8X2NCt;ig-Q;`1~Ba?k+XL0#?ZiyvZMp*0ab%`U<3=sw<$hWcO zn-e{8jvdr}kh?dirvj*M0<a{TRu9oJ`>5bp<A{i8Z34Z<=0TtzfSYZHw_j?(;5%K9 zsLH)!Th};oErIP?DL_|nZ42fN_c8;jK-<R=w@N<}h8Du#qAKc@1`MTh!`6suU5XR6 zE33&ync*6l<+DxdQDL^b+F<&0Q)5xI29*)?o?@yL*^$?TtqI|wYH{SHquo7CAC8+z z;$lbyyno&%f{!p~W?rozXOzg-Z{5>PDWUap7Pzfe$jd(7zVVKlsbuNie*MuAKw?D0 z{S3vRkZ>3t<_T&@d8$8ZpsM?ur$0Ft<HOA80mrihpvB^$o^|My&aW7#vy<Zx4Tr#U zYPJk@QZG)EdEm$T<=)3!@1Do#evC0uGAi2ie#NMGmLb=z2QNa-){_5N(`Zr#Mt36O zkqK1?1W`~G9U$qrZysN?e-u<A8UK+zM-Atu5LmQ9D~GZ5@*E|e66W$<rSd3iOV0v{ zBDUz&>b4uwO2s*;NG!B2dI@JRyFA>-I1Y$;i}5)Cm3(P+=IK4l-klaqg<FY?Dv>W$ zsg=F6&&rYq<yIqk5PPh(Qk0`5fC&@#&`x%sbo4ZwK1^6W`2M7RXii;Uh7GDkj?7OJ zks^7p<iE9lNQ{$Mt~X~Sk&N((o^A{m%Iy~jP&MWX7x7qj3sksF&S#-CcDRObb5LPj z>V8Os^W4|8iyeWpt<0Wy;s%e2Fspb6No<ZSN80k0<x^2m7h>1GPswn@=Ra5<m_;mz zS&v`NlsP~<)L2#Q<xGt{PQyO&hGaY58Jb;o3$C^dZ`kgwHMDuuBUnn%VjtmBAMM>c z%+N*&`i26wxsk9Ex8rSKQ>t6DhG3+D?yqLg?uvuL{>iqis_!*Tf0z<>b?)t<b*G?0 zFikHq=9(WArbhoi&KMV-fi&C2X=H2ny{FP#aLJLGg{Z-?E9B>gSAIHmD$B6z{vyR= z9)Ovm*{SYH%C#WF25<d&Cs$H0u=XCIr355F7tYM_b>5fRbc5CbHCIO(IkY`Ct-P2A zR#ja<C}Y`1V@WdgMmMhD&7V~XDA!w!2LOsMFYotVFV(PssDz)};j?qpAsxVuaydg@ z`6ZPWobYK76yO<D_R)AZM2Uz!@3;uI)ev59;xX>hYm3{Qcd?&z#WclHHY_O<6`vL( zpTfC0LR#=PAt;S=@25b?g{JG@e5w-Bki>w+k@4zkS>zk(-RT&Mk3)KxrPNC7_mZBO z6hszhCUU9-s`pAC<w?P|8#PX>`0)78mU|bIsu;{FD6?`@xz-5~tN|#*3N@!Yb<T=_ zg*bWhu#U9Y{w+5h8H`E!*<Tg6sTq}f-9lcsJ?--IaYW@uleda(3>oLa5?Zq=ON^?a z5dgsZxJpImW8BRJbPwCRE9@C|tl~;CB4$kL>q0uG^ab6xT$EL%`r=xE=xumS`8Hhm z|9<=FEH0Fi>i?*cQuPHTY=7z$XHkDrK$WO#u;#%@9`6mroYehBD)*;8dZ#A`PA16O z<bCUS%6Id|5bre{xhM(bXy)|VaCv?qd;5bEeE&1^4smigNi^H=?Zf4vDbaJ$y7wpJ z+OSTiNna7E{V_0q%Le5nW6Ald4fs2vsCXtNlNf%lcCO{YY!b~4m4|U;D-U$@um(ba za1<UAwSV85A40y4-Bdup*T;d3IiQj^#~#*0#Mzj7h>r$a_=j0qi_U<`X10#M1G}Dx zFrCri3gs0NJEc*x`Lq22Zco3<-^`N6!8j@dR9rh#V))Ymr4VJKA56zojxp*D_S}d3 zL&yC3KUK#BMRcU4uwYWp6o}*DYjEGW-#;7Rnr(lXUoM;QflNx6!m~es+_>Q4zVJc` z+Y!z_d<S935a5~%$vUNa|G<5GGANN+#JmzPI*>m+U%shot{DD_T;mFFx7+X0w_cIM zu+vZyZAQu*U}(C;^X#_zrytvF`NfK_pTwBR_+;Z+JAKDsIEhSjA3g67%fnrrx<Tb~ zq8D=EWILIi+hK*fY{tkRl;+^sXUML8q_uC@G_QZpyYglKIjQ%Dw!7au_LsoW3x0qI zbQ;QS-kalc7Z)>%p34D%(a7aIY>FdoBD!ZybWvFgPtFj(i}`cPc<<{$XwozTyPEG2 z<@SlI2<4JV=yNGkr~*4<wJ6-4hXU*`9L&nKeF8ii0p7vhtSu`Y@cdSuwyz3)K$Cm& zESJvTApOD7n4isw8JkXRcKc=QjqvlYC43lIb~l-LGYN{Q8k15_w`LUyP}apzwqk%% z(oKNSq(dy|WTag&%$z;&ye36<A>=VvBi+Bb&hFrFvw>*-C52hj5a__lYU&i4;$<Wu z)7Zj4um|C%P`RT*p`LQWgou)+(_=FlHm8Q1BO*)SD(nU?Rq+>|KE8>;2uoQ&`3=&T zvh8rPQn*$=)(}0d*sh^ScF9n|F33nGqlIxi8mPwNtT@+XB-5W(n$s{v&FV#{bJ&AG z%glRjvqPjXg&E4Sg38}0?Wt-u+te#5Md9(>aO~{{$A~9GW7W9l#xWgZiZ;1mu&xS> zj9BvYAp}Y6ijwsRUCr49$)!HsD=S>$K_~fP;I!^w#a`_b%bEzMsM=+aJ%EFa>C$p5 zU8O9(!f|<9m8PZ8t=M?Hti2cEmFA#z91`u5?z!*2&6;zY)Pt2%6rw3RPccc{$6l<f zk8)-=87%N1l%{@oB<rR@9#bWsM^Vjgtn}SO7lgVoW*<Lk*i}Bo{G}F_)+39&mC`g$ zYAB{1MpRXSOR1j<Z@Sz$op|4|Kq`5O<*1%$FNruR8cmxhyqYA@<ecv;x4zm&mZlO6 z(NCf%W37_o7;u$=LW`Sstr25k7we{a(Ay@XECc;ZxXJiTfm(_F2rE&T$<voAVw0-e zU!c3VLFmdfp$CeJLCm~;HS|cK%d%ZmuEdQbyQ`=rgEWXSDBG?A?7a829dYb}zdlLc z7-5B|<nWS&uUNXRc$z?aGZ}eA^e~J8|1TLJbRX}doGK0wN2JNpqcJ5{!T1@O9}D5+ zEXnZv+|cj{sAk%H+#BwCyBGuVBW2KvvX~3Uy*e4XR4>hYl$+xZ7KARyz#&ui2=5s_ zkV26197{yVjR;#;OiFJiw~s3FFI+{j9dC19{u10F)oa@QYCrVn%ax-cpB){FexU;w z<v)v!vwLZxbcke3rgyp7mr_xUBPH6j&~e<fDOQC!c=LM$FV=%k#dO}symyfu2&6O< zhRfB>5&);lN%zwogI10qc=7Bn^jkfOiDk=0u?!2d=7cq(ruID!s_$&Ng)rxj`>3y; z;%oUPBdk?MoogB6w=@impX|OcioSS^7tj7;zuV~7y=v@6*Se!?ozZpw$-a(fM`=^% zO5|uy^^6?Oeb7OW>(p}PZ5UwAiHw&W!P4PM!9FjU??9c^{Jn`$7pmGZ;HD9=IDx7& z1(Rp9JL3cTMd+H$Zv1?s)Ypk~+8D@{$O~iRbKnTpE&a>e!y%;%z6}H@dy*`XQdv!# zQ59magbe(i3x!@16>;TIG1@39`Nf}WF;Ud52yo_x%B;rBbs9xdB?S5yxO7mj{uRhL zk4W^Z4O@oZ4NVx+N61SyF78T`UYV{xbw1r<9S0lpW_Aw5$?CkS&2X)dCe&;9AguKu z#>~yaF@}D-qNm?Oc=)S3+SPZaF)J>WZ6>v;I9J%xey0<53QGa~66zx!VC-Sg=!hX6 zIPDk(`15U82=D<s&V9pa&f4Mh<1H<0$L1Q|6>Ki(Rk+@5vkTF^!k{|GK(4j>pWuKc zWK=X;yjqNb=A%ezYNTBva}2tWHe=MOU<~A=xl4_;k}=|(krxqw1Qq*Hke{<w%DP76 zh-q<Qz||QM(>6Vs4vmi(j-S-VZhBw?*O<7YYbirh<vq+<^HqaXZXv~*svGMVNZxY3 z?*RnEawc)4M|vj}k-cpvpAYKH^9i|Z(Ae~EE;go8!q&I===IVYxlSIj9EQ-BpYU}K zgeC#uBu|(qeYCtUg5@*3(Cyvh3qR^Er|a6jLBInMFX%8|iB6=r^D`--LJvR7{$;*b zCR}-_vYcV=y*i9TsF(WzDsX=>y$b8GylSv-!xT<eq-Y~AHion!>hl&khN`$AW}3`7 zkw^BMi^}vJFsF_zZ)5lVbNM4NcxlH8dbidP$a|ifNM{v!)7BYd-YDMpz-B@?GMf}_ z<^3q_Y;lLt2!mR3@rBpF_dfOB+m#`Z`8($CD2$j@++F{f?*nTq-h*}I!)K8M7r+m3 zu^prRI>hgF_uh?Z$|Tz3$RQYfNxJ?<L>-*`$pIGTX?pqj-Ze@)IcTJ^dU7v-_W~jm z^6wBgu#-e@R4x55AQ66i(Sx6d|DT}vI#U-x)#^A{HoKzQnKH_>6!r#B^A5sTGJ;A; zas?5{&`dj0;iXtxlTd+1sz=|CrpOUH?bgB+P5^O6EsLkg&0Y#utPmR@{y&H^(DHwg zlvfmK<TRN+Kpahmh@9N?S{PU%_ESPR(~#U$qS5GCGvfO4FEN%%v`#biW#~Vwea&=P zs%?OHmnK*%suGU2D&ils;(79x&1kVTj^LaXV%8FN!PGPLwCo_Ux>Cep^iwu>za06p z5M@6vBWVb|AchkpMKfk~Qgum9KL%O~3NgG#yG)v<ZQHhOy04~XGYUnOnr@hu%{ZCh zRup15K~gkhRwq@9)O5qNY(}A|Qqv97vKikuf#2|ZM{f8oO@4fM#ojO!Vq3?n5bJG% zq>ha(ghCAO+-&yb1IKY3$91|68k|(UrKTSPQy7I9-lJV6Mv2JG%nSek0FWf<(ms+6 zI{k}CybxGd^q@8yfx3z?Cuzn{1VIQ7;UPKzdg)RUq#}tlq$2~F$U-)9Ak|6LDmC3O zExU^?Nhzh2Qc9^|CllC)7*3EB&6rhJty0qs)3W<2rIb=iDW!&O|9gGz|5pEBmP=S6 zy0!_y*yAQ@by_bnDSC(pmVIG`)C;0}8?b)vEg^Lznzxz%`;F1bO{NbIbaG>5Up+y1 zh>iyVh}w`QB)_BI*2Vy=zgf9z*?qA6biR8egMU`c3&Y<Wusv{1w|x#{h&d0xjz3|6 z%VLh<*SMqhzhYp+;`k)iOw3&amKM5AX_<-ENs~V3K+-4a`Hdyj@WRuS_L)=`()#nB z!h~y1>v!MV=`8vD`gu{m%Jwc#mg6LK`Lr@go|!)#6PKFFX(JzrYzb+dVu|9D%dYJO z0yQlgo!<U+{fXvd7`{!OCr<OoI%S*3faX37K%QfmmOYCnN4xvkz1Py}u@(E`rA*o8 zQz=&7n9{>%_C8DIQ?xl7!UxZ&5v#9iqVN%o8iwzhS}OAxVyqc4=n-M|mz&;~<<3#! z;1rG&@aNt`^WMYqwa2A*a<|)f$vUn736=A0A3TwKq^II^xes5WXX~|zj^e3BAKuXY z+D=aW*2{MKDuB3^zzSc&576a4*ozI$WO)pBB?hP9ZVw5T&IPvySNZ-x*oh%+^hZam zo67NVrn!D;<mkEiHo5UwB^1uXmE(ZcV*mM7VKJ74qi`yB<G!#L)Yt@dHb;f1?1r{6 zOgOzi=fLnfIJG|BO4pU81&gdYT9i@c@s{x$O=Nrs#H+JNVU2{<DUW0EoSIwdZQnj{ za{qoNIxbJ1#_%$r;~6LmO3<m2p1P?MPFdjj{JfzWN>yCI4})gSY;jUwvexZsC*y_N zn5?G=E?sYRU68o%adw@dY8iv+Xjf-3hY-nV(JL8QhfCE9?==h+r)rQhOQ_aTX<xFU zIYNNZ>`Y$d0Lq|hp?tDvZ7+RNo&z}cqsMFN=twt`-!cND4V-2TqP$UqEL_3~S%M90 zU5@#T@)#M0V!zodh5P<6+*$#T48sWqQ<A*)JPf03Uv4{&&CuQZ5=M=>O}4KsN7VJ7 z+%-4#dgf&f^yRbJw;o?|Vh#L~G-dSm4m$l%>KT%<2Y+Un?CpWca?OA`{eM+2AM!Wf z2K*d^jCp33pk8aNPV>k5afM%<%)$CTKjdF@h^n9i@dMlQGS-V8Yy!Mmn&}n&romZ8 z`5f4k*~qzeAb6KayA*oLeXcqs0i1EFfo9IjJCQH1IjoeXjL%AwSd|Z(<JuY1G{p)o zt+%ZdXeB-Ar|lp#Anh`5z2?C#r)zAHs6&VqEOH{psGTAU?a9-4bG<ghN1vUyL6BcF zEAG~ZLviu8DO~HT@g50WscM!r`rXBvy}vsLW?pYZMBpXsBMYD|uUTf=Q(oKrC!Vrt zPTe9ip-(Sr1vMpjVxPkghEs6pV#kn!eHs*p<aCE&%rG81o#1rUTd%+6Cc#&M`97T5 zT=wv}@fkR)KOo$nRP9RrKtQ0lbkniqMmNkrDe}Jnx>vaS%COSeiTg+BwtvQIl$CWf zf}M+YfNFTIe48|mam2aO3^&Zn*Bu5tj&<hD6V8-~M_$OXXG6NoE_ZZx)as@ezTa{0 zcv}iJn)F+kDWe*)NoE)RJ0p%)^qvjemo<m$jN<X)L4~MOyOz%jcC7+2sE7V^+=~XO zw*e$UFt|W7qyRnGe^BXLn}!hwO4?zX^=5!;XjH0ZJ+EgO)=CsX6a#sUIu1iFC}7|# zf;CqwX{^;Qf+%QwEf)~K_FQoWYXyuD2xyu21q%yIL!q02JP8_5Mf(Ho60Eo5G>_^u z?mHc^N83>afCP`F|6okIhSNwjh&bgbOa*ntb5Lp~%Sj=jY6noLQC+i61K_ex!(U=* zC>`WX$3~W<hSEvu&hJ09mbMksm1k1}Tg)BZDGkfD2F}&u(&Y=hE48HQ+O^IGa33@F zFp;q5I?6uKi!_*)OF)ke<dJ>4R*8*KWiWvtR$by88BHfxVK1$}+jlssDs8bofjQ1j zNGl5HiFS_#9Z#(VPLNGBuVYqt=_Q?GohNbbvcfYt+W-`5v=&eptZa{+saH|tM2kBH zho20<LpXacYPw^&CSxw7#s@Q;AVT^lT|%xCMBY&#kV1&_4hvYDUli?Ev42P*WLW7f zndSgVtHIbMgXY<pu)Pa}WmvbUSOVrzmu)P^K+}ql#ZDiJmLlq5@d9R_=vUIw4@&td z=c<jG*1?hD`(naVWIWtyTo0VyWG&*<;I+ZSDF*d5qv6r)?Oq$lM#*>y#)inffc4Fz zT^ebmP=`bnS4c-sa#S7oJ9mmzB)U_hY0M9YcL{-~7za<cal^lP7n`uhR#;UDorflN z;SXY;lNm?%{}hxPdag&=i-^_N&!^8k{hq2Vlc#wA;c>@yX~#!9Br(9Xw)C9;e<2b> z^o*Vu@A2QWY7TS2OJ_%i!ZouAVZ%OV-X2A%M~SVI6QX8UU0jf{m}!m{f+jR_B_apb zI!8hAU`{16+jq%4dH>>s(Yz=Q@%Qt8oz24X@J&}}gN+eQaK!NI5vkP*A!P6;Fx?o$ zs-dmtaDVNds!z<SuU$Yy>rqQyM<7q{^%<L~tRf*_dIOx2w=;G+#yFhVDr)4Pk04Yg zDZcug8R*x4^`WyM@1DIEi2A<NG1j|<`7a35eL*Cj-7Kn^`<Vl$s()YPf5q5MExsAc zc~IuCbAYs-GWBjJS<9Gc=D4&3o#UNRrQ5V#Ex1VPm1FwE?_-hlg8DcF+75bK<k&|$ zZ0j-F>_ayb<xu)FL66wuz#r$|qgkfo^0U>~4ja#kR$2F_RqF6)5IfSWZ?pZ{ap+;~ z{_BlrrAhtoUg;<6ze>++U)|Rf=r>rrEd>)GY~MaGa8-jeK@6Gs%E|iyB5m|{LdgDP zc_R@hU44(n6RUcFP;>quR4S06$q5xibHNY}V&_+Emdw&u)tO+DhLxe45oTytFX9EJ zZ%Nv{!~1cHwvZvZ=y_;wZI7YamsQ!ZbRBzj2|3a6$hH0b#=TzJ3a)Fop)d9U%HG>= z7Q^)kJM=5KTHMaI$2ondLuslj)T6VL-1vRDh&kSOZ+5KzCzjil@)PG(9Z2z6L}*(A zGWhqUQWgbF*4EJH2a$W#A9%s8dW^1Y-N*hr+`aGSY5+Gt$iK~>ubVXNK*&hNB!$wS z;LU5ha{%9nwNr9R?i~{j7`X1S3j>&btiw0GTEFC?f9HOpMha;axtFl4TSp<N1g-(= z^h&`Z-10VYUzshvdbRDgSh{zH8j#h%<h8fVgHVvX^Q&nkVUq30r)gXtMM{g;n^LH8 zApaoC{6w)#V#3E}zt#Ei-3-Snvnq&B&<Llh9fQRyp{f3)Dr>L0wm#EqUEj1I0`msx zP*F56IQ{KzBr9l>WQ*{1&#PKwF}#x4lUR0-UQ`56glRJdnqJWs*eU=vM;?AdX3uE0 z8USG~xi)l_MDkMFCy}G(A%wslA;R9o6VvSNV2NMBT`*cJ!PR~f+gA#NY(W8^mHG(q zBLIV*F1-yx@I*vnKOw5B$Uz(*%k?qK!59{42iLAb(@(EA`EIZ3w9#gnBV~rKwl;## zihG4X9F%ozoGJps@ozVYa2lX!sZm6~;5Knj4Azvx<($?6Rq1JmwDuzf_AF)fl7`UC zKe`ync|#_m#`5HlBez;_UfzyS1h&&W-u=#`sNLE_I@2qT5B-WtRp%QlPwzbb11j|f z5d)uCU|tvA{;=`i<Du((^b-@&Yv+d7(tW?ebGzMpI<+kizut6ob-Mc!67em^OQs4u zI!iHbg%0Glnj7wmrH5C%AO8%uo(&v)La)D#gXr}xdTyQRjcXq`&>p_~c*$U$r(Z$i zDqi*u1R<Cz-^s7y*$yVeALhMyKYs1QhlT%!hSCBmNe6Vd#TiYh!PyIs)f2Qo9yR%H z-@d%=xL1e;-SKe>q{pf9Z6wk1t1+ZK!Jbyo8|3Z7JV9DT7Y7c8wpCWxUv~Pp+q5z5 zlch8BR1=GVw#QwkL|DBSzd_X0a6;5q$9kL9{`rZvTC45G!r!>r*Em8uW-rDnMrySv zaGX0L`*)qNsguyzngY7RllgK6z_9s$^z@iQ5mXSz!SR`1tq~RiF@p+paG5P33ltHc z`clSFANK(lQVAcz>`J8Xtb*>sUsapVZ1br|ZKOe-uVtGZaa{D9Oy0CT&3Jpe=t;7K z1|;S;8$Hv!QOYtaP+%ktntbBP%t)W7SYyw^N9)NM_2ArNbrx$hVvM+UghHH@AmKhd zMCPva2Dgh3!co4;uNcAB`uePg$yHlP)1b&i)}k5&3@0Lj;_4CMS9u}LAn7CLWcv%c zDHA`N6RqX}Ay>;=g``&>ft@n9TB%Ocu_!<zH9DzP*&CsTis1}dF3f?2SM{A<d*_j# zs(inV7{po2Zeq(+Xs;ODqKN7XivpvYuDr>`Dawbg4NSCu<NC@_M0!96BEl$sCO*>I z9oX6wl7)1O2psF{L1kDYj(q@?Qu>B-B^d1}#f$9=&*~xis<z&8K?7RI#jAEW_=nXy z5U~e}B())nZvJgi!u*WaP9KH|nji`~!^~d1@rKY(_KU8eS(50;b@pat5q}nI)1}d# zRn9p;Q?4~z;#kxL>lwNeKT}WI$F7f8YBE^eI?#63P7hb>PP}16B~W%l+}=7=31i(O zzm+|eyZ@vZdg@JzSV#WN^}kw+lEHfrtxich5V+MBDmv0m=0dYrgS>cOPPEvhfz@AA zP+O{|u&%c;nq6`b+LtOeB^wc8M}wj&L7-|0A&CUbQ~Zh9mDBw#@d}w22aisj?TtUk z0+59WYKpBrRUA|Xvedmq(W@C!Et3bYl3k#FR@+%Y7Ux69AQnQA#^cyP7CW-9P4=X_ zx2J`fz3*}BeW^}tc;1*a?A6{T{URgX<e19(>X}>S!)v>m5Zfwb>3X|HK$2pTUiN@= z=%#PPMDX@IBdV|1#27^_Jn8dF4_^8+!>EnLP)0$H?JPDmDhSCjsVx)GTUR}0ywtc5 ztNnE|r{pFLghJ-s#$+cm#U_>x=z+jh_f2E?xX-*J2plmZY`^(V6Wiu3>&tGh6~Oed zb-rU$E;KPfRU)H%luoBueOY^`TcT~aB(W29$p$ZST>3+t(PZAA*n&1bTvDBOB-$(v zbN+;$#gQ7<$f}BwXz#wXQ)*iLj_6_L5S+v5nY*szLFwLlvfbEXwKeB}k^<(LM6a>q ze=A;BiBT-PCZIok4CBHHtFr#qz7YG)c9_4I(z*L|4omrbPsFm*^Mf;rWVx)*6AFx7 z1mviM7gZ)A&+Gqk_X2^>=)~Hs6BEjo(9i$Gu#THcG8UZd5=cI{k-jY3T)r%`gqI_~ zF1Lvbl4+iFKd>7KolHK`L@xfYD)Kyvt1V@WbrAP?^0%C9ui|P=+*%K_G%KBDcv)AQ z#nnCwYqQ8XZ&m(EHzQ`L#Y?k0U8YZdHMZRVjiPP-gNubZP)_fjr<^}+p!jGgSD?17 z$}Jr1;uH;@lz=Z_OWiI&YGk!WYcGFkV)*hec!x%sgT@83pO-*LJBcUbH3T!-=uiyu zXS5Pk6;`?sz^$-}%*Fy(@*6Pb0tm@l8%gekI}5{<UVO&S!e1~N?E(m8wb}o%R&a`A ztz47ndH<!~o=nST6pAV}-7qbiQB2+|?tfgp;C=uLKq2(IjJRuzCCaw3WMpvuNkXfP zMC{(6`yL;D-({6DJ|ZNZhIe22u}6{F*maPSBqSk;BvP?^ai2&TX7N;h4!@!Q%+%Nh zT_)=+W3tMW1zC5e)~2dl&8l8srJP3Js=CA|{g6e#&)bE!v5O14jBT5nVDkAe4#8-0 zZFWh(`nQzRKkT`@QOy`qdegK*_BWc@D05IQhC#nm>q;}(aZ(JK9C68#EPP3pWJwmf z5DCk!t$1J`#yp$=aeEzdZdqg<yB+T@&lU%5Much%FlEY>t!6Fw$_gvIu*&L=vVl<t z3tz^R!{3wl<ej{mG!Ev;&iQDP_vJ9Q`OC<N#Bh64b})ZPIXbK@E`7U4oYMI6g)Xh! z$<*OB9m7Yk#P`FD8fL0YotPCY%o+w}yS177r>2pjFat{`)9WN^JKZ||-zMM7Vx**b zKa;@*Z;$wnTUyjnF48i2QN5AUD{<k=;ZvAp0n3t(;!vYZ3RQty=W<IdHL2#py!+Q9 zF@_AXkr@SZ8)kVg4tj@nyv5g2k;TJRV9t=eYO-Mtw`eq6knWE%5>;Wt%p7B8lju>N zV{S9Png=~FDc9I`Jz78s9|-5_(sRW#Ah#C!HK6U0i_0rrrvuSsm$8r;{y~HgKE<gI zSEbG9cPYo>Z=5<1mB`P4t@30$)~w1qU}HiWLZ#T!U_$M}lvQ@_L@msLDoD{sIZ2b1 zVRh}L5ctz!HT3iKb*sV2#2Axmxi<I}Q)9g8RR(GqmbQ?KZ4v<B2zeet;J>t#G@d1^ zEKm0`v*3ViurA3HX3gZ1Bk4^fo4<f;#EZ!Ysl(52nrZGk>_m+&L&H3ThB$E$dd8+Y z?ml%#+(*Y6!vNTxrk1tqZ<k%xxzY${Z=7N6ooq}2T5V+!{2u~ckn}N*O5zK%O$Kym z>;PW{DdeM}k5_sT?PBKhnfkv53+Lu{m@oGyS&k<knlH^rGkb1>Cu?r*e9n99>&$Rv z#F7uo%6Z;o$585*I3<P!CbHNIPvNzwdfe$27YGIk0a1w|`B%w=k(@?wW~CA56Dl(n zpKsbWfdPW*qhj{U0jc8_`SuJc8pRbxxu%+p@+xsNz#T*xbpa}!&ao}A^s0=IiZNYl zxfjZU9A+v!#T~t?MUKd9^I(tSU92uvoxED=J1LB0%T&Q=;ofCLn7cKx0YsO~C$4RI z;odd|i!sSg>cSolJ#kipq~xwU?8cnk=ABKG);BmCmhC!}nXloNePHVV)x9~k2uZm5 z9Npz<pq#HWP(3}B71@)vIw0giyqrqxcFr6*$irIv4_0ezS^7n1$~Os_UIPVLTL5js zBzU>11qj(-ukr*f>QA;w<+v{evob<5E(!TvBVq12@VO=Kvzkm*xqg*eOCDKcBe>oi zZ00C3(1YR*U6)WwtxGKK3eHGdz-ALrVo%vnG)4?xJUaRrg!Cq<A>@wk>v{+&`yIi~ z4Lpm>jVY+CMtJqrjR@Xi1m%2Ma9lsXgZnrB@7bm<p05)q&3<~%lQ#d`W1nx;(LY5q zVGt)L@a}3Ad_f+DN5jD2MyxHc;({ZV4FSy&Y*<R9l!v?ydkg3|DwZ^K8p=;L#Cw-* zx49Y?2BFAtNLjDD1WFOQQB?)5P**t#xy4EqZ6hUVQIsV|U-a3UI*O*=U8F-87`f6$ z%HOK5WCEwruo05&!gu`d-y8vKii?eOAj_g3<U{<dq=6UaPIMr3vdx#7iR-NB<K+3? zc1>>aye4Bu6L3I0#mZKO@|ih9F>7tVV5qd~s|J)WS+UF1K2;L^j-10AKRI~6@iUg) zy7H<8yHykZKn#-<$8OLMuI^wvGDFwg*z}Ja!K6`d+mhb5t9<enAg~KgFBqoVDuiga zmZ6~2WCu87mVLjSB61Qo%gqB~)lC2+3Vqv2UC~$L?%8q`K>LUIVs2%26Th#WJZ5=Y zwMm~!FCz#p-Aj^NcvSpA*;W{Q^G=(+LLw^m6zJazJ&K1mRrjqjd>>fTymMI}dmW%A zc~pJTE~Viy1-@d2#Rr5~r86<2s1T^d`CYQTxE03)_3gywIGaa12ZD&YD$D1G6q1W! zoFuf?NyW&<zkoi^{z9usa|tBj6aG>jSD4TYpZYxS9z+5h$&|2?U|}lr_N$B%nwsL! zm;0FZg5SJ@fWyF#p12=z>e%v3XFz*zfP?s+Z#I2sE*DiMdE%!pDz)qit-ajv32)*U z6xIV|^RA)?O(qJ7O~?EBU8h}7Cj8sg06LgV>5-X-K^5Bh>doxZJSC~vsj)F4sI*Ed z*SV)^$M$<~a;us$%{?}#b>wYM9$z}HeXf7zf$7xO)t^6q&l7)J?7r}i3-dX(JW0Bh zrG2rmD;n(Di$>j+n+;LG3<*Nwe3G(UW*uIPuy8ne@MfY?*gnR27L2cb<Hwi+Aj3`x zi|)*Oj$nrEYbBmRxizNII`jAR=Cv_=NGjLmcpj6i?Dj*(r`c$)6j0uh;94e$Y<SG1 z>xXUBRcQ&Ki1>i5pkRJYg3+!tNBQSF$h4O05RMnU?OL!%3%1jXkyrFP;~*kM^G-tB z1Txn90F+SU?mEMk+jVvDgA)l(=Bm!ok_kbjz{1Bn;^q(3FW?gGmfjkCCCVTTBG6yE zYeg>$IteRE<C!jclw`T5?jmv?Ti>)$0#jxMn+b*6fs6RYRv0CiMqzJY&90O;%-bkJ z^biJI&BChPx6>$kah<84Bk}`77wR&2g$NQ1<*UWF6yrq?0^K#f&1Bh1_lj38)?~%x zJB_JJeELT-r4PYKp8((y;Dz2W+_|IC6Y1^D&hw^yB+20|Cz=ZjSs)vKN!)Mt^7ojZ zMP2-GnUfva7c#DJkD;hDEvWK+oa0N8p{^?2cUzD>d3jsl>8KC(d{3iT*fR7K<fQ{% zdqQHsu)rHiX#0@jjQgI+>fa4@MRup?hU2Bw>J~PfCp}ME9B!Vt8wNjT>7;xqvNQ`i zZAf$#4)=6`mBzA7E}*Vu(gGQ?X*lo*1y*;&pkcfx*A9fiJ=-1N3{|V#8-Gr4P!vVc zYv$P@iFd;S1zsla9p*e77~=%(NB09IK8D%%5*3FNk)Qy-H$@XY!FQP{_znk-O^FM| zq#H#Hke@M;82;tk6YIf7rgU5InPbY<!6og#Vd;>i0Ca~bmoArg%kn+dAVW1d_6)7y zJ=dgJM=tE+fT^kuE)c1R{k@4}3|{lWLw4};O2{0a3?@Z7VZxqE#4(mEsH9+P8DDxG zK4pB$FJ7$)7&em67*!OSV+5~&+q&8QR<2CFg(PYfxmK@HuhOqc4ge=3&a%x*l==#* z-(LP6gX(}of8~|~9Joc#M=@G*F_g3{WEqMj$M2iG$xDZF+0jB0C&7oJ1UJ5k*`<$m z(i^3djZZkk*$Ie7CAYs4L^6GQ4=23Ct7!-yOY~Rqk$?ONhLpq%{f`8XQ9c7?MiEDc znE7!sAJnc`C5rxbgMFXKXa8`N5T>(x5bIMxxO5lrq{=gEwudeHkn<ivwUL#L35=FY z4`5^WY&wp@uctDJsMt$%&ruTabpBI3gsGZ!P4XEovl5nW(P#G(O(t>1SV8T!N1?1{ zfp(Qp2{Xz<aCw|MIjzZDJF8|C%;X=`QcX2W89xRw*hP_pbqA6Dy$hrL(1B;`_}*w7 zZJ}Y?BOWW&Tm1i@VUo`=$7PpD+fsY@-77JkMCx0xKi>dN3}<&TGSD{LeMcNP-*d^0 z@&X-g-$dZ2XO*I#&vUsjQ8`(LT><*-tD)SYMXFpk^}q1~LK?kd{g2=<rPW{3(7s7? ze5D1hZ2#p9;|RVO?n5Q|TI%CWV-pJ`u?GJo&X6X|FPy%VVXfZ?_GiKS3f8XR>e?u} z0|>NgF@7VBc)Ei(6o8Mq)rNK22?RGh55@|%L9iRObNO*w^!wRoG+yI;J0_LnVt}{- z=hhR+!z3EtDU(!>Pf)6`>E8(-Sa~<OwCQ`-L+LKij@u5`v+?u$)4zY@LuI?Y<*;v) zT0y9DO=I(3s(nb=H@n)MAjgo*_O$~--Ua5?wmCVz0tLT3j!wc&PFZu$^N_N2aq9oy zCdp_%1}d!~Ehnrk<nitD7{g>);BxPhDZhCJuJY|CAagB{0Lmf9>6_k)pvrk(N0GtG zQ`%nC(`bNf*9E7FZEJ;kTxZN=(FN$4VokkPV)C!L0?KV>TvYzP*)Pmbm(p5Q=S6_p zFIadnD)_ky(uM^<)n`RSL`39J6;i4D$>q%xmrU(-Mz_8w>s=Za0K$t{X8JZ&U{@Er zTUGD16PTHYrU0nq3IGBkA_73#D^|)^3sHg<$9m`-KW?7hwb&Nbuw7TBGgPQNrOw$@ zh5D1Vo}T6WEaqhR;kedQFD^5M&3&Vzbw84<*HrcMkCj6-4+pfa#?-8o^vQ}r`q+9o z%N9P1(KBvxGR2t+i5`hleBk+;*{%Fo!sFDV!HX_kbs7A-5x%_J_h7dBWrx2J;}M;A zN)*}7Mu`z4r4Du$`;j(A_zmgL4|0lUxgw!)kz9mU@FxylQ;oz5p&RZ)ku#3Cu9ie| z^zb%j8pF-dG|vcD-rkro(gYL(=qrfdW#lHXThXoIjJS2$=tfm!3IrEFF^%LRs5B*r zttLmk5+Wa@W><ktB-`+{r+RIVlx5fRs{I%>f0cS84M_f05Yrp$SwN_TECKzEF1ouk z!+06iC=Ud7EPxLfxy7{YB>mT(R)Pb1_EvBW%q3h*HOm*P(%|tAnx=d8-X;^uk;@UF zTA38;tE$oD%6lDuYG)3DQ=35%Iv0C}jq{Q2$kQ>WH>HO0Vu}(YicsUqMznx`YjBgr zIZbvLglXyE0#-|PVC&ECEH`InO-EIpn1Ub<+gU}TtYT`tb<h|s))g5~UTH>-4F{C` z=Yk1qblJu80*s4MDW9Wb$ZlN+@?Z_WtJ^1T@gaw_ut!G@avK_%v=nJioh4yc8MOAO ze*vUu_PG+f>($y8pd6-Yu0rxuz@Kl-vB#e6{O69TyLT2R`ykYQ;_2daKV6*ei;bD( z=C<72mYZAJvvlXSvU<~1Ymm(weo|QeZ6%5Os#@C&Kdqz7{j3Q>xV>=(l&#BZKH0wE zAbtZmMuC;Kt8v~e1{T3y0mJ^MpAi?dZV*4i&?uBrjRlSXEW9=k9hc+7l{Y;f=M!k! zsL+iQ{2}Hd(J8f0CuCl<Jl4glB1ukbXMqU;ml{-?L6~3Zw}LniKt#j>3UXzaQVlY# z5YVr4t)GHS6PX;2y~+Y}Q5aa!55rqVM1zj6`bDbk$xl5=WRq?v34su~sD=`a(BS2L z(*QpC^dzbyK5?+7CMIr{o^dwE-jHRWmu_mV5h<jMuw`l{Q8s=4q=x_V`;U2cJYpUa zGUb5s`(&VWxGzo*m8Ru6*2<0^K{^7};SdkhXsBoE%vWW<St|$gL~^{mBh0GEFZug5 zsrE@drVC}><il+uKU6<bARp{Y4T>#i7h|ra!7=J8W0+Q=`MUgtZ}0sr_sUdB!!6y~ zQdSCZj)XzD0rXLxTJK;UAH+1OHSC(arazGIRFEjUtl$8XMSq6L1A*T?2P6b~{p{oV z*~_{Fe6Y_mZokW{P8$$3@eS^l^yO%VFf3h@b9b@sbUa_Jpf=XypE~R-A2UGaT;0I* zG%G&O)S*?N;${w<f@Qtf;{9IKW0n<?m<l)DYa~~LcJZ>@_7*H}Fc7W+x6MI={t5|$ ztpa5JXLVa{8ulc96RfQR^U`dBv(&K@1k#~ZFrPrItz~!(;*!}PW@rU)7(%OYLUag2 z|Cw+TW;~LfjI}RHj~4B<8Xpdkd#jd=%Z&d#2MpUfRU5imJUOJI?Gab<GwrPndr)5) zNT$lwl|9T}OWMCKs3CmAWeZRE@?rUUJDtBk>ceDZOby#K^bk9K!T~wO{osWVUw9B( z;=rXpwIAp(OFT#*ng$QoV&YX{+(LEa+_p{RfU;8C%qu}l#I`UBJGp8>;In-{y0M*X zGZP!<1|Q~VgEX&nK%;hum6h>_9yYGSDBA~W76!v8;<HoK=52=^7576Je(^(+8Nx6M zd=CyIXH5fOU1V!2J!%=cBiwZ9Piha|_ajj(Y-DW!7(5)1$h?Y`&M8=iWck40Zf*dD z2uwCl9VXINsH!Dfwlf-xDxT6&%99_ClGSV7A_f8*a4zxz-k%Q%2xb8MH^YcEDdkMf zz(G@DD*ws+&~`1z!jRGuX<LJ4FU;l9<yyZl$L>8#vZnIv(mI=v?Lwv_;Nt1R<6!YZ zp2jTm_fKo0<eVQ11h{!TpsuDVVh&a~iM)u%>XsgSHv}B$32;cnC+^UPK{5*5vBn1b z3~mmZcF(8U78)&R;z`b<@_mizqRj)%)ZUKv61MHoJ}zkzi#4;i|1MQ}5+9nMEeuzb zvqy&3VNo<gZ(DFMEtRlQ(Hum4Y$LUqPuR+s*?h-C^N>rj2-e;ai;XviT}y8_)x~Hd zlBQ*bk`^(k3e-!%Zbf~Su9;^<3qOorS!ie?#|CD}I&i?Gb{;fBbCMKZK3Vf%;I<sy zIx`g{%)kpE26|6kVnU3YHv+#G0|_D-9U#DF4@nugPPXNq-MYs~naAiEgVnYdHy@74 zp{iq~BF5tP#JM~Q@;St&1ux_kS-)X_7*Qhx+3T7_o1E;gL#szlw{j2~66?^hx(6z( znRxdgT_HgBE?Xji7fZH%mLWKa8WEN_Vvec+`RstYju$88qdRS=q!B4wy^-V+t9-D- z4p;uPJmvpSKGQX|@Vd$3Lm}}_st9+5*W6lGpN0(N2JSJE%*IAo$f2xN(S-CGMcPK@ z<fw=MKowe_&52AwExC$0RD{8eG~>$A&`1!R=q9os?o)gsA;v2y7_#D%#*jB)K5r#J z`v`KrG28Ym1>qvfIg|czFc^CwipeQQK3rZyv?nN0Db$=2q%I^NgLaPIUm&@5%Aipp zLP8}&rE#+CC4Vw<2YDJPhZkQXJ9&&gP7-E3Zo6;}I+)7)Tv!`v4>k@CA=8o(K&;uB z$n&98okl^2ug{~C{gSY0)pC8XOB6x^R}o~Un&OxQs|lbgjIr>n5hi?^iFqU7R@C<u z|46$amW<F**gwld8xk3qVIR~xQt?jpN6qO~G-Z8i61BMdyK4<>1Z5|5&)Ojv#zSn7 z$qpUXPFj|h_$zk_s4&3EtK6bAh2W(ti7T{h>`)}?;@ENRB3gN=3cWwc5LJK|pbz*b zhX=Y0q4+W@AYcw+a)y1?u1b<|{H1pZT)am2r$lqt{byID(VX`>`vy(R%{ANzrQ#3b zEJhKNsPoMHu0;>cu`Ijjktyb|G8XqE4HuDux0_U~Q7myui3LX0QVxmA^z{W1b}5_< z2$gM2EdQa5G=r7FskuQFBV03YzqD^ZQ245iAqKIfDa=!nn*HjZj-t-y0BCm2NcWLu zIzX)KvI5kBb<=a-@4KXQ7TbO0_Y~t(Y+bU(+cZH+bYMFYUVgN!<_ytm_PI$9#A&KO zT1<?*VPQ9Xc(uVF&PT{|Wi)A~KmO4J7Gad~l@>R{To1i79gC4{2)r30-F9R-)&Wjh zB}qzMJ6TOAup}x6@!Cq2zy+@|guMvqT^C1@m0*{8t`qAcy#&?FFUh6!T0&3t%{Q(H z#*<g7=L&0;4#jxD6R-=b#D-KE4T;iIN>&2q*o%NCe)JaV_EUSymhEkZK{KRp|HX6g zsK`i&px~{O+B=prm32^KeZw<^FvC`rW%OxYDo7dz|5(6#K;{TN3}Y48^BYZwp9eNd zS_kSoZuo(kHLPHXTq+-Ek>;{O00^L<NKaDz`DC#xhLlmu^0<1pn<EW=IAk|GrVZ?X znYF7Rsg9uExeS}t?3)DuPjzqxQZmYfm@ugaD<Me>`GzMoN4a#!h)_Pj*G(-3EkW$S zuQBTFoXU_rkZO5_jGLwKg@k*C;;*Hy;sQjJq+!1UnV2Do|C9!i=NXTyI43Hn@B2w3 zu^^^HDwNHgO0^ay94ll}2^zxH<|cvzoMN^OkP#U!Uwm6SXYc|KH;u=fs*&GhEG;=w z5z$%M`bT08XSQj2W)SVVt>l<vK?Za@&)sN3?po5WPm@(d)^{uKF4cNhTBws5l{yrk zP(4_eG9H5?Ge7aIifwm>4P!Xo5FkaShG+4d>!D`%I{G(__a)5-kF8Jy447=p?&Ibd zCXsPO2pm|({In1-=EVhJ;(IDCq4%WLe6ml#661`1*vdp-Cl`gq5Pp^UrBq_aAKI2( zzPrLT%3=d1lf`FDJ75kbvAY)nuCfv!gBJa<n}DaG(&pJSymS~x*U!gU`!HmW#Rd3y zJJTPdQ>5IutZBRnrRl2Fmy-2XC>WB2i73JqG67T$gp>C^1N;>NQQ2bNZh$^yMh(R; zQlC2Kh{pIPfF!U%)!}7OI{nJPve3%#f;OFP8Dsb-ZI!^AtP+U3#Y>Nsw;J+~lRm?s zo*U%u!i{JNT2)vM?Cg_EK`yBE0-cGF4m6^vJt~<nEqWP62JAo}i~V`sBWqR1$c#Yq z?*bZ!l;fXV3$Ql|3R5{1P_gE0FKuq}y^3j7b@YtiuMOd@mp(DCO``B(qBoXT9Q>_1 zEmT*hue3^3ZipZ!dtm*15h`y6*xq(Weh=V4uhZ#;PNo7B&x@~>$#jW$GgUaz;1(xo z>iqyQ-eX$lcn9F;nQ6D)X_VcEIRFj37sj*q#NDd`O5JZ)Vx<TOwT4=@6&hV#wq2Ex zsy~_<FP-hXkAjEu>4;Icn^kP^3MrRUE9$3kf0}F6N$^SvFZHG};+Z?^AJkMsP`uc3 z)VNV}tV#wo*$=dCflAm5fplEA=SV4~^MkdAa8+6+Hf<s*4n3WY*r$kILE)I3Sd&P6 zT$!;eR%qPu%FRn1{~RJVzE(Fq*%hN`m3H`c9MseS>7yw&G%^qs>GKtF=#A$~>c-zI zGh0LOVzd)R@=JZ=S-HnEm+@h2(5Lz>sl|6Sw^!ZjFz*3;2wK^ts@No2{is6_O`JS2 z@R;)~*IKHr-hRzhD=L4V`;YSY<cEW)g)+gFr@YB!O`*ZE@t49WZ)Nw)kG~#=D~d&> zVAMRkz(jkDYl7XW_?!bTY){pBMXdH86s3w3dg+{}8I8I@GjkdB;K!k~lYWEJovuIc zCIzqWkTqaFcFWqoQ4eaGu}tn{J7{a3-^JX5EgxGQOAGy7jQiyG>K}>SziuIfwP5!v z%D37ks#qi))O8JF^Mf&q&h-?A>Niib>ggxKeD{Oe60I|DHfr$Nn~@AuMXz!2P0;RH z$59Rqs0Ofu;at9|`;`^@rX^cJ6lK80=!eB=1jjWCnlICn+EJJdw#qQ_^pQV(OsZfa zM>D9GUhW5gsbcVeOU_fchJh5=I|hLd^Bn6CNqv@5sLwTc?Q$7nG9`Bvbs92viPu@s zH@TJULiM@`x|sF6|2g1V3pRPTarI7||7c>=-5R3M3~BXB{)lLu-=hBd)GO-YTsi3n zfEvh+lxKbQ;{03~uZXUHA*Y|ZRDC;}#2#i@2u+?}G6dOtomn-1sU4Q}8*txXOy()G zlljm|*=ak}3!hAw4dn(rW40k4ccV$$iLWBxERA4fN4|4#svu<n^UYIrXG%e^Z3NWc z4`w=%kiwK2Y=7q4VF(J2nBL1jRx<Y7imb$buc_1v$pja&Owc|%O&Uo%hY*smj*Qn< z)rDhI42ulU-?;g9a0^e7$OEr|F1R_04onr^rVZA(ESf7LB7tghOTC>e`4W@>ml2wg z6TBl4+X#3IFQ0(dQ$4m|qnwQn6T*h#RHs}uGWX_M<9?6FZ-s%iWNPnXS!EqPWjn2x z)E^7C>Cs)itNw2F1uc#5+dQ!BUz-byZhCXNoe~%`f?fEX9eojm&Gyt(nF`e2s^zVc zFrW_XWjLl%HLZ#?mK&Foo4~;Fff~>CN4(VzoaYqwON;#lel$<na1r3^=84#H71oYg zv3|y>+aSN&b<<cE@ayr7uk>2$c^FR|Jr)M(pD7NAPSXmufeVuRmgq#S_>AX3l7BHR zXmDOf!$C?%%K>2Fz;rGT*&JOf4%SMOaaa^m4f3EK36bjamq>X?;&devpOr#)5stCR z_`&67G#+t@#0Ds61XT%DGdXSoX%D{CT>ldD8`Pa)pb5cN0ja>Wf3RZ4$Bgswr`457 zOoT`x-Q_~3YP8CaqD}ny%@Zv?YNvK(2z0*C;JN!VwjxakSgg9##JW?JLV3v+YU*W( zFA}?sSG|o0SD-DKdLSCN{y_IsGlQC`iXSCJC<79Yy2cQX=?wHsOU?V}y=MQ*afK!< z9GidWnmU_1Y+UZ6eTU<<O4b|eV?@wwq5VNF5)Np7{wQcMyq(zmEyUwKP$jODn*g^e zW`_ObGve7VO_j<!s(IMA@O;|~{I(TCL3Cl_t)x*$G<=CYb9W$X9^=`uSM;^4P+9)# z1U#Q>468E^5!kP5g=%aWe^f_EBHNTx-{0leB+Ot%i)Z(RUTE5@^Q|G;52c<Qf6Ss& z76R?~QBrYeh%~NcML0b>RAbb8MLsGHBXAQKq%j?+o%YHS><BI3GLVK1w>w7C^h^XC z)Mn7#irNTAAlhA3@5BByAh@|T->D!Xj8T2e!je{8h)|XXUkwGrE>E`3we4mW@wjE% zW_}{N+sSAfN$scQEQ`yx#+-XEhWsg3PDEu_kk7KK%ZR$u)mPQoGTPv)dWH8^ngjJh zZDM2Qk2x}`ytMk>8I}?MaQsz}zpotB*KR&_MzMVD^Rb8QSB`amTIizUQ1YOvX<y+2 z3hBX&+AEy^0-9=i(W~}Lg;L4JTL5{~+s3SyO@BUX65|w-A2-vj4=_I6^{!r0>A$4g z_4&rjB&1vG&VD6?GcCKmv}@bQe#%0?sW#QAlj)l#m)J)wP$vi!h$0z4n=Y^Sp9^_c zJgg|$S403R7BkcDmeCOJHvhD@$BjPu(>cB0qu)Z#{pTBntu){8?~-BIJLYJ0nR&C! zFPBkXF}{@NnI$}1@fF3D+Z6rfqa$@vy;~=0$OmQPCoObNaeDMBV0tQ&kVrbonWYkg zS(&3%5u=lwFIj<99ZPPK28jKK+l@w{l|YPF+yWYFfq}>h?C(g&=vM}>%(CaVB6ZS! zL&4<I_;hOFGi*>Vb#tygLJO|ep@oLc6JtfyG(qCoHN9^Ml+&r>#iH8omd&4LdL>8_ zLi?BMelL?GMQ_nsmgL2kmmnch6YoJ6F5JSWyTX~dTDLm6<I=WfOLb)nHr|`Il;3?e zJC|BRJl9fKy_$sDsmb{Cn0HTZ6aj@@#@5%8+;Hu1YS)q#Dy@cG8VZO6t1v^LeVV7? zboUf<ER&d?R9_R`t6KjV_Ip{3=CLk<VxjHm_7FA(5DF~u*tfaz+L@<Ins<zA-e1`8 zK^@q<wSYxGmMq(me8~F52{d^37w~QPOF1kcj}CLo({8WHpsZ26)r`D)Kk%Kk3wDu1 z0MQlb^bgoW&+hb^);BgKyZk<SmOTqBZvD=n76e)Cw(!aBuPQ*f0M3$jg@FAw`F9a3 z*)mh`>2Spy7wU+{RLM}mypXosieEGwc};ZuU;XXl<XRabw|*|FQ3I~XT@sq>@nauX z!Y2fNY{8d;I2JVK(xKAVNqww;4ZHB?EOoOs3NmQi+e|MVno0}12ov7<-Cgb`aJrm+ zv@PoK6qU_uu+ll!$X|HoPI>wygWzaTm6&!ag<B}pvbH47Y4O2UC2rML@LRlVt6BzC z)2NAjSq%))4qIvb4NZ9JRZ@k1pFG8qnmi34Fmg_Q<h6==Na$VeDNfvzPUG39st)<n za8<h?KCL8DL(2Gi0Z|@=W>KrM)<;c;PuV`zy+<0tL8u(<a#&eSO@InzYL_ob&<(Ba zlky!z)4o-bJ_u;;6O@xx9mQM1Y|yE7{`VhoOzJYu-l+xHG<xdA0oQ6KLDIsgHF%+n zH-HKSVT1Z2L{KhCa1vfQ<*T1%BP>z>XX4agRN|e|Y_5RFK2e+46?P_dIYgRX53XH< z-vfV_OVn6I(T#AYt8?FTM0o?>N7CipI(m0gJDG)vH4SRMguL{7p#RU%0f1Ym_=YzA zxINgK83^}hA*xugb&c^Iu@Onkzq`O+iDKAs>C-%QORNG-Twh754Q2I0=a04+>?e7! zusB+@uHjCt6R8*TX11sK>r>7rbO^N=AWXADiyS{;hD54DO-r5HF%F9SR9bh+#H~x4 zXJ*2@5&)79&5a{9djt;&dc|H4Oc~F)fmB-iXU!B1X%P+YY0&(qu#{Vjh1#z{!YNr= zW`LwrcvWe>>VwsRPh1TJW7Uz?aZWvZF=%Ok18nEF^u3YWWP}sOF@u#db+aMpGTi13 zs26;nIgC+^tUQ@0<t+c#_9niSicZ8@qP~r^JP9k3m3v}^eBa#p(e4AJOjtS_F=9n& z?N~^PNmG@uSx;Q<;X-o!<YuzqX2o1S3iM2wvLlR1Q)zMymmdd0QCZGZtj3p(e7KAk zmxHRBSSi-sAL4FcT^`G>rCGdafHFa6Z98jj+oBO&ybPP3S3)c8?3Oa2h&dE*+JVw~ zcc`ah>Q$a`Wbi$5t+ij?sKZe_(1I;AA%@dUYedgkf@AkteGl*4g!Xamy}Xl#kG=!7 z(<*zGCe{?uRrGDTF8oauGzq2kRaxHrf~kz<n}<Xe8#l+54t|N79!g&;Y|Yj6Kop|m zbjE_KVB2mDVu3B+RXPQ8u(;@t_OObUosJTvuEJs1jR4O(am5Wn%SjM`K+VG|F6(BW zfJLL~>+KyAA^;2k)@y>KL3MG!4kXanQQSH$RD$CXBI<o6p?g|{-mi;>5I^)oV?V6) zp=Q|vbQw&JDc=Q27=`8##0@w2Y`#w5ejzfRu$f2$*G9Ss67F9nY6TyPtFHs?+<%(b z;4>!6Kwo~I1Qi`%5q03hK-;>!CV{L37F!UORNtC(G)?KYzvCliG_tynE|QUef3qFO zX!pCk->F7vzG50RsFvH15293YK0Nz<uTT0%7qy@7riO0>W9<s`W)fi47WT&r!AQV2 zq5=I=`u9uTg6h6p>wCc+?$)Ho{0YNR|MX#D;rXdP1&NaJEz}hTyh>duY<Z*EJK|A@ zaGVQt3tDWDBx%sf!gX7o=EIxYe~P{BeTukke2TN}d5W${pJJ+2%5?f8v2J(VbJGoG zB8ZS8pT$T4-s;7XksGLjo0y}_=(8N9EoKTBJPD78-a7dkCAAJ2Eu*Vm!-l|hC8i0q z)pG{jB_fS+=_WAbJaNHuQ^KHo2!eKV`_<C->{icW_3Tt9sKSd@WU_Cf`4gF@fmvx& zcvOZ${v4-;H~*jovX^n!IUK2w90<UMUG8XS;)DvBQ^!&%dz7vra#;p5I9<R+nOxg% zmiOFZ+=$f&MI~CZFR(|rW(B-&4D&pvcPO>+Fow+HhC)(n52e3q37l}sWrYsdxme5E zaqyFA6pVN;cSI<pTlpUxNQuU+_u78mcI`}qXgb`ipT@oR?~lVUAoH~mYmM#Zp$l#R zs=>7X<R?%5k-cwR-(={*arg51k-Sljs>PtE{mM{)@i$Xpzt??$f!Iif_c6c<4|WHL zSO#1O+%p|L4HJTUt_j7DK5xS?K_Wsrj`n*b3)W7h)k%Vj%7W-nw_Eoi@DaI3Xz~lm zLUEMwF)=$^Ah5wEqd-qH%Pq*~HO+Z59ipgXD57CDxzQE+DM6bZRs=A~uM>v2EpeT3 z9$jU$)M;_G2($tz-d6~v6d&CEe1)A_eg#8*MRFX}RMLGa@>EdSWY<k_>-*rr*25{+ z@0v;84XVeVVZkpeBGLr?u}BD3iU>b2ORRbNFMod~-LGoY^DQgq72brAaX@tuutuGv zgb)2^%oQSK1Wl$Mvmeb`Sn3eo^~ccEHkeHY$Ot^fRj`wUb@vd3c#K{~Q)eg*5CyB9 zRQ$5}crOZ@K{53Uj=sG1PScM^k=$-4=85ulqzcK%n+9Ru2sJ|B4}PR0x;YhM=z936 zqF8JD=Kh3f+fPbP|HQ<iq#-MF@gCV}GUyHpb{HaW7fd-I5%;9j)!7p#JC{MeHgdtk zttM7aLc)-CAJkKO1qo@xv6{m9T<ady_@*Kg;TF~H&k5WXIGpG#*8S}FlV*zm!G<;w z(||Ecb#@_mwn(03ga^S{?gVEu>LEcz&W`H@LKqEpT>fGSGEAn~sS^mnPPUen#RdVQ ziWdG|FojPtJM4#1ske~*bml=D8Ft8*3kU+kUO}`)K=yG9qgM6*QjHu-a?SkdRq_c_ zFC$lJs9IS|ekwE9<iof}9PlQC39L9^ZFY_WYgcHSJ07UZ01&TUrCelHLqGP`R`Mt9 zxP}4P!~~wS9i8`(5cFwyFm{|*sYuea7-*6UZaaSW3MW48?CA!s@a7@LoN>G=>B?%t zsPAuP7z9amR{dLf1Xv4>mO~yuO5O_SCW0cAT%1V0qDm9qILXRA6|IF_g$fg>{Ha&1 zQf!YW|Dsq7cQ!$J3s95Zvh2VB?hdG)QyNj?Z^E*KcA5hV`?y0LBgjFH9!Cz_B&{w- zSo-KjjuPbP0IX3CQT&9puSAsgHmb^q(z9HrJ)2_sOEBIPP+M;6W!Gb4WmduZzeWt^ z_bRVNvA`)r)ih+^Rb}ngw`E5z+-UR#d-qH@W}nBJdc^W9)d-!Fa7olgj~4WHsyE)Z zYy+e-Xk@F8c6Q5~ncM346Y7iUc-?4rRtt)zcRjYzFKWJP1`$e81zR=13k9OUc-UrE zCj+sBYKHo_mJ~N^q4u$gG}!5t<A4eNq1N&x{6=KHSHYhuCZ!V{Ctg`Ag8xt!Q0G`l z^Gg+)j8{};T;->cN~ePB@$GK`UN`_B3cZIK>ngWB;1=Al(VE<5Qlcj|QW4jwqH5?W zvJ-oz5Ez5;opn$zjg!W7b(uc|DMcNH)dfVb_*TFAcfsm!SAVzq`$zsDZNAYR-Mv?0 zOVVK(;_@SJm0=BKB-Y;Fq7VrXe!H|6<eW<2D(Jmv*UQBI1miq<E|U|_>-^5rvk`@H z7KE(jzo4f?mATc2D2edw(~)^;1Q<uJDQE>OOftL^%|u#emM`<|G!#~(VukVv$NOm} zf&3BXvAtzYKxbgNih>ABebxod@VH-L#GKaGl3QdMvG+mGp9~<Hz(dEOFQuy8&fuxL z%P7}|Y`c;+5f{rvcTyp;VY)lj<67-Q0Bt#3iT0)1O$ged=kNHXW_L|sfonX#Rt8Kj z|K0?kJXFtvm5D>^e`C+To{)D9=Ii2baT;zmFS|mk(ks1U`{Ob~W3$LMl3JRWQ%q(o zcXgh$xlkgUJ4!L5+)W~0Uy>C>odUp|RMA4g>xHtY7)o%1N<VW|n=u9BKSvJe#eZPd z`X9zPWI&Zb8CF)F>%RvB>Q0;f+6hXP%eCfOr)CH;b153>54q3{F)h3xtUycV$uP4E zaX|q#T%^4=_Ooc%)w6U6lyx=>fkrA;TP#7Ho}N6{<ip$@UqS<Q7!<ljo2`wqcn&3? z9Sz(qYIECWUlE|uRSDS7c<F+C=!mDOI#A5NhR!g@t-owBPg%hhhySRWy?sbt;f9CV zeoX=8MO#CE%DY9c%qy){08PF2GSW_EX;7#ZeA&8VV1>>#!|orO>(tQ7?o^Ym(w1gG z0j95Y3urSfc5sooz5_Ly?rn4E9`=Q$D(3i%b~98=ZN`R`l^puFT&<TN+k#I3Yqj_j zg)fRs@`=x4o!;g%Yge7dvW|mq{z*0yY~K#pg5g!T7*FPCc#iYDsAiJ2&!DuNqBEmm z2BwxV@Dy-bSKe8GFpyoB=ZI<O+(EoXzm?RM9PZHq`i219a4I0k%N5WG&s_G+<Ka8Y zl62!1E3eO1>Re&JX1CQM<$D=>S+9_n)fir1gOhI^J2VRTFVTB-BHHF6nxp3negeCu z;kR_HwSzyOY$KTB$PT=KQC}j8l&_d)z+78x1*Wt=?q{Sq@T`}nt!x>Bex?cYa2-DF z4phswp`LdBI)mOWsy3C;MI;5p^&FibCp%FMbE_1EYRFq)2bWJlr9El=5cWf9Cx%v0 z$3~T2ua-vFZdCo`@nWm;W75^m=PW1UZXREmuuICAXnTjyu=XhsF0O>n>xf_5nHS&c zj)<%&YSWI69uo$0fs7h7V>O<pYnq1~tr#xpP^OXZ6ZoR;Kb+q3s%<2$sT5?FM}qn8 zxrB67pl=$}q>~g<O>Nq~^RA#+U%IaQD5X>kM^*~yr}W4%6<L~rq(Sy5$RQm$Znl}* zc&eWHmNqJaOA3yCrRntDG^CUTG<B8se;X|{`($VdE-D0MY5LNfHO!~yRNYajW7VDA z!{P=MHySR>TP5}f<Y-PkF9GEx|Db~jfM+<QLnQNwZ~*bZtj*L6MFkK_36f_-1;$hN zVc5AUCYB&>V2qghsKjU5ZqBgXW&Jb}RDb(Nrx<2oj|@Jh%<=3>D>q?oO#%~J|H^M= zTSL&<Uf0SrZ6%(>(SY`WLuv72!5vMdv83^4qmhn*9e*AA*8Kp{I_vo6fwtV9Om&+) z<Lw0!lyaS-)p~kPpAsdV`qmQar6*EKP~Hrgfl-Fp7}<}-4Toea5zP}X3mb}7kv9>W z%KkOAXRQw4rU0j~Waz(dm=}7~tpllPS(5qa3no0XJ%<L#j@uaR<_^4H_&A<UPm{Wg z=Xo+{C->YF77#p^mh0imHRe(DZ%4EvjT89G&33MqU1-#|iD1ad%l+AvpT)tTcQy9< z-xCha@h4q4s9ie|J?cf!>dpRSanXR>r}>8xT@@4952xkBHnbM3uN~@9R#YMEfRBd9 zMuMS-U0>mwb5yul|7g<Uq6DtwQ-*(EelVqpI*3>D1=UK~s`;a7r^e;R69d(OyAJlS z=8;>S;+YSWJuuBmb_y1hr{ph{IPY9#r41)ksV-0vtl%}LbWiO`lMfi<E8vN=`~l(Q zZI`|);t(mQM=ROcgFI!0kvm!`q$SU+iOg0Zs1>~xbqo*5RtyLxL?gRs4)A(Y0D-&- z^2M^YF2@#_C8dt8Tkw`M8i#;^?~8IkP%A9PIYvVy03m^^?69jhgH^Y|vV!-dL$)%- zcN#Xu%{L48hMNU8<0|4rS75dUib9kIQG`Y9EZn(-B0aU^1{JdgiUYl!YlPUgs!sH> zBRwf#-lGNsR54nX<*r{f*_;0R1>&k0N$o9tlm8vYi4)@0w61S%vc;`C53SRSPCqeh z(5tXw*WYz70wrM5iZ>#DiVm2Cyvod=jE*uEn9h+Yk^&c<eMsGN)<)?7Z13^s&9A;L z%lKibqC<jLi9!M*X^?$F-$qA*dm_TZi`SDp^6nJifhol!DaxxkKm4|A0Ab>M*;~{m z76U5y=iq|naw5mP_ie)Uuz)RDHqD}adEN#rN)4&&#Wvz=9o)EwnbT0WLY`PLBC<yz zI>%I^p(>)bLn4C5&1goD$1<Y4_C!2_oE4lz+#9;VFiO&6a@UES1m36hgJPWA$MkLH z)(efY42(!MJl@qF8Y+N$`0Z-c*|EjhCDcq+^s7U%@ss?fv6i#zmD&qgnxx*)6jwmz z<7Ylg@oS}Z1p$y_a{kP$c`thS`pzdR>`W3lb>COy&;}oWZ`n?ms-M5fcz@pbw{a<S z+@7J_>Z3H)nAbG3vP~$)Jof(5IambRh@+;6x3v8Pwp}$L&C=0Vu}187Ij(xp5SBe! z3xtt)PaoQ_DcK{lp6L$1vmBbQneKE>PDKyHJ(a?mu|L+C&gq$wjJPOkSqt=rS^Ie) zky%plqX9;Tj`m5drL1tfwBmLxPS{iQ?HV4a7%K`!d)5Mb0oWY_T=u+_F&?diX1v?P z2D}w!KKT4Fwh}!vO>;1kbi=gCNrEkvFFL(+i^xOLU^vjyH3;<ceAI@8_aM^j@I!1m z&38L*w7v(=3AxGQJ=fYAjN!?HkcDRpo05iUWp99O9V-`#%)!!87M%Lr^tR*D78p?( zmdaJ3cy#LBNeC(`^6tjlF+1KQKQZ=IxmW9S;SU@{W9_<0UaK<?<M7IZg18wH<?w+F zFfBgWq&4&nWxq6TG>j<AaYC)R-~lsH;7|IB00YVDEUq63Tv{2$zkM2o|8u2LD4HAz zqGMYMlHMk-q*fndOtG3;`5Un^1U=$=G!yZ^p+7Eh-`H`dZ0I1Yf8;nh&L6EnX+_r` zL}N4rJn({lz+7oF3J*YK{LcWNWAPU+9`q!Sa(X#rr}GI@hXU!Y`9dAPI$Bn>OG=0^ zY~ZSne>Tx;10yj8j+jsrfE!VYwe-)=J6u8@KCtGRT&v)6naUjM+ay|KPa*UEkS49? z?qIZDvZd+Dmz40L^Ocf2ds**VX(uFW$bAlOZCUGiZ6jh5AL|(&6&001n)D-FKzko- zQd?CzZMJHkYWH^5dQFH9=NGsiaELXJ$gBp{hm=0I#u0K$KJHDIk=hwSvYbU%>lBDu zqi2^=e58^X6IZQ&a{BFvoPR4?Z<10|Hh0$iLX_qn2X4bG)OGETvrV1kT2R~3hnQwR zCVI&tPa^Bpzoqvv<=~`iv{H12w}~DO^pPZSsr61{#aQ?@7M>!0iyC#0M*4HLla6lK zf%?DzL8(Sv)5XxM5ZG)UL60kfG;r~WOQC8yvb4;62P?yeNsVXsXgBcI=Fpqvt=L=- zFAPDN4)mrXw3MFsmfaXR&@XJ3n?yiFJO4Q7S&l@q2N1KA+&h7rL#pZuJnQm2NnumZ zNKm1fsFV#M8dRxVE4evd{yMaGcHnMJ$uku|D%~TJv#giqs5TCF{b`>nY5so#3~PYP zRrQ(VAzsB?vqD+2Bn^y`rT-GDNNtV|Ue{Cp=p)pw`Js5JnF&5!k&dcAyS8q62na8> z?MT$fG|y>^73`X+eC%xC(TCebwPNpy|HCO4xnv9Pk_xCa)T95y{Q&6ewg@JH@+i5% zv!d&P_c{iK7Y*?}lw!B#2$X%f{w!NBsnr)TZeyzQDRh6})h>@m*x-tV418B{`CO|# zBHksJby=(y)WQ?zaZ%0(I?Th8rgMndHMmZT3DS_<#2<s%m3EZaVWF--=1VY<5<i_h zSdIg)bEg0!M<a&+HU8s21ghCa4iD9Mh4AixhXd>bG3Ri96v_iytU4pTp8!rkvA;G~ z()a}dRZgCIMle2p7)l;3kdVEGTu7vjg@i<r<x&c*OuH+#oF0mC87)zie%~3PgORy^ zU*h4zFfH}EtG5XWUMts~9%UMNADoOwezSY=3s9RxLh3@nzI+-h(7+%Wktl~Xyfj(B zPc0i+DrDhVI0-q8b8ARr{4}$1gNO_Ex1<#AnIG8pf5lb5;MHLY+?2vN>%bcwSeVg} zJ!pPu7coToQR+LB_4Cp%l5Yj~zwqi??+5{)72OEsJVr)*<Ae%0sdvF{UfrO8Mz|gJ z^<w*wyC}2nY9ybDK3XTWO*(9d;j=)ZdgKh^=$25Ty4Q$jIdiBM`r#C!<YUfWM4wZT zSl)^K+j&uS-PUnppKFPD>B!Q=dlsE<*;Dy~e1lh^H?W@6wx(Ro(nh#exa?NDry(zs zPm|iotW}r;(R2pbVB4Cq0M^ngd9wf+*ia$5`SFKHjD0Gc-X=^*;caD@!LlLtFXpHL zuf1qR!jZTP)r;2<Ov!6z$Ad~Z@G@15P~z3}Q9?@eT+&{bfewd)v=<KoVJkoNR!CFc z4uL$oYTY@Iy^8%lh)=k~zzqOLy}9Y?RWR8`rcD6J09QgPE*EEvZ{vn$L}F*b9V_RJ z<~fjR0L@21j={5Y)^4UST}T*2F%eetzq5;>GRXuI9BpdhX+jASAixMJOsI7sCeyQh zL@wHMj0bc{1UI|;wbhSU=uMPzHv#xm57r5dybc9htPEkxLrF|f<3F=Wn_?5hP6Kkz zXDw3~U^bEG@Zy9QAJ=0RoXQLHlpt`HFcV(pWUVjFqy-w0f*>WW98^n=j>2oAIVVl5 z6`y&NU+3<E=U52*lZkdrO9NYhHu~wPdiRdNewrbJ0yVf=HsUF+o~_JC;oQy_G`!Y> z$Dm#Qr5kh|1?~?#{AL)6YPaw?m7LQn8{T1Q%s}y*i!3sk(NqNadJ`B)kAJ4W#Gd{V z^xLasPLylB$sBJ=8>D)`8`X;&#+C{1)=LbgA_h4<v84F>uZ~01GjNz-c`DXP<}o^K z#JHaBaS7q@lMDeswJ6bHeZLx(1)LR18w45-UvKdIKG0B%t3N4k-98CS4$-!^b&GH~ z0~Q0TD$FKCr5H#edTYU%LLvORo&tjNV~W#pR((Y|*u9Tw8@D3*of(=47I+QUa}zup z*$ic~r7iH;WkguO&U=-y$sGKx>K5S&s<|1YHT48L$ecJ3(B=R|{86z9!UGPObW|X> zKO_iiO7*;Pa%;H0+<Q316?H!|Gf(z}`QD3-!+y{BgHTq5=Ir^b+ssFfEHZ&CJDf`5 zhPSR&4nW$hcBl%kJ0lduy?1^pOkJL0D_wscbsu6n=n6UY1rncVB(oG37hEjHl+|x& zj3}AW^KZLdd@7pk{#FT<b?=hDez@(b+hI3QrB^<EbCpFrg_*o@t5SJ)*PEq@dnywE zQ0CSmSQuP+cEf{DGd5U>0XX3Osagkx<(2018{p!$Ww9g*)G~l7RS#a8y_B~cP6G%e z>BW#ZDXn|h`M*dAZE)=)pq~ST1#;Q^qWdxweSzJohmWTWll<As8BHtpsKtIE=X@YB zg~rP_`A8rL4NQs_bIx~BZa53jOy&qMpdhK}RoLGu1%6is)@8G>A)ZEW4d;@fIqP+4 zq3s4hQ2CE-<S(6*oQAt%9AZs{t&T1O_&fxyZ9>NsPF)lQG}<seEl@*>apNhQ&=Po# zH2kzLEhOds(z;v!_*W_-m+^OQG)MdhbDB|}Ea4Rzm%?)Z$~c1b0{ctkQuFD7fznU8 zMJ=DukuzeeKXH+rhsH3bjJC}MB^H_`2exJCNGO7ncR~%cl(s0eo}lXgGy1MejL{V6 zeOWQ6jjx+`x-mUfuUaw)l;D!(CYI#%e_M<eUAtmaEn#fP{D7cXzI&U|ShKS<ZJCXi zqc@ACKwwhJmq)v{h89SF7dc`dGM^K6!(@iwRQDe_o_R8Nx^eGT8yIU>yP-$N;wXLV z%6ln?Yw3-+6QAB@y==|9oV-5NTxz9%7p_ZfivdcSXOkwWi`>+}WWa;54tX&zC#JSq zc3K5mL%C!Q#XAo^ZBwOHZk23s($Ls-QBMxQI@l6E)(_ElfReH^4E-Uc>VfZ_5sG>Z zOkiKD?k0_dTSuqiqhi662%VZ(QXzU;l&npuRhf<EM?49nDb-^{g_oXGWOMgKKk)>( z>A)pn5x9uxUX2WoG-xSdCZ&*{2yUnbi`Pku4lWxYNo!R#;kOdY{>%tCl~iCoO5+Sy z0Yv<29L3NIRu!I%Eck(Fng{1`doG*wvFjXYe?kNXs54|DX;DEM*&9suY$bn#qL+Vl zkbi`THa13d@VeQfghBowio_{J^NUfNrm@|G(*#JlJ$D!Ih<$=V$wrKzrFvg|7pBt& zBwg9B@hTp2NTPlOl31s|dd~Sb2bpMrR4F=)lvh<4S6M}sM>K}vH8Ma2X(FK$-R<e` zh}R<RniCj}!opB9G4~rM1x6GakNnHa2|b(R*#`CbklUFg#~9ZX{uR0jEnCcjhz$3o zxtYetv8<Ty(q0kzzuwuXP7lK}v7{dLzC%Zbr3Xv@xtxY(X>*U(*l@i7piQWugu*|S zZ==p7-G)&f=nq>kj@?2l$zcmXa{AP|iebYS%$ykw!5AhJ2<n)h({sxE73Z@J#r8kI zY~Hp}ta8)b7hf783$1+Z1+#^t4*=QL$+y#PQJ-5Vpy*D1>6TWig#tv8z2P9Htl2R} zxg7f{uy%9`50pQ{A%V?A&$-S1`s&mhGXo8a8#sF>x$-UxztaIfo5k{YD~wOseC>Lh z5v~fd%tUKozcPEMr`kc8h<p9g^AMR1@BKrWV!ddF{K|dZH!G{zkPb|^5bc@2(**AA zJU;MJf=w%pdSxw>{Q?u9zcuH2`-XK{^JUWQg$T&kVRW;hDGtWFr|HU3Np2+iBx&<1 z4bLcX;lQ@1gcXbVkL3$hY>h28PlqR>T;dn>-KBmxJU(N{QpxV936f9E*5f?jvA6Rd zdwrz#KJ=!Cw?;c{R3l;`5Z6Zek%3{lCqyukk7Mv#3tBcE^h5rO0;KlAojV5~z6d4y zP@AZn{a42@PZ3nLvEuCCI{i;=q<DUK&;Dasp;Ej!th4{BdbRMzD7c#7(HnsAN(msO zJiakI<LuvzQ%u61D;WE_+(Vu7kuM|S_Gautuh{<qpK4Zf6Ajl?KY2W)RK7{4L7C!R zmNcAcyI~H-u+N5hg!zW~@JKs0w-2MMzH?mYv8reGCe-OHvZT5ouI0<D<LqqPDb=7u z9Xe4WPzvubt6fPQbUoD&joqy7i<%i5Xew({;K&B~(}$1dyAE?!7G?T&lY@o4N2~ne zMe9XW{1;uH2_@4-w9mhDe3mMjoFSS=PapEGUNlwRhQlc-oYC5*?eKAKU<<O%N}F0U zEykI`a)Sal_hCfV<(|eb@VC|#BA73?7%Qz$?qKWlD$o|g?Z}VbGmp5GE8w%VA1`M< z&OBC@(`i2J;b#P>(s&u4g3RD|Nn;M_HZm6XqTuTk+t4I@kWr}hr~7pjrlW;_PtsA? zuirnOHJ*m%%579m@OZ1>gevR3EN9WHKB3Q;Ir_?cj<3dxeh=)~S0y>pN|(H>wKqhJ z8@KS_%!j}cZ_d=-3P@DY=iMU9$HvCAdt+hmnOM5O(puyh7xiQNJ=8%L-F)<V<vYN% zYy{u+>AXX^sImTT^VIlYmrb=x(wtE$m$J3qGS9#gJ>=D{KvYvQTP!uKjl9L6(_PO5 zlQN8-UQwLI8CCj+L$ida7C&6{g`Z^g?VBrP`ti>;)hiLWn)miZJ-X@$U(>SguFyuo zI_*W6Pg=tcD{c4=f~vnE$oQTHECLl*hgz}gNd~MBT8HtDO29m|pfA_?<c^;-V2IF? zdo9^IdCC-8g*-C5{zMMz!Gud09F`+e4F&Z|OarvXnKmidG+=c)iEY95Np=lzOxU2R z@jC`Yyq`k)QT}v}Rl{3+{HQ=i+*Rg+nOr9d(l-5Zw#rZhaNJCWTwuDJ1Fl#}0;=j+ zp0c#)qQP?bScM`pdKC1r+F>By=i?X5TIHp<o#{yHyE;{IT2(YHkGISw7tcgVR>|2~ zNciEywWCSpdJ}_ubfUu|<Bi`oZ#xUAT^dc4t~rXcYg-GRjlB!+AFvey$sD3_Jas{I zDZt#`Z4ETinh<KqZGjC81sCD|WQ#Mg)VF42(af`Tay_9I-iqv_f>pGs(MVyYjt^`2 z_My0$OTqAm?z<m<#20F<33UIOD#AOROR*8l944mI@K@@yc&F4%IfCuu7WT?Bbc)|? zJTH2RXgp(gG=$Jw_yr>h7<|ka5%OoEp>^H+>8?u`x$Y_;a;u*ez4xr~df<4ohgz~y zwjku~LM0vW3(7&u^!suVw@Bq?>&dtb>lhq6X5;MYva2Hkud>J6q*G)$1mPn1LG3D~ zG!J<|Ij3wD7=K~aD5i2x=m=6|GG(5|KAT&aX_}Lal=WQHF4Q<~f`FKTTP$_s*p6+h zJa6vr6E+#hSIMc0>Q0o{%a_kRh@ro|)9id!$f~;#d7&DdC#J(k4Y}(~j&}sIy+USd zo~;=iA}rUD*@+grIc76<IX!mv$(j*8Q5VcIQU#T-hgYd2j(2a2Rqv~HYaRp0Eiv`) zHQM7gGJ^cN-tWvjafk+1kiU-P`!);F6$vLK3@H789%8&fZ&+k%KjXq7$Y#`ES`eH; zyxAahPpEQ3uS7Im6MfPTkf<S#@ifeUvIeZ7UNoN@mOKG2Bm=`MF`lU<hSU}%H(15< zc(kZ}c;7h=hih96YH|)lF^Y9U%g3btmy}9P<w$}^187;Oy#s$@>u&7TQ$4PwW>R{u z?-vh`4_Q^)y~xaPieKW)`1XsBx5K{_1Y{Sf`zln87y;t-`}~*x$Xh~sS}83bPZgVA zgxy#2tKbjY+x^I4!iYDfba9>bCGJ&T!>{FO5fM7vO4C<>OfU*pi(+_xG`b6Bs!un0 zZjB+~0vu-iBoF{0HXXT*0*CQ$^>JhWi;Bj3vw{ORJ9yZ}5e9LtB8L`Yk0t0RAjTSY zh~J$lvChtsl4ROUY2RBXA&k1oEpQwg9l$=0Zw;ocbIAjge-vO`xjWNluuU%E2BiAH z-Se_ao@#ury#aWl0jHVkil75T4^F-dLU3Ur4W6po8p<(hLf^r0vN9mO=oE)m(*FJA zPj<hiPPoSNJ{zJ^z(TZJBcMb%3w*jR)dE|PHpi$sBgGcxKhbf!D9tZm0ZqW{lSz6w zl-pC@C!B!=<kehI-0Y*fH>ur1m=79ClkYzqLQ$LIEj2917tLR)5C%Y-07>(?qB-2~ zQ%F^Fjaar$mw_7$SxyPVMO|ua6V}EHohhVa*d!daUce^3pMX!O6?;A+T~}PuE%D}x z<kn<=*n4fC1tt*_&Pd{+cV4g@=hzK?)3A1kb1f|{JB{a!*5#EDmlP{Y43NxdzO|(@ zqyrXiuv{<skukBs!*t~;`-rP_wq|+eTyF$XFmcr96_-jK0vx?UP~abCgWm&Ohg(UW z#wX%jdY6?z*O1*O=3}EjlRV)Reo6El8PJ?B0x73K0aur*TI#g!2{W%%9eaj0A*dy} z%z&&3gX?AWDP5EF;U%7en@%|#rMnXw*k)3<>>pXA#^gt#A{n2u-5*#bS=K(x%2Ij^ zLnEJfuydU<xltQ|Ji}i}t|t`q5w^kQtFLA#tk8jwVxH^~K3ATFS}n$o=Jw&wy>@?p zQkn|uED-G{nw|Kz)S+w+pz_$9883D_V4MdxV@F+CHibTlyXe50pD8Qc(JZ!}Ckmh= zmbo^0kk!QBSk0E-Eb6^`8w=@T<V9*{vF@s70Ht2+p)vFUVDJK?o5X<qLi0SEz9SuA zbh;XItM91HN#4s=EalJYkBZ)7*ka#Jc(MJTKlz*2)C~`jAk7)0IpYJ+S&@+RwoXM= za!z<`7BFMdWx=f6cz$AT$-w*EFt8>sT8m~4(+&T_;GGg1vxtY&m&g3ARbfE2Q`1DY z6Rgaoh>WCQ^fbqdJ3(5X<-i$`P@2O4wcuD%2uG8l)`+sq_lfrn2T%4LP!73uvulQ| zvcEz~30T`lwGu!q;MN(s&CH3Csh4cy5rMN5)r;~|bv0c3&L=&L2P%TaBz{cx^kxs= zL<qNQUH9kukZV56(UyNI16OT+IThsgGAiH;tN^syV1^wJm9QyM>jYPBZnnx{Zf1=C zsATc0KxVA9?>(Zw;sWL6v=65VHb7rsJ_TiFA6_PPhLT2X%TVGpaa>=9o`6lQz<4HA zxs3*~W2-I$_mHy^ZjeZ8^PClT(~BFyUD92DyIg@Sps+Sseh&XXOp|oJyCQ|%Vg$PS z&<PRoP|k|j(X{^5yc;U3m+j}#<obB=E$|N6%XbI??Kxk&>Q4mh(Ci_%wY~b}zDt6) zvFWI`g}{Tu)g;0%eQ%)`?U$~Tdfj2~w}G%!y;Kb_Rj9Q;9nG%l6S7cx`rZsViNi+D z`G@jVL9EmtaZzaq0og$oo(yeKkL32Xs?6}FsXJW+ySryjPSTww)_vhKaRG^mPl6%h zplDQH*rPkz=Fc0tgvqMzI*RIB^FopTb({Vk?K_;~0@sgJ&f!xy!|}0T5$|gHow_`5 zG12a0iXkJ*M;G)*G<P0ep>+~^|KO7fr(+o0v2Dse0uLaRV>X=EQaLO)zP}c>lYnX* zD!?5>{$!!zU6!_TOSp0@{R_7(4sjk39fBQb?%1WjIbRtn?5PjKJ!6~DR8QX@L95_j z;R)MfBm=?JjXDa13~Ft%lF;2i;^;~sHg=9q@jl}#-)-vyR<4fUUO;q%4Z6#NG}=?D z#E~!V=!_MP3UbFl6x2sF^-;@wkE$oCEuF9JEUOpynpXbwV%~CDJN^SIYt^oe5Rpf+ z(h~)DAIXGgl{Py`c@Mj|gJWC`#N5XpgV@zw;-d&lsVp2X<GAcsv9<SQZAo7c%qrQ6 zl-|aQEv*v9n@Ua9k1rn{q1-|;(HSf7T+mK~JVX_ANPZ9$+Cbu0v^Gl+jdng=x$Ldj zVZBgycQd$?m@b=mCA)8AoWo?I?TP(Q6yEbF?L$=v(Q83C_{=d$bRgwBg(tDaQxcEI zC=uJPDhlVpPcFWa6J==^oHUVUqC2)|e(FzU3|c3ai|vyq4acuJ=vYssB3Ua#W!P+j zWW%Y1-tF0<@%E)vM|X1rwx3GPbuG9;CjI!WnFNH6q1@Z*3kcjZ?`Q;$rgKL#JJY^< zbBFGE7k;}F!dT&y3m`J}jo6GVHLQ{ljxl~bcoaEM2_dPi>XMc)c37K>-{pAOMu*qM z9be}OaBG*ka;IL(t|!&cAiDB|ZqmF#pmlR|Bm1a#oc4K+yU2wI!yQrO(%4^1Y=`gn zIE2=*Ka-H6fKaSKXzveeJioA;*ekkx>Zf8pAJ14?%jGea%0df)IEo%wI&;cxt(@qv z|1krB-GO}$wU-p1_6i4e=5)F!wK}%c(eP@POJclaW!cCb-5)+&!ys`KphIY~#$C)L z9X-CO6oXD3^%i!@Y~NZ})t<Vw$|?<xNpuLd!%VmqlMeP*Pcum{9NY40wpu8i7rej$ zO2IWx^*)XRXw<}0TS5KL#*N)<idYMQEzf}0zL5K-p<K*frQcN?_!KKmPg2p-ftNqj zi!;3d2UfbctGe!#CLNZ?ebZE7RKabGZ2vPMY)HdgUJ~^oWH!zSW~^hRCK!vSX%AK$ zjTE3`KSfrIf%RxG1$8_-nKcgmbPT1+r5OJ^M+hCCH50bgO$34<o%g``zdm;DC51|% z!gq#>Uo)GF%k!(T_VJQbC$siOR^{Z7+N3iu?<Wj<mC|@BwM}bc(b^kkCqZwhG(A9> z|0?cEcq}b-yGLw{V9HE8&vQl_{`GDqNWu_t&{YZ==AQomK|pA^E|C;em=5c8#o^d@ zQxMC=>|Eil-nU&0)eYsniIs-5$$t9Nh~hi+#Qb9fou@1)**L~EZGw7h-2=cCo{QoT z>e|;JWK{6Nu)f2?t$a2X5My?ncDdk6Yc&SAtZc>W2&efP5kmoTaplTIGpG+^@geKG zQF7#b$>@>VzL8Q=8+`o&pP2GB!wMfHdL$Kh47mS<YlG2{)U?s%w>~D7_WdVi5119K zsgwyud$HGchmjEs7AZJ7Uy=oPmX8|QL_8UgW;46T31rYYumO2uzK-J<-qF#1h(Oo| zl^A<+;?<$r-gw{op!G8xU+(gEa+Omf^aM`U21EyU1iEwgQ@KheB&JJr&N7zIRkCy3 zV^QZ2d?y3P$vaN5Qe!FSXiB3F8Ku4Tx30r_4A<u>4cL}GVc$~ue7BRX$@{P&cti^z zjlp<Yx(yNW4V*j;*R`g0P)?B)`+wJ+R;9w_EFtnFrFDABja>JTQ8l-^W-9&$$aE!D zYVAlAQBcmW0g^=)6}_{eRqrMtYt%%{^~<z`2Zw=<JXNPE&RAr5wt|(n@!N{FYb{N! z5`WGtnM<ODGf;jc5&M{MeyU|ar*nltd>2^poilTDf>=VllJ(TMrx`{{C!g_&;mu9< zQ=F{*q%5}JKf9pz)to=zTUAP-$OP2|m+{O9aqSWW6~U)bn*G=_O)~zDcbK}P!+CGn zgo;V53WM<^t(HRN7A#fKm3_{Se?;67BxTt%c`MZBQE6gD+_RGa#DX&r<MrF#_KjG3 ze3w?bMYkFfjQ3a`H^=R~X@JM-S83)q)(#dY4exf`W#n{5UHb+Iej^^ih_;$c?Vg<# z3$_mYl3mU1HV)E3!ovhKGs?{cD!V{R57%t}hCJ=BRKXr=20b-pom!wv0(HF9$%NMH z`onN)WM42PHksdXxS9SQQn|dt_{KTDy189a3j0I%)?xvVVLtiJ(M`_GW>2{(GyIJl zir6gR3KJfmmhQ{jdhYUi<F()SW<1%sMR3-%g6vrX-)&dcL?fn_;Z!{lXn&girxPVd z9DCiN2o%>11g9|}n-Dh7=tj`9B38kp<kQde)bvxc7Qw>4*;D`%4#-fzwLZ*oBgZ&S zHD+Od`K9OwuBUmig9@o;3eapRAcW(ixj@fUswq7Upa16KLJ(A?xM@Qb)lRkPU7&*5 z-uH%HSwPwEDG>`^ze7Kab~uy$LLb!w%{VK*fPx2FI}kLU3LE#;@Tkt|Enk@7y>O>| zw_-`Zs@<4wz=qeK`p!y5D4dHkoUCFp{HFLRhE>IAekY`XEe=R+c=6Pz><vkXRMg}| z8DSD8ZdFw4KYl05H}{ETezAtxNmBMFaR13kF8{^^Ny!y>1tI4j5nkM<n1Y6)p>xaR zq=3f+od1Y@?>wG}Gb~B|f9uN0Gm~>6(z1No)$1OqrQNPpUghS203A7zG(f1Q?#`w~ zw{ImdwJJbS0^5=xWBEAYU0NX>%J(3yD2LD<S~fN7D^P8sCa{OxNi=NG$MR*lY#bu~ zpQUr(vpCap1|%Zjv~64x?Ei(R+loToI3t;@yNQe&K@x3Ey#-wEB)3x0$g?CtgtTA` zUG4Oq+S1%Xz3jh6DB+bL5{DLn+K8rKS8LABAMe2}i|@Ph`+oU{C~8?FKx*ejL&$2Q zZqxi$&2QEGHq9@deD1&W$D1~L*@h&y`J5aOfnpdHt{@OCY5+`)qjI5MDneC}_OMUD zwJtoK>OO3BuG+qy(cPA~sM-M;F7LqD!Ac9A_unN-eGmy&9?DOKdumtw5MSm}b_ayN zEvW<DZEmb35H<(uE97vofQ>)3$P)OFCJrBC!cr>=+5(+<%JLY20%#H2cze4|xSo@R zJN~F=^uU+oxoy?3I}Me|T}<`POZxi@7!JBCx)W7_QU0j*Vc7?!dwO-U)?@<il1xZO zhr$Y|cWk`4I+=|~jYB;yi8!>D-1n^MpMaj;6JWF4#KAP4$hPW_iYrx#(D74v5E0{R zp{9egO8v{0R@LCwVoMFG_#2(fO;Dkp+rg@1P00h=pjDws5@966@?O<cgdT(qy>`fY zV@N}L8^R4L;yX=N=jz~iok_0hy!U=m8MD^u7sgQs5tmeYcca+J9sEk_d|q&S)c7v2 zoHLnk^`Y8kx>rxrK-1|k3ROK)W}{BNWHt*X31hYP`A4HP`qec(#l<G<3s?Olu~bG} z7-?aI$cOyug%!;0F);gxj#2RP+BtU20y+zbBGFf2T;#<y%3pP+L4$@D@j9x4UwCov z{`AWt)fF{GO;J<SM3jeFPh@0dWMm(@c((F%JayIo_KVctt9fjqq%Yp?Phfj1dE$t4 z`4v{<zrjoU!{oX<{CsO-ynyG@mnJ95&=3`;IuK9gtP-3ML|W1w0|U?{0znN<R+XY} z$E_LH^G#Zn$~Fm}fkA=dHMkP;3S3I6>C&lxs9GIyYPI@>xpL*ql@Dr#jv>9&L#|KF zx2vRTC?y|v=y^@gSo5v`BmrttKW(qRtg97D603!<Mv9&@uH!tFABso5k|%89cY_pF zr-EX!YBiOgatQOb!mJ`|dQf6mQ)RLk4$OX5!4S7)WnVNN76<P0ve)juYK|*IES^Ux zzISv!=9fgzO1FjMqbk6<@nSCcTsqXOD*$P0hKG!QgHcir*Iu<R8W#;+fAM*xUmX}t zyQ-S%mg?<}jp&5R?V$KkEnbQh5rZwzCbthd_^SP4p7gZSU4g!)SZ0SrhfXC+m0ATh zJm#Rq>nhQM*?2{Pq8*eYi`kHs>_Jjcu!qYakwbV!72y3I2=h&F7^`2OMl5+M1^P8S zleNCu*W9|$GTRl^e8Qup>(L`}#xjvAFr=#76_!SoRWTiRQ-tNa|MxGO)vcaifvvHx z<h+;5*B+7)aL!gVF=ThKQ<1=}Ko47+M3!@6$Znnb+&?Ra6#u^aySL73_I~f)+)HK( zoQpFdQuf^!=M1lC7W`|!cpQ|tqsfP|*YwC~gEhmnj4^0XYGAyjYVtqk9PH{@U*^^^ zxYUvIEFW^U^LCY+i6=}$^_7l(Q-Z$8_8*x}9!SIl_RV{{Y$Nv3o`|kqCB>=KkFFUc z)Z2HGHSHCT@8~y=8qsD}dVGya)F>4-hu88I`_>nin(?qGw#P*voHwE8n~Y^v)kNLs zUd47x*k8u>Z96%o%4iB%P1pmMeVPatYVF{uet`(uk_;DSykXc%wrT!|$s+y6J<~*e zUe!(kDGveJR__B+j{Y1QK?pme1$uMP9D|PMlaYzUh=NY)oBzh7|DN`n=xzQTJe^69 z+R3Xw(k`BY?SBJvC1V>^yo@1Q#p#pm(Sp?Te>GJ%BqA^=mvU>ltHsqKk`eK{618qq zJ!Y_4)frH2bsG}QpMY#W)y?6BOpiNG1oM{4wZxb&+K2UHC0)uldN`+sO@0ER4#lR9 zhyh%sL}?`6%eQnES)07As2n-$OibOmXfqsBB@61ZZgvfS+{$t9%0B_ox{c~y!jY(K z{_;#a%q6x)3j+uuNJ1~^R7pxSj*AE3ty}MS6fU;Q>&9*-H9aWqA*I6WG*=Jm5-YGc za}YVg>9m-Uid+g%xv&bR*L0c7US|b&t*lbPzn4G#_(ob9j{hj%OA)SsYjoc7AlDwi zXhBlud>t>%!&fHx8h?BMT2?NG$)?^IF&_?v#m{U!P%rFzH%H2EHK6x(<QRMM)vnbZ zB~UKBTL?1~L`G7t;>N&l|M(*u6;ht%OyG^3uOTbb%`dTzO$Uv5A^ZgCi?c5ByT~?t z4dQVrt@NuutXuvfRnVoFst%ZOPZ0K-E^|^)&>j&A7mrJE8g`+}lv);zO}Ui8DYjo# z(<k@3q#nKTb=nFhqAC4(A=_l1QI-3N{n#vJpD!EU^I41YmG*8EBFbxFWz$*7(eLX8 zdUuU_#ZgsDeQ?_Mp6^arP|ig<9an@vAc9&@bRqC-7^jamm%CaV!Mnl<)@Vq(bI)sJ zNcv+`FsTC_(;yU}fPo+sN&rJ7t{-(BKU_zHgE6)ShEB-Qn=SIz9D`IPN3nqOc^hJ1 zlTyFN)KUw(9R{{i1Z_=PEx|7`31MMvk$&a2q^4|lt6xc${s#<@1-P&PYlF=3&B7+f zSkPmtePM3ds0bQqw16a0^l$TN#fNqP9?Up!u#sGdknZ&>Tsm8#^u`Oywc`rDNu!k` ztYm58+_624n<YY=g#ub_$R{ru&lR0WJM<iV9Y1b5<1CMQ97eD;X?Y+?pN?o>#oqSj zacM`KImnh_{5y85?c=l7$_vL|Xd=Wbz}%SN5#G154~M)T$cbdxpl*U$F@ku0`Le>U zWYddDqGRI9^Tni7(HG9C4geSB{czgXHp21loiYVl7H@aBd9B2aRo;Y1^|CXD#+=m0 zv0WjF!Xg?yyP+rbDNc;q^{Ig;mFLbQ(TTQg+AHPVF8pc;D30BZg}aHqwx|W~Dejc* z#`eXAqO^R%-}+F6WL0h6;Z6d*`CVJw{01g>eHv1V>6PARQC{wvW2Wgsiwx6+lE=^b z8z}j3{BKvj0FKj6Pb5jl-+j4PZ1E9p;2j_egRi}WTj+5O9$9!$jAk9<Ncz;YN!QIS z;;^D76*4soX-?fA4|@yf(BjjdZ^SOz=~NiAZ_V?SJ{qF8--6Dzd8eVX$bDqh+qgat z78Fq3QDItv^9fyDEig~rBPJ@T@ru8od=QG|M-01eTPY0|)v0Lk<8OLAFa~J|n=)(& zo==#md3UkkTl}<}tBQEoa)NhZgS)1zys_67-sonyR;SL$$dxi{XLg%m5|XF>ovmiT zdn{fmW<Lz5NTI;$GC@9m%tc;V9t9=dHG|{DF*uc3?ZXdiFJ#h=$=+hAS4lG}?oQ#i zi{Yl$!AQ!UR31u;AC@+cz9;7ucKDnaf3il_;nM0)58-~3s!J~JOXxYgZii|DWq%o7 zraxCJE&smfFDm~lA*x#JeGh}kg0{7bNeJ_ES?1GZwfPV(w6(B)OP7c{T&plqT@Fuj zqrJ)HyY)_IQ@*V6&gIj5|Lx1e>yPxInm*m(phK`9CU_@X<J0p80JZ;Jx%qZfnvNdo zlxI&Kgoc?$bBE>bN~MtZrLX;0qIT_lYYoT>Px#sA`ZF|^)2p&vw%0PTUNw0@b^9#A ztXSG38%Jbc3_UO5-d}QkeQB{$sy=+B77NXw<dJp3`NGJxc)^p9!E$}u%)ZalDkft0 zz*do(+M2Su#TOtgF)D*T-K21qZ&%obTUyFTZk<+jW8pI15<4}`$RHkIbyNm-%8Imw z->L0`l2KC;l_*5jY`~|gL_{-6&*;9Lsino@8Rr2*YXr^B-5oyB`+&UJAo(7(vhGyj z>#<`Mz-lF~WtXm3Vc<*OK?EoCl~izeq*FWCU#SflOy5^dQL4MPgr@m}q3H81aNBpc zqLUMDP(CSj&8UQVpmK$JFkK=4Bch_2NQmdLx+AkoCopX<K%Px*4hsFlxKu0aI->S! zy&98e4`EkJ_o*)Y#0R+Z{d6WAYS#_`PSH^Z#GspAnN58*Q!3*$%vZ7G3CQpX9s7IV zgi>3dM5n2OtwD;6O(*tplYmpQN7ORLo*oWpTI?aE6TK^PqWt^MslU&mn3T|-#KNn` zdz6K=l}RPaZeGY<;Glw{!o&8^MXWGpPZIh6EM2k>;&WCf>2ehH=vhtnUUjjcQ~7Fp z0BLMY?~#7I6+!Wr;zERUT;!0m>oqZ*{v@dfoIN#&mnHaUKjOchu4P>+gFGKcj(XE7 z8*$~73u&wzjK1|O$B0e4h3Q)&DiLm8YaF=|hW#kUsc6Bi%e|w;21bgEyb@R@BwcZo zMFnc`b-}K!o-PZ3zO=xY{F>2b_siKELRDUqDN%9Ns`{2wEPb<3T5LzKC*F!eqqeDr zP2S#w4d&M@(&B@3kMpb>)$tnaC9qz*s+osmlbpM->6A!C#X6c&aBD2ZT&e3w*+POe z`QgBB8Td+UrNU5z=O@g!wRMeGzM5>@6}3hoN1ekK{DR$9oTxPT7H^HaFF5u{{?{qD zj#>F_?L9UzUGNZ6ak92~sHC^l0gWf@&7K$4Y`P?1<?u_@g~ArKGI~1iwkPM+nXKMi ziYcR983g%)4~9CqyPydwwxEIo-F*|oka_Rr+P2Z1r)wm$X);`~88E915c*C64~!N1 z-1tTLQ!GZc*h)=@(!7Yi4t_l@*hgVwop5?Li7;H(zn4VK`#R3WF({t1{&_0ib{yEu zrr2N$eYgsc#A7@(|6e-{9mgf#ExYQCx(=^fz)(}9T=-cmT_GU*Gk&>umb*ZVn*G*h zyvCGsobZ@u1O@0YXTE+J)CkK+09p4d`n8@1Ji{2JNZTvnjFQ=v{8^f$s~Yz4H&3*$ zmg@0P;Sectzzn?{(KIWa@_nIdB=ij#N9Bu&3eP#kI)*IwY*jIhC~NJoruM)O#l33V ztw2nRY=OAZPvlI>kFgh9ggs9nzqT{v%mZI+JLmA}9yf#Gzv#h%t?S&|&td;GavL^v zwQNp2JapT%SGva4pZ8>TLJxdKtT|5yYAf6Es;tkB8|bw<oLpvADlF1tk-aHx)Lc~| zH$DaDBEjL?R^Zj9$aSPfx6qcGoZ-^*_jqlb&G%3UYZ#HnVklP%S7kk;CYw#q&9xcI zXE?{T<6|Dir-|&9m(kCz8G{L|I+-=v{h4w1cx_y^M=A*8n}ogp?7PQqbN^&}rDHfs z=N|nu^03sx-HGW7RHii)g<Z0gMHjZV5%{{1c+<~2pBz-8<z51pT9S*brBQgRR)67+ z5-s%6T*cQklTP<^EqgB;QAiN|DhWbiT86m_jL+|V{DNf;7TWg=VdX!wUppyy4Yr)6 z-&o7ft<aNS_73^p+&yfk59kZHWDQR9J=DBab3b<+<Vz^dX4HKwF;<5f(uKPa=4DFu z{M5cUH9*#c0wkJ{@X+<0zAhiL-Q69IpmOS2Xgh|t)Ge|w{m5TXw|E%xG?5oN3Q}TC z5ZNLS|9r2nmX=c_m><Hkfw4d-C=5?<@TOWqLFPs2RjyF>%Ztjc(394i6eB<84EMb* zW&>5`Cym!skU6XgV&I`s4(>8k{{2oJxV|Y&X!O_3GIgw#A`W<nCCDCh+z3$#giZ)V z2@0@IAT&K~zy{|$0yGVRQt-du)as|GWpRI2Ulgyc;A>V?M&m5i{nmATX6~}>C3d5L zP>&277%ao3JZ$P0FJXb_W#t?G@{`2k=5wA&lPLc1x;?<L8AS;w48;)A-{!wmGj%={ z!kLA=R_gxeXqOxGfm8vXlPmwzOK)j{mHxRzolN-+mE%|6NTua#shb{us&!&Lsz;HD zbnNfy_&%y*biKX4AZ$vIA_TH|if`}auBSp6CEtNyT)CXM{Oe72jTZkjDH&MSiu(D6 zm#h0A!R@^OtcSfb0Q~zX$ESlDZgkUJCds{sbIMI?z;9$ROID2lCv%`sd4K~43e^G- zXs1~(4rZm+3K<{LNsZ?0n05A4g)M&1u2hJtn3Kt_u7-rmv--G)#!D^EpxGEVdI(hc z2>O6sl-`FbOz3x=5QABJpB-`fFxZlObswSO(ZcTqF>>@qmF&1-utwjc8WQ{PZY7!+ zdSceE{)?f(Ld@$yAF}$|#K<j6NNu=7vkeTS8KeyX07!+UFDMFt${=e}wC){8^UQ!_ z9Mw-RJg*`BAj0G7?70)OmF=*w21F#IP^%SACT!+$z0Q;}uZR(1Z3de!YLZ7T)C=O& zpf(UdUd*y9@calc;yAC+S>634vjlRzOwGd{vet8>#wP^^FI4@`tSpPMiSu7AYF#L| zQo>a6<{EHMS19ix%o7sg-CUT6z^#vC`<XcyYBqB`zXeg88U-#rESs5FJjx$V>^TZp za&?Lrig#0;rQW0)tIS>TrhA7Z<=#opPU&s)Lh2K__2p8@Co)Hu=dJ51lH(2Si4X&; z5m-QYq7l2+T(mgV+gN4X^hk8J{HyvNHv`C+jlY~Sc3eX&M9-|NZ2XYp`$^NAGYx$) zF8^zyBrM(0XirvEoh6HtN~|o<XTAg~r7?SeT8*aKt<(A*Sd*?Nb;F7bGd}T}@a(Iq zEk{_O)mxndvb;?&V5;I^(-ECaF|OfW?HYtR&p5gxTs1>V@Kw7$3l+gtRUB0Ij_Ln8 z8^H;kYr_s25)Q3uR|pXX9IUd8MDOex*nU^L*m|SKj>`y>o#45_FBq2Ao?^48blrR6 zPqywa*QJq|?8L0Tw$u7z&z!WunZF+I$*teEWH0*M2`%0Z9%+GsO*Ug>0nfW-gX!gZ zUoExHpJ2$hlH_oZO$)T|;xH@*vkL~G>mTlUZWg`!sVoNYFSxSY)h@q=>A{?H8~Xzx zACBVa(S+HKgnfOy+X%P*jGhHERuqea$rig#S;5qsUkTYrZLF~3OpKom`E)Vt*GGCg zJa&jD%x1BBrYBtKad^N9+ZUFt?Q3hwoDr4rysCnw7(NLWv(dhF3D)CTvi`g6jy6!z zf7z9zUO}A9M(WUux<_zBJIqU%eTO_<e&Z1*Dh6V{7_vrBXt+}2pdc*KGY2PA3N5{A zhwV2Vd}whr*n%y>o)2L&_~-=2YUz)7?oZ~VW5mpv(5Ecah-*VsbO$YcTPr7B3f;XR zGzumPY*`uhL=&uJv<V?tmg4q$#^bEdQDnov4GR&6jtf;{d0+(9J}7Cs3Nd`C%QfZI z&RHF5%UPiR-if&UEvR@xar+J+)ZwyJ=-})KnL^gzEyt<?@}N$N5ue<J9R}?(8LM+5 z9Fq1%I9YWF!DAOfu-ESzewVNt0=h7T_8~Y4te<@d7UCf(G2Vk{=OF)I5Lraov<eQ- zqWu=OS8fTx3#s~CeXYiQ_ym1~1T_LzrDI!k=h1~lyV%+LZ}~ErnCzp>v5n5;txcJN zlfdJmD3%VYpyrTyK#IJ`%XZ((8Lnjecgx;eSHWoLfT|em_?Q8v8u)*TwxY?X4UvXQ zY}|tQQcv}qVEmfBL~ysNs*S^I$?f~O2SDOba=#otUI7jWaao6z>vg^KI<&sKND?6N z;@<hV_^o!v?+_OU%tG89F+Xu}{0y5z$yal*lGm;EAHG^R;G|al&lao;;2~(@>4w!Q zPIA71H|<A1F<-=D9BTxWje}S$by=!#5@;&R%@w8o85nN~><7yw>_(H|LNHSqW)tM_ zz1?1g<q(T$Dg8j;lE9YXwG>JW`y`IKuEly3uky_&0U2L$ghCih_Tlw8mt^Yj-0XxI zgMo7v86WM=6s>))J1V>T`I=WD&?jce`b$!4WE;RHUe`{POL#_VJWEz(IIjOb!_NTB zo05p3*<^AKLN;*(8-b5El}PY69FI3l#2pNc|B(h@LChWO*X7KxND|UXob<~FJBwQ^ zs>wj!WY92sv0pEQKJX8vA?<LweN0892Zt6F_d$s0Ff@z{P%u~zc6&A#`j!SlAw%oF z1>to~ayfR(pnV9qYnCHXHtEph%4HS~bOcj)vT~3Rd~~ZEsnOZ`$L=))*S@0~ZJJJ1 zykdO7nLYe;ud6Mv;mS7@0w`j!XQz0@_<%FJ`nJbVLbfRmyL#d4w7Q|BC*8d-Qo=`F zM+)meN{pT6@}e9*vx~a!1p6xzlc9LK&v>Y2<CTe@8C0BLGSx>|Vq)s1IFi<<P~1p` z#%B^t7^Kp_ND79m^HCjzGP6l2+j3*dPv$QZW6Mwi2A0F6mKZvz`I{kD=51NmXE~b; zA04GAKf~4E<%Xcf7ZLoPxE*WSj2;UzJMMH)xC?S0rt}n%;%e%F2)_vw#<_^WBtSjR z*;$ldYa4&)SQ)Qmzkx0b4q+q)AC8$DNe(3q&7U8vY;OqZ|985XUt?{&0}j8?TgtBG z@1}28FfL{+Qf)Bz1sx}ROkW@a2U-mM&W%Pt6fONE+(v!JbU9qhkKoz8P<XDJEXJIC zJ!Jg_Ww%*#$MB^c$Cux%&XPA5>oDI=!YG{~Y)^Q`%anIsd<*@D$_R@kUgwg(7wcxM zQNzeW8J8WVu4RvfkV%pDMz*2A?gUr8JriEp(2qQBt;Vt>7$cT{{afiR*>ur&8)SVB zg09tTylmlL)ZnC>j~;nM-r(ZVA_uc~kAZGj*FYINBf`RjY(fG~X7%Tfc{n|W6B>i) zpLI5rnVH>!FJmSAo*Yff<WCl_rfJ&nSv16*BZIkJ?2IDsr2cCNSmbOn|J$2jrOK<V zR3cmWY*eH#r+e9C_V0?)!(F%)iO&)b6fkBf7Pa<186oREzC0VxiMB9FP@@@pxGrV> zIb`u)knu&_^^;l+>p~qJXjE3U_jUZP%1%;W#{D?&r)CyPckpjFNXvMU@1z7V?4|T) ztK<PGv!yUrO4f8K)g9~N(7p22+ET%sAU#FkW!ppHk#d!<&=rwLQJ^27l3ZWhu+7_L z^m-8!e&7VXBV1;6ztqyj-<b)&>a%|&iM}Gk)LZ=rq=)7zmog+NA+6efpN^au*Qo&w zR>3n5++NsB$ReA#qdB#k-+MwDUv~$t7wg@MukEy<=#FCDbT;jwdsB!ue*o`X01-!3 zW$!J^4yXKMVC)^XZ|7qb<IlhCbmoRYqfddEmE%hLkg=(M(alZLICCpL%7Gk;cS?w| z>x(bKwptv)0tFLFLEJNJLjj$L3;5L7lwDrSxu^-Ci1LWTBMROKkb%L$B1Nte>;<C7 zJ(Yw>25S%m0~=SNp5SXAJtDD(H2arU^vB`w$G<$Oe@s}*AxcUdhz&S*N9+MDDa#J! zC^$J3NBMBp9|vP8aAA;9N5^_UpU8qCyaYC*6FpQwC4&*zxbB*Ih?OEZjR!(N09Mw~ z-*XdLaA~zgT>F@Uje`q0IvgJ$G@t5-&AFiW-z7qol#(FD-aLDi+{ck4#TPV66%DN~ z`X+Hq`TJz^SN{Y;T%r9(Yllh%V&aDW17#4Mefo}^MO}-$r%0TtTJ>)#6!w`YVT?SX zV$A5oR?k9_m;_m1Pn4vUq9hJ$Z2R#(Xm~2Gg!H3$+5Tqg|D(FHbbRdLIU(B%(}{K{ z9}jcX7Wd~EQtMg?*q}7P_M)_!4n&P98vcxmPY_xIcM?4_K!+xybtp=Vk*qkf$88~e z`!j>?`3Q?KZeXNrX|i#9DZ`CMc`DArsNdrykYQ4LU7oG?(3WAj)KftQS~FUzTbsIm zHLi?pA1|t9XDny7Ty2c1Su65DZH$8y;uf?M*~Cj*qa6zMNQR2&x_%wNBKm45!GD-@ zt>nrQc-Si?&1=EgEsSJ~DUAh+artk-#gNakI@fXM!L<EE%@%6YwIS0Z3r#%&ok!(g z6TlP*!h<>75oE98Rew(hUzVsZAtv(0_2ax3Gu$i{_a{-53EW`Iv1XhjY?HRo?Ef>n zaHN1vh0Y0*q_YT8r(fXoD5=Zv+WiO+N;e^BY%iz2u?|nf=x}5qaUfo3%@vBc*`R_< zdiv5OVu&evNXq>I2~tGYcCrKDyG~_Dvd{k0kG_g46*k|<6rNYcI$gtc^e8@mVyFBW zP8|J8xXB`s_AF9R&*EPItcAT=?BZe>7B!N?J0CoW6d1ZYc|v`#$oHTUwN<yTdJS?- z4BnAHn)1}h+}aHMga4|o^s?KC^1MmKIwku733|f3yHBghi;F_J>-juo@<4*<tQqw+ zo1+izptu|Qe~=XbyYJt?2bDqdpe@my=oi*hQetT3uQV@F#j37ABGF?%AR>e)O}|O6 zBvZ9}X|O`_VMb=PJOugBU(X(H*_`mjc#gqlejm5bmqW>tr>0;w=4ZJ%yO?%njEpwC zzRstGx=UXe|BLcotGJYdb^;;`BbtMWclsSs%(YlzfP$v&(5^+IHQ{r^;spw$snxRy zaIEZdB(kPj?p(s{8H4}U+{%hjP{C>>|47Oziv~MZBvCs`^Ylb6<xNV)JtM5nh?i5- zA9hmxuF5BpiH%)6YMR73dBanQw50F|OPf{JvBGHw%L{mJpGilUkZobcePcj)_w6Iv z4T}?}Oq40a;S?B>#iVu}^6JF5lNM1yFWYKXbGh6wRP}jVl@BLboWQ|X`8d*{5&0S| ztwdM=p%USacTCr(z}rt9M7hsBWD+QkoPd7W!4GXqV&r!}oJ5o4D47N){&W{JH=gby z;vv6<0h=))D@@9qNcV;drXAQSa|G4v8PKXAAq1d2rdKT+-qKQ#eSYthkhn{tIHNhX zv!bl<yo0e4iDx(F!PzqmhgNIJ3@x!?b2<OMK`GEptCAJ_7^N<@Tl12`;4nCh4!skx z$ivw;+QNlKqv1VUMXP*c=<e-?K(bPkW_12E09py!xoN}D6xwR?YNS$02Z(W9_h=a# zU|{+<q1m8pcAht?`X`AW1`~}-2FjAJAEy-Ih>d6#RXS{cjoIr(4XEB65@+zg#WRlQ zd)xtQsY?L;qh`u%1?ronyZFdjt0GNWl`1lgv32?4)<PiTrnUEKZ=?J~txS9SKe_Bf zqg8M|&@E|vlyZ*wD>_!|N0(1t^^B}yP)ZyC2Ot9jzyL^Ldd$Q<=05L+Sk<^qFHF+7 zCCMBzFG`rI=_NL5oTBDR-G<*6`^C0<j6fi0AP@)|2n2#z_a~4!g#cgEpqKQb41g>K z`dSVSiAx$qujs7_7^ILp5+9Aim3yYT6B<q!aDxLH4j6EQAZq|U&?EXfzDOV4(S1ph zhzCai;Rg93M1P<2C-%_)t@;^J)<xpmUKVbip9*@q1iQm%BEE*)WNMn-gyRbO_K!~0 z?KbPqYix@FoLPx>lk=a8{*<H(%5Bkze^>(sjYs^`CNoa;q#`q$jEm5v+Eh*#?t~bb zcT9*ASCJWM|8L*+n@6>ISLl80w11HB#0N{rupBcc3`lQ6wB?b(8`^{){*?|Q1hkpN zf`uz?gs;lRgaOq;=myGD*@)bK6;9G#rU@Q@9B9K#!r`?x{x}lkW^BfBNs9Y-?v}Po zG62}+MxJ>lPL%CtKE-fKGlKYq&YliOk<n8(sm)L%Nx`F1JZhOmh?HuSMlq_cyNbwF z*o+x2wH!iPWTRFX%Q7FeEC<8K?u^~|J#6VKpCD#uzt36V(g~n3EK)zWc4o6PJjr03 z2Yp0eG?bIA!XUx(_yRSH135}Z>R`d3V*{PeSf^UQKF_0jg<wga1ZQ!CxPX>pw9Cd^ z*EO*dGrV6w(!#jJ%(2!A7p+ynf+2h{DW+@J6M8!wXSzN8(?b(&eTch0?`pr$9sU{X z&6f0}pZE}1{AjK@wH>x8(VP^`(?ppLM1Ncn`ezY<PE83t2muQj=hOJ$q0Z+0hho!D zI<b(<M7yHUn+7M*#g$LoJ})6#UJ@Qs;-^_OxvDtFCKaqpDt(N)=^pN;Ha0+?owngH zIck789oyVTFvmpw`d0CsdqP=Wp{vzuSglu^)#d8y3w2z(<>(YhVC}%vCLVPyB1llq zY;8Pm56hTgt3Fq?U+BC@@!)}R62PHp&IajaTOLAUqIHJqB0(D@JFAp1ngEU+@8i+k zf-D>){d8c#B<kD)-{zlU8J>7!goA*#;{1aTypYj<^fq|Vr_p-h@P;otfe8+JA8Hzd z8>$9n%jhCJ`Z|Stfz%Xc@(mc*3KA?Lz+IeXVR{@|3eagcP@-L)G;6R8HZ{NmM>=8T zUO5#$W}^wGmUuBEpI%sbo<ruI^Y%Lzkj?9lc~;k!M#M3t{+I`xy|gQ6`l9Z8G05JU zKKa4Srn{M5nkpWMutw!GZ7||rv8O6bR}o*|05?F$zX*0-?l6DpS#F=-j`T7uZWCq7 zIEpPuw;|cBpa>E21&mKzSz?101e)hXx(6@Zl=){}hN<J%Opr)$-PGz7?fwU+NGG#8 z=XhZe)Eyw-(yfgCaMLm1{D;3V6T)Q>=@!N8Vj%WGe+V0#2Ja0Q&2-@OLH~pxduyu> zEBylY0r(J=nbk8~Y~(;QcU6Lg3i#~^_hO0{{W@$qri?Cj_1~O`s4;@88%OTr^z1}S zKBp)sp2#)7F{N--kACzV;uH=ik#LeZ2eFj*!@3XYE&29K+t#W+9N))0X^!mm<0B8k za+ANqaW8yA<vastbZRi7OBkyfPuL$&e2p$AVW$tT1gJT@-326O5`V2de+%C>=$Kby z-u`?&x+(qKrlCV2YMV6v{vs$hMr7<drb~>bo6N><s1?O=3#<GS7Q)tC&I~+(RWm2p zRCmBL@8ZL^YnRINB)HslW1{RX3LhLX%rMHdN>-aMGw-(_tMxlvu2ItE+{igtbw=_j zSHdk#Ypu7dbgPUt{ha(c?!*aM;nf^JNT1h=gWf08JfzL&$tb7O%WlVtsh9^)Va~^R zTs9pA?=ZGS7Q{nD_Q&XddJMxA7``MI+LA+Ef+a{Gs`XMxlsZ)JF!H~zyuHMj^!uV$ zd-1Pu8_mQY-GNjey)HD{ZL&(TkLE~&(}fz7*6p4(NEHm#B+d0k^!4NctgD9QKk&Z$ zXc_a=GLLzI*uB&jRqrsRivFO=v<t-^=3I@V=XKNkPHN9}x`A=D1Q~2nMuW2i0dKkz zR02FGBmeD;C!*;8BC$_+rkxQ9iKgLH+^YsE{Se{u>x$^70R_!AM!U32x&BtG9p^ey z!(~Em`jCcbIwY^DXekXa+2i4pnV5fVvzjiP?LtD<UTgO&<+BZPqaIN;uHaGDzx#4; zdDu>ZCWC#S$^DN5fKK&4&$|CMSESgY?UQgWuOV!e7ySZu;bDLoT?V->F$GY>wONC4 z)lH1K9#aIik0;=BF%;>um(zqlpgZe7t_L&1?j#C?^M!+m5E}eirFXk=uk<*3va&}V zGkFgE*z_k>2~y$OpGV!F>s<3uRb>5~OH>yoHjJGM69^4{UPHv4ws^)hz?P|+%W&Oo zYjAC3(c6USf%qUXUFjs#aqlxeZXm_COz~0ON^|K?elQ{9F@f9gbM?%Fo-7mc#gTCA zeGqp{>4&}Y;(VrcB$UZ1A6~EhvTjng%<e%ngF}miREjvE?$olf<Yed+A5qSHG;9A? zlv*<%w3l@0^C^)#ng^m;s&cTW_+s|l1EvblYgM{n4Hfm%5UlsF!gc!pfIh&BD=c2M z0a;Sy^4r7K|9D9=Fhe@ZG^(0z?Wkfi>g8P?8CKRl4mdA@iab$1EIHPIO+fsJ(WZEs zmvQ#B47(;fV|F4iCXq&pzYOl`2cu9-!EF4Ya3`YuR__B`0CA_wPF|jYfj(!(7t+oz zOnxS<wVb0I)n5}g1x`Pi?^8TUs$Yx?Z}FOWDPg_WipI6T^X5%XEj>!O0B!|}Z#G%X zA;X8iQihCHDg0W<`1kU#tC{^{YRa^3e_p0o#NbkGW!}+w#2J{tLiZZJmo)cug^Iez z)C{GXkCVemIu(kVtPgeNl39F3Yd1Ckf0rrJ1ft-yQ3<~pp)mG{k;jZ%8nqr{u4c?C zF&NG5n9QM7zJpnbgJ|NUFoMIiwlD%HInl>Psfd|ZrJ$ORaVKI<=)+Q0^!}loo8G#& zr<>fgjT!dW7kt)r{V9ZRaQ;O)ABAaIEEi9T;aIy*$?_Lvt#dD+%}iF4G&6y0W~ZD# z{5}l5#4n`Xa^sfp{*j&qeWIwP&~}|a(f2!l2@pC~X?<K}iOnwevIJ{^AqjVa>Dmmb z-o%v<w1L2Nvr1&FP8q6|Xj(!Hlv>Ce5@R^Su^x55EOAh-)bbPfWY_kpeoS8acZQlI zX1@tu3_}_2Y?~o2VS5PEF}Z~D$DI75^C$qjU>YY}JpChTy_VKOe!h^3*Uy`R^)l2W z!!xo0>Es}`HpSxml><R5K!D*5+CC+Y#}uqP;*wB_g)_qI1Eq(FH!{~zDf+!~Dcfe` zUBrJ?w2ce5p7FHnE*DBCtzTOC+x|+-8BR{EIj0hpvbK4zkmVpu^RqD)*0K}UvqN^m z3MwK)@#bB6Qd17XowyLxTyp336?SVKI&rnf*1k(iQ+PM|bt%>+bHig3XvK5Y%xht4 z4Q?jpia_aW2BCnKG==akiMfU9hdFQ7jOJlNV^_jNase?EbG|E)oH`hwJ|E$3-JffN ztK(L|EsW(fuAf_uS3SJ77-|Zo5d&PHh2rN!V|u}oV!H1oPUL!B8`%D&)4f_ss;&>o z`w;S~BRJ{YqV~(@08crq#j{#GtFxTd!ddCGy@;be;Oc;@6I`_kTDSb*eg%~H&9u>s zX`zuS*C`t2wDuntT7%?G1=Ckfy8kYFc@o(Dk+y7ysZI$mu3EgbTE6s#ZboY=Z%#Qy zDdPy)1zM@ci10X`c7awJ@QHw}ohqhEvBZj|RoKJa?!(OPBtT7_3G9fJP2ey}nT^^F z^82%38SooL%@wIJvxYEKA`yi{O&{}Rm3M0Anv(j?AYqAW01yUmZ?vk#-OaIpxTnFy zm8j|lg%{&bK>lUH>j(3Qvgyw<s^d9>&)x4aG|dquyiue=yo{*{l4ANwU>V?^ya{ev zw;o!IxD)GY0u>r`>46&^Xn27nd<t<`g~k5V{Y1FUZ%M76;UAPQTQfnqD0%Y#|9v`f z@Za10+!y}s>5txxf-}4k4c{Fsju^g<7*~VzJ^X#skE_$IM9akkzb)n2s+g#FFc_FC z2rKXM0VjueV_Z9J`4)4<+^Qym`@jV5O)yGz+6}GzqkMBc<*Lh{VSGZH^h2mRB@*N{ zUiaXUp)Ok%xf>jdAtT3i{@LIr9VGO0=yE}AfT$>|?=9x<ONOvLY#C=D@oFjZ+RqZC zLA&mh+gzV#y+A=d;o{^}bly=;AnawQ0O!cf_{+aNq&j=W6n*7qtjFwkI!bmWNsItZ z$Px;xI%B?@;wR4PhN=ea;--WOCS2<fnj0Y%x_wbouUVkeevVJ6Jd$>mt)^iyRekf{ z17etV*en&zJIbhln9JGLS&a`Lm2KH(*lvpOG1;$!m&q{le*GxA&=!{tEo+GsYwJ+L z<KqE8+ZfHi;B}5Yq1&Zj-|GGP+@PrGTqU$x;?beXl^mb+nK#9dFF@Ulkp$g7D`r7i z(Ue!OOq+9^8ekm&G;-MW=qbR7cr8hLNG(?=ISLd4>smR8QBsl{rzH!WB;+7^lq7tP zlhM9z>i(>0`R38h#0J=BCggcybWCjE)>-)^wwiV9gq1LLr`R4=iz_O($}r_eW+M<{ zG(_%ZsP5lKLTOR8Ra5D4Q%`bT;<i_k&?=qU;U+5F)e}SOP^AisISG+Br8by&j9B!E zU5rqP1?$EeX6V9Mr9BSxJgC7eKKYd;^rpr5s~ku@fN{-_sqys{T97u^wC-m{|ED~3 zQo(==3Io(enFOI{!^^rGcYuOcH61PYMmRpYpT};A;52z3{~pr`937;#HEK#A>;!f- ze!aB1fuu&nlGTuAswqlblU}ce>U6VrU|FGerER67YsQKRygz|1PP^b{n37hzG)fAp zwpR&4Ah&VMFO$f8z)&j!sTyf6BnI>ImReiqOhz<h8#*4aq@UrCR^Abf3O%fM!c<^= z$+bJ;fHfrukv~R?!Nrioe!%e9h);&z=G)TDIzbkgGm^ss#(yV5^C^{aBijO~NZtcp zDI~X51vLB;B|d>tUXSuZqQbe`usa99oS@S@T;qdUTwELp7ZXQ_Q-^;-#7I!uWydcs ze7)nVryphvl8;q2HV$dr+CTNtdmK+K^)IA8u0Y`4wz{DBK;p3$piS%*VFRAg*@RS- zRZlZ>$d3pK7pd%Mo`t)lfR6!<Eo;<?3Ve*=cpEr=$D}+E%Y=gXgBy%vllVTP$P0QM z-h=@sBx+|v4uB_t%lVC&Q%9mW+zl`qI1TcF*MGaf(l8q8WqREtbJHvhOqPKC+s0kZ zMpqD5ze2XiWGo3N28SWB5dubiy~p1XibP-=F__r4X)(9VzR!1=4}gg+JW=^>{l-h? z6n#N(GS>1w%~}7(`q}x?UW__t+V{&^z{RVf(SwN~eUm1}DMTkqyfLLXS<FLB9`6Oa z_;0D$Y8U)RGi-w+`Zsjx>5^*&`a+G?j7hj;MUOWv#pMTTn=K5Bh$NFrl;5_)&#u>g zFJCwV-|#iKwo|}Kl4$t*L;m#**OZWVqE<2_n(iH8ttZngrjqE^oK8|>LM&!UW`0|Y zhGdBe7}pm-O{}G%4d_kbn(qtxs+uEha6t%iS|oyF`<^QZrz<FM#3Xl`SyoD>Ju)$7 zXq)K*DHBM<O`s(tfpXnDAl>mQWY){{HK8~{PR#jH5DKQVM+#q%gYfz&5{U`Q&@fC; z;^y|nmQlg-U4fu`%%zqF<&g3~<qL&GLW--=BJqNVNg#&+*WL;<><<j8$BzPj6qzoQ zzS#dSBXLg6l$!3~T0u8{IM;X)bi;8AiaBsK+(*dS8Tx}x8}7Xq0MU)zkeu~a1v4{E ziE}&-QW=YvpqxN8O{KvaPPECOBZq<V8$+CT+r=_V{IShr?0AVRb>SszObVLEyI zP1(++jS;jUfoVHbY#AOQu{C)>2^*3NfhnAn%E^wxfX}^}B!+Ohdga;!W=i~NJCRVe zRXH_^w%n$A=}C)_Q5Ku#R}-l#cy6;c7WgvV8A<1DZA|+nR^~V>4zzPDN*|ooMP*l| zMZBqZ(yp7*y&mm&Fe3yIGn?T3`lsxVmRo%ITstjwOOR)KC<j(6eP8Jt_0Ng$4WnbD zZ>=Kl_omL(7qnFUt|o!dqy=TtR%L=gRp^Y0A(K#7{f(OFH*{k^5s~{@<;}MeJsB0s ze?w-90~d!LHMufyv%97d#HdlnjX7q-A>-9X%Z#<p!vQ2ntQ81v57h*FE6AqMNmde| z30lmlJ2SjcuOOBKHtfkbVcLhDftJ{m5@<6;bh4<p)bsV>v*JR&3D8WtpZ58c*48%p z=?G^s&Z$?r=5K6(PkUgqe2K>@_!zMbt5SiRm9)<Y<UM~Z`p&$^KD%teTeBDBGo95< zORJT&A`AARX1$p!(no}{$h@E;nEgeZD$4j{3C{45{ys*v*JVFHfB~ynW1q#jWi`?l zE;>LQ=o1$kDXM}DO$tKMM>&Wg-OE?~y8k7^Vwg{DPzrx`t;fAhi^Fm7m*~dy3pB-r z3Gs^~)07e{UKR-<D2>q=075VXlMsba2#Y3Yy&~?G^=s=u(k#a;fDxIAj1^EgVg8Fg z=l-m@vn}fj=C5Yq3|TVj;6<V2swbEIhNF*wJ{_7om&5UNbAaoc&Ehg1N+vGibMGvb zNO3WUh8DQ0+NQ+g!=YE{5}RmubfJ76p-aKBWbR&nwEY2)6uM#x!wim2ixU%x2rk1+ zRgtLN2tGuQ>jE?#Bdpn-5{o*GNa<1%i(CjcR>O!k09B+WwMUH?w8AW}<Yj)Sb)Tgj zXh$U*ArRf!krBIUm>xYp+c_i>Re-+jRSSiDKn<8SFggf>Ld<kor#+lM=K1(Xxi8oJ zpp{R>;jV?Dor$&+vNLb@expeD;v-#f{{cP8AME=(ZB1aePkmmpGF7V&i-b;cviyE6 za`)VNNL0i`)#|>TNGRE=dj8T}`T#)``7wq(^>mtS-2H_$W_8atqZvwjH+CX_Xh5@K zao#qM*@5{thLNbL1XRM<f<|N&B9Ep*Xw(7{50uJ3<Xu){l6yuBFC}PL_BsWfcfiXg z>UEXWNW4=~Uu)6(KggMzId+>9wDrm^A<QmzaD*W%V#tayW2?k}u&a?-Ng<e}6eX*t zBQ3_P*&i=WtEw~Qh6FKXNjy!>h$ydxQd15Iu3h&C8@JJCJY#47XSyl|-D%7v##~|0 z1x9T@YV$!`5861ht#+9>P`hNFR7+kE{HaT(pjn|$5Op8fx)35DYD3I?_mL*DdQ1j> zUf*$~P+|&LtXMa|)*zxODCTUeqLR-AJPdh?=y#7C+D`s}Ny>|tLJX#WHlTLaCy9Sf z?9({)^^;;HVx8X@IgI1I94}0tSa0S7Zcfa3XJ&iUwBGX`&S#BqIWXnN7)tZk&Qdyw zKG7EOq!}sm?}*f^Bk;0T%7P51Ah*;rAG0{*ySF5+Rts`us%n6uWJb;0pipy`LmKUE z2X_Z|%v}cE<R}Y|ev0BnW=S~@TJ^ez6@1ijDu)?!ltTByF?_}`=G}`)HJi${WFaVE z1U#lQ!Ue`G*n(gxF_zW{YA*?<lx=NB!Y*ZTYW`(;>;;~^Vw8m_^<rcf1=0z1FSSW) zQ|2mbGZe$mhJDSfo&y*chT#WXP{X`NP*avQEk;NftJjEPbitT5DskF@3&&v$rbVH= zG+u3lZ1Clvv%!{wB+Ya|%0>Z#*2`?FNf+?2X0BMGJS?Vxi2i=G+5gIbrTXn#DH8V} z`0@Dq1ZMHyn~&Gt>ke;eU%&fFs)0Xl9NURg83OTur+xU;Vgaw@!|vzy5ogdo?reEV zYgf8;k@Z18^3h)^TFx_S?2;)TU*$Ke=2ATw3}Ci53g}6cWXWWm@FXkYD=mp%fk^<H ziE>a|);D`*X`iK5w*Puqe#Z7jr#9f~y8C8?560uq&!HM_BZ4{}#o;L&**z;o-KZmy zaDp)NcewBW8HuvvI`S)mTYzj_<|i?pk;GsQ5~yGdMcJMr8p<2Q;U_abT-Za(&Yh1% z#V@&>*ds8F{}&S4UwXb}h&k*+mm^usOJ|DS6Y`uF{Y|<A?V~Kh!`&5~Xgis`?U7cP zmBWNK-`^O<-usIcM{^UUHq1C_m}SyTX%3+9G|3<$*(GJ0=k1O%2ysseQ0btekDc~* zro3>){0VlWaf*-h!u1zVX$%%TYxyikdb(-!v|0s9YK)W?ZduiNUy7{f%SBVu(9`LB zsZz>P+r%gt;h?%7?Q`}fLiucFPHd;okTx=%H}5vB<*NJri_QqM8$uZ)MN4q7p5OP0 zPf7HEGw$4|Np5O<Let}w!+x1tP!r-pcxVf8l!ZG-F=NY^{4AL16b8SJ73^j&dzuT+ z9^e~6IfyO}7Kw+c`D^?Ioj%fIGFIlHHyS4Emx88@YjUzdi};fie$4AQBtg-J%hbSW zuHa2y`}~`v*8<g|G{nhybb^~=Ov!@C8S_UM{rWq5$;4Dk&8D4<y`6&BcGe$T9qA7v z#Ebr*>BtHW?+^t~9uFKP6G&$`b;5A3S`cCxRdH}u%6VB!E5~`Bck~5Qtw5P}CK5Y2 zj?rMXfv}<r-=yj_F_n(vPh3u6fHDisiI<oJ{D?88-9pypYsYhnvp~sgRrkV{P$#)N zN7Qeuzn=03Uh{R=-&n(iGs0j|pK=pxK9T{jI#p5Lt@?TAacr+U<Mv+nvF?r$yhS9e z68J#M_MG+bH(m^uWCjG6M{-z?MG&vvD4zPYS+LWzN^a;oo%EOZ^Lj}=KW+}9dk`%3 z48CE?-;Y=SxQTs!gT+CUN#`NYwH`VZeix|SvDCyTHWE`@koOaQIN-fek=(?Pq)(oj zM*5u%7dr&|hE{v`qp01?wgkQMG2X;}QxHI+B&`Hx7?AOhkxn`A-IqO9k%fM)6M86X zfW(1*xjK4`s52b};uu!J&WA3!j3ce$RLrc;eJVgZ*eF~WnT_w^;Ue-^MDA_rkeb*= zlTya|h_l?Gzk)v2_wTpF-$jZgiw>j!;h{R)6nuC^*Qb~+Nm_qM$jqRM8b6=1XNazM z=xO_f)GFWXS9<fM%i}K3yrxzY5Bd=Chq+qmf|*G1a22IWJl#VS6*~kw2K2ag&!~q= z;91uS+bC*2Q9RegT^!NP^6wqWX|8`qe7|B@+$p*MDYRH8wBf|Jsd(sVSl;R+Y?T^p zCy$3g(x{<PBn^Jes1|hYq&2Fa>D@V6q~8BceQDKO#q6;TwV8gli`ScBuwQ3OOP`2G z8!PxwW!@zDdBY_o!~7#6Wg$2&YsOT8?I`vXVnX%W@Z?p^m4%WvnydAp15Q$slC8;K zqMAZZIkgf5${4;X72;Shf0kCRQGa~pGa6a*hDr<@41o&_O&L=bNJ_TM^Oi<2TbjS* zs(0f7bVLQ%r23m-NflnA>YWdQlFQfgZ?BjBOIGzzM#pGl0@urC_)Fr5y<bNcRfm{A zi5!cqLgw;ldZ?6$)4;||%GJ`lP$Ft?Po~$%HL(XCI5XyqB<vE5g?2}*ZL0)7)X;#w z=-xArlK-A`apO)bd|*{z6tdhfZ*<6&+23yekSbOv4l75dJRslHuI;7gn+e!2@S?Zg zBa~sQ${y~>!E^Pm*AsaO1<HmNYb|$05|NXH0F<?O1Qw&7TSs3z&kud}4`uz!Gotm6 zj_E+8v}EW&izqth{Ec;YCFI6}Zhxl$cq?~+pO}88-;>|TQce<+syAz-DOFC!?OAt1 z9Q1o7`Zd_EHyQhvH0>`=v~H^Iv(=1GP2%}?;zVUX&W%2RN_0bxqd!7TyVj?sQJZ7t zF47)YC^_YfXccR-sfYvRJ#09N5uZ-Ug_{x5A|8Y&p>5WdW`N1_&79yKa3ogViephr z%!pb=hp24M7DqzrC@xM-ga@oYU{b)Zh3W43`T&v#UMG-N6T^cOhZ)ke%XA{^4nZfe z5G`r>VYZnFN?43!zt9Q`pWrwET!DrDxJo$}xXl@pZ4HsX%=4}dyOJA1X2D8ls?Wlm zgZFe-sgWDpMqZH$wMc(TiDt0rok7~X>na(C{i6{}p}qPg&DR0?b6Q&iNa#9hr3fFM z{F4eq-HCwWA`&t7Lkt1-_1}0ls9ZrdD(>f~P6&;JAak<LmJfm*9}A|#Jpg5Ibb1vi ziT$2R1!O@`inC<Wu&$9HXPBPp@ZP}qjO?=eqxhUQ9;7OPD`2yS>-k&~@Zb>HcS>d4 z-5mkw=2FQ6MCgxKl@vpze{z5FHRp!uFmI~JA1{jUecZ%@F;%hPi$%y;Q{~zAfTY3D z>zMlYa8j+x(nF8&!;)i#A>r)wS5vhmr{e!Ih{MkD-QY}Em)qCFd~!$uTV;=_>`Z6H zoVQZJ+`Q)awxS{L*HIN1e^}kPNXN}{7bxQ9Op&+-^Ar#wZvpfwsF@&+IaZbu6_LT< zHEIaT7w)Ym$`D^?HJ*H4_b%(_DxZ!QbrLqP1`C@=jND8cn|P&-Q)ASPvYoIwd#pt* z+Gwi@EaX!a*ikzIT(ko82^LWMohxe{s0zG-F^YRiAKy`+)`%!n7-3*wNg8tbHy-I@ zA%x$VPMmO~I#S}N70vnn57dabvFfR~Zt*uESZadk)JSK4fuXE+9^X`1?6;7^+9eGd z*%PLXsU*ijK!VIJ_s+e*aJllfG`c`otos9~ZDmP&H7002HZ`9EBnVEU^CJbHW$Y6E zE-0oXMxddk4=6HUtZ7U#(6M?#N*!#A@%iv?|F8L%;`V$L@I@l5Oh?P?^`<HV)E00E zZ$2kOC1<DNm@ET+!7t?e2?d&Rk-D4^h<0HU&TkvU2f%5h7`XK`)wd+(2}}LPY(Qih zOE4dTHmXx-h2H9<pQnWx(kM_@o4c(ZNiaE>x=7p!U7%|%%NX&Y=L04$88D^^6Ql_j z;WdaJ<gK)7$Ojnl8|m14i**|^?c)TEzL9a>xj@WRjLn9Au#≶Y$#jA^>9gp4<u~ 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%0DXVD_xJby`RK5M?RCKTJQZ7{4n1?X`FwA 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 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.js.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/MudBlazor.Markdown.min.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..cf7e83147cf7bcd04828bbfd6119b7cd956a905d GIT binary patch literal 305367 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 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/a11y-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/a11y-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..867898ffb48570fc5d85a1add46ebc73ec3fc887 GIT binary patch literal 282 zcmV+#0p<Q1TmvAC)K>S6jYz?5Es%~{A~kM9L<&ai?@y(iM<^8h0P<$`=$O<i#=8bq zs8Bi=1_0v<VyM?Ii<ADDRoAQt2E|=OC3X>)?msg&o;T75kZ1g!hV-S)ZX`NH2xl;o zdy@qvuBj5Vaa;^47su;bw)w`&j@X|VZsAKZlDu}i1+ycD+~#>bWblsmjvE%%9s3>| zOT>vQ$=L#(=t6G5dcozl<U9eC!c77p(M{TS9kxQc<V1pz6%5AVc`-{v3|ZD&mkk>L z@3NP00!6vQkwS#Bfdp@mkl?3jy|Jzqb4ZSF?@n@v*ncLU(|`TEG5XceUt)ZF4=M0B gc|j<$FS?^Ha$@B@+lQ>%8~I=Hw1&!kkS~J@exiwoV*mgE literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/a11y-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/a11y-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..6bb09d38ebef4226e4f82ffc1d635472a21fad21 GIT binary patch literal 360 zcmV-u0hj(CiwFP!000006Qz>fPQx$^g<oaTZa|__wJ|o88{PytiQAevNlDy|YTCP_ zv84L}#0AQYogCT6pEGOuE$$WQO%r_YOf{XW<9XJeeW<4Ox?b1w!|W(4w6_+WJe;!k z-V5%N&ODkDRMHt_6!I<!9av0Zzy?3Mltg6I;zOYsV!XX1lWqi>9HH$P1dA;M0>!y% zPP3W1hH?eTjOvNym9iNow;4mh0Gu+50@-kH6^4{_5Wr@4GIZxIOHhkt>H;ExR6hb~ zJe&Mv3|-JrJu_y8Q3AO<UL36QoXdm4#bTXmMAR20gycMISz?K0(rs|q`Cx8Y3N+)Q zw0;`pXuB37#eMCa6j27oiUgQ+?kmB&=JdQnYFepQWqEk9Xb2`z2ShgkXC`-rjYUgM zTWIejK$Hr!&=&9aKT;TZja06-bOq`9+x>5WU!V4O_}|xjoQaQv|4sOo(%}=6xr(M; G0{{RA$*EHS literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/a11y-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/a11y-light.min.css.br new file mode 100644 index 00000000..700c5fd9 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/a11y-light.min.css.br @@ -0,0 +1,2 @@ +] vVy-O +/" $[l|1yVu.=7BxKY_ /I#x^X?a#Y5j*֌ A娾R'-8)EӸ9a#ݐ}Jt' )M 8p#3)38{Q ?[uXqa(WHΗ^Gb:S;3WB||Q9xap1{Ğ:wk'gn\q \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/a11y-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/a11y-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..73d10457300cb9e6892bfd7d2798a50d060b9765 GIT binary patch literal 354 zcmV-o0iFIIiwFP!000006QxqYPQx$^{gp|(fJ9M;7~9H)KS6HdrDjf25_hAj_V1`H z8QWmufPC?Dp6uu6+&BCdhZ@wz1m8JbP1iWav-0diHJv|>vA-W_h4R*-le+_Y@4VoU zcu%V_5>F$ekavmbz+y@R8vJMzh{&kKhe9#Lcv&Q!Dgq{FXj=xsVhe$w=G-;IEJm+p zI9nz$bw@0(l*KT)%`p`WzzJCt$bvgtV@RNd05+?WzCBI>nCr4kQ$Qq8-N}_#t?9&& zx?{#{W0XKHZy0-9drmz}Ky;}?M0L_YNWQl%%f%WX@iy4+e9)I>3Ybh^tR9vyOLVkt z1Cipe_D+f@J!3@zOe)Wn;GH=<?~qI*)uJr-FBUbyB&t#31e~7S6gCzOnWj+QNq{I7 zD4{Lh4!?SEH0<cf*_qBPI{$b7yWrQay>9)_JC8f@xcJ`=U%Isa1id3MW?lmT0LsUv ADF6Tf literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/agate.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/agate.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..24821158016c227817a5e32936925ec7107ce792 GIT binary patch literal 340 zcmV-a0jvHS?gJoXaBis{s1v)lz~*=H<4>hv0E5Lb0p$L@`=O38shHBdD>cOm)s{IM zB8amvS_ds>Oq09)q;II|nl%KCA3u#3>>TC<+R<z(fc~L(n}T}ADEWae&*0%D-!vt} z6g?M*ke9*E&ty?=s;kWh;Xv7LD!iU05@s^b3rBuDE-<udV7yz~Q>I>n8AX#S=8Ked zu{VCMOda0Q_xLRHMzO8hwgu>zW_m*qxwk6SHp#_$Qz6<F%C8>h&4abD>(VRT{XMxi zXQAR$2h2pl4J}W8&}8{KD^4ojd!5;AnvR3rf1MVK27a+TYwF6}AKn<288$#i7=WVX zzBs#3Nm#*;iwo|Wo^~{?ZntCkXc8?v$>xnGnOx_3WnJf(repw+w1{&q|7i*jBHY>Z m`qHVdnqEdK$>T^B;^hM`cp2d5rHD!0FizUn&c*SCDvSc~m8*^b literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/agate.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/agate.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..dc3758b7d7f15a6650556c65fa0b23d3fee40dd2 GIT binary patch literal 426 zcmV;b0agAViwFP!000006J?X#a^oNjg<mBzy{$W$xN#l#VRi%vhYcVvh_;zb-@TJH zauesy!k-RDKfE0M-+WP^Ph+AI&G6K=?YkyVX?U{Me!pCS#*k(hpXVSTLvzCOCnZyl zA_T0TnG?nFVkvU-iEcdd@V4Dn9Zg0!4AT*^%QKnz>~U}m-s#F_)a)o$oMF6FTis6g zwp}QXnkhBfL(b2uLnj6q!{mXn`GDj=d2u13XoJDM6$k$d&7546(&u1-cUHr$!oZv= z^{)`)+RF96B)%!r9bRi9!?^jCsECV4Opb4~ohpkcJ6<Z_^R&3P7HUQ;L817`=b*?7 zWZJInq<yM*kGyWuO|w;R`lUuyoaaAIW^%s+-Z3Wd>$-2Wtk%0;KdyqN5HN}hODPl& zlGOKo&G0UsDwA-;uW5bNl(86+MBS-ZyS*9ZWwCKk2PK=09<OV5_XcJ{o<ZA6x4;<p z0MA?S2<M_Q|4ybprH$CQoA3q(OS;tk-N1094_xiSJL4BO1~nzPnixtnn7oTvH3Fp5 UowNOZUv0@{KQ(^FmG1)p0MS0wg#Z8m literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/an-old-hope.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/an-old-hope.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..99647bd4ba31aa0cc39f667d149c77a5a87eff55 GIT binary patch literal 222 zcmV<403rVyI07K#a$5`38KSLldqG63xuu1=(iT62^1HhSacd?KVPHt2^fgn|w%qW@ z2Q_L^cAhQ`{#4a9D+F)HMVCC6C3iF!BLALEe(x#_70>pb1|o117{nb{2*rb>_E@;& zYuW&99~X(r)V|ep9Gfi_#ouLGa7&hm$1wO91{JrQ*Pfje)7>an&zseN6F2CboG0<3 z5+jGv{4aSp6pqmY)dC-+nQ>g8W&&q)nV^7xVzNWAob}d;i4%Y*WTTxS>Oe-iN)WOQ Y)I*lHPQdw|4J~Ns14e${W-?-9ehMaLf&c&j literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/an-old-hope.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/an-old-hope.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d192c9480d2c0d3daa32a9f0459423fb15b1d0ed GIT binary patch literal 290 zcmV+-0p0!|iwFP!000006J1f!Zo)7O{1{$WL|IEw_c4?0nv&rpC2_|p#J^7yF`&KO zIj8gavOdaJz9P_ROmPlFzpAMow)F=^iK$=FhFap=`cGC-^qzyh-Pw7L%GaX99oBm+ zx`Bn&#ZZI+JQtXF<e#aK%)+EGRV0w}|DhYoL}4_<eiBfwz9Bh4F;}A&hVh-+ri8)S ziGDf@BQBgCP&t7V=2^i4&mK7yGC=}w>2#T%TRP%)SGIs^ayUN=VeV*ag}^YlmqKtB zVXHA~a=|Xli^nMD(HyWDy5f<UUM$q<^WJWcxND2<#LFcnEALUK!ua^Bre&~t*iT2u oE?*BZXq9yl?wx`-vb~yO81K&)cH>d|ZnL@l0wYXt8aV<004Mc}x&QzG literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/androidstudio.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/androidstudio.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..f225acc9e7e4e6b0d510e649da56c78eb29e23a6 GIT binary patch literal 209 zcmV;?051O<5CQ;Xa9%7UTEYRExTbm}B`bt!b9thH0v3k+D&2JIVw{QIGEy0>JUjS6 zRoASqZ2t!vby9xQ;FTE`S^m2Yu-RD$3}tgPT!f8-md?l@%2*vE%$()pP>;idvS3ge zzs3b_p+pc;(uOmcTln*02FMZS*i=SfvqDNRhM^PzU#V8y&pzM6Da05hvn**q=y%3p zBaxNgj)Ms-s5KNj{Jy`ZaD}2sN@bE-ZEBQ!v=h5J!w_;43l+FHH17{UVjf&Kf_?f! LcE+D7an*$UAu3*? literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/androidstudio.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/androidstudio.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7dcc44dbe406abf368d80a88e2b6220a926efa83 GIT binary patch literal 273 zcmV+s0q*`EiwFP!000006J3x?Zo@DPL=Tf~9Rx1??P*AfwpmkBD$xmyAa^f{NJh}* zkn@Hkofr8|4-+KB@dN{Qru{-N>m0-8?RcvD8f$u<|7;a*BBUQLA*>WZvhtflidm%H zVUUvA_Ctr5BP<Ci2cMlQ?e`FE;Yi46h?T-zXk)tmv(B`zU$a-qT?Le?8$<>a%JU+R z>-EqzP3BE-j(mB+&la@!=16-sIZ`MzA~yAq7ho;FbqCeRxM{hZG_pT>x6pS@ArqN5 zP+5<<x?hi~(`4G#X2gR#g3GrUft3Ca*%qF9oLa~{x$6Rn(_;!=tE9Wo$O^)ybkZ37 X{950M=S9cva(Vs&Q!(1w5dr`J_>X~Q literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/arduino-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/arduino-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..2d8b159869d36eb24e22b92308bbfa00367ba263 GIT binary patch literal 278 zcmV+x0qOo5`2qlpR5gEt^IH8qxD^~i)ENJ#lEnfT^AP@Zm$7I*53Vl%gKF`LETEcO zgGd^Lk6^nt)tjH7=wnoM&HBQGkR!JQlY;!XU&D1z*6p?W9}(Aq?jak~&6a}1M^O!i zm@%8jCB)Np0szTnMh0Qm18~x{YU#Rs+oE*LvTwH0Ya+vx0HCG@(65%f%&)0Ax;I|^ z!?fmmHXdeDq2PG7Ax%(O!#zu9d6#Qedc$g(cny7>i6OJM9ph%t^F4)+X<C4<u>W1k z#5$1305W=ASr7>qZ2tnJJB9T5mLrh^01cCZ3sd<fpGl-gRd2SdQ;?zg)4M`-+%>5l cj*BEgcQwyhUI+l*_|Wki4e>MVmE{Tg0Y#mPhyVZp literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/arduino-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/arduino-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..8fa598e12e7b9d3325d35dc305ec0503fb0b6c49 GIT binary patch literal 339 zcmV-Z0j&NXiwFP!000006KzuMZo)7Oe3eQ3*`yW~XepG3neyR=3@7OlcdSCZ`_z$? zt?JLSPiNoR>ob0Y8)xF8yz8xOR&Cp!ghS_>Rk<tMs=Tj9P9Az5=(f~hL|*frAbVix z1ThuC1%|8hG9t@NVg*1D<a|y{CE21l)<>CSrPQRIjeOo~q<8&<h(HktCzC8{0?#lh z%3W0!MN~v>FOlX!!FM-bWppyHbpd+mQgtxgVFU!GLq?E)F|QfNv_gW5t|TD*arN1| zDYt2)Ko-Khs8fc4ytZn-!!vOjx<8{UQMGZjaK?a5H}s0L*G+lMHv1~u?DyIF@D_;% zh`szfU(&0$2bkg<X^Rg5raQBs!>x6e@<0PZqluvw>6gems~+tuXmzHho@CqJiZP+Z lnE`%#$*QJj%!i^lEi2mIaPSk4)x6r?e*oyxwLSU*001sSrlbG> literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/arta.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/arta.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..05d355767866446f62c2d754655047e36d0ab19a GIT binary patch literal 211 zcmV;^04)C-P67aAa9#_q6Iz6B!#{XS0~u~WeE!#Q(nci~NR|earag5gMl9YkEGxX| z2UT6O#$YQLQX`EUf1&?y-Tk_~ESb!*IcJ4t0u+yCb14hxSRn*s)O4PfRHkcMIdvlB zn6_J*z$rFCb`()Zf||GN3sOvrsa0d<^w>^*(?Q@CSP$^(J^6Fu%(;|qbvr@K5?4FO zZ-kX_$#|?I9-AvS*_Ckkj;Tu?V_{T)T<gtH?B-q0Q&q>HMmj~wb$EMQ$gT;|rSD{s N^ou#A-oBM~_yNT}V!QwV literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/arta.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/arta.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d35f5f09cf2ca99d21513f48e96374cb88d50ce3 GIT binary patch literal 280 zcmV+z0q6c7iwFP!000006J=4+Zi6rk{FuIuic!=_>|-V;81QfsmN@MY>c3A_V>)eb zKKm{{Uyc)hrp<tz#~8BjyF=47?>2CV-2nh@$2*})*(BNix6uj(uY+M2%D@Ka(96pM zITR@6R}O;8Z`-!;O=d==M;!5cDIiHCKPp(A3B0efry_^Gr@N6t^Vu1UN~`TzX(EwK z7A!oIiRFV-#^mR{6pX+H3A%+ru)07bFsyo6m;IJg1Atf-&A47e?9~o9RU~Az5@KZ; zQu^B@RqP#sQ5T$BO}$6PU)S#L1T-fh*-ffveaF0N9DT4)N%_iW>cNlO5WG}Zq;Zn& et*(m>-7-O<^cW{u89NeSvbP_`JPfN(0ssIUmw$c$ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/ascetic.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/ascetic.min.css.br new file mode 100644 index 00000000..c07165c6 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/ascetic.min.css.br @@ -0,0 +1 @@ +s@Dy>ڛ}bR>s["ݽϦ; ͔ Kj$裆fV#>X2&@+g+l@ pZ 7L<m~ՠ5\t31* gֽKk>eWL n{|'( \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/ascetic.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/ascetic.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..456152085f1bcf0041a26358fccd70105da427cc GIT binary patch literal 206 zcmV;<05Sg`iwFP!000006J3x&Zp1JMMGrIEW|Uo{^fVZgga(_`CLKl5+`X!bqfvJ} z!RLRtFY;N>0JzRY_Z-LDG)*6<qGi1GegC}w4s;MB8*6@ZG%Fl-Bj>P-kU0qF)yqow zqN-Ln&kc?gR2+=bCScTkLtzNg_BK2{&@c=h2sI_j%`%eEi%}v2FTZxROOA*xU+H*g zi9VDeHOGI6NeE3#XK>}VqSq02Y;;bVt$Ps9i;eHs$0%(JRIY#RYKPFs2EzFK0ko2c I8*~8x0NAKo*8l(j literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-dark-reasonable.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-dark-reasonable.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..fde029803e64812f42612d83742abe8c85cc06f6 GIT binary patch literal 362 zcmV-w0hRt6as&Xxbf(i9?eGHAm2IHdmr{yVbEZJbu{`T)RQ`7ZBn!p{G?6i_keR4R z*FD{3O7U=NTJ1L1ui4J`F=#C2Pa4E26FdKh2HJ^zC86qBLTXVcCW52qo@SvT%Ad(C zE6<fIqU`|4LVW<r({@Po^F4wH0{p`E*J0V}hm>R&noD2nb8X3)MI?m8RMnvcpi!J) zP@p!`y(r8a18fcSD_iDrX4s5j|2U%hzc>8Wfq-+T<jA+aoWfnW$Z$+q1pLJg%m8lM z7B0dvDY3qcu&0YIewQ-m0w!__)>r5;U4%Fy6GH?J<*zir_<xUECkJWEFIeJrQnWoX zyHu3N*cE||@;#KP{G+cfdlMq6-8e@!X;^IoUVBg}7XTIIs?5?&>U70jjx%~=sDn(T zjF1<Z%BBgirN_u`9>l^7I(h0!D-YLxtAkRZ_toyiYnI8cVS)P7v2YdhlZ^Q{X!;v+ I%vj|90aNj{B>(^b literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-dark-reasonable.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-dark-reasonable.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d879b633c454a135a4b8fbb90c6e5e8d3bbf1f1e GIT binary patch literal 457 zcmV;)0XF_0iwFP!000006NOXlavCuVe3j1RZ;pW@_&D+~8CljHF8;XMaubHhyJrB~ zTq#ZeS<-5?THA}g`58~>jSssgkg}D-s{}lZ!6&D7PwlqF^~>kt3~LT_eD^^;Un4(J z0QRAD4}B}THbW<1rr;V2jQjs1eq3|tUF48(#wu1oM7d{34q1EmZ839A5WwD66V$ff zB6GmUNxQKsR(-b`a+~!k8EOELVu4?C1>Vu7!?NImWvG??TK!$mWRb&cc8`c+Q^D4f z<81w}<hc%&t1ZdZ>);(Xk&lLUn!#wyoysG_m>UNlY%)+<QFL2X^e8fPb|pg{Sjxvp z7rSa?=q$Rq(Z(br*Cm$%yQ14@rU0hYHbRPO5GbW*yuci^OkAc~V)(<DoDVe8$MpQr zvMsK=KGVyj4ZrC^j|S?kv1U`oT+WM2^{uWTaM{TslQ|Sml9d$heV74i?!tGUoFXOV z%UrUP0jB0R1P$`0=Qx#PsT5gi)q@aqJ!7am2&3I$X50N>UH)u5TItPv^M_xF?6ild z<LO_IDsu2{yq4cdk9*#A%VoWDcQ`S9aH9x)fb$*il2a6ncJ%oLUN!?ya|8eY#$w@e literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..866c99faa2c9189926fc34741db2e64fc63ce1f4 GIT binary patch literal 282 zcmV+#0p<Q11p`22a9%7UTG%04Iu)WoE1Y`WWh}JC3rO|cdDd=NSU_!aZ7UspS}#-~ z<gkYimq1n5tS@Nuagwm4@Jj~Q%&?S;zu^GQ?ExQ#lbtg%Ra}#Q7Yr(;tGBqT(<HJn z-QqIAV>mG{P?Sv<ZL+N6k#~8dfxNM}FjU~<=>LohRCC_kmtu{as8q{pPdC;YQY9*7 z#4H|t=^ID-XN-}FfI>}f$;<qj08xQqP0F?P645TYLbCu(l+pkhHH&G@_iW5`>j=?G zTJDMA%@;E=YGb9ig&oMFH#JyQJ=a-TL^pMP)tmH^qH&(*qVBd(4-~$CX}6Pz4%JV= gZ-q*UPB_&)^@1!0&dodL{b@pevmU=O;De+60jg4nFaQ7m literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..61090de4882050179ef8f9f8fcdb061c7514df33 GIT binary patch literal 359 zcmV-t0hs<DiwFP!000006Lpf&PQx$^MSlf}S2}eaq+9nf$Vt2|%t=b(0Mo?3BSzd+ zlXy#f?Q`uot0TSTi-{D|@CaIW`monvPGgEC*x|9;c4qVZz4}dSO!OWDKmFa_OJtPN z7o#?PyFbLhP3AM<;26l6T4|$U7;E7nCSM5Z?S$vgn5=+|>bKTP84|LKp{54#SdSUa zLdZyHIHu-il8eqPP;8ayUn-OwV*;8xS6Z2_YGAEfaDh2FU07T_GCWj1Cl|yl;fP<; z(^3)qZfiFEPVmf0W+`4{y6=CHFvko*&iBD7W3jPD8T~}S*nB{8ph?>0^CU-6q%FJN zfl{?CU5HTDN-mrh<K7!PE0MF;k;KXIjjh&zh%?&}zdCu*>oD~RuSHA1>Z-oZTT`a( zb>*O+j*wlx{P)E&rx?aR`4ioE<e_iddFSDDVf^C8qKOH9cRZ9}F_8=S{R3cn=miD? F002fMvuOYT literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-light.min.css.br new file mode 100644 index 00000000..80c1c611 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-light.min.css.br @@ -0,0 +1,3 @@ +@dq[,9"]8l w2:`a͵-5^@iNW]3bNH_™bIk-4lL1 ]Rs-Ņ3.T+r.$7n,' 1#2 +(䖼̯ 1"hD= +Tqr#dd5߳1[|1aԀ\Л:,OM[_A邚zK*Z|55T;)߭w \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/atom-one-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..8d812e4af67d977d25f788bb70c4408ed14ea2cf GIT binary patch literal 359 zcmV-t0hs<DiwFP!000006Lpf&Zo)7OMSo?|URTtz0$ukplash5!%4ct*@h7RJ^^v5 zkfy#QzV^9x+|`~w(@6&kv44K;UZGvTE6|5AhU`uMJiz5UuP$ko4$h(Hm)q?t2SzD{ z8XDNW55aSl_(<4W2C}+TnxGlRQaFU@GC{c=@c0v=nL*q27FsDoLbkz|R1XfzF`-@v z2?;faSlvxhR*40Q?PlA)6)0K82qaqFbgfcF17qxh3(V1~%;M^h;i>RBS}$f1NBo^$ zmWtpvH8kxYc;+axWT!Ab_P<D&W11kP$KaGOn^2;RZX#f;z9CvrB<=EXlA|cn)?2sj z>ZY`%G7-vJ$@;@$+(%<;Byw~rkT_Ysv)g*t4eOb0i9f8o=yjO#gx8`aV0BeLgrl3T zoqI$#?IGE8`tKJ@9D^Tk@(<c^&;72h=bih*iSd^!gE~aG?6}X~U?l7D{0BONJop9! F007I6vSR=M literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/apathy.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/apathy.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..8f98cc3ef021f80840df2f92ace36aea3c1ffda8 GIT binary patch literal 364 zcmV-y0h9h4Py_(vY+I_V!<*59A0pyEe?N5?1ymppK<>NeEQ|IB7{$K=WLQA65u55V zq5oKg96O<^YgVB2_;h)4@>2ll|AwYA$-<`-?g*y|RjfzPxnL-EM~wg>d8R?CNH<uj zj09&(N}3@Hn^{I^P5iTNrhUk^9Vu9NzrokXOF!|=J0kSpkf!qc+Mwh;hYoZ~HmSb< zg?r*4&Sv&z0VqJ@S#-wWV3jdWvTZR4E^xB{y>eJ+vtX>K@l!uT_(?^E+S*!WuT``! zZS*eS^cZow6}3dB$jiJJ8b385;fkdV^#UWD)H(|?J4fX(k6h>)!@<IP7u9-S@-fRk zt~;33{jzUtO=I`8Knd4mplnq`Wd5&Vz=XvVls6QicSe!N$Vbbb-jXakmsJVs;YWF0 z6l`C5*pfK>@Z^Em{+?h|7FmM>FXeq0#$jXGzxTs0nLxa>%aetk3ncbi&4b^DO#7UH KDtNXpXhuJT0<<sy literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/apathy.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/apathy.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..99969bb709b9405a84403a7c7b561483a3975a28 GIT binary patch literal 453 zcmV;$0XqI4iwFP!000006LnMDlHwo`{S~X`bxi4Kl*Es*xO5^b0T!AaQ<nceg#nC? z`$qb5>$GZUj^(^~YZ=6+-I1-Pp^bwwK!!<whCTevmb*DL*jE&%HB2i}qu+S=04y zDqFOz2L&9Z(Ya+!wy>?I{F0kt0F62K#df5IltbF*c-=L;`ATtP!BI5sbNaMFa||?6 zq=*m9<Fmq-)~m6UOB~y3pE4{c1(*N?D45}CIzWcLPh(sZmqG}GRTN?Qk2*=2%BA@; z3)w)kBP7vL#H?RQeJ)P~M^&Z`1A|=U$AKC30$p*VJyMOw2g$x^((;#FQSTQ?rNpA_ z*Soq`&Oo-jfOvF9_t(y7Tz-S>PuT8PtHZm}Xq4I7xDjP-=%nu7P*zf(z)1vgEcArL zRh7F)g-4k&h2f9QpJDtqPUMZcP^S7D4Cc3k9xgV6H@hf#b_K~oDea<_q|tA7<|h+B zjgZTapOp)2OkLJRm*MzeBxD1(O31EDB?BORp5fI?GkcA;SSao~LfsQE*c0`#{EAcZ va6gpCQ9&z_Dw$`UamHs-@=QNVOc$Gbw`Mb>|F-AQt6^?GGj~V;Q3L=0iF(}| literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/apprentice.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/apprentice.min.css.br new file mode 100644 index 00000000..661eb57c --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/apprentice.min.css.br @@ -0,0 +1,2 @@ +M dZ\&- }j:Њǁ0vMLׄqnwo9C5+NztpҫtlBËH,J ҧ,M"mɒzjBϹAo;J0wOz<d]milgUJ&1hVef   +8'rBLT;0&H>N\\hmt.pr 謢.^`'_] SZc!s(9zMbYhVbF|\o0e_z6ga,PPHa-ȒZS8(~va lr*8o+~MvT&~9>cPu1# \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/apprentice.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/apprentice.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a22dddd58c6e924d7eb99c8fba3603673df52615 GIT binary patch literal 439 zcmV;o0Z9HIiwFP!000006NOXlZt5@$eHEnr9TmEW6_tlU`EZIynq-M{M}>IztI)VB z4C%^$T-&kFId+xT(46dNx(1;&y1v_n%W4-cw<)T;^|5=Cs@Opab?&3jPIqsAK8j6c ztFB96K@ob#Pqy3blw2!64B&_pAF5c*k?1+z?u*s94-f_U_&$Ax>=b2D`qxOxGSMTv zr>9pRghCp-rmY#7tp%zLG+0>lb7BB)eW&7M0arr=L$HEi{Z~X3(sC((GLW4qB<eUp z#P}_`^Xw8tVR>vGByd$42kGro>qdE(NH{w35M%c3X2arIk<zN7M4FNP@|%0*@g>qk z(YyX?yrcCuV1J^n-E0moNokD>*_79_Y!uP;FGe=#P7skmALsG=R+zb`%xLL|+*5n? zqx>1hZyz-)8uQHRD|=!;LJya)<hC=5EuhSEsVS#~-o4N)O&9z?fy<BYP0VtvuR<(W zM&r*)j1lJ6Xf&pl3_#+M!}BdI&T9<w2^D2DD+5C~iG=fiI3*AFMI{<7bV$M?pZ;QI haVwI?@r%T?v88H-!~dUi==or7{{T;0e&tRC0086@*mM8@ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ashes.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ashes.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..6fba768f4c3eac9db6835202277f9aaee0927985 GIT binary patch literal 365 zcmV-z0h0b3Py_&sl&;o9r*kRW_^ppubOLD1QD)KF>PPU7hw`Np^WDxIDoHfsT{RLd z6i@+9XBA2Z{_4~a=XE&&CHCug1eu2dK>v5tIscI_CzL*}$Aq<ogb0RWZ6FYigeRM( zigX+OQ^)?z*<>`E@%Cp8p_NH4n(CL<%?nbnT>b^$6<)3quUs8M8v;`*f3FQnUVW&8 zPL)lnH$S+i9K^-UUM>X%XuN2_nXuu|H1iyT!UfKn-<88s%7TfYW|jIJ#?OH=<abox zs>slq>D`+1Y0PaD#hW0=JG!nkzS8$wuG!j9uV93;(r4?;=5agZl?x6IUZde%Q-$6q z-?{ALwu4!%kIPo~H1<EnkcGWB5H^mkeh&ktY^HU2LlZ8~DKf7TJTCT-WZThdzyuBh zU&P4vp$W5zV-=p3Aoh6lFbZ=pyp~_Vke0>L|K1OOWFq54XqRWtA{R(BRa??;N^LmT Ls^G;dL6dp_<NLMw literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ashes.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ashes.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..319a02ff04b1be98e0eafbab14157e506bc8312c GIT binary patch literal 442 zcmV;r0Y&~FiwFP!000006Ma+da_S%ueHCZ=w`Qz1O^pxZEU-qd1Sl-GW}LqJ9Sk6P zo&F=cXU{qN5pD!FNA<^FEC?a>&~NN{(c1IR9OXtC*T3+NbMdxgz)yoSL5u$7jjvbh z%?w-gy+?(dq|v#g{b=!{o%2g>#t}8;T=(Ab&-aug7;+p0+b~FRW6=Q__d0*tpg9GI z5-H*X^K|d<q4Z)ba7k0&bScAvQb>tFpu&nz!-$#s+KqA1TnZ76RsrGiFE|NIWoZ7q z83EkpzJVzFS5lwKlhA?6vSDPHQGObkQ4iD&H`)_u+E?9nMT9Hxevw>CD$f3UH&<jK z0jx+oIirWm!Dw23qa2RZcdOOz88jYBH8yTU85=pNhbNMa)JJrZQ0$BRwvD4Idy$Iv zGII*UZ<9aa^lhBT6Lq0<^%V@|x5EL?_C_8pS6h%Q6zCzIk~I3s%=~=BcP(W2{<U#| zO{vPdcx5!*rnzmSqL7C}f{aLT-^1fARp&L?>V%^GWFAL*1TU*!F(!A{MR}SO_L4wJ kp5T>cd?qLN@>OEqSj}D5{A+m*Js!-@Kb)c0dQk)b09N?g3;+NC literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-cave-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-cave-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..2672a8f84edae471eda19138f2e3dc2885bca546 GIT binary patch literal 370 zcmV-&0ge6}Py_(vf47w?ufx!J3(Wp-yMzC)d({wjd;qe$_oO!ap>S!ug)#vNHlWym z&gY2oHNhP^pt^52pw#pE4)ExIjsX21Gn|n`KAms{9;`1&cYzSjz;?w9qdcP-N1@_; zLxD0zt6f*;8G^AV4rq<SlP>0CwEKY+&C_r2%~+XZUwsooHv%c-``RSr-9ZmBT{IEj z{lYzGpiU-wlL!<#kCQOQ7$^v3mELzB94>UU`@M3ShqP!2sL6?+ApA^9MMi5(bL+2F zLR;Ihu5f&as3Sq0gg|Zr@*chmjh{40<dV{scn2dL4RuyhJ4NL%Eln_)<{8gCyf<Yd z_r*;%`nv8Qs@wHg`<mAFZiNc&S%JwpGnV9E!=RC3D#cAjm`-82Ekm>(=HaC5x*)7m z;+)yL#(T0a1MJ$59G()0ZJ!xNhGVROaw(r77|LY%zxTtJOb8I@<>=GE1kUVct&87| QFB0RsltmGooCVF`4{;l{_W%F@ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-cave-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-cave-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d08fa1caf09bda701bd672ae365860e8bc04235d GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006LnMVj^Z#3d=;eqyHp712jyXqlei^In&cAamJ0FitI{M} zIPRZok7sOW%8kI{tiJrsf)G;o?ap3TrM=$gEH}!y_M>ddZM8Wv;FsQ+phf$E9rA8J z!&YtUQ6VR3bZTi>Qy;c-ea+1<pr%x-v2L0=)(HBPugbEkM9dqD4#>FA`O^l?DZnHV zGd?g+&lA41-i!q<X>5xm#)48vkwBor1)qii6ZK;o<EG(aig2(B2-knXNnk2L(`Ool z;l8SyC<jDoekJuKhlCDPk_`jHg!1FSjC!FixY3?K(<zAnl=Y6M<0|le6{nPxC;KNZ z9>`ykO@%uaNjy2D`&(x;t-n$BXKL%s=J*ae8D()cZbUvCIjQ?Ml7-Y~bdpe<viuef z+iVaPq@t5doWk(m%U^K(Hcq6Ax{$Z}6AY!;VUJgv$ajZ^@oMo3l7$TICM!v!-`vd4 zCVpBW!B3xs3v7&C)=e&>F&nV1gkbkV$gYc!0STUWc=gi4UZc$xI+P_~ax4z^3|{76 zaV{Po59Mi8*h&H=lNlD8Qy3?CmR}U+7t7x5_8ZnMnEu<IQm=-&{{W@Hxmi&J0023f B-tqtd literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-cave.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-cave.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..b999ca946bec0428d37f807d8423d486179f09e4 GIT binary patch literal 370 zcmV-&0ge6}Py_(vn%lH;yAt)F+kjCC|6lj2A?)}7WOwgLZT3Uq(s&DH0upRMu>qaW z5#?)wJ9NNR*Q`LPi|ImY^q(U@|2K&N%fqJ=u9#)OQqmm?0%u^mQbuu2X~ur2INxZc z3Y}G3T%Knj2V($ejl7dCrhQ1a9Vwcp-{70EGRMApM}%$yEST?W)8swNyL{%NiTLgp z?l}W>GSQp(pwM}ogfS+`r3O>Q+vbDAg^qT=S5EVg77YP4Iq?&WpNUgs;#h%5{k2MH zYa7-Tjt?<)B&b7mE|P$}hxbC`Cr}zLDQ$^&Fw)UbXC<{$Tn<xbg5j~{mV0<_TrKw{ z8`J3Px`U{0mwoMPTHCuNFY{|sV1zYEs`Ia5&`2?r;-(@@r?A{Q4=;Oib5eF)%-2C@ zS+dXSq9FUy=UePY4o?Zhw)X@hW0i_?;8H$AFbtFB|K1N@G9f^qm!nUS37px@S{J{a QLeiw@QWiyUauzg$A0Fhh$N&HU literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-cave.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-cave.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..3874bef2475771e05f77ed541b4a1d203de83049 GIT binary patch literal 461 zcmV;;0W$s{iwFP!000006LnMDlHwo`{S~X`bxe7gT#O%MHPDHy1XyTxOj-W>RtzxF zb>B$$>2vyW!i~V<tbX~M1tFyF+r7Q6N_)M}QErrR?MK6!`mj4P;FsQ+phf$!J#6bO zpJA)E^{9}OG&+@(O}VQ!bAHXuFrcQCtID#gM9dNNDPCjUG<A#{iw?-R&-v2^%_+bn z5hFe@PtP5`l-`U5E@^CwM9P9vNRdFG!Udm(0TcCO8snzsVu*0C3JBMKz)4^#LDOey zgyC0JH&G6VQvXWoOMVhMP)Rln3=_(a12gJ{y5L580!^nR0#MfbxcoI&;QcCgDJggM z&%1aae@HeJ?pY-9<c#ibozb-ZM%kaKtv8$FJLqJT#oD+Ld2QsR?%zljQlHUDLUGFS zJ2>p}#aNJvPBL){!+$n^!SUNTkv8f=p6Yinl->?|yxK&*KQxS2iz`SLGPIklB#nNv zGe4X7X@mqneHJdTF;-bOxs1l__qq~--3uYRE<y$*c%I?aOAC9AHe2XWmVn8zIM_3I znSaGOd3+qo)2OhO1WG0|EHtNQ?BrQ~k(e)*z1w|lShryMZ+Qy68s`2NLdc!IQ3L=0 D`4{2y literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-dune-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-dune-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..898e0d14d5322fecfc9108346155abf99cb64b36 GIT binary patch literal 371 zcmV-(0gV0|Py_(vYFnu?9nQ1`&K8q5@%^T=RkCHs2w`&hpScvR!mZ&ir+5g1TteY{ zF<z7;iSD+0x7)oHeCF%Z0S(J^B}&eZS0(#@2?+gPfl3lQ+!ne7S+%O18w{K6qKeGu z3>sHaF08fEkn$FLnb1W?Wk{`lU3GEXw|u)Z1xK90*Rj%TKL73vT|1<u%-05x_W}!G zsy7MWO1P&6qMF_tHl%=zRWwEv%{A9$yxqp2yg;#)R}P0w3sz%|2R}so8MYmXq@<!W zd{u18ZnQ2@?jh|KkceO<<;J{+?@QySCd8i%ZNMvyP_#Hpbvr`gFltQ@ip0!qp!c#J zabL=wy^n7Py}G*GuMpF??=H~8>*zqxE*8W6-!NcfFs1y4AdGi5xovB7xu<tahFxn& zxiSLiri@*u_GN`z9EZoJh+@_IfEjKYDT?4*-cjiJ$qIk(he;+7ZS0rDr<Dm5wq~ux R-=^SFvX*8Ng4Hf*x_{_<xefpT literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-dune-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-dune-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..f4a0f70d33583704bf22d8c348c4e2e5e9d42fa3 GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006LnMDlHwo`{S~X`bxfIwxfnmjYM>KY2{6#vF=hGhTQR^! z*L{P&oO8N4a3e4~t6%<RK?te)wy@VtX|MMs%8fFv{iv{FB_0{@OYh96Mf=fV$B-{& zo3{0+kdrhzwm=16O~`M#83xo8bBDvBY<3|>(8qW!YN(nJHx?a`ai7c8j+)a5GewB_ zk$HMn_|kea7PzFT&FYY0qf$r#K%l}Eo`wM<^kW+1W^o}zI9LUQ+uz_MFcnMVH3|`R zQ5TU8h@yTa^(7q%9jHh<4h&<Jp9W^s3v|Yf_5_+vk%U!cmFID}3cTM0m6DROf6m#X zGJyad%Df05o}AJBtuvaoKPdY%we@ayd{;UfWwkbLL|Pj;srxsSnbc==l2DuyeYFE# z9MZc;MJE|Ch2eiUf5GX;I1xAM#x&LUXegc?_IR}sJnuj>NidO<Y)qxyY$a**o1OW^ z#7`r{^3!MLMmB{m>t>hHl*Xx=J?8gJ$gT?|0}?#X@am<Ny(XJ1#F}z1_CY)j_6%O8 zuec<SkB9O!DQqQylJTdlIOk(f@=U)<EH9S4yD!S}YlZaR_859K%>57T^z>R$1ONb0 Ck=tVc literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-dune.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-dune.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..8a3bb42df6de49f3d189abc987db8cde650715d7 GIT binary patch literal 371 zcmV-(0gV0|Py_(vYFnu?9nQ1`&K8q5@%t{-BdoyzklFb^wNdUUT$=AJ<pm_zfMT1B z2#Sb^piSqTyDQ)y)TaX)mgx$VoFA`Bj{Xt=`hQfBne2Z~P<pLsQEe;d2E%4o3RIGy zGj2jfxzI&NWtv;;Wx`r34I#8fb=Adj-}3E_6dZ8|U&l+Y`RcnPbmx$kGG7~vycbx& zrbd(Iy9xKyK~yt(lLi!!v5L-!qPga}iMQJr6c;FV^UC3{X~Al!@yt&UekN^4A}OgT z4PO;ovKzfil!r*WYe+<}l5#`d!}q1}QxoD(QXA$KMkpH3Qr%7w9j2`dLXnuc4e;Ky zqurOX=jh|x!KiL8_bYH3_uU10cpV)G+QnkH{~rcyBvUGGAYr_-$!%Ms%RRkYl6Ku8 z<;n=4`!aT&+Lsk>aU33=B8au`17^5mq$q-Kc}HRBCo9l<;*v}N{_K~<r<Ds7c4w`N R-;Ur?vaV**1gl-p4E{M7wW<IB literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-dune.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-dune.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..0a7541df19c893525168a59569fbe66883a2deb3 GIT binary patch literal 462 zcmV;<0Wtm`iwFP!000006LnMDlA<sW{S~X`b)-P#B7Th3Nm|TKNHR&YBW3yTTS$^c z*L`dHa?a__fg6F@Mg8(O3qnZUccr~<Dto;zS#FeZ-3QdLYx$7@|LUC?wdg)}`7STS z(zfY3j|w?SqvJ@8HLGx`Z@C!;)D&xtXrOLGji8VD!{Jc1dB_`!4#>FA<<pLu(+D#~ z$oP?YdRF){dNUTdq^ZlAP+_A|NC7~g!WEu|0VDKd8{=kiAw@V?1%%t*;3O~=TjOUG zBAT)(BOMS${YvVu6cRd6k#-yy#x6e%%%~UWj2rC<G@T*|tE;*w;&BytzX>WOC1wA_ z*`qUo03NEM3?QDI(f#dgG;M!S_801!JU_l`osF_O8#f}Ijhxi|8_G=T3pz<CPKmzG zftQE$E>h7+MoeM&-^+jD^kbZe7j<LW>U%U4V~0InZ3HjQAlf9D$VoP)*7Iy7Y4n?$ z`NhOfE5!EGXXZvWg(>T1m(i5gsoOmk_e{w1IkXH&@VvvTmsa+gY_bq*tG(C<@i^EE zc$t31rFeWil&48yCkd2{)?abXVNmi+zbY&*mb|+!t7^AG`tNv5y&C5J2Q13ww^0ND E0M`28R{#J2 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-estuary-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-estuary-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..71606650c16047c4dffeb94aad236ed1f6583375 GIT binary patch literal 373 zcmV-*0gC<`Py_(va$BlghYg*!!0ZtbtERJ2CZTm9%>D0Dn<6M&Yxav`5GIl$6y`~2 zjCnK9+N9Ssz59m|lWzx9b<IkYbTVCD*843W^#82LAO#7xO^XDq>)I1yF&uWqV;-@{ zryrz>_69~-Mw58crLBQjVlqu?_57}jX&>yiGX;lT!PgO`YxwLP8M+dPT3N3RAny)3 zz?5tfzFBZj0z@~nHwZ`p8@m`xgV7{TNUXPQ4Z;gFn|0-I=xxDMv&IEKK>Qix6E$d{ zNtCF&ihcweqw}=8$lCxaWSoUgGw<oWX#AvMDBqMe;DttLYMuF}9U?gl^AH-S<1{9U z-iy4(O}No!ANLMsb-C;xrD>cG3zTq8lqeYPQs({*15S#`mp6#eesRcc?xSTl_ejc) zvz8@9M}%x#T@-F#df4<jTzs-9mbfS2bI2nW^D6If=*rDffA5DyCZI;n%jQcj1R9&W T*3@mm5ld~;(+k0FCuurACh4%< literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-estuary-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-estuary-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..0d32cd1c50182d88abd2dd49d2297639d7dfb0cc GIT binary patch literal 462 zcmV;<0Wtm`iwFP!000006LnMVj^iK<e3eT3cN?`$^Vx@~3^*yb1UN9ajjF!;DGg-P zUhki=2hZ3H+z8Ar>X*M+5JKv{&Fytl*z0}Ha-)oEKZ>rvBc2%WuilxUMf=emyBzrp z+qA7mg`A|(=}L2G_Vs?QZ@C!;)Rby<RTotrYXp7Dm%L;J#JsWSfQ<W`k2Yvd0Vax= z@qu}IR`_!DW-M??W1Cg6!h%vrv4KE^t9}{=OsyZ&7&nQFDZ;@jAl&`|CxNL1O~)jJ zL3zl_NC!kozmocE2?-sjL>mT%3FXIu8THaS<3@V|P3J@cSmpb)K(4_1O;jmqQT9)q zJ&-?5il*L)*u;}Fy1#Ws)Ak!>f1$S8?N0BYlTlV{<3=oNBPVtLhBA}-f=&{O^Fm*V zraGiWu^<(lW$Gym|JnQ(j^D<Kv{4t9seT7TDR$W7)h>2mjX2h;SCA|$&~CDlH2TfX z{A}W<5fc3TnYqBmc+0xUWi%$nyo7yO-ZLS)E<y$*c%I?aODlVgcCk>=HT(Jy#p7Tv z;N|KoPQ}yXp*)QWTS=f~{E2JMDU3><=~spM#g;!SN?xry{r7rGy&C5J7c}uC-BAPp E01v_D4FCWD literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-estuary.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-estuary.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..6584145f559b8c9d0643a26c815ee2de9e979b54 GIT binary patch literal 374 zcmV-+0g3(_Py_&E++3=x|CqMG#nk#=TfI~cl@QAQok1;eB(iAzl6Zu25eW(NLR3oC zY-RsR^7;H-i;c*)1FX7c1xk)h7ZAf=0zm&a)DTVF&j~&HS&~F`2dte8&8|cta-Qpq z!c<Y-CR3S+IN9P-)~1yfiV<4FpzC7VhjiPKg43<w>xt55zI;c7ZY@+&)@y^4_bl&n zpOQ_w?-bmV0MX6tjYCjC#x4famc)`WnZ(;R2f+oJow{;3by=`0YJBd;5I<u-P+OcU zMwof3=oW2^F3=u8ZOc(v7>zSU-qU;2_^B{<FH#%s1x9Ep&qBjaARQ(?gf^8KMWuoF z+Sh(l*_dV@&kkmFv+QrfX<QFWUgp<?z;a?TuKoXEz(q2J@&*#R2Tg8$0GB<vElE3$ zTEk>aq}*q9QK)_C^DUl-4^IxnQumb8CpJV=-sL?C1GiX)-eX&2Vwjq6TsB{V5Gd@d UT8BvGOr|RBXa-%d+Y6fh4=zZxDF6Tf literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-estuary.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-estuary.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..ff0a8bebef2ae444c04f59924c6ed03be90910c7 GIT binary patch literal 462 zcmV;<0Wtm`iwFP!000006LnKtlH(u@yh^I(cjAie@iT`>@sJ%h7+4THaiwziEyut( z+3X)kEp<yYOmoQ2@|U|A!nsgmUz+Q#GS~YWWm;<6e{@BcxA~D0b{VbqiuWHyQ4~2{ zVY|L}Ac3LKDwb431z)h{_e@U{D2%z9)wCiZhh&WLwrQ)T3~_D164dr{y&A6=da_W2 zi1XCpv%;6sn>K_AocpW^8S1433=KF)*z{9mg4p^ojkb%p5JH%YBnbOI#0o-XgvM(W zLP=eeb)X}NQNI-Gl8y+L$Vlra3K8YziE8=MI%8TnBnnTFgg{f~aZyYX=XOD*z@+S- zbM`>~G^x7wz(W&<R;%$gXodT45aSv9=5RQ^gDytdtc_`&)`nK7@eO4r)ETTm;HO02 z@UAK1qNo=VPa^i@n*D740`s@FJZ{wbG}UjfF`g}qa5c$&wBujx<`o3>2|6rR5?a04 znOjZ#G(v=*J~Qj-9IA|6T!wRGENhb2^*!Ta7y@JhB+oOvdTC>?*(3{9LzlNj5D$|% z6DQJFT$9JgLphu!^a6<#EWkIM%P}Z<rr#vi7fYXr*R0ug`fqs*y&C5J7x~b0)KLTg E0P5G?n*aa+ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-forest-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-forest-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..9d0bdef37ee62dec483101dcca658bd503e4ddba GIT binary patch literal 373 zcmV-*0gC<`Py_(va$Blghbc^3K!3Q~e`~83(GV@+KZLToGpHqwL^H`NiAN|z3klmK zMo`2P5wxkNbLT%mAgON$RCUctlp>!lFY5gg5c<DRf<|EBwiFzI>e@4AF*LhMRZ6wf z=?AHzT<Bbfn#NmN%7hdGL`G`${Hcp+AM$Ny3J$k}uO~{M`RpATx-v*g*{=;C?*(*# zsj^A<X2U%dAf}nUK|l(~IK^OuV=NCzoNn716fZDr_Lak7wgq>?8Xx=s@n;Y_Dito` zOkY*ZE!r4eVBAI8O(2nT6;frG_wb%Heo8{@i=_>CMI#JNorT;EQ8^6b5QNOMWJ1$> z5!bjc#h7Ow*A8ZNx$JLU)A-yiP{K7iNbn+?DgSR6@L(~8@`fUGpES9ReYEV^ZOO8u z*NTux0J$k@=hVLRu%+wp@yVgs@}6iUgb)H!p5;9XUAtNO@BOgJL@zg?Uk;yoAyC-d THH#HF?i_Dw1|c}@B~9lC6ZWk) literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-forest-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-forest-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..c3b1a4491c4117aa736e2db1314c757d69317a51 GIT binary patch literal 462 zcmV;<0Wtm`iwFP!000006LnMDvf>~R{1vOt>oH}F5)(hh;xa^50xS%BOj-W>Rt&`G zx^HBr>Fyai+zKep`d7F)Dugm!Te<6M@2>Z$%B{A({UQfa?%~KNzjWS4Bib)nf&`dg ztF{fGfuph}U!ezDHgf8(x$S!}n0pOxc1@XjNV{CG2?4@V-8%3Tt^b}rT{Ijc9VJpF zL>BPX;oH@lb(AX{+M-S!7PSUU1OhZH_zdkKQ$MD$el(X#2))x3Vf}}CMVZdf{F#l& z?UwI0Nsc0B|5};Ld_?e6XW7^@$fz*%%<4Dlf?E@i8a!nYA@|ibi*QXtSS6PVXJ`MM ziwANh;niVR9ui4FZ%ucT*5LXFRCmU<-fWJapkq)LYvWeTYeTP0_d&8y<_umTh|?@z zv!>pX`CXL8lggaJ^5^C+F#K3A@<x4}r}`Z&=Cg+mt}c^TqN&+z7||;hXQ&*bq^$X{ zvoMADWrPereHT8mA>DF*Oc@SYakr@f>U$xSlnK%U($^W@v$TlU;N}PsLI}`g9(s4C zK|O!PNAvi2sDOipRw31jC-_2hJSHcv@{7jwV$VcWQdSG5|6b3f_rTo$0<{yD_fZ4@ E05<jCNdN!< literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-forest.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-forest.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..4e7b769e1409f2365a520bff9e0fc40475d0e8dd GIT binary patch literal 372 zcmV-)0gL_{Py_(va$Blghbc^3K!3Pf-+rq^57837A(XwFK`rq~WU+jbc!WZ<kgyS( z>N27KScM)tpsH(Dpj7yDdC~Bv0MP$al~V2O(+O8Jqnaw#oo7ri6uS~i&<J=&L8?d> zQV0-PvZW<W=v;@I5?Vw5tcz(M@@+>77XCN*2D}W3FW(WNTZ1H(-`55u?*(+AQ?p6+ zoiE%|2XQvDHx57n8qcCL!ZDVIBuTd|2E_$VcD`2*3)?IhThxTqj}d;xv7u_=BF@aU zitSSyy^EY4AnuMLk#iMNWs&#rUTFN3gxD2J8|oECIBDxFW_E(gVG_F_WTqt(2Hxwq z*85V7dG>ML!K`kUePe1GySoKSxF!Q>UKBDFehmXAET&lAP=x-BBDb-RmOZ;AS$4Eq z7ZM2|_eJd-+m{};G>#CSJcw=X2}VK)At2?Ye1KtK8_WE?AAZTiFc+a+o_y-LKw_uW S98?s!bG*YDRl&1^py~fZJF1KT literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-forest.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-forest.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..f8c7fcbd753972923561d45c3aa2ea48aac1bd87 GIT binary patch literal 462 zcmV;<0Wtm`iwFP!000006LnMVj^Z#3d=;eqyHu1yO3TBbe7Ge?n&cAamJ0FitI{M} zSngkHk3D01%8h{Htp50$r9w#Ex0SuF_V#+8queOt+7Ei5Wz!uQ<(J->phf#pva%@; zGi=qi9u#ntMyC>TAmtwB{F<9#0F5bE69R<A9MV3;8{X`iGRBPsN71;?`O^l?G0=%3 zMtoo%pB288-i)PO;@B2-%&?#oU~C{j!J?n01EkiEX^fl1#Sp?^6-8M8qfSz$5;T1# zA>DS%cbiB@5tDu;^(8+M994-n3=9&=j{`I6rFFrL_DD6J5{c;c)i#lEMZI4|l@hbE zU+?09%uRT8*rf}uJvyWNTW2(`zd-h9Z0pVD_zpT5WwADHL|z*@srxsSh16$o5<#3Y zea)JBOY&W$!jnurh2cM&zrgrqoJbpWAy4%;7));mJzQ;SUWuk=SumoLEM#amSxFlG zW@mmj@zV$ie)=q2U}LPZZgLrpiE+270qT1pWY<N=07#!_c=gi4UZc$xB7_j2Q9KOx zOufv%;+#A_4&`xF&`P9A@(5pWPS2?1nSPO&FZSbzs_Uvnr~j6x(5qqY-`D{yu2BR4 E0DuzUVgLXD literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-heath-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-heath-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..b36223b163d79384c59f87232a639827b366da4b GIT binary patch literal 367 zcmV-#0g(P1O#}esa$Bmq4ikT9VTh@PbJ{A|4)}#I$=?l8wQ3s3=c6jzBndSY={f+_ z(ihy)30GaS0wopGh1BHV13>@RpfU|1xq~T0tcMmT2$bPzcX0wqoE$UtO~w5Ja$7*2 zZ*jR#7^A@$LTln}x|#MN-FBp)4!^<IkkUGR^NtAJ1(-0uuMNd}mUnsOtV#0yFWhqi zVl%Bb^Fe`q+(cnS8cWKPJl-}P94@fh|6V!N8Z5{ZH5U09#?RatxULm&?XOidPBuyx zSs&x0`-DW2*jOk<Ug^Ei_-QB&Te>#LI~ZYA{Vc|Ij@@DIL=eDiA`%bpovZ1-WMgW5 zTzAl_`(^LFPh)&q@-n|B27)ONAneyLAg43M>;@+cOP=!RJiP45eJ0(GTw4^=ah@Kt zx+o6&(&t;OhlQsAV#Ph>u24@Dq?DKP#sT9nu>9Zq;g?KI(o@Knt7RmDxs##R$M0N_ N;$hMAx!FX_=m%-IwN3y4 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-heath-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-heath-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..28268ec1c8cc05367b8b20a40c13d1353f297c88 GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006LnM3lAACL{FThy>xD^<0)c!?Mz#fUV{F%!dtoy9_YT2! zNt(V1X|-C(3pWCbv-;_87KD&`=t_ItRQ7sbvfL=+x{tc8MBN@4@XO##(4zb3o4)Lu z1-9urj|w?Sqf-m8mH}JpTW-b?HKkgMhrY#FBN$S?Y3jC#oLghj0U7tXeA=Kn1(-*~ zj1SDyv%;6wo3X$pO<j>lSx^co5(red;?po<qJC^++$=7p2uG`caQhpa1f~)+eI_9s ze(b)|-awS}E2%FzBy^zC*f26oC_jzNs2A#j8|?`+o$_((s{N|daTR#Ki7F*!W&gy* z1DQz}J3v`Q5>L+P;no{X+i#S^nYw1TJHCU?Mp>PW8<EdOPU_*!$U^EfI!P!_d3?J+ zureKr1*zyH6Q?lz@8vHzeH$mzMP0~S{R)Os>~O%VP2~HkE!%SS3X+8k?Pn`Vqu<=j zFD8CkA;C|dg$rzoUDnMmqbW_S_B9~C7ee-Zgp5e=yu+)PR`!}~wot>WmhYl?9PJsr z%)jDNJU$-E)1<JI1WNJ<U(KAusN{M4s<6CR_HMbR`EPGZy}IT82fPv&u}%a407=l| A?f?J) literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-heath.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-heath.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..d28306575418a6abb1a7985c413aeeb2013687f5 GIT binary patch literal 369 zcmV-%0gnC~O#}esa$Bmq4ikT9VTh@PbJ{9d9t&ZTzZ;SR(m*~RRpBN{sHsTT0jQR~ zV3tm}>Y5cOp_neDdjB2(`hT225+~u)2^*F$8_S_<6a>ofw2cOpC2~yPHx>6c7^A_M z)fSig8X&g?<b+nw+jKMSL%QuqLG6BnuOg*(`s^JMx(F~seqS4iyk~ir(=^sZA{tG` zML=w(^#(pDu#cN4OrFM)@>RTTIv8AFwfVhrs3lmC32HR*1B{=c(>T)#xVG0S5(gWl z^Q?FA(M>`PNn&H61bKz`LgS~QG;HbGAa7uVRq-<)+aY#`p%bA2m`y}t;k|G*-Ir`k zt&i&tT6MYXz4d8~PfK3r*TkTKDG(s^*DxTbGx_WWCv;1m^5{Ig?8$v5-Hu$#6w`5@ z9<#bA4*SyQTdaqMCkJBdd&*rTOBAG(m-5O1-7v81-}~X0O!U%I$d{`{B!aq=q1MFj PP>|wb-t)OxMNH=hfDp8# literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-heath.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-heath.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..ec126f42c454357a991cb647cb9cab687bf2c22f GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006LnM3lAACL{FThy>xBtNfj~YcBijmbV{F%!dtoy9_YT2! zNt(V1X|-C(3pWCbv-;_87KD&`=qr2O)b@H`vfL=+`VU|o19o7*FM~5di~gfz<-TMK zY}5B16>^eBr<SIxMbj<yEjQzcno_N8o33qRjbKRm4)>=HW8PSFK*oJ8pEhVt0p<}g z;{)^btnj7vW-M??Q(vTEEGUH(2?Q!!@o5+_Q9rgZZWb3)grikJxcv=I0#gZ^K9dj* zKXzY92oNRxO6p4v2_2|3HjE4t%1<LR>V>-CMtcHH$GmM*cVA69t^)5jQKh7;?4P)J zATtSLd#LJ2;>j63+)hT*_8aAJroP?n4)36|QC4T;M&z@RlX`eFvXJ_WP7;b^9^aLF zR;5F+AQc^D;uMDez5E5IZ{tL|s0(?kU%^m{9S(T4iM*`4s;gG7AX&)J(`+Sa^qZUc z#l%l5B>3^OaDh#+%evWRG^L4k*#Po;A>`>4AtMqz@9^rSmAxjLE!48Q<GUyxM|%b@ z^RKuR508iPG%4&Qfs#DJS2O1@DtR8iDl9LSy<4qm{@a^UuWq^j0sRtGmQDl!07?zk AmjD0& literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-lakeside-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-lakeside-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..3e9b169d9b33764139579eee5d9db8b2e973803b GIT binary patch literal 374 zcmV-+0g3(_Py_&EbX%&d!|!MdzvJ%rt*zc6osh)hgivPpf7B93qKfvNO*}#&T1eQ4 zO?8>jf2=}}9YEDJD^RL*x&l7<DFF0;j$@nX;^~Adr+w-@>o&;qU?_H#I7Kw$8AhpU z(_1*>D$O=k(gatDP7R?o2+z8h_Q7mBQm_cW!PoH85?{O{LN_@`sQkV*D0#Q8b2>Gf zRNwx>J#`RgGkc>56rk}eI#aTQ6iKGGEe6E}PPV^S4h!Eb7<<%M>PG-SBVkBnlpDg` zwTkbPjow90_W^fXkw{glkoU-YcrP@5CI}TPmNwKYjBwJ|S<LJhl*3wxRx8J;p$^_F zQR{uNqscz5JDAn=vTs~XV|TZ>(p{4QL2T+{Z@-2C6Bbh}Zz#fWMv+?)f@RmYB+IUC zwaOE(?9SHSvwi8^rsA;h6hLf!PcRa(j<rsCDQ__Ji^g()?}uM9fy$v>o_rd(Kw`Vq UsDG~$Vl95#oKY1#+XPMT2LkN1pa1{> literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-lakeside-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-lakeside-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..86d688254a7c9ad6b73dd3107649f8e4bdd1e48f GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006Ma+Lj^iK<{gq1dI*mH%<TB~UR0f=sEddtHPNS;-K1u^@ z+O77@_;!x%12+PTlltYa7KD&`==S!qsqE#pc)3x=b#K*2EgE)Uz|Vs-L5uDUS>N{k zlD6qOj|w?Sqf<$PP_oY@zU5{dQB#h6d{xlK7{QQXpkXbKeq+%A8TY<CZP1(o%n;Gz z1M~FA@Tv4_EO1FvS2Qugf>KDafk1_;ei}wht?$zqH<ODl!qF-q-2MS4fvJ?5o{5Mk zOVN}O4u}$eCG|O*gbq}K4I{&p<)@Ju_0+oHMtcHH#{}}VuXtId<tp%g6In{i%>J>9 zduDFZLJPZi!L27}^l<HsrtLS%;Y3}t+Z|q|&O%wOjT@2IMo#MC1!N)h37sSq#|&T9 zE#Ie$u^<&4W$Gym|GW7!PT$6fv{4uGRKJ6vWIG)2VpH={w0)fk6FJF3PVHwYNuyuv z%r7E-7$Kz}-wPMm6sxS8RYp@rtePIgtq`*BW6FpGk25@LX(g}8W(n1-W-NUV9PJ6b z%wKT{9`1+oG%4&Pfs*OhtT1OYGI@kw1(u7Y-mEEwNZS2xd2&4q=Jo>*Z(-k21ONan CdEOcT literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-lakeside.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-lakeside.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..44d0ae455f8fd18f5f2e6e2da9c67d879b1a0c51 GIT binary patch literal 372 zcmV-)0gL_{Py_(va$BlghY9urT3~Zr;lJ-*HG~}pKz8@t)JFNCXsP~ZDJLMo1{52y zsV)=xk5z<Y2UK;<3Y2OzU0yQyDFXC=Fd~$3@pQr!O{t`sb?fDMFo<0xG}Rz^hC!;@ z^p*h0RIv$1GeEOMFrYQ?&$^iQL2Wxyv?zaruj8dBzIaE3ZgK=vzOPM6-nHqB&X7&i zx4&>NIH<G9-Y5WtXq<&JMu(w>un^l8L%@Yjw!c?Si_|O{C)9ZAM+iTo(vZobM1@Jb zR!Mzj!@JDsKH_dGGE6W*Y(n0{d!g|Y2q{*Sw$uk0>13+2oY^rdhjHnGNm8aF8R5Mu zYrQXeRN2>c2U%S&`zF@3c6W<$=9&zcP&1oa|1}JnP)xbJsR+w6L~ctTExWuWDZ94S zY64d1ovy8A`_h|D#Npwo1hMr!!N{aCm6CBO?=bX>#)^OMhcB5>MPZkdPdyhPwp$JT SdkLY|_-%7$RdBWon%)noW3t`= literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-lakeside.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-lakeside.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a5b6d7c52ea1c916e0f9a297f7eb4602051f5f32 GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006Ma+LuG=6G{FO-O^~8#u`f{9)i56HpG#Dr>J+Y$vd*v8t zl16=lz0Axm12+PTlltke7KD&`?DzJvsqN*qM!8YO^&c%l#eN(Z@bl<Q(4zk+o064c zE!*_HM}?fE(W#{_8_}{gzvX6{P*cu9%Q_x&1Y@QtziQ}W+*ou##(l0=8#Jc?3q_3h zz&t%Gd}+NJ3tZCN7j4Y2pcGOB5UB70Ps4->`aX?ui?|pfoU8)E?Qd`rm`bJTnuLg| z5^WXffGFu#QlImY(1A*{VPcr7{5&zEUZ4wZv?tJXOeA0XnpbsNt^)5jQKh7;?4NUS zugoAFbg&yDh$m<CcpZ$U?KjHtM18y49p05LMtN8pHzKc%oYdnR%0lWBI!P#wnZ9m1 zzE1{WK`J`RgeeUFyZJND-^PiwQ5W)5zk;E3b~xh2Ch$shLz4v)ImtpU9TqD|qu=bz zuO@yPA(bCL3m4cNyR2JWMssGY+X2L_5ONq|$%F*YGrW4~!Cte?7HU|-So#Jy*%Nq~ zzv7xa+#kx*tgx2^N~YiRz_}cwl4tsd#QI_ho3)h?$-Dn;PoY=C-2MQUGRxml1ONa4 C@86OD literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-plateau-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-plateau-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..2190c3adc0aa1703204ee25b65ca309f778f0eae GIT binary patch literal 369 zcmV-%0gnC~Py_&EbyHd5VZ3%N!-;X;wZ41RPxw=90pxCHQc9y(YkYf@7m#2B3WO(; zF{a)d-zH7d^s>QI_iHbzu314z{pm8W{!0M#e`Ivf3C(RFPxDlDWhgZncAId_MRgih zs3;ed6A>-9xReQrm|;e=>Soi~v=8aFlY$cN;A?nkb??6;p+hAG<bG{1@}A{gZqr4R z=1UvyIS0|q=rt`UAY&7q5orto1j~5a=HR$MwY0AsiY^OIrN%Pf6#O*xKq3K*{nWoz z^hh>(7pd2TcFB;49hv)ylK1dFG=7rfgde6h%sY%w)jW$0+Y;%}(k>Js;e<WjLtWc_ z$;LGLcy}<Wqh<g4oW^~(<Yj(MNECoEk@kNWa5I@=aYGV@7rR_*Q!IOO_hj0YxK2It z(s-TKMWObk&$oCU7Eb|Ut9#1RrvMUC;8WgEsD+E=)4QoQnE((Rm({0+3lx@Ct%Oz~ PLzk(f88yLX6PoG|A@;KA literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-plateau-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-plateau-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..deefe57c9de362a5c72da099b2d9a98c8379361f GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006Ma+dlHwo`d=;zq@0#+~V6yRHtO3TzNq~dl)|BPDZ^Zx` zJ?s9#e028=jj$4{ll~p94y073@3!u;V(xOAqrz(IyEoRd4cqKFh;#34G_rd;)+kWS zWvi|Ws8NuzCbzWEvX;&HwXnm0hH|dKrfHg#Bj|H{$CzX?#jQgRWc~Ymb<qflFj1sP zh&<4v!l%}&bs!XtU6sjr)EX%PNYuE%GcaI=zE5NQBrb&r2d9B>{TI9fu5)R=W+4LV z&-ydb0a4bkl{uFqp$DC5<G?Xjg>m3kKS5W*nm}OakV$yWV4Ie|78*iWC6$VbvVYFi zy|RG7W`|pzKmvJd`s>jeT7RMHPt-M=&Hh#CWR%6)gq3A&<dx}PP*%#E&?`cDDD*XN zd7CkLRGJPdV@fN2Hh;$P%X*nN>SLMePqdWJ9(%mFVu!kAe7AT7#bYTwPF7OZyx3Wo zP5dxIE<e0iKJqbjIX}6K#^ULZ=0m`(lInO&B?A&X&hYG|g}p{sEY#M!TGUBA4(<d& zm9ID__xFbiG-~V=fmYcJ3(o17lswWe67!1{TS@k-&0poe?K$*pnA<n-pU9_C1ONb- C<?8(a literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-plateau.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-plateau.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..61f499e9952c1873fcb1a64dc2f94fe7f5a4ada7 GIT binary patch literal 368 zcmV-$0gwJ0Py_&EbyL~J!+7mlz=?6*wQ6jY6!CT;gqK~!Jd5VPPYj_DEhJQ=>i|?s zU$9GiS#`|{l%zLZ0;~TX0Qx`2jEv#a2}>t&xbufDL=Y&$(@ZtB(LSbTnu_~{Ld-Cm zZ*jR#P)<ZdXjP3(XVX5U+l~~};WzjyQfjAn-w~nxKoaKnwV`;=@-DBeHA%kkg?m;& zY^L?<CMd9vn<$J(WAMSB$J?fZ#RXOi-z$gO2MaQf8jXBi;-{_|i3BkAQg^N5<HSbk zBI^}-bb*kFZIye8N8ZDGq4AS!J8bFNAa7xWRqtmpwhieH4J|?*5>D8`yRU1yFWHz{ zAJ-kU>R{P>=hGPPmb}cb34u9aOqBi_28?v3nBCxnVaZdjwIP>1xzD8A74VyM$xY*3 zRu{!#U;2ED_0aGXKx}bOIi7Q%AO&8^D+g4<z;b`@hhH)QK#(t2p9&GUvk+<pXyr0= Om<mTmNpQ0Yn(_}ChO?mn literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-plateau.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-plateau.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a1ac9a59079ffa2d80a5a38170a154b11e790de7 GIT binary patch literal 461 zcmV;;0W$s{iwFP!000006Ma+dlHwo`d=;zq@0!vzm~4C)Yk)CwOMrvn)|BPDU&R0$ zJ?s9#e028=jj$4{v;GyX4y073?{@C8V(xOAqrz(IySElv*0KW!@zr}9jqKjGeA{l@ zxop*S0W}Iz*5nq}vJKnJ`L(dafQE8z&zNK~<p}y5Z?I{aCdI8o4`luOe09+XiZD^6 zNQgYpqr#`wt92k0ja`*NdDI#y0Z7!iz%wvlhQ3c@{Uk1h2nVNuaQz3o0<LpuzGfi; z>d*Q!(E(A`ua)^KM?w!e)5d{gt_tJ8t$u>8gf)S{&@q$nn!!%w<!T6Fl~gJ!%KkZ5 z_sRkSn?3G$0tw`;>8~eiX#I_<KU3FiHiuWGlTj9H6IPbBkyoaFL0KttMz09vvC!AN z<!#2~QE57=j47@7+58ud-`2~#Q6I}xzoVsm_Soaa75CLG<NL)cC>~4cX|j^C=Ecs! zY~qIza{2MS@{y0J%lXM=G#2lEG#>(Pl~kuwDjAUAafW9vE$lVAVxhL)*P>41ad2k{ z>gOxolZX351sXMWia@Juh6U$zOiCW<7m4}BimfEuw)w04w>^iR4RiYo!`ALGQ3L=0 DLYM5Q literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-savanna-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-savanna-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..8c3a0ccbb4e4dce9c83870f32ec91db5be080ee0 GIT binary patch literal 372 zcmV-)0gL_{Py_&EYg?*Zhc{$DXu<cm`+b+{rFj554uH(g|EbOHC|sKFEae3x*nnaq zHq~W9|FH@^c3@T4tUzhF(`EVNp8`Pt_f;T#h@MWkqTF~ytc4YZ!BFf<11g>JOq^7a zE<kI5BHz-ICVUeVfk$YK?XxbXeaN>RDOkkc;OltliLc)gq1%vA`F(9r@?KC!IyIYA z-}}Nnbr5GWds7D#pz$m^BQhCC7xQ%6Vo+S*Wbb?Bu&`#q*ihrCpECSRV?%W`P|L%$ ziuKt>?-Hj+jJu~uqyosz40#Xlg~m@1B3iMup<ZExlU8Rbvolr>v)BdUX~e({@ZQF? z-j`y`vybZzW_7phn^4o(-7QqoH5m{x$21lGYZx$LF{Sc`B8+Dgxs7eM?Aa~Jvg?J^ z0G*@Q7qu~LUwYcoI6OQ>5G(G9@Z9yaj~OrJ9fncVSmE#e@Jl8D2-@Yzr<MyO_FAo1 Sx7`4|0DGKC6+GJo&F}}99J@LI literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-savanna-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-savanna-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..563b8569d7d683196cc445def1679f46ca0fbba1 GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006Ma+LlHwo`{S~X`bxg(4T>TiU1D(i9fQ4qql;yu~#Q+ms zYu}o_oYR*B(;Tz2{N-*2I2USY_vX4O%=Nx_nU>nNAH`Rh7uB%?b{VYpinkxg`UB#U zwrN|35*Z1tVo6;!Uo|Z8Ez{$Oiejv)>#E`*Mld9rzU1X0__aX`r0wVOG+r_CFjEAN z^PQvT4qr-d+5i(YwONdGUP`0@z)|7~Pr-;0`Z0~Rb92E(I2s9r+dp6hbTX#KXKbX~ zmAict=zu8pFNL}!lhA^Uw0`U`X1QtXw0wcim{yKJ(J7KNeYM-OxLgU&Z9<oVQfL3z z*&{Q7Kwja#3m}fHR>Q5=iniY<hBLKQo*&<(&O%wOjcK0NMpmfd4P_?O8Lc4Xr$m3K zo2J~Sy9h}q5iz-DKbybc^sOzA8?`=7_1kNTw#5OjCW7x+1CXz-AUdB?`&mjtt2aAy zi-?~_i0P-#%=&H$RmRRLqbZG3)vU?y85eyYQbr_rp5awXD|t;ONvJ65qKVta(VW4F zpRf1`9v_EtG)Zg)ffP{;E6&*rojlX80?WnHpDn9H8MXW0^5}XM%>6I7J&P+*1ONan Cw&AD% literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-savanna.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-savanna.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..06ad42dc6d816e814a1abb75c484a9c63452724f GIT binary patch literal 373 zcmV-*0gC<`Py_&EYg?*ZhZoxqS`Zb#?^3-q4`9auklFb^wb>noOY@zjynqB7P;8SC zK@kxVwCS94cLn@|`g9;w*Q`Kk$mw$Q_?H0C|1F@faqx4(6$hSjR4p9e9}JsaX<?WK zorxE!p1fO_%&2^eOPK&`0Wv~s>{eY&`;cxsQgFl>d>t>n=IeJv=+-CBFkc&tyk~ir z+tg^%d@tdiI*4jUZ|Z>pGFH(Uk#NH$=JB?TL2-d%FRvU9n-;8w8qfTc;Aa|kRL25p zY51zxl5IWj{PKus_Y8@cK`s+R-oyLS_z8>!C#end3L_MaXQ^&ygbuUN1)(gWkpbS@ zu(tb>jcN4p?O;@Q%YFq;<Gx$+GQXw{1Wz%Jng1UKY$Q`EZXjX2v&n7fl4VcsmZV*8 zNDZ(lvVB$;h1!=s-{Nt2c#0ra+*3}GuC^KzzU3W-Q7~D7-cvux1OUN)S$yiaKw)pz TdPM3PPzHONNfWGgK{NaTdXBK& literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-savanna.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-savanna.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..be3b7ef4dc784d5d18099b43cda4d9aa6d6fd021 GIT binary patch literal 462 zcmV;<0Wtm`iwFP!000006Ma+BvZEjj{guw#*IP%gRn&e=2O(Ov2wVtz>va0>J62$A zx3g~{IY~~E1JfL`v;5_5hH@^{*p=qGtIYMjdYP8mb{`FCzZ!b%DZ7kTd&Rqtf)uQ1 zSJ<xW97td&w2CR!SDja6jqjPBCQz7SL(S_$h#?)LpEM02JovQ%OHtd;^=Z6f=;_iT zc%1JYJ~Mnty=g<4z`4sJk={!Q7z%KZu&Jl$1hMpE8f_PH!G$mxNfGwHsTH)B5gMP7 zNMF=N8TPWLh>^b(>XJ+ZOJ!{9rye58%~P-COX-Yh<&Y{o#U|}Qiju|UO6uG$uoRe> z{bOejWGX^)0%aeHIJ8=gw?Ql1|9}|J*pWOxzJo48*{qFep4Ns|sPRq9OsF$hfxu6x z{h?{wx=eQw5>F!5<eL56`~~J8ZF$_N^=YbauQA#dM!1?-ykIS*`Q{3u_X#>IQW9Fd z*_m5K{4_#@pFT6|`#EG8yQmE3G!AK4o8L1oh9N*EK>9qxtClwMnoW{WRW(%`w+)jy zQzz0_T!Y8Qp&ZT<I)PM*D27eX#SBcI+iwEv#nLCL$)S$g{cn17y$a_32ir<}W>EwH E0CpSSy8r+H literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-seaside-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-seaside-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..ffd3e106e0ee479149545e475ced3467a8057ea5 GIT binary patch literal 367 zcmV-#0g(P1Py_(vY+I_V!<*59A0ndRnAr(KLJ|vM+DnF{05y>BRc$Qf_HQFL)n!8e zu?ll+i>j_!ffD7@<;liR0ifp+6!h1jx`-%JVV!x-1w*m9$r3dPPcukWnVurn8ZzCI zl2)RO&Xpmw8va>F(>`R|jub51Z}3&T)Wiqxh|q~cn#%8MgOcwYI?!pdN%iF~+%pd1 zY-X<&fC4n0MQ2JtQOmPwvTZRKT;OE+d*!f@X2Docqp5Ep{IsJarnIIsx7RAt2R3@= zIbBEGWkn^{SVL1m-qm}d@vkN%T(PvF-oOYarOte2+o&AckqafvCY)Id?`c#It@ANv z*~fJUvpQb(jjd_yE*2=^nhcmLhhWO}*DzqhV)Eq;Md;2bavu3;+0$E+Wk;)7JXfrc zo4hUxwm*8<k~lOxIS?D)6O2ldoTUJ~lvfz)VPo09_roul0P1L$C+~VLkXUXt2fx9L NmpQ#Ec(w|f+7IRKvq%5{ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-seaside-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-seaside-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b6218f4f30f56fca4df79e81eeccc47b5f177d70 GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006Ma+Lj^Z#3{S~Bn9V$wP-uM`li(9g!NhWc3s1X0YDvh&+ zMf;Z8$H(^Zsjw2Vv;Gxsj!CIZ-xlt=Ik@Y6i3+Q&Z$A!D!U2w)iA(S8Xk`1*eRaJ1 zT40;D4WL1wvW7}(!OB`J`K_?S00vWT*EIDm=8*LiFY8K{b&OjFo}u-h%cmQSz>&=@ zVkC?_;PZqpr8n!CP&l<&6*GL)8ZZ(_(6Hh&YyhHuY-9aATnr%$PBVn<Z{`)_nxOPa zgFu-#1?|lcX@0HDB|Q;5)6{kxI1nmK1GoBxIuq6eWCl-3z^ck~N#bf2!X{3sFirN) zJ9{7#NmDm<&Lc@cZ%u#etikOMsQ!#?wc8!vL1&|^WD`~<+0ZM~ziF8%a|W*v<SDh^ zH>}t<=`Kp+NfD>C;;-@-n0~C6q^KX$R^OvVdVA>M>WDmVnuZsvD=0oDXg6C)S@TA- zu$cI11%jVGGe7bvRyjYr3@7SX$a3Eu?wM3w7a;>6d*0#IODlU#E?J1lJqPkK4DQT= zO26WgJU$K;aMI8!WLlBqRz2ruoaDLvDzRK_?Oj2t{kNP#uZFq*0mRXmPf-K_09Z5I AL;wH) literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-seaside.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-seaside.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..11cea013d932b68867be2b986728302cfb967d7a GIT binary patch literal 366 zcmV-!0g?V2Py_(vY+I_V!<*59A0ndRns&mxpClH-w3iG?0cs%MtJ+vdvJso=GNJ!i zg*moCRoARQiSX(2Wc{ZA&@+=Is=o}MP6$&@rLayt=YpZwOoD<zcp5>fNH0=G=gLgB zq@)!YVyz*BR^31AVA_Xl+mV8W`whN|mzsG09T7TqNK^TJZBX)=LkBudHmSb!g?q+9 zoXzYt15kj*v*=6;6t#SkY+DQl7dTn^UO6nJSuhsVXzH5?KdmU@q}G(?_F6^y&_?e( zr)!A2q^QUmYiKISyLc}&{%S(P6-yiH4UBM7>da@hh0387xlqJx!kM-3o<#M~I&Wi^ zeOz}itD|M#*qX-fY=IK4$$+_X2vV-Uh5-{6lP_;5LU%@y)5u55p5BryJ6g@)xnhM} z=XFuA{pev!;?VHqKx}kRFe*xNmIClnUSX((jb;Dd55HsrsH0t;yy>|>VyV>}{012> Mae7toY!x)sA4+Yt<^TWy literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-seaside.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-seaside.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d3d63f67bd1ed936c4571ad2826cbdd65b598366 GIT binary patch literal 457 zcmV;)0XF_0iwFP!000006Ma+Lj-xOP{gq1dIz^=j3iM;DTnx=LB$>qQ6jlBA6(!El zZnbZYeSCa75mrKW)?eY~n3T%&ZQ-t)(p~S1S6FR*`%w#4)#AvRxb)tRMz$Y$k(YU~ zz&33gK!ZSK4W*P&K?zHIE9@|UL5fxNK~{B)A?s6_UDMRN=(i3$L+d}6ryGsHk<BHd zCyYGcbB8afH|v;CIJMa!M);^TU?h;BVZ~?I07U(m#`?Lr=t3BrW(eCq%qzw<LFq}2 zK$SNIHNp_7f33_VnFyX~DmxAw2o<J*Tm3?v32Oo}gQqm@;gIK&maAC^o7kno)Y(6F z_CO|*rf%w-N0NZvn*P>VgWDfa{TbWCZg+eKorSVmo3Jvi4ZSk`o06F_XYdL^o>KXJ z!-{>A?xHlF6md!`em8%C>Bo9W8}(zF>U*?Ewuc_Bj>z+-X?U@^g5qO>cC(a}HE(tn z77;&<K=9LN=0`roEazvH;Y1Y+S?#;>o=Mep5i$U>=NVqLw3654l7yJtbD*ySgFCaJ z(pOx9$H$=pP8wQ;Oe<2{s^)CQPM*uJ0?WnL+7-05|E81cRWSFz^yXv!Q3L=01<>R& literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-sulphurpool-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-sulphurpool-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..87cd77d019943cd0340b3d6f7cc335bc8a2df252 GIT binary patch literal 369 zcmV-%0gnC~Py_&EYg?*ZhZoxqS`ZcMe{J<r6vRU)`*#Mlc9&=-`Agyv3eiHsHi;1w z@k9h|>gnA14-iQ5?LexoS&0(M>2mbomw?d!b#9D>0B)-bC<@iw@%_cn><R(1MClB@ zR8d~GX!AJR;!;*N2}mTh2JY0wv=8aFGX;m+!PgU|&wTNY3|;v|%6@GCdC&4L$CPXm zzTI$70>m`4H}XgU8K)RbONt7G$l`5VgYW{wc3(Lhx-GaXYkcq{!k=;Is01bvXs#-H zi#A3V825>`1yo`-kxZHQ@SZe&0%O68r44wY5r$f4A-7{v4&yL{mN-R_Xz0BPYuuM? zOtX(`2eZ0f_P42NeD0RK%&*BoS%_Gq{@*a*!D0&K4MpfaX>uF7WZ9G3l4VD)RWh?h z#y44A6l!1ke2drN<C8<N{GResC>g*s<yqdN&<{4t{JkGGnScrXa`@B<fx`B#wd=N& P8VPY*GYG+HFKK!|_Z+lw literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-sulphurpool-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-sulphurpool-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..49136892217a3835258ec7c8617d98fbb4be096f GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006LnM3j-xOP{FO@kx<x(MLZKg1If<dUh9sLfw?$R|{Y1em z?d`oK_IPIOIMON1&gOT#c~DB*t||O=v-j8g6qU}n(7f%jEDzODfV_0UC99gZcHdTQ zJHa+h6Vad~?JSqnRjtIwl;29%_h^Z8hx&lPIf9PkrKpOU<IZCMa^Zct`eY>~7$xRN zOd`^=!<W*V^B^@1O~x6Kj6s?S6dGLdS?H0eAKkbxnwvv}y*EI({R2URFbw4@8<F)# zo#(S05V3!w?PWO<1~4p}dV!3JLob|pq0XeUk-*Yv5vfX%*F0PUF>Yp;nigmOoU;e= zn`Czo#cn2v6rAmDt+TZKLfxIIsdl^LPtb8uR%4S+En}mgZTEv@rtKMnCRC?I9%Nk= z+=EEk&`C3=a`Jof7aYD^P(0C)maaaNBR&W0@ama7&mouf>J_v|3$z_qNjv+)%;L1f zPc1O~^qz$zhPldzam#36#X=og_3NG~-L^BNM}p@bUUzA=UV~p&s4S~m%Go^j{tQts zUvWwv9}g92FxY4UqZz)^9FMb;XZclPda>ot%Ce|n#q{5D4!thS{VyKA#H>*S001>k B<}d&N literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-sulphurpool.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-sulphurpool.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..eb8e8699205a751a2b01e67844ebe3ac44aeb6ef GIT binary patch literal 368 zcmV-$0gwJ0Py_(va$Bmq4ikT9VTdXG^X|7wism7dZSSJiK8Y-rCy7HSL<<Rx@N8$C zKbc?-9dOk(D^T)cx{w<E=LpdM!9bSC@aY7@vX#`LI}`-TpmwElt*wz6`=#Ri4xJbQ zGTY+vys8D8$3Sc3opdqnL%Quq(LDSH-$;}(_0>BfbQ9oU_`Wt7dC&4Lw`r=0`R*6) znE-V%)tmUB(0QChFdZpK;5>`BEeC@O9qoRvoaU}sG;*kknV(?%Or4{O(Fq58t>XIJ zMs$heLoDqXs!*E<>X7&FUTFL@l!i;FE%OFOI_h|qay!Lzn7R-;;uMSk3-67q?Y?AV zT76x2P}S|SuPvvwy<74!za|G&&SRd&U&Ej=WJ=XdBn+ph+&T|0dva?+JG|D3%oZ8j zXLV7Ced+Tp&Lf7W0Ajm)$|+LO2GW#E`G~+UY%Kfte)y6Jso<BRPf-Y**=@Bhkt(Sc OChkfmO>lA)G=m@C^|%25 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-sulphurpool.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atelier-sulphurpool.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..62ae969cca7c308b07046a1d4442d375b57fc8c7 GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006LnMDa^f%y{S{{VS~6@xbK_$eUzFg*v0Ynk$uRtTC&Wqv z%f8vt(K$!5EUbj=r2mGiV^S*9w}rcGKHTLtM}^haw{K0=NWMRCCeFRL(a82K-{sZ5 zoMD@`4WL1wvW7}Npe*ZZ&ToYs1~5pul2=8uPdQ{g#p|X9Mse%FGqnDFzPe}xMm9;L zNQgY(qr<1tt948$9NUbH@TfIlB9NeA#b?+6M1AkZ`pH}hAq-A4gzXpeig8U)x{?vm z?3+AKatx9DYh}*M5y3M}vT@)*s4x!P>L=<<SQC&LJT4+t$@7MWt62z}<Wk|{?4NUX zNB)xRYF_LTNkDH+f9<Tn?Ki0Ygl)Ck9bQ4FMOlqaSh<W1y)yj^$xN9Oc!eO3i#!ue zRZtH+Dvd`)oYIQl$)92TwqDXieO$Wwj27wap@)kj@;qm`XjZSFcwC^}v`WgF7c&d< z5<j#+@Z)>tBOg<h^V62$NQ#B5JNf69N!4`;G61s29-en;wO*rJR;VniMu=n{26tjX zEnjg?9_|knaMaK$WLgn?r8ymwlSlbgVt%pZ6N$2@*ox`D<rI2enA;D$Es(ZR1ONc^ C_2D-F literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atlas.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atlas.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..cac7688859c37187a41ad5041f5dbbc86e9d46aa GIT binary patch literal 371 zcmV-(0gV0|Py_(v+FYt!-?&G-1tz9Y^!u&;Qs{VlAr!eqE%8ZYvHT=4ghI5Cuo0W; zGNJ!ig*|q_RoARQsj}%pV)#=8=>IW^iHY6Q30DAAGQqk-)&_&vl_09n8P6z86?8+U zIx(c&;*w@)X{3=rYZ#n$G3`UT?MTrg{s!NKmnre(J0f&zv7+*QZBp`{<z24RW)t<D zFWj>Z>TI$%4nZLrXW@)d6e5<YjJGWYiwm9Xe6O4qzF9Q(s7a|GWBg3Kp%&<zYj>^U z`(nep%;^E<4ivSDG$n~g-otyL@lye~6{Rip7DhVh>nvw>g3DpzT_{uqWbWX-_O;%Z zY)rGS>khKIS@w;qY3=Toyv(o3K$~#IRr)mynovx+yr~G|86vknz{{T8l9XKs^VKX< ziP>j$QLugK^DT}eg{KH&n|p$hVPXX_=TbhwFmR3K{@xE?GBHd=u*=D($OVX<Rzv?? R${9$|24_|UXD30^{{g|FyYK)2 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atlas.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/atlas.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..e305bb1a4ade17fec64fbf7c32c888fe25922d11 GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006LnMVlA<sWd=;zq?@GamAowuWBpEPgNV3UrD`olaS4fgY z&-)i<db;PM;YMI~R=@qtf)G;o?ap2|dwabvQErrR?FST4G;n0VFTFFP7VSr#|EhNT z1-5Bhj|w?SqhrawsJnw$@>_0(0X4;3#Sg40LXM!1@k7;AO%>wCq60GSbNRHR<}|`A z5h8wMo}N2=DZLpBT+-BLb;z($DWpIkP~nPC!+??cF^zF^b0I`HSOtXJKj0)V6`}Dn zHqv!_sG=MY#r~Dlm-HlbprY(JFpMZa4a}$)>Wmxh2{fIONPfWb5SOdK`%UOlQtIrV zclJR3kaV0EERc9|M)$YQXxe_G?9bHJd47BcosF_u8#f}Yjhxi|8_7)SGdf8qPD#G* zcwS+;i&S)yky9A{v-t~7-^Pi!Q8%WkzD7gw?XbtIjpRjHmo=`gAlaCp-E1Xk^qZae z#l%k|MEL15b0eEVm36brXi9z;qGruK6SC_9WI%%F8D71#ve#sjg&L@HC`0o&*fV&U ze#Iqud>qQtq_C9)O7Z|-Y0l5k$+P?_v0N;2^KzG0`HJbk<uUYXnEPMg2)Hv*1ONcE CIpx;? literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/bespin.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/bespin.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..c66f1ec3eaa298fb97889f9c53175a3f807f7951 GIT binary patch literal 373 zcmV-*0gC<`O#}cGA<68xxl~#IF>Qg1sYRFS3#K%X1(3a)Np1F_VCnp=fCL**0@5*B z7ZDS2e1$HZVAVA%Q95k8fEfLIK<NKE)<#SBbiy6gl#uk$9kA9jJnbNIk%?o*p{lsQ zCt+~6xZE*U=2(s7)hO6>GwnmV?KDB{|N7nl5ra-&y(2w076S9j+EBb_d6!qJO2T)) zZBGTnW~y!yG6MU!iNc7qkTFl)c-#D-q`+$TOXX18FhOQ169hkj<jHu4nkr-5T&399 z*(hDe`Vb!71rmkHbE7Toa_=R^Pld5-Y1e>P4q??AS(vj^XbV#>f)G5(ab~!^@ip#C zHm2Ig6$iDtUH0A>G{&bTFY{}1K*UALvn2Qh49ICoVS0lF`b(bj=mWUy$$chm&O`W0 zEc1Au)kSgGmp<QOe+2Q#N3rca(MXs?3zP98KHz|%3oP^Be)tU&U>)7%YAFzbJG-IQ T#Xm7cC_&?qVG!ILNSeV9T->-{ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/bespin.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/bespin.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b8e19a115f038468c3bcb4ee18eae7f7bb9fa436 GIT binary patch literal 453 zcmV;$0XqI4iwFP!000006LnMBuHrBZ{S~D9da2mD@-fIs+>#+pGKo8v3i0ow(j*jy zd2{UJ<L!hSf!SI8@;3`YNZmDidtK%BdY`@ADC3&13aYv)jtuyvb7s(@`Px;x?Uv85 zRnvG>$VnO<Q*z8j9^z|m`W`jKSWy%qK+r{JS(kNL2EVcBfQ<W|pLWok2AKGR#}CZY zYkP00H)DZI8k;PVvOy`NKp;@zf=@$_k@_);aZ_`_Mc7*fgzG=xBrp}B@fjQ8Z2^Zk zG!Vu9mDHDH5;{<^?9eleC_nbhs5k128|?`+ot{NXu|LGkD)4?4x|EbU`^U~6$VAfC zh;<c6JUOGgTWd6}e^7R3YRb*#_z60xWU)4GL|Pj;sk;v)GpWz$B%wH^^7(<`Mx?t) zMJE|Kh2hW5UvT^}PQ;D6Ax-srFcfWv9bRoDhn61%TU<f1Awk<oO48^LJM*)GUq*=V z(|6_uHij(gCY90n6gw0M_e{vP4UirQUT1jM(n4ONO%keEmDh1I*xNIBnf~D%JU$NP vX;j!q0wts37Bwd`bn;q$5tuKQxcB9Dw_Py(H$A%E1#|xk`8xU@P6Pk|!_?VQ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-bathory.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-bathory.min.css.br new file mode 100644 index 00000000..838ac093 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-bathory.min.css.br @@ -0,0 +1 @@ +2@d\sSm B(wtG/ Ce8&r<CU׬0)nJW e2R1p.j@ٍ*p-.k-Timwz)Coh,rR~4^= DW3V$0,6:-AΔIs'>Mwq<3W":6}<WC%\Xրm뽌 ْa\P3ڬBN[-@Hj沗c\i㪂:Zie~Mz6PS*lz=02L($>+6V?-3z$z1R \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-bathory.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-bathory.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..5fba7bdb03526043d919b1ae265afaf87570405b GIT binary patch literal 437 zcmV;m0ZRTKiwFP!000006LnMVlHwo`d=;zq@0#-bD3kaw)&P^pN`Qmm)|BPDZ^bY% zx?bfE%rres(~(YLaWY@=>Om=O+j`?Ki=DsR#;SD2h5AGO8NP!6d2WMCR@EP?)oR2n z>N=u9N!nS)uh;9bxs<N!&=NN`n@w&Iv|OyJDi@u{0OZ2wxb?|ON-!|zN=zcsv#OV) zSLZ=$>g!^kJ0cl_lnE3Xobg%ckg4yNaA8oEON5;_K)Cz|L4z<1<t+=@HRZnKaX`fS zjkf1$Nf^NJ*whJRRO~z9%nNlPos9&Rjywba*i!>BF0w>TldNCs;*Ojca9_fX{f`u! zZLf{9wERZho~YihR)=@cAsI8zq*Ie;6tr#Mj4ZT0VbFx?IE`<F6xHKVw4tMBPUYmo z_A~b1E-1D$r0G_FlOtXSZ1LiMyEFK&MVfHU5F+jD8^hw5+9&-CKYkV=i9Vn5VaONt zJgzLuTcLE*<bH<)&+1<zG)q<Qr{p}MkDWh3)YC6lRn_7CIFWjTwI(oHX6$U*u*@2s f2hSSgD>3nQyPeVe_biuQ6LR|j>K0I`GXwwt<}cm* literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-burzum.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-burzum.min.css.br new file mode 100644 index 00000000..ea3bd9dc --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-burzum.min.css.br @@ -0,0 +1,2 @@ +)@\\GlSmwB!3;_ID*t$KfIEN8S< LIQACJDVYJnqI.O01akڇt۱Bwd`3˻ܢԏk_'zu $T³Mm@oCIxun8z%b#msldPv^@KaVv{u9S&/17!XٲK^TЫ?R0,{rE9Y]?|bDžӝ{1ϋp +F>?8\Uk$- Q(Mb \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-burzum.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-burzum.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..83251efe0a38b17776489d1d0183556612b752a9 GIT binary patch literal 432 zcmV;h0Z;xPiwFP!000006LnM3ZsQ;j{FO+3Z7g4sDz@`6(Hhnc4F(RDYpf{$UO8r| zll0^l*j;9ZVJxh~;-o*r)q#}C^v%{?Rv+$io2$ZV>zg<6XZj8;h;#34G_rXs%W|Gs zHBCT`f|NBpzu9c&=33ZcKttTvZnvpH&~ve_>r}K3J&^V9^VUTpD8huCDj~Lk9#uUZ zy;=uC(byFG)M=yENC`lq#s!{%0U7#!3F{|isYEz94TS4|;1#r*M|sOaKDugOF&z-G zeyz+oF9|(prj0|3JQc>FwfYIV5Y_|&Lq{e70QOWv2&*JfQI_?xF7A^Vp>7!=khiA4 zcGl4P3srxjW?z<vm$@ku3%7)o*)8(Q^uLf5%AC+ELV3)@5=DLsrRk^`P+IZh_8G@7 z>m|GBW4_GaXo=Szd%U<;QzqM08}nQ@Wk*@_i%($=>w|b6KfV_}wqrWw{1hu1nXam; zTOn1~rT%~fkLsV3vk24Za$tTEkApiwQ29@*>-unimO!J%MiFSm<}KK!Wzz6SylBi% a#K61VZUOV(vs`-4#_bze(nJm_1ONaPm(e=_ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-dark-funeral.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-dark-funeral.min.css.br new file mode 100644 index 00000000..887bd314 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-dark-funeral.min.css.br @@ -0,0 +1,4 @@ +2@d\sSomP62E--$2MO7 Rқ>fIO.8RLȐIus@#.U+9lqINZkSƦ}Hg)7C7{wEWOŞMD@+Fwm+CΤINsk 'bJM_7)\@42&$\2P3V˜>@F"=[zi몂 +m/ڧ,y_S,~zgY)(L{=H1F1. +/}/,nS~.gyy?{$ +48\/dNΈZ q!Fr? \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-dark-funeral.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-dark-funeral.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..6d7ffa9499f97b78d360ce4be9302826c9bce9d0 GIT binary patch literal 438 zcmV;n0ZINJiwFP!000006LnMVZsQ;je3eN3+gNTs6x(^2Xbo$JD+UV7HCB{&KRITp zljh_<ush5Q%UD>6#aaIeR|irm(>GgpS?%5BHdlq!);DkBWBQIQh|k{JXk_zNmgS6D zHBCT`f|NCk-)uH>b1m#JpdoH-x7*Yp=($+ebt+ni9?1IldF!GP6k%dcl@QxNkFK7M zUabS6Xl#l@>a<a7q(mT5<ATq?fJ}YAg!PlNR3aRl2Ez4U@CsVZP~NhUeODbSmIEU8 zua)`COF|EtW#iByqry0}RzFb}!kR!}=)@ubz%$hl!YWx*lx_W57k6Z4*mu<j>=Q{K zZ%u#gtfBQcs{TyPp)8NDpi?pyGZR+knUPnfe<4{Yb4ITS<tfX{Qg(>>QIw{WVoqtr z&)7e4{I*{5IDO2w`iho#?Xky;`#qg${;G``*G(Z(*1Q;4m{a@UpW&zX!pC+@r<|Yi zMI*~qRdp+*>ble)kl@k%bA%SD8eLA#PxNtcX9z0)a&=uF?~fB`)YvEjtwh2u)TU+f g@F=`!%&)}6yWMU<^WU>vdQQmg9}(f#u`>h!0LLfVs{jB1 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-gorgoroth.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-gorgoroth.min.css.br new file mode 100644 index 00000000..6e0433a4 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-gorgoroth.min.css.br @@ -0,0 +1,3 @@ +2@dTYo'y!PBy݋ZHdI]4$*ùݥ7T]¤M ?pj[?PG*5aJw즨"e[\RJ +>ێ S#&S7kwE?/Ş"%` %Ym%$L0׆Hq3Ĵ4㙹ѱiC:ȖmlPs{m[ 3a\P3V!m@ eX4WbL+WM +cǒ5Տ +8*C¹S*l˞zL1:hE!Ϸ8~/l\],yu<e*MW Q(M# \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-gorgoroth.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-gorgoroth.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..679e4efcc1f5d0a3d1e42846f38f4df80cac025a GIT binary patch literal 439 zcmV;o0Z9HIiwFP!000006LnMVZsITyd=;erEfEJ)`QTyD#@+-M$Lq7#S0co_S0T0= zD5w0fcgM5i@kEfs;-o+Q)q<4D^v%v*Rv-3qo2!B}x#ms$nZ82{;@mq5MmBGo&1S}| zn#Q9>!HP`6Z@1gIxfV1GXgD=?yIpKB^r=|abu5xa2TbmL-r8UU2bh>+#fR4OqpGK) zSF#`!k4;g=P8+mFjsy}lF8B-#n5gfUAU7$CCC0&OU|jzLr=Zmdnzl*EM^}|q8VAft zzgFg)my8Z{8XJZd6UvW6OZthr5M(@q;bR&C0LfDg-mjuW#aY&`b#X^#hDwxO8DDMf z*^%k59T{GKq3TcEl$*`r6?96*!ZSfKd&W+g{>8{bnG-t2D35u3-Bz;f@}nrtN0m4w zi67g~IDV0n$xavYt^Nk$w079z#r}3@@?W(f<GLwCip&ec{G8ec{Rw`2FI;HHc*?pd zUp!_jtLj!r)pfByAj6~j=LjuQHQJn<pXlRYPvBMl<?6aV+#kpDsIgHDT8W5VOq-Tb h!{gvZV}7MXyx;E^H2*!DO3w+oeFJB<Q=u~i001w5+Uo!S literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-immortal.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-immortal.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..d73ac3cd39600a07f84a9900e4b9e58082e63aa4 GIT binary patch literal 346 zcmV-g0j2&MDFi@d++3=xbIjfX7gOthZKd8Jolpp&?CuO|>5fFk`<H~gZW1ag(fP9q zT_(xl5>;KZ!lc5d3&{3Q2b_l~T^@!{Ce+E$q~^f6Jg8A;ePefm5|LHroab9ylFQaw zf~gG&Thl(I+l~#){O{}y#1&E=zau6yhcu7h&;}EqS>ELqrG7MC`-(k@4Mf(f8^8cd z5*SLAEQ~ffkGCxYK>|+HzDW)<YX}StCn4iqgqW^(lf`j7)hiJjX+xg_PqmP2%|=-& zZ74f<FCczvLc%4_!!Rp&!3jG<#oYA}?t9*KS=&TGJoUB7i)>8mjcW+jaklI$J?CQc z$C8)%HI*g&G6nQ%z>ic1=QBTiD(riRmOZ)kc+R53#2B;4>Y|YN(dSzne-Jw^obKFH sj(J{$yS!G|F#5-R`1KL(RGR*H;t;qFve-y8T^Cy#qEJ+u#2`AFKPz*lq5uE@ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-immortal.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-immortal.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a72080a3073f0a27c2786391cf5a6b9a4afe937b GIT binary patch literal 434 zcmV;j0ZslNiwFP!000006LnMVZsQ;je3eN3+gQGQG_mtA(Hhnc4F(F!HCB{&KRITp zll0_2ush5Q%UD>6#YumLs{<*O>FTw+EVk})o2tTU>+3i1XZ#Kgh;!#{G_rmx%W}dj z>N=oCLCPA&uU4z6xfHhV(GWM*>vd`nbX=^eDiy6m4`luOv~|%4iZC*#N{CIMM^{fr zuhxN3G}Of|b(*L(QX-J3amHt$N2b1C!uru!DiQWh1L5*7cm<7SC~w)ww%zacEC)pF zUn_IYOF|EtWn<qUqr%WPRzFb}!kR!}=*S`fz%$hl!XjBzlx@ANi#swiY(LmzAa6}~ zZLOi@H>&PL^{y-rFSs!ivuOz{^R&n-)BPe=D04!u2<0&g@2V!hh0=6XOen4Rnf4in zZ|fyb(Z_t5uV{(a9y`3a*P)DKS53^gcFc~l=9f8zDXb6X8Gd{(d~Akv%K0%?G_c%$ zzrPhywQcJ6Nbu<XIXSa14K4@fC-K<369kq2w5qBO_h$(-Xsi{1Rw7|%YU46_cod#B crYB<J&1N&B`R`dSJ!j+g4~gDLODY5a0A!iaI{*Lx literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-khold.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-khold.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..c1db7e2127e6d55ffd1d62db7889b7a0658a0a2b GIT binary patch literal 352 zcmV-m0iXUGG6X>6+FYt!XNXQ(VD=Lc>wj&fqMcAKgtEIcsHHm+8Sh^b^14}ws0`<J zmpYK%M2;7v>Y5cM6**l<w|+X{JjnQJKYB8u#zrPJLt$7BYShHQ*ln+h$SO-Ivn?sf z<sb+MrWPh_O#6^+J2o))zq2<GS4esEj+jhCVtM?AHkf$Np#zIje>7hGiam)9MAlcw zg8^0~FqDKYeCyjR*|ri05^$#aO>&r9Lttb$2^sGY#B`jSG)a<~UWwRP8~PM{u1RF8 zHg*E5Qf1}_w7vH-;-_US5@sgDxS$4SEUjWry9E7R7eE3s0Fa92iL0%i<zrUyxT;`< zPM3YHDU9tO3zTq8^%H)*0(vG+tjdsZ{*(&44wGe1Z#||M9p-%BpXYT^NPOvGOX3fL y$i>x-djjzDvfSl0qvp|n@WbzsXl2s$$20rLb&$n&qUoC2(GZ2A+9U=s()a<?+o-bu literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-khold.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-khold.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..fce2cc2cafc05480b44f106a17b9d62060579d1f GIT binary patch literal 439 zcmV;o0Z9HIiwFP!000006LnM3lHwo`{1vPAbxnDiJ(Kt`)&P^pNq~jn)|BPHU&S!l z=z5hGm}$D3p(CBb;$;5Bs|TgD?V6pxtUmnZHdUoFE;MiQ*Z3U-$a5E5vZ{I8Y&H{S z)ie<eO480Ue!JaH&9!uWkCwQx+wF3LpyOg)*SY9C1|S#Sr>##`Qi72=S7H*89$h^h zy*dw4)6f+A+!4tbq)edD;DXOWk4$~PgbSmyTq5kf0mAiP2pWW8C~w)wM_cVHmIEU8 zZ?rwnOTqw#Wm7MZQE}*nGf&iobT$%LI<g1=@JtQFxXKna&9;85i#u{=sQ0BPe`k_N z!P)NGI!o&>)ZK}i{bqA`1s#*In3;5Ho*4ygyBCs$wkHglP#tG^l!(aBFOoKN)Xb@z z{2u!mhc6ctk29qCR-efcuLE{?@js_C&R>f(<JvJq+SwNai&JVJ{4@OcUW6oue9DJ0 zUo@~>RaLh_>9)=N9tj@ZKSyYhs=?36`HnvJ{sd9azg%6{hx_A18Voj?z-XDV3$<~X hJv<688q+H=aaooNn*W~V(sM#?{{X#XgO4)=000#g)b;=X literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-marduk.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-marduk.min.css.br new file mode 100644 index 00000000..eafee4c7 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-marduk.min.css.br @@ -0,0 +1,2 @@ +2@d\sSVx'B(jDBbP.u 9kV$ts5Ʉ496ph As-.qk-`CȴcC<;bsH6x.h㩯3H}hPda~m%0HЙ7iB#yƋ1EƋxfD61\ɦltS +m罌 d7V|2rU怯O1x]UPe_%/kWPO,2%IѲ')Ð1E!Ϸ8 Օ{e4/6?-Ǚ]z.vtZ0Bms1 \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-marduk.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-marduk.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7e8247985f795497322be259d0d6c60b3cd02437 GIT binary patch literal 437 zcmV;m0ZRTKiwFP!000006LnMVlA|CHe3ew~-;L$vQ_aJqMi>nn1P+GVSgE}GmXR?g zn=AjoOw-det*{call}@<2U052R%>@zY~AHHR)y8pS0Ccf@EvLp=hoY3Wc88f`G{Fm zRX~k`lr@ZBtyW`mDQwrFA#SYK>(n4<xmcEEDq4pg$okK5>!J}9VPH;`5bHqCs$Py> ztplN`ud;pW)KP1sL?BV)jL$%aOntwE^@FlhBJ7+7!sS2k3Tn+z-m;KwQ|t>K2Slu2 zD|4QfgdQ}Hja`k53Vl~w{X(4yYXX6xBM$)p_EbX%izHFeB<t5YyCWxt-D+3wSY{w^ zO?z#uq2)KK_C(b_&kygQLo#Nb2`eYh$Sc#n8JQ__Lazwr@o|AI06ZQ=X*w$AlvX@! zKV$!Gy<|ImoNo0uTH>|G7BB9%JA?nKjuWmKLZqyDV^|nd`=p=Y$Ir~ix=*K^AM!;# zk1LAemPyq#sox>Nv-;Nv%~I97DLIemW9Lo~)bz`hWqG(iPM}_6r3kbV2|JrMER%-k f!L!ErN=&@jY-Tk7J<Fxngxr1r^c!_XGXwwt={M4) literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-mayhem.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-mayhem.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..6cd9dfea184a59cf9ed8ec7513406721f7affe7e GIT binary patch literal 353 zcmV-n0iOOFG6X>6+FYt!XUIfbK%cq$|9>h6Ea~uq1VG+@_jWEyO66|<gF23{1z45g z-0o5b(woTff>d3z!lV*R7m8Xx9dI5PzS=LIOsKJuO3hH7mxCHLf1vEPS4Cu%gCNK^ zRg%kDmJv)XOxT$A!E8G=Fn7PR*AtgddGwB$%yN?O_zi6^@ou35i&B3WL~Gp)BsLIP zUmXtySdqX`QjtrOG|APrl|YbyGu3aB!(1BzBgKi&c!waSBiv+4shPPF(XnahQ}DSa zk*(U;0Wc;ua|PPodl~UFVXP2lCd0U(24^&_LQcB`{aq12$^~F-XwW<nwbe5_nu^C& z1uJyA>}!+4*#5CV3D;CV{?{v@XX1pa3<>8>sjw?BS$2KvF~#UGPSbR5Yv&}s^suS; zy&$r2b>p4@{Jbo;dCj7E%s=?y_eh{g=#OXik!vrD?L^bHa7RNF3Tl(+#Yp1^GNG*< literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-mayhem.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-mayhem.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..6b61abd9c1233cbaace38997c68a1fd48ebc9e2f GIT binary patch literal 437 zcmV;m0ZRTKiwFP!000006Ma+Bj^Z#3{1v2qT`G>UM_WDyxrtkHq)9e$ZmAIeekzT# zg+-^nIJPr0v8TdHEKd4QxH^zhnZ7CAW%c1Mw>c}Uw!V22zozfdf;jiyMkAZI&1N(A ztePgEMnTFN?%!^=b8#)~FrXnWlx3L;1U)C~x=u;!&;wcjJ|A5)f+9@FDHCEF=uy?v z)vI+N6pc->Pn9-mjg$Z+YFywM7?7dwkFb7HmQsX+(?GcX3tmC1xs{JB<fE(h71IF` z>(|Phb4chxGi@AN<gPFdt<_J^g|H?N7&<Zu0PsvTgs@5y6=hjJ;^N+!5fFv=EfPo| zZ%u#gtfBQ6s{TaHezQ5eYMq?1n3=FL&y2h>{R_%MnG<?ND36)GD^bW@UW(FmRE#OD z_#XQi$1m$8kJHEes?TVNV~;&v+|TJu^H*)mecfatWzCC$h1s<a`nmo1UijFK>6Y`8 zzi4E-s;X{<R9%<q0}?!{f40!VRin$!`L;d|?gT;QU#_m}!+kk{MvaXk(25tbV4K3E f;gNVzn772hyB+V~zjrzH?2y|(of<JKGXwwtyTaG1 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-nile.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-nile.min.css.br new file mode 100644 index 00000000..f5cb54fd --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-nile.min.css.br @@ -0,0 +1,3 @@ +)@d\sSVbPnQKx7n** +]&fIO.8R< LȐIsya}cJpλ[\ZTimdžfٻ$eʍwd!d3˻ܢ_bzh PRdax2pHЉ7if dBLɻq<W"6 }<Gi ཀ eE' ]~ƃk٘[Ա+%/k*)|> +eOn=Y8 cY]?|_y8ݹ\a?GRiq$p +HΈ-Z q):r? \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-nile.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-nile.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..c0745355b201c584affb219a6fd3b51bae1c959d GIT binary patch literal 434 zcmV;j0ZslNiwFP!000006LnKtj^iK@yh^0`omk#H<VOw@wV~}W!N5YZ6D!KyM~-R7 zNoM6A=q{>@qAaY$?4-ZK)q#}CboJI<R(p53O;usF_4SANGk%8##JTe}8d-njc|KuQ zbsbQnAY~2XH=E7WTnpRxXowrz?KU+CIxbdKm5SD(2eSTi+PY{2MHrb=CB!Dsv#OV) zSL;A18tSY_ohE9Hln5khT<{s_k*V*OuzpmQN`$@BK)C(~UO}T7%3Bt)Z_A?OaX`fS zwKC^<N$5fI*w{D7s4(=6)i2bUuqF@~I`R+zU{5uKuu2jY&9dIs*&R7E6vaL<1oGB& z*VY<Zf1~P7R2O-Ec*BjEShyvuoZTX?O!v#MOqmmUMJSIC=~X$uh0=6XOen2*xP8Xq z+j_|^`Z!<aZ?wc~j~!mzyD6jXs);kM9kZjX`NgL&h4o21!;hbtkIj%yIX}jV1|C<I z<t>w{ZBxHTf@k%w$ytPHaC2ZDiO1fZAgK9ItE%d7f0jUl###|*B@%WqZCoY|&x03@ c>4}(lx7#gf{(F{7ui3c$0Loy(yD9_#0JewMbpQYW literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-venom.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-venom.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..a000154073931fd47b3e7df68c2d2339be56a791 GIT binary patch literal 350 zcmV-k0ipgIG6X<m++3=xbIjfX7gOthZKa}}P%ebByECYzI}#c1UlQ`VS%|0%=XRGm zklsX&7pUr*6($uvT|l;eI^aA=>1scGGNDFBCN%@jm4g~JHZXQOs3Nk;obzmpOLEy- zOE9${VPo2dblb6kx&NKLfw)4-qj$t)>X7E~8`@yvJ<Ge?qSPOaSHEIUVgr%&)d^sL z6$uO_Aq%68&f;w=fgk~As^27sxithvhLe!-4nj=FyGi3Xp6Qi{jkTdqf#;e?wrXQX zTPA2RH=ymkmk~cTA)zoc8O8-QIAduQbJ|7d@A?1|g(-Bw6wMP~TRqFhwBm79!3v!& z`&v^N+dr1P%&)0_!mn3A&%}vU84}K)QeoFawCu^P#}uQ(oH1se)kPukrO&rG{ve24 wT-~^*9Q?d2cX`dQdGsIr@Ova$sWkoZ%sy}(WU-xSx+ZosM4_lQi9w7seu=WFbpQYW literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-venom.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal-venom.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..1abbc49a14c60543686b30dbbbc5e761c00b7ac1 GIT binary patch literal 438 zcmV;n0ZINJiwFP!000006LnMVZo?o9e3eT3yGB{tDIa~9$^j>3CBVRJjjF!;lm=&M z*C~I%KJE^45msV$)F0vEKuTr0dh5=scXz%{RbjRD^^15LzkLJZ)Oj0?tY7jxpD?Ss z4yaL(vWD@S&1Pz@h3$JZ#EtECn;HZi7ptmDMeEQ5S^qk1T{MCsjLfMLViV}z)x*(? zbs!WCbylQK6SYQ41QIna_zd*O)VE7mKRQb#!ro~hTz`RA&}fG8mW{l(Wl^#m5V3!) z%xPW{deAHz`vw^mhQ6`-fjSe`1Oh_`76AaBsfG|%$)cj!)}M8DL(U9Ewb{M3i6oG> zrn|J((E1xycci+=^ZhgEn2g2Dgq8Em$Sc!5k<64iqF03SFw3`PTeO^uCMrz_#hlWL z-?5)?__kj1IDMRN^%*Vk+GB@j_jfwu{8bZYTswwHS@UFIVM^_te}*4kGas8FopOH6 z7Y!^|mgO~*s%=xhM}m9zj}cm=YH)LMexr}QJ3>(NFIQF7{`NS52932M&`KoiLTy|o g5BI{0#`H=|yxZ*-H2<FE(qlrdKmWf1h%*EL005)aM*si- literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..f3af7c110c2cfc402dba333712fdb9e21b3ae916 GIT binary patch literal 349 zcmV-j0iymJF9bm3+FYt!hevGE0uxi~e{Gr2yb}r`l-->{E!~mGc>j`+*UdsiWjMFH z)PeLSa=d`5YgU+)<#Zw4`ssl4Amyw5@X3T48=2G$1wlEeQ4<4Ww@DR|RgzMsTU?S$ zzV8!EElk*$_95MNY+&wxXKx^`kn-pqF_{EldHjYpn0U|fF1IN4he2korvr%%MAlb_ zzyK=}7)pgMJnPvs-nJ455^$#aO>&r9Lttb$2^sGIVmi)E636jOuS9ID4Sfne*92L| zMxU7-wg$Al_cG$AWh@kCCd0U(24^g-Votk&{;mt4n>DmTx#a5MEF05W$MpnjbGqzn z&0lQ)Sn@KzrpgJwSOGn=CRSg_Hh)TmU58=WlUtAZMTc3>^X6Gy6cS(he2e1`BFF{R vjeE+G&kJ&w*9_Z6|Gp2uM52{S(;v_5BiBI|8;PcCYDYs9ifWS>1W4ltQ5~m0 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/black-metal.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..c347954a9102351816696244fdb860631ab3432a GIT binary patch literal 436 zcmV;l0ZaZLiwFP!000006LnM3lHwo`{1vPAbxq~e)g*q5HGxUwB*4P3nzH=&s~9Fm z*Q>n1Ow-*A9bqMANBuWk9Z0E6Tdmz?@#QYJu_~;#zWNY<hHqbkIJMqJBdd=*&qvIn zssd^hq^x25YPA}hOJTbX4RK?=UZ(~@%f+%RQ_(u~K-PbbTNjO>2m^Dfgjff9cJ*@f zY8?ngeU<G}r;b`9B?5^WXM6@aWa|4RtRI}E5@F{w5H5efE2uR?dCNw=nqpV591yX8 zt;}g!5_-@q8@n1A75c8W`h_|Z)&v4W2NnSUo~ecq7RjQb$=0uRc1J!K^6hrJO(cQ5 zHSM*rhL&ek?UAZop6}m5hh)rVCaj!hMqZirjbx_G5xpXmhe=*e&s;~P>7bZUTJf0q z3H!74l4t4TbfxcTiPs)mytv<^8HTUwIN_QhLCTsp(+Xo`pUgA-@R|8o_vw`LL%67C zxuPg;nN&@a`W+HHyMN8kEK<FjV)Mv7cJ2s4P5)b2mizn51nM<bia;xoursw`nLIoT e&l=+sG4W=znbG|BESFy6ar*~MJDD3W1ONa7ywlwP literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brewer.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brewer.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..6de8fa0965a22dc9a6115b22d0ed36fce145c188 GIT binary patch literal 370 zcmV-&0ge6}Py_&E++3=x|CqMG#nk%0R8R1*CAa{xe`ivg-BGwS{)O@a5^O-R0iDkg z<!gc-I>4%HR-hDYx_}t}=K#?E6P4)1xTh1YaEddWleWNGXUKLXh@gVeOu|s{e4&`) zN;F$so+pej(kMb}9GrA9?L)flNWnb(2H%L4G4}O4B6Mq^V18d4Chu9^<ui>Y#rM8& zPYuM$jNUW^1<vD1G)Cl%#3XIvZSz5Kfup_emBZZ9g27M|6F-IcnR!KBDFn{kwTiXb zM(YyCN07QFNMvb@B{t+eycZfj6~=DK(uR125sq4&rPR(~In2BXf{~aB?%=)kwcM9% zOrwwM4n}pi>}yxk*xoI9nO~Cvp>aYo7Jm%`Mix^lZYaWVN|sw6z-3QvPL`eLQm$!| z?X$Wl$iDRX7W)yyQvk8{p7Iju3YjE?m+}#UkxQ2Qdq4b=380R8dGskTfoJxz)+?kg Q5r*m>Wl{uBj)G?R18Ow79{>OV literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brewer.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brewer.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..52d76606f9acf1f94bd1d1340fb4981364684579 GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006LnMDlHwo`{S~X`bxb8@Fd9F`YM_m*1X$?on6mu$tr%dU z>%KL8Ij1iNVI>x4{VUuYNU2QM*6zAu?s}iS!fNZ=58m({-yb-LOXuxiWcyKyQkFQU zt=cxAMnTG&RKhB@Vf7qe3)}Z-D8-t(`D$2<5p>DFXZ!8GiGJ(Q16lt$Kiyyi4KPte zPZ)Th=MG;=Z`OfOG`2+o<%8Bp5kR8G1)hN(6ZB&m>!;?Ti?DYZ2-knWE8se%re|sd z>k29n>3}Hpua&uElhA`sv_sD^WreZlR=+?O!kR!}=$J{ijFmDiS3?M^*rlS}**|vi z$jl&8K)Ed=NFZ-bcRN`_>u*%uncAi-5ARYZp)A%Wtjud8uT1xbvQXxXUJ=S;rmrig z*;l@c(sWb_Q(Ez}`3sKU*2}a}Kjf)?50;YcvBRrN;JcDnvR+(4@gb+4CMhXv-s~*Q zB7Pbnr5`^FKkzYDIX|h4#-DL^8!qpKRHsu+>5<@hhF2{u<Tbi1p@wZauVVAqyE6op zzv3J`JPs9T)YvKlt&-vvoRb+ld8S_k=8NS|RI&YLw?O)Dd2+o9=KdE}B9&=T1ONc4 C3f_wV literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/bright.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/bright.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..782a58e5560965c101522c95815faccff642589d GIT binary patch literal 363 zcmV-x0hIn5O#}es+FYt!-?&G-1tzBUbiecyUL}CMeKQwPbR5MSv|xutXCpS%WkUb4 z3ORPdRoARQNwMidqWe<-=y49~*gc)F1pvMSvNjURj0FtJ(+l%NdLe-XlKmE!v_b|M zWW-fBIO}HGhjiOvg2n&3C+p^-SA6=8@Z4FfsQj`vD0$EFF4rlkr259U?TLdpo2l!E zhyaae(V0S#0HOPM+hPz<;AG=V<*?8;!B`>VQ{Ttn8F)kaRA!W$s}${%jot-LcQCi5 zD4)fQ5rtj!USj-I0B*&)hI+vePHK^b%nooZ47>|<F-fH`2HSIA>wU?_H2b*XU{)8) zzA*)j-P4kn`864+Q!-VF^1pxq6IN0vZ>T_bMv+G!;AKy4N!A>#mdGMu89iooQLugK z^DU0UhbISOhkMFPA<r~P886~J3?0{4=D+>$8z#D`2<`G@j9l;%*=mj2%;%D`w80rv J!Lz-fY5xX<wBi5& literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/bright.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/bright.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d189f4dd83706c7ab31d4c5f09da479ec0c18ad9 GIT binary patch literal 451 zcmV;!0X+U6iwFP!000006LnMVa_S%ueHCZ=w`S1Pq>T^b@Ue+p2~b#CGmh`x!2pfc zJN#L84`<JQz>R?FsQ&qjr9wzObhSONcJ_Roz1%3{x)&hv>>1^!!I_{%_d*DnF{`fg zpn#(^I^%aFo;kkeW*k9djxiEXiXk1cUyyi`-&k-IjeDK1HfWB4#uUlp1M_$<@8Rji zSjr_%UDc)t3rYbd0s#sZe437ssc+R77sVwP!e|vmSbtF`DN`AmuUSaX$Yz^`P{gcX zNqs6Nf}<*@4I_h$^3%wSdZ4bj(H^PBLrKCLv3<+URn+@cQYo=0`(sx(<S&V!b-hU> z9-Yy{r8gSa-ynx0b}b?MXVADMi?(qiO54y$Jv>QSNqqz-5yYXSryJhvKFVCA!h_75 z!tmeDpJ4hnPUMcdP^$V22D9y8fV0iyZNppEE~X$^D9}Exk~I2B&-}c^cO_)_;k9ys zP3e_&am#SZ8JnKfVtcKG?E3^60qK1WkGr&3ugR7b67~Cr*GW8#_DH=f|8NfOZ-eqU tDd;3pC3%7`az-;Lxlg|c%o8jB5}LPq$@Jgn+4Z<E*B|@EB<oHD008}8-wFT# literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brogrammer.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brogrammer.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..1299ea7d29c123aa732d291c010c401c521f2e50 GIT binary patch literal 366 zcmV-!0g?V2O#}eMs%@z<9Uik5-u4g?>$_JCVe0_0w=<hsET6)q^6gPxK!Ob@HlXu4 zqI^w|Lwi<r%?gyfKV3#R{LcZP{|6LG73WVU%-v$8q?wUr&XDcGgAPNY8Cjv?`5mN{ zbc$?~C0|7*0X#x$Xr6R7?StNSq+lL@gRf(y$G&_=gswAoF2Ao0Lf%0g$&_ePynW%G z7>JV@y|D!foX3-BOa~$;3b%6Gd=OmVsC};-=9(4^iW*P+nBix_6;;R&Jqp(<+U7P| zmpDFP)F!CI1^mcW<UPC>8b4#l$(Jl`h!+^)sMc9Z?Sz%XgqzS&_zF%M;JxOx+!u^G z`nc|3R5#1M4mFMK-9jZ@lYbQ_aS{2iVZfHfl!_aQFrJd-nwxCd)y>JWqt?364;_{6 zP!|Q+m!3B1hli&KVw-z{QHN8+fa0aRLompb75?52zhq*lS*VvspBg6cOv{?3Wn2`d MktO+gvWuAh4^)z|`v3p{ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brogrammer.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brogrammer.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..9acb2fabf6cf50c6c4cf974c6b9ab8248c5fb170 GIT binary patch literal 455 zcmV;&0XY62iwFP!000006Ma+Lj^Z#3{S~Bn9jZd7FjGDTIk8)^q)8@mcc>8mzA8<! zg+;5rxc0G+FDKF>6({{GTpb`P(>0a5tZH|;&0cA>_08J{)gbl<0rK2=I~Z)<HtqDy zuvOCp(j-|~lTx-Q>zd~HTH3xR!zo5mKpAt_3|-EF&kx*2zjfq+t$&|?-C!gSFi}KL z7)0R54xdu5)`3(!HbshvL2Kez07=uLo`IfH>H9R+Pt8RaQ|~k|t$%}8AasJJ-_!{1 zP*5G|fI0QAl{sgV$%9U`LoX<y!q^L|pGp_fn!sTAm`SLrw|Ti5LRiHv73a?Wv5Px0 z7ug_IyG<+-*jv+GTWfgzL#jJ*voFiTE9fMY#oDCByf*gAbT23iWlrQ36CN{tTL~<` z@?DhXqe?Z=%D<aG)A(aOrj7a`PxU=mPPV6xE-uejer|BLxPlTxhPIQGlr=AQ7G@DY zjF8~R_recij9Jc4D&sLR)>U1KuUmntZ6l;7hQ}G6wX~4e=(2>$c8@4x^VGW&1eKrS x96a0)6?oLtC<d)$gfBQJGj{SwzX;41%O`2mqx^4fay_f%_6I*n`w>nA001Md*e?J8 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brush-trees-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brush-trees-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..9f5d0292d0f9837e859b6f47bb4fef0fd5c19e50 GIT binary patch literal 369 zcmV-%0gnC~Py_(PXl~QW?Mhh>ZUaW8Rnyt%1cdMMjYsPH+od)|Q0P+a7sa6BkWDDe z3sGrRF`NA-f63=BEjA+G_O$Anl_(Wwx`;RUB_Q<wgr{DL@aKdJ7asgTbxX9K42NC# z86<L@p&cs94M?S8k#BJ+GZf+?@kp(K)pa)QL%Quu!R1%*4R{$EzIaE5ZZr*~tk(vR z_bl&nOo=Ap+XeT;L3A^EBbyYEv8(M&(}52^kGE|O!V5Ipb>(pBvS3%%gy2V%KO<wv z$dDwlv`-b?l8xR)+I_0s1~TF}ao{WS9^RYA&w%q#ov96Yp%I#zXEC#5nhs;*LMsAG z@0F=>U$QZcKAs(n>U!B<HmC8vTk<l$CIg9IPMq+67;rF|VsS$f`X`568;dS`a*t%% zIaX7oyR0q>wJ&|X#q$XA$)#BFo@i7~B=7P8g?_kLHoZr>$V4&y?XvllxIkfh)g1hZ PDn5xu%_s!BgQV&Gn&P*N literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brush-trees-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brush-trees-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..718f0449a29234488840e1ad844898b1bc714370 GIT binary patch literal 451 zcmV;!0X+U6iwFP!000006LnMVZsITyd=;erEfIwyIN@Q?+TH{oj_um(mI(FTPa$?l zIQq}oot>Heh_Diiv;G@y4y073t#|Ia+Pmw|7!_7qU%&B<*b8>#ATF)9(a8Gk58Jcy zFv3=K9Z;hnWlb(ACEGF_^J`(d4h`iT+g25Pq#Qw;;}wI3?^E15^g!0XkDo3YK@kRt z6bX?BS~`3xy;%oBQC}Cy=$c2ZkrIJKjWa$29cJo#H`Wj4Qi!l~8VJ{4;1zJ4q4{$% zvSTGHlN=Cb|5};L^d$74vux}*W>n}qZuJv&A*=}mhE7>TGR|R}hpQokRdT6la`xZ5 zxFaVLfWd1b3FNJ5Z;dsy{zlcFsXlBr$5+tdP-bHjR!(ChuT1+wvQXxXUJ=UEB+m{r zP9Bw}lggaZipS(H*ne9u^F)1|y84Wk^4nvJS2vNDe8+dQEhru*XfvFWvgXCi!g$1s z7Bc+wUiirSROS3|Wz;_unHUtMYMKP;kYL%v^DWKJt9OeN;(5E+xibXy_!aNT<9$(q tdX2Rr&`KouOmlc9CrkNRV%*q+yK1Ut#`J4>4m}^t&p$6ianex)007_$+KK=G literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brush-trees.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brush-trees.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..2a1e5018f3e22f1a8a0afd847f07313da1fe5dee GIT binary patch literal 369 zcmV-%0gnC~Py_(vn%lH;yAtJt+kjDN)pRyG0pYuR<B|IQcBxGf6uMOVMKP#2WD^SW zL^3ur%=2y1OPXFb{1f@M$5q#?M5&1BLTd0!K<NKE0}grkbHYU~@**!(x5(PbaM(pc zQ<Z|w&<_>mhJm<9RKCTf%m8jo%t)<)*L61SL%Quu!R1%*4R{$EzIaE5ZY&O@tk(vR z_bl&nOo=Ap+XeT;L3A^EBcBwIv8z4zrT`5(kGE|O!V5Ipb>(pBvS3%%gy2V*KO<+z z$RJ5#Zr>`pB^$kqwEI}Q4P?Y|B0wwi9^Qw>&w$cUov96Yp%I#zXEC#5oDO5>LMsH8 z-YZw*zGPz>eY`su)%CL9HmC8qTk<l$CIg8sCnEeG1{_SLSlp0={>dTN&cn-|+#{KG zj@1;>T~-%`+Lu1x;&}x5<Wj77Pc$kgoKN|HLO)zAo8BW^WTKe<cG-N2T%fSMY7YLJ PDNKPz%?Jd$gQV&G^}M(& literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brush-trees.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/brush-trees.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..820c929c342c2dd7b64bdb3e8cac276299f2bf0b GIT binary patch literal 449 zcmV;y0Y3g8iwFP!000006Ma+duHqmNeHD}Y_u9BND%OWF157I`1uhJGZOnc5O)X&S zn*BG-oH=K{5LRM!(Z9ppft1R0P3>;0oxA-^USYNM&BtD{EyEKBaqYZ~Mm8T<V~gzs zTQyBUje?XlIfZY;POvGy7PjxvP>vlLw0xIh1YP#C?ePe|lHWS?K-PawPZy1#2%|*u zgvbLeD||`4TL(hX&{T&M;ZbX(L?BV)jL$%inflR<^<#0#Mc6wHgzG=x6>y!Q`C0m| z*`Do_91!LDwKCUY5_-^CHufAdDhxfh`h~g@)&v4W=PV)_=djJg)eyoeRjH^{_K#gX zkc9+btTmAY^44_s)*4!Wqv|fy95$QNJLq^Qv#|*)%h<>()4h?bl)0c+gz{YE*<r@X zqtbL%nNwQvoctAsZ|h~AsE?(quV^XT9y`3bLcZrUuV-6OJQip>o|3ZW&CJ4d#ETX( z{QOz@$cL2W{CH(FJQbN36{Tw11nH4r*~9BC&CY9Zixc8`yV$!61XaG`6g)i^6==}d rC<3iSg3mNZGgY#bp9Q9kJ-LtVG5zWPr)Sse!TkIMBe7f5Q3L=0-?iZT literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/chalk.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/chalk.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..92c63260e097e2e52b6e3ef00314e290150019d6 GIT binary patch literal 375 zcmV--0f_z^Py_&Eo33f)b_zAw1~jQz_;>$tZS^vVkkmpb+kX$W#4VA<^0rIhAzDH~ zJWEbUFQ~4y7?$Y<N-8^Etmyv70MKI}hx6{~gjiC@q=vQa&TzJI7BiWq7ab~&9~UtL z4axN5#x`c4gjSai+B?GLC?Ey){|@%1t@O@5{q6`|wxSx#?`y+C-aRa^Om#HDWRJ%C zwSgGSqt}l>fpHwfjj2Q1piM$Uv=0gw=xuzj9ITuc2tkc+@qK}xzFJWoc+=FCzE%+$ z5VtO(zayq@EU3<Vo0cfZJNsT}{H)@*^K9CEetwMy&Vn&&wFA){25J-H#yRWUoQw;p zanmomJNmfp;89&%A?h}bd~!h#uVV#uN$SwW{?{--vN1&+H#9<5bCzSp#TD#(PBuHP zwWLIs0<QdsIN6sK$n1v?PY%S)`+zf?PfP~DOL@-(o$h4mzxTs0ndrJ%xL)>NWt+f} VjkDH3MFI@gjVU7+!NFe8wEt(byAuEa literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/chalk.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/chalk.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..692802d985b8495d239feae3460f1b0a772c8bea GIT binary patch literal 451 zcmV;!0X+U6iwFP!000006Ma+dZt5@$eHEnr9aRCrw(>B@Nt}{Pnq-MHs1Wad6`Ev) zi>~~~wNHHfamua0=BWRKs{<jF>AQ`)EVk})o1)xm>$^A6CfhUMr{3FWMEADZCYxZ3 zt_!G<ld`5f*|f=~{F2*YKtm<BZIk63L0{smO_t-<p$D@5efo6KaEg#9awJ3+=&{46 zr&sHMD;m4zBWGCD8YveLsBu=$z<{OneH!aib2&sfI1Pl$AMgs8F3|E>8j<WvvQ?%7 zqSC)s=2Trm54zCCfnh;~abQ+Im2S8-fxytAkf4CC&oUF&5W*sNsi=1LkKf#pwTKXG zy_2~}Aa6~7mDbSmjH*9U_tCcdSI{Js+1j`jb#3I8>0eMb${f)vLUE|{!1;Rjdl#kY zph`_)`S0dWIG(K+WurdUslKD7;(P4z;!5$=noHi!uAo?~P?@Bpta-7sFp2nKgaSXj zH$Jj4zj8jQjK;#alYEWx)(9nKh73sXIK#7+X7U<cl@P9AgP5Dg!5tx}`YTS!{rymZ tMva{!(28gHj5E2plSlelV!BvW1cLl5Xa4W=5_%TQ?Js%C6}wRc000X5?NI;# literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/circus.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/circus.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..f5a19f9bec726b31546c4be6239bcf21e33f4ce0 GIT binary patch literal 356 zcmV-q0h|6CPy_&E++3=x|CqMG#T5SkyHuAW6e<lsX8yaW&9W3uKR$nG!GaAiHeyp< zCiEYx2*=K_>Y5cObv9i<On-_1y^hto>Yh%h5o4?+ur?UP)(j8EGYeA%y&(z_%W{iL z+6a&6fz~uQ>u%bIblZ`lMfwfCj+dVJ_8k$rw~)&BwMof)mUp?%kWCF1(Ry4Q)Y)Wj z9)dzN&cd0#ER{lK$9UUf2)NM6!S~8(Va=kkp~h1`hxnO$Lw!6+NUY+uiuJ{YcbU@@ z$URWhm$D?5%#c@kFEoBCjNOXTmihoAowPd3nO(qgSa=uuG*665BfR&%*87r;Y4&y9 zK~@jTzKJ!h-QP=I=GT-Y|1}KSQB1kKsR+{<BF{d6%bwhllpR)EBr|!=Pgz|QY+w3( zi{tR{ltAooPcZ6BwAMN0Qr=;hxW<Zq?}sm$P%^R0$trNcCDLkn;{(pD3eI*xGyVZv C;I&-< literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/circus.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/circus.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..fb144fa923a58ad80389dc05d193f64d1a26865b GIT binary patch literal 444 zcmV;t0Ym;DiwFP!000006Ma+Lj^iK<{gq1dI*mG$Uek}M3^*xM0t}d)MpgfPMFVWw zjYfWP?1RtoCEN(C&g#qGEC?ZW*VOj9*x2iRjB=xlYu;cN?Z|*%I%k3w&D+Nz+6Y@T zjYox?q|y0Fy^1#Gm)!I{YRb7yyMb-a5p*TKik9NWq60GSef+dRa|#eCQp5-5=~>~+ z)0?rtB@IoLGb|{DlnMw`IH{+h$6Wf+jd4+23K8~J0paowI0;N;X#UJX1mA9UBGCa+ z)~}?#6qnF}%Cw<pm{ES{nNcsLD{izW&~(ZqYsNlGw_Jhui=<LgQTCr-J&>gcuNiFX zRK$}ry1TVT)A9#pccx~yS{>)0@lYmX<3^ORk(0Wcp{%4nqmzW<ROt6>cG&T<7pdqZ zb4_9RzsX;4_%Tl8iMmj_`VNM&@36zGogGlzf@GmU+jvUS=$V=M@ra*V$nev9<pLYh zE9>Hw(U2Lp^#O5xuY_#d1nH6Bxrf(Vnw-~Q%L%dlevh9?JofesUY1{ROdcPL@-!%H mB!QB7kQ2`6CMD1Glf<~OS>j)x=g{lH-2Vdbbd$YN1ONd3-saT+ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/classic-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/classic-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..02d0c33bfd5e5454220b9ca62c349aa8a3cf5b25 GIT binary patch literal 367 zcmV-#0g(P1Py_(va$Bmq4)dQt3qwrd|8c)nG9{UZP_}muYKc!Gi*>g28<A)U73n$v z)zTN-(g9apvjQb2rVGLF-y=ZJGuoxYrxUUa?9d$w0%bUDE@)!MjC@nEe-1QJoNRHq zZ=TRZG0+-%n=Yn(NVgp+s{hwLSvM(zr!U_Tq1yoKy?kGrh`eWcm(z6CRAL&<$3;MG z#(HBP6xzooglUUY$s|wWZPUTwLaUwcl~ZlOqRdbeB0t9XnK+Hh+(-%jTE*hbhIEnj z0Y17zs8YzJ(1yI!d!g}DQyR9ow#YjeY1RBJ#&&|;Vd6w+voy9~J-pYhru&kOsr7Z; zfmJul-g}?cc(>$beoYM8G$atm;ny%I$C+YwlM_CcoO0_tyzI$+CT<7U8Wr0jfqhmN z#bICie2eu6;pqWlPxl0)a;(7?T*?Oy7=(f4|K1N@GBHd~fiJ6RBtmc}p$7dsQve7> NjU%HZ*c=2+{|BuLu=W4| literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/classic-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/classic-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b9bda2039adce5c1cda6235175b7c69a8ad8f538 GIT binary patch literal 455 zcmV;&0XY62iwFP!000006LnMVZmTd1eU(c4yCSy281!K(Cowd)A<0dgyP~S^KBXj# zcD?c+W1pPkFSrp{9MvCxu^@!hL$|Z%O>NKDIm(SPu6q$>v^@iU8k`AQbT4mpv>CSP zI*$rDNu%?VT^Vi8Z@C#q)Rc2|87<`qh8$;Qv=lcM9guOa^QR4(Q-COuB0exr_Z2=o zy%-Bz($p1A%CMjmQX&wjaK)!##7uqb#<*Bq3K5Q00pa!^I0;N;X#UKF0I%Mv_ap~I zxqc<}X>kc1s4N>sh8g9jks0+sU2vm4fu_UK?fYj{rQvV60`E7eN=Zv)zx?8cTuAzg z^-U)6<cuCJz0tJ&LOC3%Yszx}3>pt*H8yU<GB$Ej4^JcusgLL+p*Sq^Z3%7NE_;!R z4l;8J!+$1!!s*L6ktgcH($(K!DEkfvJljm()T{<rZ9%fIK>K(~(M^YankwUFV5 z*TMxhrB~L)E2AkZen8u^`dSFt_X#p0!F>;px3oI1$^M)WG<Dmj;&HS`@N)ST=j8sj xC{L5ZP7)}|6MUr^-BiiF{3<bTEOUSMb-nvoG5z;>4m}>s^&6^V<vvja003mM)lL8a literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/classic-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/classic-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..32b40fc53b3d11ccbea2cb56cfac310a26cc040e GIT binary patch literal 365 zcmV-z0h0b3Py_(va$Bmq4)dQt3qwrd|G%|W4k?+3P-gzSs3n#}7VFHUZA79aRHW+w zR7+oQO9xza%?gy9m@Wjve~$n?7qm-<<g#Fg?obdY!)f!3CU(roHx>Km2~89yTU_p& z15FeIt)aK+V%mpv+mWLBf8CRHlQMYv@*NSn4Y1zJ_qB=0dzN=OO=nFdrqO&{1k`4% zH}*lHeQZLQwm6kc@+96i9ULyS+WB5N)fOzu3^gJ0V~n4PGjN$3DZyW>Se)6AF0wwr zM|TKS3Yiqzke7NdG=6GI!xq;Tc?Tn{nxDnkPOv*noCs}}#uluH_uAETU$QZ^zOFm4 z>Soz{@6#IZmb}cbi9wr&1mZaS8V2P!Q_OC1!pD+RZk>mhJ-N@s?ciFYVp}Az&+4K$ z>`R|-u^u5jJwWW~o?ujtHQ0hn`M?2#FtGgJ`{7F_hUqErWi^dN2<{}*pnqoy0HLUH LWRwJ(gP`gEzlXE+ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/classic-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/classic-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..07f567c5fd71053cc86116b7e3a8ed0bc5014e4a GIT binary patch literal 455 zcmV;&0XY62iwFP!000006LnMVZmTd1eU(c4yCUuiW6+1GoW!A7Ly{%tuBhs}U!^3B zcD?c+W1pPkFSr$09Q9|oI1oaazT3I;rgrD+9OYJ9-@WY0XnO|y)O$M`(Y?qz+6>!t zT|kYTlr{N@D5K5!Ew{sfhH{RT(Nd0}&+)p9mg3f-2eSTk{&b_^G(wa}kub7A_Z2=o zy;uia(bN@9%CJ#uq(mT4<BHF~fSLN%jrFm(6e1j)2Ey%M@CumD(EOPT0bc#7-jW;; z<@&WUr^O}optI~aFwCeh4b18X>VjJn2n-#T;l6!TRT}=5YY1VJs#LU8_RBAB$c02! zOg5P$khiA4NNZ^OjjBIV*OcY{88jZsYHZw!Wo+b?>7Pgz${f)vLUCB++Y;KkUG}0h z9aQENmj6utgwwb6B2UzhOIKf`rR;m`@$52rQ?nXiwFSk-1uEkyDQlk0EX+rI*FuIL zUJF06DZO$&UKveU@f}*p>T4mClnF8*!F>;px3oI1$^D!VG<7Re@i@361hxE%b8>%M xRG>*?rwFv-3BJ;dZmQ&7ewCOvmbpJ<UGLskO#gkJLyre@{Rg>f0$))C000wb<i7v_ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/codeschool.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/codeschool.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..55fc4f16003b63e809fdab76eea4a1f154be5af1 GIT binary patch literal 372 zcmV-)0gL_{Py_(va$BlghuLr50%C6et*u@vg4N&q+6-!myF?btD~U%aL<<RZB12H* zhzM@&vaU;hK%wT_0aabI5~Tst<%!X60ipk!JXW!EKPOx<U@1`7+Ou{s7^ZwWF>r{- zL8@pMP;kR}wZ)}PXs(S;Nv)CJbusNjy6sHC5mxYxL>U{tdPj!tEK*k1YXiu8mUlU( z$tK~u1@}yV=w|jN0V!Z(m$&v@a6_wj+ty%sfo8X^91gcFxI5Ow;3tSblW-!zK{Jxs ztBSj2TQ|CRdx*TdKq4lP(A+Wa;XP^mRD`$}r44vPBQ%}PQqxY69HwCif`KwxT6%B7 z8uuj|)9mBg!K`kV{cSak&)t%j`87=-62b}~@&7R3K{2KB1`&o&4!I3|wCu?}lCtY= zOGEQanSE9lh1-`t-{N(|_!LlVdrveHsW6%mp5-GBL$_I0-V<A70?OgMY(Diups~Aa SUHsZ;&}P>&3Bm3tX$C*2pR@1) literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/codeschool.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/codeschool.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a8d8c294b14603f958e21c1bf96ca7047d741960 GIT binary patch literal 461 zcmV;;0W$s{iwFP!000006Ma+LZsQ;j{gp_4Z7kO~jqQ9)#AWQT!9Zcy#)|UqE5|^c zG}^ae=FFMffg1tEN&WFxONEen=!m^+cJ^{xyxb_`y0;eSo_-z}<>$efphfpqk&2U# z1-9ur4+=O+qf<&nNloYy-*PjKpfSZrU$=D~V@QYOZ|bIPc=Q_!j-qkz%hLwUG0?e0 z^!UI$K6dz&dNr1EiBnhXV}u2z03(3_1uH&HM@ZE7X^fkji!OxGDvGfEOP!=lC1`s7 z%)P7IxR)(OO#LgV&)Gz9RHd?EWROsP8ktc~)CD)%Bh`3JMQYMirAW(F)cZ~BQey7x zmtEYEnS_>veLy7f=!_n&z0tV+205It+n43x6?7KLYHi$zyf$=F4=+j<QlG#{1aZve zE3$8!bTJmB!lO)_!tkHXpJDnoPNa>xkf-_z29xbzfQwD!tgL!cuC5?i$k2Y4k~I3o z&io?chY=F|_+GfcrkG{jtTLSPNt#;h+gl-I-$%#@NFQf-*3wE|lg$$1ySAxP^Dx>I z^)i3OC3v_W%HyP<lSq|Jzh+f)He)A`<yV2_Vwt;bNdA}qO;4_8!QB1<ZA0OtQ3L=0 D|90%G literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/colors.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/colors.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..a48cd100abfa25ac2c4fa6a7f325bb77d4f055ee GIT binary patch literal 365 zcmV-z0h0b3J_G<{++3=x|CqMG#T5RbYw3zCUQiT(%*=n6WqWiQ$yFeSkvhaV5dliW z<aaYQf>qb7K#8*H0;2q{5uhKFByrCr<Voi?>H}+?!47#5xeY3zhFIw<rGhOkSNO&l zuv88f%}o1{ZaXwo{;zwoZenfPxBZTI>{`f*Z)X#Q`z-Hrf<|}H&V9X}5lxHHRW*cw z8WthRLQ!zSWEsTU<^Y2N&E~#EPO<X@Wey{o$X6j+PCTQK79_Ff5EptI(ruY9!L3&b zg|ZZ5hqJTy5b;uB>}m{I<PB&v>#S-U+ZqIa&5IDDd75$y=B}^l-ehB{eVr-LYH!(F zYr*Q5mb}cbi9wbsvZN?BzhXftrn60NGP(7fT^4-+mp!@n#K_>9fU)A48Dw=)Z1$wj zx7Zz<@U#Z8-aWx6D<L>b4af8i8<d=9*+28cS4x!AUEs^?RUiT@bG`=sp%#R5Xyvxt LN`l23K~wwzw>YwI literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/colors.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/colors.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..70a0bfff05f5826f120c94ee255ee040c5a590f1 GIT binary patch literal 449 zcmV;y0Y3g8iwFP!000006Ma+dj^Z#3d=;eqyHxFMdtJ)IpnSL`N1EgkXO{}`?yJ%` z6b{|L#2(Ms&O}%V#ZmtW7ssSjX6QcLdDFP_b%_eAt?%AA=X=h?Y4A20*}YX&wE#9< z7eIqRWetIwrdg6(VaE{+Qlf3!lt4C6aJSo~pmpFGTK~RWT{HqCo0(H2L>@93=lrSe zVjU9-r>-Cw9<>Hc)e<zU$P62ScyAL}Kev@a2&2;sVf)3rVq6oHuGB@}*VV`GB*ze` zd9BPT9}zs$BpXK#gbLHht$v~|gf#(~!NXnTv#DrWp;-u<)TP4Q*+1vvhFp<IQI?4$ zptokY^w!|^8`N;bt}V;`E9h*C)!KxWd2Q&G8D2;h${fKf1bN8vzd(qZIC)eW4~jUY z75B}bVEVRR(nfvEQ~iw=>Fi;Ev&+WnCGY#yD<~c_w4Z&Xta-7suo(AY1cD#l3m^HE zs+^x)h7&24Wn0VLwUDas6J!Krk25@bX=Sg;Wef4Dl!E>MjPA&Sx_`V|a({cMfRlz! rA=64E_)2p=rcNH^SBd4ti2Jjt>Y8lz-*O5)8|L~04Z~yLKLh{(kCokR literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/cupcake.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/cupcake.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..26b755e31c85f551f8e9905804df3ebd0ff2e9df GIT binary patch literal 370 zcmV-&0ge6}Py_(va$Blghbi{Z0(0E$*?!ia;!Hy*z#UUb<EJ%~&LeFeqJ=cuBt}rg z6A`rOPN(NTKp?4aYgBd3N|XejE-z~R5)k@-s!|GR4!2N_I;I+XS+*H2J20t<jL~Ta zp`yG>IR!d)n=EBjG6EwVsnznQ_NIN%+s+gmeg|K{OKJJ&9T_^yP$Ff&Hh{bv+gVH% zO~TuTd&)sfGkTqX6p(Ss?mZhNHjSLzwmm3bU}*cw;V@~z-LOW2?;!qk3PV*^sRW3= zs+e1}(YwI7iL@<HmC=gE+A#0zJ!$+*2+3b8ZNMuUVQA_sWVVaSp<B36CAs2pqUr65 zddSYpsH2Z-2ctS&_P4HSd`=cy+G{e9i$Q{vf5U(WizyU06rum*lH<Zh%dYN~EIV2) zNEjpv=B9Q|?MrVrxetj?9>wB&vL%vL04n5JUQlS}$<lxChfOAsAll{ds^<cQHft9D QP0A=mqh<(#(;{gaKYBK>GXMYp literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/cupcake.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/cupcake.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7a2891c49e30870e93841a382441a5e4ec11dce6 GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006LnKta^f%$yb4wM4K4_4{NOOuNE#b0vZP3(4K9kir;H`V z5cW@=>FJ(Fn;U_}N&WR#3qnZUw>x`TmG*L*queOt+P9k3+onD+;OE|%phf%Ev2NRa z%&=A4dQ`|s8l6f+ElMHg{F<9#KusyfI@a)g%n|e{4rL>ti*aMo0U7r`f7+lq1(+ma z#0Tc-vBRg*tFgc(jcrlI3=2vjMFN2e7knB9Ow{*jjGLN^A;Q5bAYA_gCxNL1O`m!0 zvckHIazK>&S5lwzlhA=mvSDDDP<|YkQBTwbH`)_uIwlchtZFuCxeB~r#V#e~&VId% zJ2I09&bE6VNjy2D`)g-3t-nzACu*zB=I{zS8D+6HZbV)iIjQ>>l7-YKbdpdUvpnqB zZvS%^spu#Zr!f3y^Jg5tj1y_2F65~`gQ4_x*yF_}@_hphREsM}7BaM(tR#(ou`@rL z_+f+uKfV_(urXFyH@S?)q*#446>DyVkX;uc0}?#W@a(09y+)fY#8}g?Ke2fn><PTg zzv7%c+z;hxRM<)aCDU;hn$t6O@+iMZ%ooet0A;;o`fqs(Jsals4cvDD7f}QN01iIY A$N&HU literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/cupertino.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/cupertino.min.css.br new file mode 100644 index 00000000..0c838814 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/cupertino.min.css.br @@ -0,0 +1,3 @@ +C r[?Z{_ d\`oЂ]9["jNYgU׬8)B3 wXӛ͐s@E2%M?KZT`?%xjximpވk1;r@39Ilgy)*9Pܤ%4ro[ h')cMд~<1)\Y00#p7KMHpab-)TmvB8L^6I/ +%/kǩv PXAƒۡ˞܊5/⇬. +'}1İk|ORbK2K^@ni%e+Gy4"ʂI FS \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/cupertino.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/cupertino.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..ad492cd1b91d41ede26dabf9927f9e8cf3963124 GIT binary patch literal 443 zcmV;s0Yv^EiwFP!000006Ma+dZt5@$eHEnr9aY)j!pg&-e7MDzG|m!dqe8s<RcVqH zhOYX@u}_YVol`{`s-yWEE>38Twrk$qd9iWl>y%Yw$Tu(Rdi?fMs8i=DTHU;~Z98EW zO%uR?VkDdJ0nHcqsk~Iw_h31dIuAoCu;_j#$$=M4{&hOKXcb2>a;Hp)GVr~whpQKI zLLm=LwM`WnjR8&s8Vt<%tmq+A-^L(6DoZJb-WkEL{1P68G#Q$YS%_M%#A=h;3FfTd zpgon4!3&ey#$G~3g`t;Z9;hotHn6aK$W1`*Hg%p>84<!FsYEWye#O-dSx9zof8^UP zkp%W+yGu)!m*0Thk(+H@@1H?Od(76RNSC#-N83GVS)o0GM+SW;?dy8GE;Go8h7XuI zHL0J?pJ4bVuk%KIEK_|(;v9SE;OsK_`)arTn7;zbSfK4_B_#V~XJK;h-3S?ec&&Vt zL%QYs=rSID#%ZsW#<orM9$4HD@Mxr&w+2`IBR*>Vu}aFJcSjMh{C!h#e|x3CgMkKF l7*q*9>p6x=$$k4-VS28ocKGl0oO*Q2^&cv(mx@FL008Fq*{=Wq literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/danqing.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/danqing.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..b2ae4693300ebc6bf7799fe0ffa8b4d0aeb12ce3 GIT binary patch literal 372 zcmV-)0gL_{Py_&EbX%&d!|!Md{En+%zqWd*Alf#BvisjdEpe9^qFDZt7(yXhNZ6nF zDy^!SvE+U8a@S%b`t1O!u33RnrPCGg;V%K8|6Amcb;ZvKSHw_6oN5u|`Cw>v#bu1R z(HTXhqFiJ~rjq8H^fIBPNev;ihGEymv=4gQk%B8+!8ej+%zXKd2;Jr&k#fB@IC(d= zvp%(&bl+KUPZLBpt2d570U5iPOxtA{igUSbV^Cb6*;!W(mzx&s4mC0NV}PG=8AvFa z${5>I#ckQf>=Nw((C#=A4rxL&hrEaPrtvdDsCbduaIY{z)A1}7b^_=yDO1>|Qqgf3 zyw_#z_r;95`gnG*s+(nh8>jKPTdcR&6hKg9oTKsoFyJ7WQgs6f!;>brWeApC-Ik;s zqt+CX%<fF>oZ6S(ZgLzkJOvOd?#WVNsNLDdyL?1pP)wH5dz>#aG1MlE%jVM{1qwN9 SJ_k#2Mp#EP>4M!+(DZ-J9l7!V literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/danqing.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/danqing.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..0afaddb2a280fcf1c80d797d036c6651082aaacf GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006LnMDlHwo`{S~X`bxdWG(b4!ZRs&6BCBQ(lW6JX1w_<>a zuKU(>pFVy10=ELIll~p94unvq?^<_RZQSKHd%4xtcW+qB8s&ijKlk27Bf7Unv~?qA z*sALSYUHG>$tfGy)*CU$*W3;R8p^S~fE~0cM$l(J2eA`P@>_=<$olvB>7wBjVJeY4 zA+kV^3ZGK1)&W;EcGYK!u&6asA`qx?!DnE=OnvXh`bk`J5e`lR;rb7F1x#mXer6$Z zzpuAh2oPocTA6b(2|egsHVzCkDvSfO`iZ*Y)&v4W$6SQ9JJ|lp!_^SNDydXdl>K8@ zcVr=vHE-H|A_?TJ>95inT7RSJPt<+Z_2CtCI+VrOxD{n=<dx}Pl&q9Fp;v_BSjz8! zwWS9Zm8PT0oWk;-$)9ojwqE3k`dGU9ik7nNvB!(c<ZUgaY!_QlEEcGoPDxqwVrF4J z;)fP8{P<q^$i|fA{B&hBmX*}-f$gmlO3DNokl?Y0=UZBw*XYU#aXwSs130)71XaG` z96a0?6=>AhDFUr{f-h=LW>WH4ei4{A_VfR?`{rZ8^xyRCdOn!jU$~pIfl&ki0L%{P AA^-pY literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darcula.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darcula.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..676696746b6513043d0460ad50d816b6a3efe6ed GIT binary patch literal 368 zcmV-$0gwJ0O#}dB++3=x|CqMG#ngZPe(H~vU^Rf;ch6ZC?T^NhS_LvJps4_-vkIjH ze>pXURoARQ3A5<}qV`h&=>M@vR4U!e2_2ejlywZO4TfSJMn}q14^u^Yfy9zY>1}aI zD~Nf_Vn%4yf{T`>eMq+*DOm3Rg6{z@4~h5Q5uqas6_vl&1|{!V-sL(an;2<CopEsx z7c+Z}5EP*CB05vR^Ek_e7jIh(f(x82{;nLBS{6(cHHXwUAby%Yi3x3#Q07)eht@{# zj-0PT?xLcCBuNA{ioCn`O5>-(*sa;xP%kjTS?#l9W}C1bZhRb}So@8E_rTYBU$QaH zK5jdh)#0*lO;2OLwd7@fO$I{L>{J3>k2Ra=Sl-Zt`*Vt{`v5L`a!a!9Xf@4fCF6LK z)kVSfrO&rGjzf6bgV^w%U{sK%N;Ar9`2!49S1j}I{qRR7YN-hA^6XRK0*S?{LBCvO OQx(~c%Jbrbh^hRO;I{h! literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darcula.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darcula.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..1ca662dd76108aa8f0829b572bf0a21184e4a1f9 GIT binary patch literal 454 zcmV;%0XhC3iwFP!000006LnM3lIkD~{S{~Sb?rFTwzhtZ6ChTu6u1!X+Hw5%JGH=8 z*BxF$a&k@*0yhGSv-;z27KD(x?@D`JRrY$Hz1%3{x({es!|MYBe(9YFT67;<Hk}!^ z>N<}KIZ2~aO1YiR9A9%Y45%r^>P=nNb&L`8S!M?%l+kZ2Iw0dd=c^5xQ-Db#dVFA> zo-2Gwy%`H!(%2PEjIf{-QX~+laKWcxz(oD%#<;1t=pr1f0>bq_a1xkG&~#0O><|Q2 zQ4WYw{YvUfHVGZ5BpU{X3FXIu8TCS4aHBnerehx9zHO@16IbB<Dpn~eSN6j$9>`3> z7^}8zB=O{o?r$ffY5j$=KU3FiHivi6X;Btq<3{AMk(0WABUwm&Mkfiy@w*4uH&x<f zK`J`R#3>B_p8N&JFXKd-s0+EPzrj$l9rk#&nS9$e)$$c23mJNvR!JKDW@dg~;-?l8 z{P<b8z{Z$m-Lz#iCdGE&)ByKF$kQo81|)dy;dPf5>owZELYz1I{B>}!XYewA#W{F* wJd~$VVJ8Wc<PpBmoXl9sv-~13zgXn%9gYi{Uvrb|bzAQL0RZ=!Ku!bz0DOzrRR910 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dark-violet.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dark-violet.min.css.br new file mode 100644 index 00000000..d3cc76c8 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dark-violet.min.css.br @@ -0,0 +1,4 @@ +G dk[\Zxlݬ +Hê$ԦxT{E1lBC]n"G'.G~?cA +&~66ƶu(\() + 4ܤC)VmiIZ1SimW I/D~QtЁJI#iOùLCV<di J-NPsk .!# xi^ImV>an+B(憷X͂vNYuŬIEGCzek/ŘgzZ-P5oï\%KJϟRںdٳ[6sipWԈ\_z0BXൾ'e>蜗z?n+S?j fyiFs&6cT b \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dark-violet.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dark-violet.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..fd8a08e20ca293d0b488cfd3feb3b10eb2cb6c14 GIT binary patch literal 450 zcmV;z0X_a7iwFP!000006Ma+dj^Z#3d=;eqyHq{81zH{k<-;ji(j=QWw^WFCKb6+m z!lL`<+T*c3nF=SNIGN9Q^-M}_ySDO|RqZdgDJz_Dp?%}!p27COnK*aBB`e#vvMeXe zs%;|}5U8Cc{71Esbu-o1!u35^q*~on)qd_>BkL$%DoQ#JfuRfU)2B~XU}7WxoQa7? zeBAA+_3Atm8i%&n%@v-E0h|dW7+COG)&o)BPjO+~Y)&Ec-Y|sqUluguhM@FGi?IC$ z@*)h8_BYy|bBGX_p|PpwK&UwM+?glpLO2_dSv=-zw}NCfEXLKmqQ<<|uei7)GlSYR zQf+3Eh{4(Js+`63H|Xw!?XD~jub`tp7Mcksvt}5y?Ou#5v^_!42=bW6f7DH#RpLn- zJZj>UPW;GzhT+=<Npgmiulh<3DGt!V#b@$TDy0@rpn1wrHTp<9`$Drg+4tcDf*;?D zkoYin`7l}xhdl95wUy1SkXor3(gU)`8=j4{@Ydk7e|AudtPJ%2#G=lB;8Z-^A1dNt spw-BXCNnH%j^Vt?<M>5kda)nl?zfy&`)@m?o(*&R2hnOTxkv;609H`uX8-^I literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darkmoss.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darkmoss.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..b4754638ce083121136f00026b7f81654aa32279 GIT binary patch literal 372 zcmV-)0gL_{Py_(v+FYt!-#8x87MPgA|9_Y23ND6XA3$d2-PA_eP`EUnLOB5mHlU~g zr?U#B1AlkwfUB-qfzo2rg~afu2+;pim8w{{mlLi)K@J7$4p|!vVpmMDlw~}lFjdfv z5F!^vv&ALNXwZcwKx-IWbTREiy6s5OGW`YLjF&m_<vSvDYq6s8du>wkp5<Mx(`6I& zogdtD4(ejEHx5A|8W-V=DGDxyZsKi=!Qnz@JHIQZWhjd#0W~@GV~n4%H)L{|C5ro7 zl`yO}yepg^VD640Q)CH15s>%rUTOSPgt#@WE%gpYIve_|WOjnvVd7md+!)Zr!+Y&( zy)W6AW?#1*WOcLbTi?^#-z|BWUy}hNWoGgs{~iWSX{J)%)P(6Aky{_&WlwHN+Aa#I z*2KU*tBZo|OP_CX963BC5Zl}njM^qiNy@c+hGF1}<^R1Oeq>^pieQ(sPmv1{J5@vf ST}D+Rm^L_zD!4ccn*I-(T(6k` literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darkmoss.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darkmoss.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..0f0bbb2783c15de68da5dca7ac531ec34e30ef64 GIT binary patch literal 462 zcmV;<0Wtm`iwFP!000006LnMDlA<sW{S~X`b)aMwQT!Mymj<(jB$IS@q%8k^3rT0t zb>Bkw>2vyW5LQBY*1yBeF)5Yl+l{-fYInWQQDL?9?T2VY!|Eev;?jE?jch-vrh=-Q zVXL+cph2LrhDtWgMr`DqFN7TiFi5$&uAxq~1+t#v`)c3q*C}otc!t)0&YvzCfssuT zDH0+N_}t-3>CHMO6pn4#qzsQ*1116q8Wwzp4M5b7X{?``OCf~8X@*ezVO}w=2}+;T zNY`z5^*+flMCxBFbIDHx&os%#fdiq!IB=_9s7ql@KxXhnBCwOZ+0t?~3t^SIRG2&a z=UqOKnWU4vq6-!Qy*2%<vj&TAQ2iO(X1zYXgHA?StW8*%*M?r1{*7d*%o)5wkf$ua zJshfhY#x=ylOj%O#n0w1Fn(JvX`?>oslK8`dVA>M>WF-|lLyERBYMSShIW&clr?X5 z7G@JajX?0zXXzs!Q<d|R%W(V|XTLsF_fo2^OOOGOJ<ss!rG>plmo0SQVlBu*Ft{@d zD*uXe^7uGZz)?f1kZC0ne4#l#Qzy^zi^O~};+DS}UT+pm|1GD`t6}bc0j0_p#8CtQ E0PVxwwEzGB literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darktooth.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darktooth.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..c8bdaa2e30c5d7b7e7d85664f62a49c86eb9fd00 GIT binary patch literal 371 zcmV-(0gV0|Py_&E++3=x|CqMG#nk>=TfK;es2W1q{WGW~?h;unuOuF!5G^EZ#HPAT z=s#AWjvZjtH7ii^Y`TCL{S*NDf2@ts+&!JJAX$Y8YXqzfhGJI&bHfGCI7}7k9a4%^ z@NkPuTGdd^6rnW=&bpZPA>DSQU}1lQuft21`05=Iy0cJG`F(9r@}A{gu2W@`>bqaK zryRuD%-$pf1!z2r&U6%s;H(JaZHqzS0w=rQD~E+N3&w&Pm--3B&(s^L<XTdpuT`WE zHhSkdJ%rqbqDq`%mI(45-V2SN3S+loX+yn&5l%{-`OHpXIZV9^F(cAiXn1dYt@kAx z)9mBAgIV1!`$pF^c6Uo&=GSDPLnpB?iTgDSn6Q|9c|#G}Gm6~$04{rSOS0@}wGL-e zD!tF@qG0>d=UW_y6Hg|@qI=2%s1#f(#!Gnz!_YOB{(C?Cl8I3&Lc2Wq6u3ZQx7Cb7 R$|y!@m(#0)XFEYN_yMDIv<UzJ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darktooth.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/darktooth.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..91237535bc1872f4e071bf01ac758d277a9d413a GIT binary patch literal 462 zcmV;<0Wtm`iwFP!000006LnKtlH(u@yh^I(cjEH+ZRap49<sv*0}Em&u2k+m<ro|% zll=p!)!h<;X%5Lr{&81BI2UT@a&y_0=5kx2OiOLM57M-4QyeH^=fP^Pc=z$evo!l! zV7sn!Ac3LKDwdRK(H7;B-!naqpfKjDs$^vma!7_4Z?h(^V_X}s1hxHKuEr~dp3D*< z;yiWu?C_=ZstsWRr!J{OhI%Oh0|5sK8$Lxwh}8FPw4Kd`5W;9ALD>HzRuC#9G+v{T zo|Z-42RVWm{Y#<F>k+{c8D;%QA)?$gQY~Mo6Q-3zqVTwiKvQMwa3yhW7hDQlo&7o| zcjSYFur#NE#G%z{xb|A%{u{(_!mdu!!#n7_D4Ve{&DXJ^6>4}RnFw_PD-if`m2XRy zHn9ilg~X$XoLsZV<j*jDYs=$AtzWzP>ovx+g#j)mk~fr;?P?g&3hGyAKd+L|>dnmD zvcyj<MELPDv7Sz$%Gi0!aEgj4ud2GaC0z7<fQ*3Txrf(X+N{@P))i{{qN?*?9!7H_ zPOM*XNgnPG<#3YF2_#am0N-fN$Kd2yev?>U?D2`}Jj*sr|1FQ9*M+(L07s~|;ZXzt E08dfm3IG5A literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/decaf.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/decaf.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..5cc7f2ac0ee7c8b1e8eacebfaaa87d195c3598e6 GIT binary patch literal 365 zcmV-z0h0b3M+89RoU>^)yQ2Lp+d#O2t-*iypTD2_6Y%2#8$jN>=PZjNdF@po!$_RU zaBg?01L;lF@kkBJbi*W=AFrUy{^@}8JrQ-!B$P8=iBvmi+j3B&T&4q&$VIh8ZW91z zEoXXi2MdHlYze7sNSHbNM$RJy^WWR!?V?+!S^e&?thdS+zoZTNw=9d8Q&ot8l%%|0 zv4O}c%ST86hXls4U@cg{dCNE#z5)ZzB)&`z=cO$$5~!>*o>!nb(ryfN6Ma=8z2O+! zhI1JuyKKhC6_CK~<a<f+6q2M{GM`~wVFza<xi&d1s2nKh0OC;CK&>%d*Q3=d-l^_! zg~2*)Tz;(+8QZ^?^zu5)dzH28U$}rVGiXz-A@f$JR9MuZx;(!1m}~SI(j+L74tcaz z=)o$^lwvKKmI2myA0Uboi@60}w69@jx~9_q>4)Def##uCp1BwVKvts7mN4OKa?BHQ L8x4@S7BcBS1O>A* literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/decaf.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/decaf.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d7e7fdc996a0e32bb6692e40d7bb31080dee5d35 GIT binary patch literal 448 zcmV;x0YCm9iwFP!000006LnMDj@uv*{gp`jy0Nm&?$UKWCgL(UG#Drh-B?lny>iSD zlBV(t%pA^{%dzwdx`X|d&Vegs+|X~sY4s6KmnAB_^|61EQtkwo$07RcRR8ir&EJAq z^?d>h5{-9+|9G3fCBK$_9Kj*w7-J=Ye4wCs7figDxDOCH`uMtBLv|7~pZQB9WsxeM zl=9)-*#|BSPJKs8B3lbsUMsNBkU2gA@m~AzajvX{5XN9R!uk)7h6_tjx>6NdGtESi z<A_weHSSoC2$5To&7%N9rD+u2K2UekyM)}~{w5+c+t64oPia-EG*~P9=iFV94T<_> zG_r)zyWy<8!}T|q;eb8cY<AC}vp<@#Nw4bIFd8>Jk?f2+Kr{$yU*!cT&VJUt7>j#D zoXX4F<c~0Y`>1H5G1snsXODD_Fu*A^<eyqMTQDM5sGfafyn8aUwAlBq1%mHiyO_mP zUWGWj3@1|j+6aKROQ($11u_Ei`yL*>)YxkZ)k2`fR+D343<sV}{R5Ze?z*UilZD<O qw}zI}XwJt{$-R7&ST=TZ#Mf4A8>at0r_iHeE`I?T)SA{v1ONc}R^E63 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/default-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/default-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..7e059d9311879d441a6d6e6a4e938a4c1098b082 GIT binary patch literal 366 zcmV-!0g?V2Py_&E++3=x|CqMG#ngW~Rl@;Kx;B8^{r5T-HKFoYe1i_GxTq@9bpWcR zFQ}yxth#0eN|8+$5R-oo0KLj|7rLhtVxr~H99XLiPg^ma$T8E<RNTK3IzgOmak+1m z=masLH3>G|O#6^-J5o^puY0m?QaVrHydy#n7OK7czBUkf&+;y(sjP`aG+K>|fY?my z%|cLMA2(5$o;cx>(=6UL9TYCG+W%fT)DkSn1T`-5Gl-wL*SMA%DWtwukvQ5Yoo9Uv zkM0xdDO4J3EyxSr3yq%&W7pEPL0-WKtKw%qwsYtXb1y<qOcEhe4ey<=>AqxRYJFUH z(5m}o@3l{3d|L7{za|DfTBam1?$<CNr!)EN1}C&jp7Q7exa`S&Cf$x)n^YPXDLrO& zQ5^QA&$n0)7oIGL<@c1kLM_%wT<}ufalqIGmi~J`{E`V6lYF@v0uh`$8EQtbB+_u% MKhjHro1LH;{mF){WB>pF literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/default-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/default-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..cdfd285cc64a79a7ceec53f916a52c11456b9c88 GIT binary patch literal 453 zcmV;$0XqI4iwFP!000006Ma+Lj^Z#3{S~Bn9jal5ODP|NoWw0z(j=R>J5-2&Uxmh* z!lIR5T>HeA<5TGrRwwf-UOgzKZP$GH%VOg%w<#)}aiMurb+Us1dG3N6tZLp?b+QSz zXqt!yC242*$yc3h$}gqsd$h#4O`R;~2s)07I$4f8j{(Sq_vzCQR?+~eMUKQlM0%X? z>FL#ZkebG(+U1NGj6uo;6dIh>v(O`#zHj3~8ZL(jdvAbn`3HgqVHnDvJP3&OcKw;# z0TIt{v^^J>Fo5B<Lobj~aqNXNPo*pAY$ULBEZfTccC%%24aB&}Q)()c{o_}6WGT|_ zB-Bh<q~L6KZJnj%H|p+0&F<sl@CurQGNVm8RcNE2ZTF&OrR@oWCRE4L9#&$rmE|tl z&{1<u<>U|ZXB@v>P|Ro;%2vMzN9+ge@Z!06y_GAmpIt$Vp+MUtCGG4B&f+BEhZPup ze6PYF#{9~Mq%s=0<4!^=KW~-NZJQxI5<KqktfiT}MqeZ(pcc^P;j#B8h`RiWQ}S>> vRHV^hqX~>=B4<65n<sf}KTAv(`#H&Wzh+te_c@221#|lgf5@+7Q3L=0lCj`Q literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/default-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/default-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..6b50f72cb867f08a49f1e0c69769075190f6c115 GIT binary patch literal 365 zcmV-z0h0b3Py_(v+FYt!-<UrSv|tl)`*%*;SL53e3t^IfHzc)IO#|tGig1&prXpPj zpj!HZS~}6HYgV8Xqv;~a<lh58uOjS1NiIe?G$%qR!_!t7CUVTwH5K=-EGCGv&6N9A z2_}dMt%<YgX4;2z+mV9$f8Fi6N$EU&^Nt8T2+H>I``SR{J<GeCrm`jy(P%X;0%9|* zH*-OOecVK0dW?-B4l}cDIw)LVwg0_xs3lmC32I#AXB0nkW#C%MApw1@B5|})I?wu; z9^EI@Q?S$^3i5*YLgOd%ec95rL0-WKtKw%qwsYzZb0tEL32XwXhWAd@bYHSDwLY#p zXx06)_u8j1J}r5fUlW5Kgfy_+{Tc@3bS9tO;DmO`Qy!H=m)+iH((TB#iKV7U!(&z# z#bICid^38u@MJ+Ozo*<qY6h(-cq#8VU@QYm|Ggi6$pnl^zFZB72+o}hH6vIO;4$=% L^pfCaCul}LG(E5& literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/default-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/default-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b016932e7e762278272eb5ee8664218051ad7e47 GIT binary patch literal 453 zcmV;$0XqI4iwFP!000006Ma+Lj^Z#3{S~Bn9jduN>6DK_PU4m<X_8Ic9V*1XuR`NY zVbRJjuI>2P$EVUMtd8baym(Mb+rItu=hfDquX9v7<3juL*(BQwkf%Pl(W>^PYm&`n ztG113P?C0*pQt9;oL@^f3}}gSqDhu>1U<*MO|l$!9s`gIuk)uLt)vkWM2^H!M7p2w z;pxSBkea5p+U1NGjX}x{6dGLgvoIjHzHQ?|8ZL(j2XBCI{Re^uVYrk(c@Pkrdh?Ot zfQaWe+MbF_7{D;>I0)pbI1R#?ht`#JHWFAm6msQPy{(yC12L}hl$y$9|M=CdvNY*- z5*nr~QgF7vbk5TH8+CuAcK7zSe^#1=vY<^mRcNE2ZT|$a()Nf!6RJajhj+29Wx0zs zbkN*WIr+o<38!xt6f+veveoa=5&HpqJbP~5)bd??Ev}%&SW3GjCGG4J&f+ZMyA`<n z@LGjYO!<`$No6!K;!Z**KdzP1U6)G+B)H$<QA-PXO}<D-KqH{b!{gwO5Ow(#=j8r& vs7RB+RudS_L@qFsn<u%4UnJ&>{hXx!+OVwt`<z3Mg1P<$Y{5tcQ3L=0&p+kO literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dirtysea.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dirtysea.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..942862b3d72c548b78a2d098c3c0451995e49c4e GIT binary patch literal 360 zcmV-u0hj(8N(2Dpa!zG)zD<do2x0lNvH$;bt4k|!XQAZx-@P+T5+jkt@<bbvC|WtF zNY{uH(-)*`jcxQdP~7Htp|0~ElfX)Qc`jk3%B0gR(LC=7=NZXT=rrB@IC1=FC<S;7 z%#0IywQJ(4lMUKC(k39m1pezz{Dw`;oOklwvALM>FqYrch9z7}71aXeI6~;|jP`5m zFqp@!m%{<$IEY(vF}9_T8Ndz*BGBu7qa3835E#Wv*5Z2@ISsPAgT8B`n(Gsl7I5ow z`XfAbpPUA#>v*Y{Yke;+9u8%>L=rWk00_NGVR@_VV?t<<O;|T&IW*_y#6=)(vuC?F z`ncBMQJr5Y8)`=V`%*@|j{VDi^#Ur%DDSv|{L+@Q9Fq)RiNEJ0!Evp!L&8_mX+7DU zRRP<NEIg$kHh&*564RSFFW)mJh?bLO{@BlN2P``AUoU&xXcIC=@~q__Id96`MR0H? GXu?185wgty literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dirtysea.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dirtysea.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..149f44981876f0c894532c445170b750089f97b4 GIT binary patch literal 437 zcmV;m0ZRTKiwFP!000006Ma+BZtEZn{gq04T_dzE%U$|06#+M8C76NP8ddxEi3Uj8 z8%=(3?1O!5p9qvto%DylS}vtBeY>-lO>HkfQ&gZv*FG`E_8k}J-eEAZeF7G3!fe{s zg9bqgO~y+WZOU&24g(m<xrRkcIpTeezp!X2juspzbkEbL4MtGlu|<mb(D_o5vB!5; zv|K0}+p0;KE@%yuUQ5uhC}#Kox$bQgbdgyK5e!yyg6$V~ig!9g^Jix9@0HC&I8i3A zl{puez;T`1hM|Lu^5f8<ekffDG@iJj!#wI+{Z{AAYVQ3eu~bx;{pVLVWGT|rbyt{r za%lSN5e;p>LG>qU8^-o)&?u3`+62n7Hgd}JD=jN!PT&-QJk0HPj5WJ*7p3W-a!rY1 z-uxNHZ*($m)P*wDXF$rngB~t+b+&i~)rA5*Mja_MD?9U(g6~Gi@WXTELN}&Y)<u=k zIG?21#g0-Pj|nmW@%tGbwX~4eXp4lRfZj8C80?9AwfqU$JKNt5<!RK=D&ks+1Yh)w fZenuZevz0iwz{=HpXbn{V19l9f<54^O9TJ_<W|vv literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dracula.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dracula.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..a66e60f1fe3502e17963ea12bea948e9810cf614 GIT binary patch literal 360 zcmV-u0hj(8Py_(vYFnu?9nOpvd>6Ch-~H$Br+$(};RBF3XIT_9j`DvWZH<{a-DCvC ziHM+I^<HNI1=n{y($C`sl(5`iiO&5g0Q7(G;8EqD6UKxSUK-X;62f38Hl|vI#_{Ac zSCOt5VU&|QvFd1n)_^0la%t1Zey>fuk%HYngRfwvBwqV&2yF#oshqD3N^V=2L8ta6 z)h8$1(*~lM-YaCF0F6yaV-l6-wP;r{jzQxB)#SW#*lk#_TGUAD3j{xfq9dhNx^B?C zRqWzLTIZ-|33pPF!WdfPE%Ii*4~?gmvHW0aL%oI(sy5GD-4;nY6blo6phk4DnHuI; z3~Sli8t>!XL9aH?`!qR?YwCm!UV8^h#Q{Od|1e-<GP(SQB=i@GOcp6Q@A@stv=i~$ zZ3jfQ2Mfe%91@;<5Ig?fA;Nsh3k=yjSSG#4!w{=^XhhgAs|ynoNK8h}jfy0vQw5tv G&}9A!PON?a literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dracula.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/dracula.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..951341e2e597a04976ceeea20682a0ee91a0a6ea GIT binary patch literal 445 zcmV;u0Yd&CiwFP!000006Ma)#j^Z#7yb99%4iN((KsXHYqaD0BZm-?mAwqNaRfrvu zEZRS(ySl0$6@e0ptN9fkj!CI)Q}5h;wRiWQAu7<IuRq`fCsm#~6Su}=w6gx#9=E4m zHNaMN9l(GfjW(B*vQ*V^$gc&qEm+FAYFm}ZUCI$_UU6ALu0aQ$5&F;J(?u&NvR)!Z zLgazw9WF{A=$O#d)x{xYcr*qm5lApF;j^rTO#Pe&ecxOP5wy-Qg7qKfHRC2j^XJ$I z+kf$Gl4C@<f1~Yfd=hwOvTSTQWK`%{j%Gn!2(*EirArp!<(><bmupxEtJI~Yv9o{P z#S=M_Y&Pmpof1hPkG6Rzw6y*P-CU_YY&Pe2(B3GMwF#8t+Q@6$ypb%ly@J;S@-oT; zSL*n>i#Bx8nNy;8ZT<$`H+q>j>f<=o?}(J&9vZm2OwPVQK{>gC=5d6o-bxzno1KNh z#Iq4H{PJ1&$h%bKeD5;qmfn?GsRU_(*nEbimnQb=+-RZMb)j`v7WDWl4$1TLP=PuF nwI*h?Nbref|4g0C<tK^ZVs9Ps-|`$<8s_IOgl^K!Q3L=0D_h=8 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/edge-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/edge-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..d612d868c2bfc0d880d09638be551bbfef9f6374 GIT binary patch literal 351 zcmV-l0igaHPy_(vn%lH;y8`AL+d#e%Vf|mKN0@F4Ap3VFwb>noOY^@=c?S|~K(PUx z&k^Nof*v~3s%uuDG=k|O(d0h|fc~#Rqe=6p6K?$22R|jPNR~O1vw>#nhKlF+0u24I z+*Em<fItTbgx174>1x^sv+YR1JpTsYSS8sv?}*S{Mg{Zx+Aw*y*x^j0N%8$J+*1Q_ zGNU(hL4osl5{(fE;DJ}FZSz5KfusHJmBZZ9g27PZiJwvY)C)!FTE*I8qjkaYF{SPc z5>{(~(2)1^UTFLT&hsTp8{!p4IBInksh!hum<tnx@^k@7g7;3;a$oFdqL1qiMs>gJ z>r~U&J}g+`H7O7gYNaCoH4GS8Oi|oWg!z;#_rjseu5V73or~Xtt&4)}OOKoK!^2Ys xvFe^MIo%-T2)vYc2*!D`(%<{xmrP6y3-$77Eir*-_Olj8u1^_?;K?p%MnAl?vlRdU literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/edge-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/edge-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a6e950a1adde62b486ec1189fbd207304870cee5 GIT binary patch literal 438 zcmV;n0ZINJiwFP!000006Ma+Bj^iK<{FO@kx{cbVJ+A4;R0f=sD*+bFZlh}deU%2d zv=`l*vBxvU48lsRF8WWnJCIVDuBqK^b#S-uDJ!hDzIo$}qd1;8h->F<G_rZy{o1kJ zae}RyCZI+^%9`hvslFDr@6k}M)wtj7bB&<Oc~<ipS;||79?1Il>FA;n6k(J|nGkuP zMY-I1w+@7&p{X({k6I%o0*M-Dd<J^V)Q{U(KMt2tguT;1xc&sMfa?s+$2<r!wq@HS z2Sj;(t<1HAgdTL3jXlSV3PaDWexa^}HG#m;c~L}Y2w|0`R8%JWC$1jILLxb5Y@bL1 zd270RYYnZxP<0n-*k*HDf{sR+txZ^2)<#~LZb7nA=7L@k%5#y2EpOTH@-9l#S!GUX z#ox_earm-c=8gJTZuJo@<=A6~H<!r|$N>(sS5Q0_XggX-S+lUSFq!!23K@QWuYBY~ z>T-T`84a)Am8xwMq(_41JG^>nX0O2&3(5MpDc=BlcY&bFSDcEc$3q1gG&YJrE0N$c g%`r@qJj>4t(~B)`?Z53g^=g>!AJf(y{!s(~0AjA!pa1{> literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/edge-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/edge-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..de4652dc6a18b8b162a2095d4c22f3976bb1b845 GIT binary patch literal 350 zcmV-k0ipgIPy_(va$Bmq4nGrG5EbkHQawxsPqzTb{+&r}lnaGR<=dsa4-#xZQIW0# zP%V8ymJU#L%?gwXpDrYa{~iGPzs!|TML@0}cY5d!Ij0OyyULU`j2$!bO=Xb8{&b7W zeJv%8P6(}`x9MWqhjiPKg8KKmCo9>`>C1OS=+=Sm`F(9j-m|>RE3qcYcfN2>1jJ@q zZ|s8t`?#s2do$5QlQiBo9RwFx?R>8sY7G`-iW-aj81NGh8HH;VjgyViIqL&BIv$3S zBJb(F(D<nd30k@~$P0|Hs($9Noq#(`LJ`_@Y73DBc(22n?n^eN*2i@Rt-4wEKKL}o zhb1rbYl1|R*wk|SH4GT(OrG7~gxQj(+=d=3dvc#iw=?m(&+4K$>`R|-u^twlG7#I` w6O3|+DW^Fv<&6UdL12Zy_roul7^bI?FIS^T1n%sFns2$zkuC{tHbK+>0m<>GkN^Mx literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/edge-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/edge-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7871384e7bad2699394a63b4b1cc125762e809f1 GIT binary patch literal 433 zcmV;i0Z#rOiwFP!000006Ma+LZo)7O{S~CWj;h)Qh4L{~E^f(4<1BFo72@Bg(j+Ua zn)>3{$3DKC3Y1VB^{2mDCZ#f6{cbO-jlJ9^uRx8ie%ZkGW7{4$6Q|B$FtUDW+4xPc zRb6|~AV{G}DRR5ty}eEGwZOgyLyzTRj98ca+s&@x$&VHsBXqCR(*`3bu#qBqeBge$ zWJ<lFWkS(V7gdb#pfyk|AVI^do?$(t()Vf5jm<?DL2or9SbsC87}p7!o_TIwl~oz( z7*Xn9D|5;wfnz$+hMq%0`Jv~ipGp@3jVETPStJpfdB2KXD$1Sxv5PyhS-g-Zho-x> zXlQ)~)g7s>%JQ%T9fdMmn?RY@MoyV-fwEBM2u=~mCev49-+u6X7p19Dsis8nyZI9g zXLK@c)P+3NS3pX(gAOh>%c0zh{rl_+iiZqsM=2>Z3p?|Zh#y8s@aDB}fe$gux>02` zJZo2~wvCV;h&|5mtfiT}2Ad_scU37MHV?f$GOzNlI0X;)LwOoB)QXr^BEn~!qZvDS bq@M+*i!E;L-}K~q7R>DjfbsGlQ3L=0TVl?f literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eighties.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eighties.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..c6f47fc5bd7d4e430e7ef04c0c3ab0d922dfc3f4 GIT binary patch literal 360 zcmV-u0hj(8I|Kma+FYt!-@x}s3lnqy|4-FKAinVf$ouc!&P7S7JQn{!Jq0QD1gth< zQ(Y$XAFGgKXIyp73Y1(-7gE!o0zm)IL`GBXo=#ZvY^|(EWNk1MTPrpw&&*F1=>|v; zf$6rmq!}?ag%O0-)H~~L+J|)8k%EQ)4ZZ;{L*m<aL}+U<Q2BjrQ1YAQU9MBIi6LD_ z=^zf`Y-Vrng90?3MQ4nH13=ux+ZKc10w)LGD~E+P3&x6?koq~s&muI`7{e6UYZdL2 zjow90PcXNmXqN_ah27hGiO~;~I$jnv6bpcGQY$QGaDfY95gN}-YAmYvVXgEl8`GrY zDuc;9Ec?cmGIlRZUgp=NJqyw_{JI77ETCAfP<Z}~BF~|Rmp!>9S!x55sX1kJQSkKi z`4&eI1dxlV!#&}qO-(xIWx7k9xTdlH<cHrU0e)KK$&bi5iGyYu)J(%6QDVRuRl&1^ G5E=hY467*s literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eighties.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eighties.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..f6f2c828efa883dbc67c5e51cd5cc7e1e7285291 GIT binary patch literal 448 zcmV;x0YCm9iwFP!000006Ma+BZsQ;j{FO+3ZLBo8#AoMYB3RZAR}2)EYpf{$esauG zC#_DrEW5+Zuq@ydR%i1kUcFFC+rHiT%WCg0w>b;WxX`|+o!Y?fqZIJo2bZjBU$$ym zGi=qi5e))qXZgtfZCZ1E4Q?3F64&Zq_3qH*8i}6sV$*cZF6W)cAjpN+dFzt}N@9}8 znV4jxM~6>Gug(k5G`3ZpD>4~_lnE3XT<}>jAXDFO<HBSvrw9jc1mXIx2wF(PP~NhU zZd=#2$Z~>+{TprHOGp@mVc9fDWK<jn>C6*#1<pnimQF>aY2NmHCom$$Rd%VVIQte? zcjOld95O?s;B0^GoTc?A>i$e^z1bYU;ieH;Gz^?74WpoK|ASbi?HPk6RHq``0KdIV z+R#Zep>pum@OK<PT~OS}kjiB~k|T}-_IUBkd;nN<UdvQ)-84Sh*&q58=fQn2&+yZ0 z6_OnDDIccEqOr&|aI2K=x?CTS#H0J?;aSYn=*!H&#B<N$;LjrJ^6{X7<NaA8jRspy q!f3`W)TS_dcobd~<|iuuWn0TVf3^P}=hX9f-2MU5)*%o)1ONaWec`77 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/embers.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/embers.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..af9c243579d689ecf7d59f28a1801b4d2e3729c7 GIT binary patch literal 363 zcmV-x0hIn5Py_&E++3=x|CqMG#nj5>>`Uk#)#V$H)R*j1n|l<RK0XPpNn{fS{4Vy1 zNRqhS`TX7#4lBQ=u<Du>C}}obK-7N<0R2B^CN|jpov=bAVYpx&18ak!*a~MXVU(v4 zriyf*hy~^<*y57r)3L@%5L)$MYH8YsblZ`F(_F#V;-yWz|BeV9T4<2#wL!^imUp>M z$tKm87TgmDG0p5XLr{RmsZtyTDl?&ic-vwSTwqvQR}QBx3wDhfoBAfi&w)3T)Kq;{ z^yY2!&M~e*?vkQnnQ7!5y)TWg3S)P%wV_^MgrV*;m)RC<hn9CCBvf2x3f@Cs>wU_` zH2e5=Fsq|wzg17;`LX0>eoY3%?NTMs^<ZZ+x$=f4G!Kfb`v5L`a!a!9Xf-7>p(a^f z6l@>*e2e3-;mLs5<2}JhLcqqiyoI6Wily3n)z(|w)u{;Wa(EWFKw_zChW=8iOPo#> JoVJ3d`UC&3xZeN( literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/embers.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/embers.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..47336921aa89866dd591d7c7dc61c2ee74965e33 GIT binary patch literal 445 zcmV;u0Yd&CiwFP!000006Ma+dZsITyd=;erEm2AuLc_zLjlBsz9NV?mg$VWCPbRhr z9J+tb?(EF$N0{bV9OWN(HNd%0LtB~4sy3J3Im)!uwta)@3%<&I2kbOh?G<m|KDHlK z+0U?5+d7oUNNANxKC7y$HgkT>^f;oTl&hgGKbx2%7*c!(yRxZcTpP4N+P=@9#w$i1 zf<%ls-#L18_*8n;2AH6!Es|L0r9_GZ93?LJ6pWatZ{27c%*7DlXe1D>f4~apWP+y8 z+{0$e>m&z6$-flpl%IqaWRmq`hY97TvD5O2x?oy40!4?r$ZnHGm;~om(WRj5?4NgW zLuQgKUywMmS`F7;D_WmX3`c64vfRIdhC^A5jcK08Mpmfdg=8Vr5v?HPhb&(=VN`i9 zLefDbPOjN~@+X|m+VV6}>vLD%UQ>Eo9Pnc9<iYY{3!?KG+J{pTTD_Q=n~(URg#<sm z7uI)EtTHxS8BO<T)=g04qVFSQM1sd2o^NS!UXxjzP_Q4(<7kfHME(`$<o>oON0Y=> n5J<rye4!bh(aEFyA~A1l$(`5y-|`fCKA7LXDe|8`Q3L=0Q>NTD literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..497ffaf8a56f735410b180027e125dca6b900743 GIT binary patch literal 372 zcmV-)0gL_{Py_&E++3=x|CqMG#T5SkJ2Z`8Fd!d5X6D_L(kNUSPobQE1j_=g3UE5B zP&)8;r;f1dniVKDHeEn;eu@D7e_X^#Ox?=~3!IW&N3-sMwZS0PprehX8BaG%6?CH# zrDVR_;*w?zH&|<+)d?=Tn)V^xcBE*T{(^7D%bfV+9TB><P*M54HYxec@-EluvWfco z5AHb!buroNg`g0Pi*Uvim@{T}@wUa_aG|sH-<8ucltq((nw<I`#81x~GFc%EW&Tzr z3@aPn70$OIcU_T560I=_$a{LPH2zc=yEUyX^$tcl8~Utdwh!B(?_Dse&<VyK-ZNk8 zeapr)`?~EQtMg^w`kvPQVadz<nhY3>4cAHjJq()COr^Z33DY?u_dbBjp4^hOU1YVY zvy2?Fx+vIw^!XOYk;790vH3m0$jDd~8Rc3&!_aoc^8elsKQhrtMX<}+m%s&x^{S!& SA!l6cTpOH46<nMJP3s4#<i3yq literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..139382d5cdeb95b9568168c5b68698e34b746356 GIT binary patch literal 462 zcmV;<0Wtm`iwFP!000006Ma+Bj^Z#3{1v2qU8+)8TFS>DCvi)TG|46IEfwP5Po;6U zaOmC~dpzSf6X_IYXY(uGJSe4YTW|e!_2sYkDJz|Eq5gmd1QbUB^3n#^TUCGLa<kb~ z6Kqx25e-Vx&T>mp6#GI=^|f?ehnBcjin82esu8rDKkN>9l{nYVV*qmDb2|FoO6p;h zNSWA+NY4|#wBDQtscERQGF3!x3{oOcXmG)2p+lyA+{T4*xRfI7yaB@X9|#(RVJIJY zkS5=4w}&JLL_ELI_A-Zr0SwFboj^v#p%c!$P-oKFNMPy2BC7d16kA@dff!e5N=@@* z|HRn?Ig<!cRrw~7L<-Kfx5imof1_^CRF`>vd<PwkvRIpRYF--!ZQD1JnYL#Pnoyl) z`Ld}*p3m>14V^S|Dkpz7f5G9~1;rZ;{d}w6y(5kTws`eSp67>MB^IxsML$EE(MsCc zH#>`yiJz{(@Y81&dNHIfA4Zqa@S|8MwYg_XH%)?cNbr1zS1&E>HTc;=dng;lUdGO! zA?o=nPQ~Nnp&|_iYfWIZOz?%~7^X>{<rjtN#h4qnyQ<=U`QLU<y&C5J7Zav2qfrC^ E0KkskDF6Tf literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-gray-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-gray-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..cdab980e0c1940c5f8659818371aa0e2a821937e GIT binary patch literal 361 zcmV-v0haz7N(2C8++3=x|CqMG#T5RdOZ5bU0T}?<o&QpsT_{`{Z=nMVHWleQ0M*hL z!qOR5U9$qE&!!8A>Ay#SUdKt-bx$V@N#@5Lfwh`&&YH^9kC}ybV*gN0G_+e>?pPZ# z)d;Aj!KS-uAJT2di0b^idkgZFPT#&GHun}X<eS<=<TJ~=oMy125?5zEE&^&ZcAJNA z&^|UHj43c@%(U^g=@1a1)xkH)srCR-=6ETQpF`x#JtLD9!cZ2kPdsimq^qn?;L!s@ zCP}o$#4*=-FE0Knj9rUUi+li(R^7vDY!}cG7G4CS3Y}mafxY)N-M4H^t*>hhta@1X zK6<mpmnARrYhqw9He4s=S1%~XjcRt2`{gC4Jo^AHdvc$N!zEmMI?Ko@tBc~WAAP>X zdX(^#LF{l(FfuY$MMk-NFB~v&fffJQ4__}aO;3R@t6d;MaVMb${g<3^t#fJ|StY^d HB51}xP%)|- literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-gray-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-gray-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..1dffeaba9b9d025c9fb8493b8544bae83b61aec4 GIT binary patch literal 453 zcmV;$0XqI4iwFP!000006LnMVj^Z#3d=;eqyHtg;+fp6|<-;vG(j=ESw^WFCUzNt$ z!g9(V*PhIb9amTh#Yz7OSI4AOrf(~ES$(+6ZO#g-t#98LpU#0Zaqhj1Mz(L8&1S}| z+BSd&fyx@fZ$GCq*Vn=h0~n-QUDv6Atf%CDGo6&T4m?Ba-{(&kjljqz{*(!k2YmGQ zboFW-6AH(+ATb`b222DJG%WZG8-S?qtyn*qODTlGX@;==$Gl=(6O=y5NLTKvYM<m7 zBKg<KoO6ianI_pda3E9|2X6Hfbs?+?$P6AyM0OwhZAFvSEQD2ZsW3bH6&H78CgHqk zN}6^+Z%u#gtikmcsQ!d)U6zMe&}l^$V-r^9v7uL{e<4{Ya{{jr<T1<FUBk;Vzl+j% zRKzK*_?i3}#xLt7P1MKS)!%55Vh=rB9Fdphe%J8DD<~c_w3}8*S@U9MVcy_}76^WP zFMQ-<y5;<|WjOvQHd1bGg;ZUaAOj$K?BRKr7V9;-yh5L>?&LO^hryj#Q28gEi--F| v1spZB3Yk_S!55lSn4CPyFADRE5jRx3rhx_1f3H*Od0}qfp!t_zO9TJ_L?hUY literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-gray-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-gray-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..1310dbffb0a1836e64e04ed810c68e1358aa8e94 GIT binary patch literal 362 zcmV-w0hRt6O#}dBYg?*ZhZh^t!ec{3{IAnA6QF>l;{wR;fA4CeOX##z-a?rJIczGx z>8wKOz+ay_k*aG}pk#8o96kOi0Q6G9rW>h?xv;iQ7zRVJWv)iTGx1VI`W^rl&6bpe zrN%?-iL0@D(ap3E*|x(3OZVq{Judph*Y60=ZAhs6u{J3A%&|kAI+YknILmQy5EnCb zQx6fK@uFVfH4{w8CfT+aG$?Sk_oH%HN=+~k$oSMx33#T~kdhV>nKm~mGK@BQ7dSs6 z+&x7~keh-rfnDdl#`p`2MQipo)N2gktTb83?2Pon%({>o3Bq7|Yiqr4`Iu!NHyq6B zZrQh{p|O8ju*7RJpfCmr2>%-xFl8r&@`es{=M;IgE?M^UmSoS_Ruh@(LtYmJ+m9Z% zBn}^*9Ei2|gm|venAGqp-or48ie>({AO6C`I1`~=o_*=KKw__I)PKyB0DxAHGpK?W IdqFe&0jFQEQ2+n{ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-gray-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-gray-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..40f2859748429094fa5d62d4d963e0c6c48a074e GIT binary patch literal 451 zcmV;!0X+U6iwFP!000006Ma+Lj^Z#3{S~Bn9ja~%L|Z-v<>HnsX_8Hx9V*1XuS(-g zVbRJju6=xb$*FV-s<ZhOZ=Nfq?a;OUy4m~deThnET<AV_Y__A|@-hUMtm;1cAG0m6 zP1i**AW=I@C2BX@lHW=<j$n~;jIo?RK2UHEv*oz+5IDN<xqSL$B_=-e=SWN<;`4Yf zr8nof)Hrn&WkfOtFcT;+u;R0P1fqVd;=(*!4k3)*aD?q29yAw*p!8XmuA91Pb32Ym z^BZk1#YG6*P}?*LAXJ=2;miwlC7q4PEuN@}=v%1wbXmh=+~g@WmdXC{s|T`>{8Wd& zt}{u*;OubgoyF}J=;4eVtLx)C=&X{}*`!nDY#6j1-n6W=Jwwn4>QvevTGkX!k+i{+ zCQjw#_vJ4zeYv3Mq9K*7ekX_I2N>Y$iM*~EXU*yrv`7Wo&r;IPzPVXk6#TRT!B3x6 zNMg!WKFlh^Y1Oe6`+KEy-)G1O$e(w3)zV5{lP?n5!Qmhdd3YH8nMeKoA3l=D$3sP& t40IZ~(K5qVJ!dyh^4xxvSYC{{<*s3jWcA;23cU*E{ueFYk-ts^005?B<Cg#c literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..951e324ff2a1d6ac79e4032e3b91d1cb6a0c68e1 GIT binary patch literal 371 zcmV-(0gV0|Py_&EYg?*ZhZh^tg70zn|Nm4<Qow?B;|Gv&@9P}YglcQ>AJkKj;sUC9 z5_*2-&5X54E@^t{!>H+R2U2y-N|dUcE=Tu&2?+gPNd*ccxUIGfLA7wga4<BxD*Qs_ zna;pV73B&@0I>O%mNG@B+8RS@_1&(EX&>@!X9_NV2j4)HA@lh=GISjhkaE8^fV>yj zA*RkI;bp@;9U!`yy`e`6$k-)g@3OTg$<u8cgXRUAvacL2J1saZYeMit!k=O6NXe{3 zrp;Z&9;J=ZMcO^0EkH_87|WPt-ov|S`~=3L7fT!Pnnq~aI*Yj-k#ZQtAykY6Vd%Y# zYuuM&%(IVs2eZ0b_P42NeC`%3@tPbcj6n(_{2K;5SWL0Jp$PpaO>SeCEPHlavg};1 zWtr(sQCq9_rN=EDM~F`z#fp1EKDW@A%y5+tDD<MqGJo%fn@sd`6Z&QIsS^T)GHb-& R=Sl!jOEjYp><*Hq`vZY(vw8pk literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/equilibrium-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..6529fd36a88b9c2d090fd0ea5b7f9baea06938e0 GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006Ma+LuG=6G{FO-O^~AE`3$61p5tqfG!9Zc@i52DFE62cb z(x`8+J3F(x4BQH+&iYrlIVyxQ<IuS4u5;J>8s%17KYX-JOIkQG$}gk0(TL$gcCrSt z!gj+DKm$i*O)e2XM9bNl-*Y=nU@+%MLkN*6hjh&Gj&`!|Q`|c66s`YUuPz#nkuDM` z5+V!u+~G^<%{s~z&O?<N-Lt4QU?LEpVZ&$W1ey9VjrB`&DTFXNO%e8gs8^Kf49(Xv zcYUZ2O_HOCxqq$9r5q7F)mb)93^FRr6SMk-y5iOZqy|q}gvkc#E-zQp5O%3cg{8B9 z&ea21NPdc5)^#EY=&c!V(i+@<ff~;^kh(s;gDytdtc_by)`ni0@r`7q%o)5w5T_#F zH{?(_SyUQNDsu|Uzc+t@`OA8dH|k@V>UXr5&mKm&x=dczgp$MN6%>mFDi<p$Yu@ZE ztR{XMA;V9fm5*#rRn9Li!+E3Fu<l+7C1rw4fb@BWS1)bsHM?S=7W$s$Zvc}!)1bb; z;v;!{JXFA0!=R9A#S?s^xg1j`&+?nZ`eK=zw+BM9t^Qk{L$8Lp{{@;}*V9o1007JN B-Q)lO literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/espresso.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/espresso.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..e42990f066b4de4903eb466f1f1deeac208ee8ae GIT binary patch literal 365 zcmV-z0h0b3M+89R+FYt!-w=P+f~Xj{-@cNHY6xZ99b%qE>$aD`BN6^r8P4r4bs)Wo zI9}tbYgU-}#B?E5{ON%6Z<?mTGYNH`t(4RRIady9)D;^jiIQJS<YvtdoADNx<Y^)k zbBHY=RrCmZ(>|ozju6bvZ|>EjvuQTp5teO-eep}$p#PoaU2aZPAqJ`>^>K*}L{?eZ zM*=t`Fpgfv)gIe%ylvqNFyKt)%j7UuZGn-3ip_W#gQgt1Nh=@*1@fvy^{$PvIh-qC zS<OtiNVU!s+%Dcrihm8I!IJq5;{rQ4qms+XX$9v%B@7@fRw>s^V!9pHRzI>at$SQy zuueP6zLtrM?b(u-`85G4oM*Zy>@Qrvm>J|$YsfrvN`>Rl!^@uBddxNYjL|7TlB}}2 zD1`p#^DQog6-_$8-tGxRVFo4xUbI`-g`lbAfBNA!O91@z$}=}n0Ayv_OaqqN2#^^$ LM*}2UA(Q_Bsn@W_ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/espresso.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/espresso.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..5a3320604da5da61881738862110c28e37480f1d GIT binary patch literal 453 zcmV;$0XqI4iwFP!000006Ma+Lj^iK<{gq1dI*n#BlSWBDrUK)nYzeSnb{bXv_f;C4 zrrm1Ai?I(rz8t_QERN<^ym+CMwtf5M&zs7hud^4NaiM(!fV~uO>Vr#GwQr@G&Wzc# zZA61W+F8a|pVOJ+TX4gGmN-_|bq<i|*(tweEx)thc?^PFc%QF6S)e4Q{Mi$ej7vTM zczSnnUVx^tEtp9rW03M|g$7s2tQe5<-uiH1sw}$*2X6%7_Kyf!NW)ORauuqq%BswC zf{2SZ+MX7ZFbKo6X^_aMI1bX8r_=>F8%bC?FiF>lrfPVsM#Q+uRccx)`^PSB$a|6w zcDua0ZKU9Af9ag1?GNhyNNxS`v3~`f^syQnIJJz8g0}q&%0k;C22H3A3%#hI+_5xd z(uNM2b1Db-$)9liaY6A!Lt47}ogA?pu*b7sWQ1zhb*n9CnHFd_=}0^KVrFrc??Vd= zKfD(q$uYn3VNw~5%(#Q5k@8w7-E|o<Ac@Bwp0%`+*XZvO`fO^&+r_~jMbyg=oP+z@ vq9Tn3TTQ}fmi~%!GIJ%5^sB(UvAeA5uZBP0f1k7KSuoeX5DeONNCW@??X%*~ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eva-dim.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eva-dim.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..23b7fa283c10de9189ef05c9cf746d78934dfd75 GIT binary patch literal 373 zcmV-*0gC<`O#}dBbX%&d!yRwoVz^p0ol~I}A<W(HQkx=CX!`iSSCsL{CQMLgqmLk> zBDl57x-Qj+2j%2$52~(NiISt!6~x0|0z&`Kog^|TKPOxeNfk4yNl+AnVY3USl03_F zMv<#1Z;RtJ&vm>>FKbI}jwB_uhGEs&v=4gQnS#yF;A>cEHDA6XL$?J;rOej`kauG{ ziz(hDd?(?a7>H_mZyb>VGFH);HqDYW(XrgNF$gbE?Btch=B5RUV~qtr2K*WGj@B+8 zuD(*-q0|0MSRMfF2{*Ou42q4T-Oc;N_?aS9?u=`|3x`m2K^E$E0%BppO=ydajT5Zg zUh^9F#f;kZcyZ9Bn`J*WpmC)v*4t~MUzE8twST~Xi;)!a8zRtO+2opsVA<8(k}=0# zYp}G~=$)yZQ~T1}O^(ANlgF>*o-CQmI?;ym5pO6A%E{9I_QMPlpd9;U@nK*Bg`HU= Teu`2FlQ|kS0}!k>Nz?xU6{xvI literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eva-dim.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eva-dim.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b2884c8797c01e1bdb06739d26d46798ad4918bd GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006LnMDlA<sW{S~X`b)<9@5d0XclQfu}kYtl)N6PZww~#cV z>%MjRa!y}Pq*Iuk&98X%pp>?4z4Mn<?k~5=E1hwn{-_%Gg5oGZez(E(R@EP0uoHVV zrLF2ZqCrX8SuWX&qB<O=_*%NILrWaX^RlXBiV?KzFR|LdF8Q6u0OZ2w^z^-z)Wb-T zJh2y%o;!Rgy*dw4(@<w+iiqAAqy(VQ-~!J=hYWq6#)YxD<Ra|60mAhk2pWXpRDN<J za$l4M&jv)?ztQ%4HVFe5rtLd{oE3*oIP(IXNoOO0r4y4h6^|+n#JEZ=YMR^n$IkAV zGlFc?CQs*EM+(li*Tz{||DbNqRF|90@m=bulEu!XQ}fO!XxqM_%(OjY(1hwV)8`8F zVmlv28#-ymR8BtD{*A+r3yRkn`gy9~y(6{*ws`Rm=^dJ~T%16Qeok#h9cgFZ>?}?S zej0((PoG)n#gM9e7$rsnGj0L5O5QT1n<k}nNbo$vtB@Aj8vLxEN)}S_AHdF^A?n9J zya$i>Lq!@4)|$X*mfM1JG*c(f^oziBF~%06*h95I`foYAUIlae3orPHVon4A0J%Wr Ai2wiq literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eva.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eva.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..193a0278c7cfdc9453856e368354e2f90619b895 GIT binary patch literal 365 zcmV-z0h0b3L<9h2++3=x|CqMG#nh_lgae~$6~f&8F10BVg{J#2iZUL_M5th!?Gr>$ z1Z}!=b7wsYB)K}ls%uuF6xnnEG5IAR^nX*tG?wml!X1rS!ZXzvSUVUtyW@#8TI)<h zS5e+0gfb?Lwz!n_sNCR~ky?|W>So%9blaJN&CTHJ>7}pv<{cS&uuw^vuMHr-S>ENC z;!VQ$6Yfa|QBCj7LQ+7+Dt4wP<x<HsinnbH!V47pdF8N~X~AMx<Aa|;{>;3gU15f+ zj})`(w0{zm$57is$rOfjPw(v_Sz+vUMl^thJt&&+3K^WkD42WWS*euX`5N>q8&i+t zc|lL^m;KN<#+kC@WqwVp%jrTX|91;G89*U-A@JOlO&)y!mp!>#GSq0biHL&d`7x`D zLM@@sw|E>r4mq@n?<wbSEtP4;cxU%0jNLTpFa0pF1eiv<EWQO@ps+t>#7{{Q$zy{? L%>V?ey>uD<|I)Xx literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eva.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/eva.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..99a76e1519de0d6a25f62faa8821832f82109aec GIT binary patch literal 451 zcmV;!0X+U6iwFP!000006LnMVlA<sWd=;zq?@D<qg5bkglVrfGA;~3^TPe$T-$EEf zckkb1KDv8`MmmMr$$ZAE2c@)a>#e`6cK&i3v(gzC>bI(a4=4@-<hczlSyjJ%z*gjH zY+KcJM1zvFvpkZEqT27r`dYfKLrYxS?aHc>Q;neIe2LWtwo~4D3_vctk58Yhqyz)S zl!-}1dRF){dUYP8roPU~sUngwNE3iUg9|(h9WwNN8y5y~Q;M+j1_;;xAZQSVTlvXC zWL}g7?*>Gy-)MWDL&5-tX;UYVyJFu7XI`K)>1-shbYzmI;#H-A7*~@-O|z^Yadz)~ zAT*2+DLC6+8)s?#g}OaaU2ZmqAAN&A7T1za&DWx!ZTkyZrtJxXCRE3nxR?P&(uR(j z0hN=FYoD?IazXJGLz<WQn;dZ*u*HjiIBwsR<>K;Mq`9>j?4zCi<y3Jr?vs9QKfY%n ziGG^$VQ?1p%=l;5<cPOS>86=lIwW}B;nhD2OZ9%XO(hGd*!tM{6GZ*^{qDuX{S!s% t4c3~#Xm;6xa|kCT&-9DJ__-Kch$4q-f%M;TPQ6;?_6_}bj}1ix005$^-*Nx| literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/flat.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/flat.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..5fda4b82eefe6ea9d226f26654d5b7a1ca02307e GIT binary patch literal 366 zcmV-!0g?V2Py_(v+GeU=SGKza51z-pt(wzDDJp>w=Kgkz<Pud4<o{k}DoiD*NY??V zmcAfMCsK9I3Y1h%mlsa|Jpl9?Sy#@VPPh{wF=U4pUY04t)9zxIKw^)X1*YQuzBJUK zj`B^H`}&Lp2{EBH^*7y2`vBXH6x9AV_!?4Lr*Gd8q5F&w=J&Os__WwzCDtVQ!58j{ zfY?my%>z(iA2$tzsmBT=<a*n55L{q&@V#=VHCT`-YAo_|f}cgfs2;^Agu7PJINB&( zV0}W49uVqt929ekywZE2@i%5HZ|T|~FEGNY`dNtWg1Ez?5TQ>XK+GMy_eD+j&5mGw zTzAl_hh^`bPh)&qu*7R((8slb6ztb9Ag42h>;@<FOP=yr_+;75eJ0(GTwA0{6KjsP zcJ8nrJ#JbL3r`-zihDvAiA|UqUdkH>O!B~TfA5E1G68+bm#Z&55x8>@Y6BmvW27Vu Mjtr9EW)n2yAH?Xe4FCWD literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/flat.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/flat.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..514c765d6d3f071ae2efdab24f304d896c8351cb GIT binary patch literal 456 zcmV;(0XP01iwFP!000006Ma+dj;b&aeHD}ayAl);!G|&JbiiIq+ii!t663qyAZ-_2 zbHkruKF*nsQ!oOvv-;z2mI)zs*A(`;D(&??d%-B<nh(sU@5mWkI%ftgnvX3MSmtxu zs%bnb1d>L_lBzwxLCo<rn7&6%F;<tXWcv^!)<r)TP(T&@#-d|n+~@pj2Msi^i6VIX zz&$;8_)>Z^mVu<P$s#BpltKys0u?UsH0v=!Kc+EmYA(14d#f1X`Y&^maTQbJZ)&94 zK>>k|5yk$M)R$xuI;JA+&~uDge(bqXFVGnn?TKkRC6axG+ihH~V&1Ppmy%LvzwGRh znLyeN?D95%cydN}x7KJ{f1~Wq)KqzXe3v>2WwACeBCU;_)ZH7(OzJZ_NhnT<ev1Ir zCf!9UI?0GB4E${Vg5$SwB5u?TX{xWmP_!L(c(oCH!#LE-D@Z=1)OM1RH2TfX{4C<9 z5n}r3GjjtULzQ)t%4m#?#jZXGe$Rw#+mO;DvF90HwX~4eXp@9$Ue-K55A5xkd6}N# y96UY_<!MydNMcIHSr?p>89I5UUj*ihrT2&XUDED<%cJX6F!z6bONoO~1ONc@z1nvG literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/framer.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/framer.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..a3a1ec3011a7415f038dacd49d36f5f2552b6b80 GIT binary patch literal 362 zcmV-w0hRt6Py_(v+FYt!-<Vko9K6ik!Z~egYt#sZFrU90l3J^#fpkDcxJl9>&WQ+6 z8YaKX)LB+tvjU|QOqYnJ{~7>#jcyYcPbXwvs+$%f&mF_v)?pm!HZxmQT)$4j2w}eI za^2cw5kf+1YAw2(_5rpXDJb1<@byUP+kN|v2tDR9S<CNh1CdXpj%bQD5vA)0A`uXa zslB-k3asNI3e(4!rm@NOwz)xYf!V?L%Ar(mL87Sfk)KQaEEJ<Ugh`y4vx<hvM(G0c z6S=iTs7_#FQshPNLE~@Yx<yUX26=%IX4TF@Y!}iT7D|M^zz0Au@ZPJM?i-GveVjX} z)x)y4#-`D~EL74pG3e8P$mo9!15z4ONN+GgH|H+T%96`&?mcOC<l5r91{h9QGjH~z zr%k)VhbISO#XXTJ)O89BJj#1Em=vC6{@xG2WCFX8FK1&Rf_Ei-Z9xC*MI35s+%iOh Ii@l&3|IJvhP5=M^ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/framer.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/framer.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7311cc01d0342ac0bbafdb937e3455f66dad2677 GIT binary patch literal 451 zcmV;!0X+U6iwFP!000006LnMDa^f%y{S{{VS~9eyz=n@uWLpVd9Lu%kEg6P?-!ZY> zz_OzkMLIr5w@6ah9L?`=aiEm8ef#0gi%)mHPEkpQeEXtS$@T)|srMAEYG2-V$tKvM zZ37yVtjU%q>rJvLzmzl#Xu0IJ>ts2{(3iOQl`O}}p$8`aI(@omB}YgSITE4>d|%<i z(+fF}n#Z=;=8TBOAZG%F24{R01}xOKZpf$Na)@zo1{jxrz-thuK+9(-q*J@yMr1i) zF7+F2Pt|4gV2W%U1Qt{n2SMh6x{+i9gXKdNk?ZZI3`!aZVUerUTr2y>Z*IsR5|m<t znIy0$+h01ey!=MpAGzJGR{LkrbSSg2Nm6xe?6vKmNH*FY(Q8I^sPZ50QYu;Zq75H( z;Z!7lCV#^5o4hI$^|5yK6^V=QvB$G3<RF#m)NBh{#0u@wDQU7#W)`L+zH6bt53h}n zV$83cPgllcQG8zs*~x38bk}9bfDHFNJl@jmyhc|~NWkt!bxYvjju3SH6{qC>wy40P t!B#UEUEnj#<mO85<!6a$W0m{uvs=TA>A%lQ=<#5#e*v2JND)y4001@S;Tiw{ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/fruit-soda.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/fruit-soda.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..184157d2b5b4e489b594e172198eced2e2829ca6 GIT binary patch literal 364 zcmV-y0h9h4Py_&EYg?*ZhZjX!@C|o+{#tq@nE>+l&0JJ-6mO&*VA+UGb(zqAtU?_- zld5Z0pv2^KIlB2%0O-Ev>tLjA${`<wb>oC#FcjMsexXOg)ACY9dReA3m6`RHmb9|K z20HKwt)_d{-Lwz+wj%`#<2U%4cxfg+d`E<?LSm`>zBVZNET99ODw|Ya`NBQrAkJp? z+8!uC<5_ejgCIe!(`}1E;Q}Ws-z$fOGz-Rp8Z-56f*)UOC~OMmYu75$hc<d=ak@dc zb&Ap!1e1ciz<Z(b*D@BZSlUppV1$!WXI5rAq#Qc23uVfpRk;T5bzBdv^ET$$$8`s@ zI$8FOR@2zMEKtHV87N~I<XD)$h5-{6lU3eOgvJ>~o@19Rdv;5*>}WMd1d<ncDr!Ww zA3bbo9A<bjKx}ePFe)>gV-CEOH(_W*jivp)AAZRMl1aNf8FXAQC9>5jwVCDy6{~Ps Ks^HnCpsD|~gQ=nb literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/fruit-soda.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/fruit-soda.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..524e9fef5bc5929e5f27284315ecdd4162a6b03c GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006LnMDlA<sW{S~X`b);Yr8SrDQTsoLFB-y01BW3yTTSyYo zb&Hp#FXx=Tgc%OSN&WIyOE{N$=xck~H1={^yv!)$`j4iXzXK)gJUA0H?>|HZOjJwS zrtdu{U?`1FCH$K=yjkK~X2uaTrWkGLj_zX&$&mbA+cn*H^cxF~pmCqeuML`EATveu z_&_~AD|{)v8cUeOsV~|Xp+PCY2*5$X3Qv;}67;<r<7RQug)mx05Vn7alZ2|2ntqcI z0X5V~2tiExmDJ~KA~>QFZ5Sz}EI*CZs2Avh8SRm1JU&SFyi9{)ig>??DkWxR|JcPn z^8wPrS6N38kIv}fDvZYM56Iz!eOs1?cd7HCtj5L+&tpR;_3(zWkop8pBJg9T-?gIM zvAh?l@F)`|H|#O_GfY3m@ib8va#z2D!DKra;9?VaDLN+jY73HvoGRv1l19IonO~0h zsfCn&{489cQ>?OXzA~H=<5yQ#T-*vSg@`F5AbIZL^_EuWHQ9VZ`>GNQqIekXiFlcx z;u1XE7v*tM&`Tsrra`VaXEQ2!re6h?jpcV)?ZvKKA^o>Jxn2+E_7}Rw$}>>}003j6 B+WY_j literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gigavolt.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gigavolt.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..ca50640033638330e87ff88cc836db5a06013a74 GIT binary patch literal 371 zcmV-(0gV0|Py_(va9gRqR2V*Of!Q5uuNF>ct7OX>LYPnPm`l+r^q4vy*uo%}Q21T+ z6D22!cIUgZ@7<vo`L-l=-)=w&v-x!^+J6ZE{T~D{NYu{>!mn{kRg;^Pi=o+0VG2e; zrxTWn@+y<~6llDgN>=5J&kzZ%b}+RyAEVn3q~LHn_$pay=Hu^#(77Z`%6@Hd^6sGr zpHfY_uQlA01ToF(bwf}<#wjLKg-B^)VzcjS5L{qb>nn%DZVT=fHJbY_!B4jgRFw!6 zoSUnPy#+h7^Nd?WyXL40(Yw@J<lTKw8b4Vas~4#a_W~mfEzf*mdxQ=*WeV98s1XL< z)3WjV;wM*qTsv6R*?PPUr|~&jp@P>OAZw{{R{swJ9wd{mZXluiq{)66koB-{OVW-} z3-Z_^;=(tGYF`G}%{nwZIS@<UGf*T8B1gfqyrR%jn`P+Tl}#qv&V+F}e0ocPLhc$l Rn0?ZOGe^_sg3~H!ntuf+u+abj literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gigavolt.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gigavolt.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7296dc853f6ea697e6c9be60bf8497ba90c3f59a GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006Ma+Bj^iK<{FO@kx{aFbHfhq2sSKEuD*+Ci+eX#?`zZ~u zX|K9Bu*WmD8MqZ#ob|78b0CB=efQz6o4vb!FHvr__1zn`*kE~Nz%RYGqY>R(wX4di zUSON93#gHkvL==6Vc*oa<hR@o0~$&>C`E;_c1zHwI0x||WsF;g9?1Il<?2SmX@prK zM#9JfJ$Cq1db19=qNyvIm|>&VNRdFG#ucA|0TcCo8tdogVu)~X8VI+4z$;)nLDMxg zB4u5d5aoa<^{<t=<RhU6on*&>VM2vzU{*g-7u=daVCa-Y%2u|ALt3te5H_((MY*$o z&cz*>Nu(6K5|Jd3x2C^IYiRq0sy|cL>~_aj(Ag-fwQ(!*+Q=)@zmP1HIipvE;`Ae5 zVGV757p3W>5~r~IXY&`FzN{B%qkha&{T?l)v&SB<E|aqwI9t7fVq=EN*-FZq7ds1! zi62Ht@Y8$YM>fSO=VzDEloUUAOwQgFO3DZskl=BKXD_YnHMwjd!1hz7&EVk95LEt( zOY(Sss6dm(P7!FuBYdSfA7dwv@~g!1Vu`yh4^94m|1D3UXTyB|1%RgIYf%IM00nX4 A-~a#s literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/github.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/github.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..22163f8dd3c3b95a65024f992cb06452fb654159 GIT binary patch literal 350 zcmV-k0ipgIL<B%&++3=x|CqMG#ni0jUZN!3oe(CMU20Q23QZsXi8|qsrFv|{rn(O3 zKNcycJ6Lti3X?LME+G2<^?-AmZBwTyQ<e>|HVCqxr8?C`yc~onA~i75Xe0A2E-BMo zAJ7w0{osm|X&=&UM+g?b>z=Hecb4S*9bvh)P|^4&ZIHjs@-9~=DWvAszwC)`xRNOw zhDZQ~SF}QCWHRO~kGIWz0Rt|y{!9)FZ3~PQDwgsg1kKQ!X=1Ep67Nd1FKzVAxzvNa zEj3MLL>4RDlJ}P4slwQ;SkF){*ue!YF3;!)*1*U+5D?9zAraF{Uu(U}#x(c1!(dKV z%f5+)jNRW$Ugp=N-u~bMCafSYYpA^9i~^TFfXklTa;!BopWCc13Z@5rzQs{kXet0~ wbx$A)Vns5M@uuA%_gquOnjYGJmguJfw8{%9aKI$7&72x)F}c#b(!@*m2U%aM@&Et; literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/github.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/github.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..4efd4c085794186b21681a661fd82254a0c6b455 GIT binary patch literal 442 zcmV;r0Y&~FiwFP!000006Ma+dZmTd1eU(c4yP{UyQlJl0If<dU4M~<bcSY6SeWD~8 zWz`jbjD38Lzru~c;-dcgy9FVn?%UGdHV1qAn!Vg8<Jz~fEKdyhwRa|H(Y|$EHv=|p z>ro*mX><bfn%5o7@hvyQfSOXQshYZ}VvL|qeypc2`i(^gWZe7wYlG$#V3LR)ADGXS zWm&HB?#2R_G`7VtMp#e^DP{{)xFFLoVB&qWV%$_&bP*0#0pa!^I0;N8X!^|!hzkCs zLVze0ucW?alhA=mvSDDDP<|YkQ7h_#8|?`+os-CJS63{Fa0T9PVwI9|Wxwp=fy^Yw z<{%)EcydPf_s(eAexmFz)E;-c(<|t7AB(YZBl6hDN!`DYETq1mlZ4`&<@a@2HT%35 zspu>dr!f3y@>d)`jT332F66F0f}vzP?D1w_l22QZEM#am-H|l<#mxMC!A~tD`1!qX zfsHZCy6MVjTu)QTu8WWX37&gc-_qi|Mw?Fvj(c$sv3MNp1-#5Ja1Ndxi}ExoY$bt` kJi-^6lNl>{mR|(sjs1Q>|IJOV^|gF`1CY}}hD8Jb0PP0ZHvj+t literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/google-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/google-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..45da67ee0edb85060daa22016037139663490ed9 GIT binary patch literal 364 zcmV-y0h9h4Py_&E++3=x|CqMG#nk@0R1f69Yj6SN@1IF+lnVu0(Jho0kYEFfc`*@5 z68&%6@AtP4#UyuoSar<`l#ERm5WSxQK>trgs#ED+CtQ$>6qK;8fwi5X*p?}laGrkX zD$)%jjW)90;*w@0JW&ZJw0c3+*|ZPowj%|*pTRd^Wk`JXjtE^@sHn`>1|{!V-sL*Q zn^fOSxF-gpn%*0Ppa6|kO=B7<<20$`ZR>;J0>x%tIqW(tSQRxP^#h2Xfp5qtjEtGK zPZeE~jn+lVUC8YyY9z6tRFU`aP8vTI#_nKfL%qNVMUAsqvqKmTLvMmi<tgVD-V0yr zeaXhu`*?QHtIK6SZA|03Tk<l$CImK&B6$}6h5;9YDdsl>p}$e&+6QpilUtHu7i@Kt z)kVSfrO&sxA0a$>5L@08jEtDcI8~hG0}Nd^SoZgRm}H`tim+W4p8^v|Y>ryob4|{u K3RVX})A<3dM6Iy^ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/google-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/google-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..e60565158b98ac50d7c83ecfa747235dee7524b3 GIT binary patch literal 450 zcmV;z0X_a7iwFP!000006Ma+Lj^iK<{gq1dI*lexCbxb}Wxz?<5@5mXG^*y`S7{)V zcB_3e_OXvI2W|vrXZ6e9EC?a>&=vN&`?S~Z#mkK{u6yI3yy4Z60ly5+1TDI^T;%;B zUtqhg^Qe%MG&-deb-~IQ-*YpLs42zTs%_dT#t4SwXC<py8U4nh12XP?dD@^k1(+$K z#|P%=vBRg-o3X$pO<h*U2n$Lf#R38qZt7_mF_pegW8B<abP<kL0pb1+I0;N8XnL-V z@S;4hNC!lze<k&0H3=Q4L>oqi3FW7e8TC{;<3@V|O{YZCw-ppkTCM``cd<)JYiIx1 z*&X>)gh6{a#3G)Y(Zj7bn)Y8Phck8c$H(y%bQa2HZQO`;ZRDgLUQlLIpV3J|aa!r~ zwrR?AY!;-VlT0;*;Xj+d;PhpjNE>xwo$7Zmlx&9sUhS&Bw$4#(t{_=hq5Ui+Y4nSo z`9;JJBP96gJ#&FgG0VDHWi&lA3fcD&G9tm_49{BH$ZN8zgrKN^C&l7u&*0_y6_?=g sekf0q!cGz>$s>HjIh(PQNBT`*x!B9C{Wm?io(1#$7wZl8G*JWq08z=@;Q#;t literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/google-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/google-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..c72990313e2649482a54b28136b25b7df962d9cc GIT binary patch literal 360 zcmV-u0hj(8O#}dB++3=x|CqMG#nkveRRa?6jo*FVrE^eIDvzmuP+vic3#jHv=y~SN z_N+~EP18#sM)a>eth#0;O2(!Oh`}!bq5m_*5>6bP{93&&uy!W2xkyE-Q>ily<3zcT z@I)oN-QrRv7-_VT<kcYPI-B+(-FBMb^2_%ITnw2n-jSXg3zd|`+5qyN<z0@cLrM6i z+Mae0-3;9*WCUdFYUW<2jMJozw`~rZ6lgX@<#5?G!D%TIf*(QhjQl`CVPwp-d8F7Q z+2~!Q-G|x^P@TkvQcJsscgOgtFm`X|HQ+Ue(6mVw8+HtHVeDPd`*_N^;r7bcxG&k5 zMjsCjMs>aHACu6y@0PsGuZa@1Q6$g8e_+7POp3(~8R)-ga_s}S?8$A(oC}V+%j%*~ z`_kuIJdY5cJc_OFiAF-qWSlB)@d1UtTP%~?BU@o&keYB@HlG3)C~Q_O9=S#{3c>Cm GX?i~n^teC( literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/google-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/google-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..29ee137057893eaffd3920af0a8f13e364185f0b GIT binary patch literal 448 zcmV;x0YCm9iwFP!000006Ma+dj^Z#3d=;eqyHpG9(hnX6If+|xq)9GuZmH0|`>8a^ z77pD%*B*Q9$&?#`#aaFGHw!{YJ#?kLZa(exd&zR6jO*UYx@6Vv$ber4XMz^pTi^E! zX47>Z6>^eBCp`b;4L>aPEjQzcno^BbtY%fL5ezBc9@?f&J;tH~GVXo(v_W$UFjK^g z56si!dQYu4V}VPWx}uI17L-DY0|Y8u&C@Vq8hyXUxOuslA{?y(!tEb$5|~QR^qKGG zWwmFK4v5nJO6p4v2_2|J8%Bl+<)@Ju^)$NRMtcHHr$o}X2Pm5)t^)5jaZ5>gvwz~^ zj{F(Ipxy7|5KqqN;no{X+b@*EnY#Mp<M;|XyJRIBHzLbMPU_(WWg+z$og@^eOuuWJ zrb;GYK`J`QG*cM<qx=P@FXKc~)P;Q2?_em!4hOv2Y=^eqp;*0wWFbTQ*-Fyr7n=FS z#1AJV`02fHflaZ?y4htkJu?c~_YpE8!Q&0jURv2}ve`mV9)Ksu;%Lv{W&RJB;_?1a qo+gEzBv6t^_=<B5<0g;vtHSbPFID?*drCbU=KC*rCY16{1ONbS)!HHe literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/grayscale-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/grayscale-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..f8c626ea8541736f6265ddc9407282fadd005cc0 GIT binary patch literal 356 zcmV-q0h|6CO#}es+FYt!hevGE0uxh<E(L#~fbi|kd~K8qg-hkXqoe~ii%n^U{!D<1 z9}_j&3aYMIfijcRg>?4E0MJe1^YifSgn%<mx<EnD8D?vgahfJ4L&f+;3kR}WT*ftV z;y{E}hJ$vdeMq+*DcJv6_hj8#>B`={BSPl^*jWBw8wz>P@-8paj3%7+s2P_ABABCB z5KthFL2OK8Qx3B6w)Mf_0^aa{<*?Uj!Aeo%D!u^x6t1GkXSm2+imqkaZ^8Z)Qir89 zG2^%@?9Sd>jGvaVFgfiS#TyL4t48Llwgg)!T@xBF=ODqhb@ebcFJn6NxZ~iEj>~=) zgU0n_$;<qjDo6|urvWC9<g_H;xWNLaTV^?Q7?wS`bJFHmtE?iAmRVgC$-eaY7Wcyi zrU|}Y?g>MQ;vn9{I})VfWQlDb1@#tpHRMn)y;o5a7#Yr5XqZXPL19X75e#;MCiww~ C(5?^w literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/grayscale-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/grayscale-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..cc0114e44c28b8062519629812b99ac166a9c15d GIT binary patch literal 438 zcmV;n0ZINJiwFP!000006LnM3a^f%y{1s;US~A>STT1vCMzKZk;aILMw`3Upy<=jz zf#YUh97*1l<c%VY&B6YSXAfE%*SCNCY4Pe$mno{qQfQyLO~$qZb?gHrr`xArtBk2^ z(Y6sSDmLWg%FA2ElwT?u26QaB*WVc>$Iwe0x{MMhj{%s%^YrPHQ=A}6lt@fn<l7GK zuAa$*GCa1;x@5X!Epj2yXmQ5pU_hb1PD3F#S3-<~x4^jkgkYevQYxR)$XaC-IbfFl zt#QYCWDH<MHVqw0RUC(o>>YKZ$VCRnI}zDzWK?A##zkq-aBb_Kb91e%46w>5B#{HT z{=6s0%P%zjf!p<JwS82YT{7F5B3*aJ!MOf`WMkX`gJIOWD*uid^-+xFoe@q=>Sygo z9KR@NS!YOfs*gl0=YTz)d?kO&m_32%QZ3zQ9~p8Fb`~cG-;5yTyXPjPZY;Na$QI*K z6t9BsmqwfYzLX5ea67}jk!Ic+{f~cMGD`C}_ya^!|HCP{y*^ar(PC>DtP#7-H1n}^ gaw|VeOfOb{O3aus{r9?r?hSMK26hv2<xT_u0N{hv&;S4c literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/grayscale-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/grayscale-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..01337550b8f07dfa984b5f252a3c441655454812 GIT binary patch literal 353 zcmV-n0iOOFO#}es+FYt!hevGE0uxgUr}I?`VRZiQI+r3S^q9Jdf-U57_;WuRu2y~A zVy7S~JnA#^Zv|D?tU#H`=|VdDB>;4z3_lOe1y)rTC<qqAZcXAB)yavgC~xAVfb15R zvPO#nBD6Bxv@`8Py6s58^=I9ab(^KDd-skAod;m0{9YT3yk~ir+ce%p(G@l0GC?%c zdj$anWNhMO8k=&Ejkj$L1{bJ?-<89qVZo-TahWdwKe-#oWEoC*rRXkUzXjJ*&<?FM zG2^%uc4zMs<ELdTRA*kpyulEvnq<CVOUQ-NO`-8}4iaozR}Z0i8B^Ee#X*;j%l?yu z#(lEnWqwTqB!-7!K*~d%ndI{uGH`mZ%b~-t?8)7eImc0Di#%Fpby28&>GLgKhYL&- ze7)Qgh7!d=e8f8x(lA((+ebmY#a#_KjLYg(GzAL7sD%lb<Qx=gdQGs|37X^w<n^bv literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/grayscale-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/grayscale-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..c3eb78fb542f441a55a713adaa842faff447c90c GIT binary patch literal 435 zcmV;k0ZjfMiwFP!000006LnMVZo?o9e3eT3yGGT%x~30P8E{fof*F{tQPp>!Xn>_% zr~3o8xjT%Jq_EkWk8pCJl(v2Q?2e09cRWu~Nrrs;@bZ?h6(A42r)X9C(5(}uvPIhl zG$>h<El0#AVahKh4Fg&(IS>gs$IzGf>r+CGlS2<o{&Cv6XeCET5;+p02z>4E=IDtW zNX=v0WTQ(FjX}-?3JuQqEDTtvFSj9|%;gZ{;0!P>zrbq{rj(X#F|w8kSq_+sf1~Z8 zE*U+TA{z&Rr7DbrAag_ANV0*!@~((%Hnp<`LRe&rnyalp>*i8f8DN!=NdkMa{i!3% z%Wu^Ep4;_mwY^uGrexMLNvigYy|(=w$wu2fdd;YIRsJ0l>Z54GJ6$*x$=|jgaQr5( zN;`e5xB864W$m%YqpRd^39~2ABG%F_&5<U1r)OcB;HxW?^4(+OqZsok=hKMsSQIaU z@8?G8uFE9@GF;!`c93SXHM-yVc}d9Tad3MGy8go{xxGA8;L%{K8H_IDHq%VY?BrU0 dmY80wem+c?G5veIgl-4s`~&NSI6Y1T008|9*Ps9Z literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/green-screen.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/green-screen.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..b957590acbcc4fb4ed42d33af7ebf7efbb5e91c5 GIT binary patch literal 326 zcmV-M0lEGgAOry9+FYt!hevc<3!-A>au)SQBaFVwE~PYurjJifF_F}w@YrS|?XS=< zSfUzpp6z3U$hR3(U9%D;EvF0V;x7TAKUu<p-x7w5Go=ag{bghfN?M^r5XuM>JK5q= zka*-$5f80Q`;cxsHE{i`d$Mj}1#O$}$j6ZnR?6Mk;Nd;XyWF8*N8g$4^&~V56RR?z z0B#N$%Nobq7QIja-OLtpI9&$N96>_9%RrS#h>^ZM+>zQCm(eePb|j3`(QE5{GJLm; z1viTqj)f@bx=OMptN`J6gkhSLz3s4edX|kT+;}w*$<DGjEm?g2Sn@KzCYpu+pMWF7 zcmp34n7;s;Y=#(?J-IDeQhpw$SzQ!5U;2EDR}i9($EF+il!L-&w^wAE8m-u}zi&h_ YZJd$aD4LwYOqvX|GHRwhhlBjc|MO^_8~^|S literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/green-screen.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/green-screen.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b4dc349860e316ad0d50a6304a983aec7afeef9b GIT binary patch literal 402 zcmV;D0d4*tiwFP!000006Ma+dZi6rke3eT5yCSA(s>U7$<-?_3L!2efT2$@bCrXk+ zsrE0}XZw6U6ltiA<||yC&>C&myt&Kf-CcgCs3JqY+19fDltP_4PtodTTff#5VAC`K z3@Apj1^k|pJ4JmDmP=xv6D+zC{K!Fa;02R^nLb^#ilZ1ir$~r0+?&bAx+^)MkcXz) zr;Loo0H<mV24>By=ppyLZ9smcl|l@?GlF6FBRmReGBkg#R}##bxj}m>PX;eco*8=y z85M?Jl6mM`DYAiu<#w%)G9rXc;)h%~t=`oQ*{(ST_GG*3fh_ONfZdUseO-U9chMSW zQYq3!D)wl*C&MbVNASp?+je~-8PRZyxuGU?m-+<5nY_*_`dF6vj>P%xp@WNCTWpja zWh}VE=o%#ZM5i#>bU{AD+n35mIixD*M^EvvxPivQA?15uv1I>fo0*dacXvw>1bTNA w0T(~m?JR)@0}Zk;s1kNIZG0vU%fYk6bfUFV|JLTvqc?v409oR-6d?ov03=|*+5i9m literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-hard.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-hard.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..2e2ed0699a35f1b99c54765fb7a6f3257154a190 GIT binary patch literal 368 zcmV-$0gwJ0Py_&E++3=x|CqMG#T5SeKUG7RF8ly8-tAn}gvw*_AJkKj;sUA)a5}3{ zI`Frr4zTK)6(}W}E+9rfMS%XFiIm60y_~QhS%-Pn8dw_)Vpjrl!v)VcOciuPN|6d) zZE;C6k}S>*16rftqKj!C(rrhImhmt6CcI3Euig=%I|~(+-)obS_bl&noi>}O@BZMP zbx;?Ry-5fP(YOd_j3VKN@haZ77%VPyw)?wsTKckR;!%@QKY{p}dPALDV`AK`iXRpm z-et}YA$Opt6DJuhJn|miD~+EDW4ETYrQX6wXMLaL%uZoDOuY+6qLYM52k(uq^}b|d zntk1Nkk#$7Z(UDof4AgieoY1pou^o(>Gv>bN;Bp1rY4N%h}`-BE_-rI(so^|C5wg8 z`>ZYswl96Y#c`zY6hW-MryS26rlm=^mQOGYU9sH1_rs4&C|>Mx_9<`yVz+8t{Rb&B OoNI$Kr-F-<pc(w-<Fq>f literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-hard.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-hard.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..38904439cec95686b30505bcb16e1e7899794558 GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006LnMDvZ62${1vOt>yg3>2>3D9BpEPkNV3VWN6PZww~!>F z>%N7Vp6;Ft+z8Ch>X*M+5JKv%+1cx=u-E$><whCTe2IeZVRK}_FP$@k7R}d2Z1e4A zhOL^$qe4#7=vY$Z`+8r@`879vkD6kxEDK)jLyn+}aV7xkU5Fct4#>Fg`O^-X(*To1 zi1>kddUg0#dNUTdq_N2kA;SixkOF}~g$q6nJx1zBH^xooLWr=p3JBMKz)4^#LgQyN z(z1QMi@gC+^sl78q$i;R6=jE>VMO_{XGXnIXWVE{py`xEu*x@e9IgWISHY#E<m{h! z_CP*KfQfAzNIW^CyIX5Ct$$E<XKD_4e*6TT4rMVmZbTXzIjOr3l9|+Jbdpe<l02&z z+m>lBQqf69PGR_S@)sO`j1zI9Zb)7I9t_2|!w#=Dl2^#{17B=GvLQj+>6E0=A7<v~ zBYtTi!cX6s8`v1CtedWk#-zA|qOR_lkZl_vJrcb3@P12+^BQeBA+f8<ng#RN+cS9i z{1qR`<6}{tMum+eP%`$q(43yZ$*cS#F>fq!mxai2!Svtq7<xaL`(OWDX}VDa006Tt B<H`U4 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-medium.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-medium.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..f1d665eff8bbacf97536afa3d52fbdb6d3729edc GIT binary patch literal 368 zcmV-$0gwJ0Py_&E++3=x|CqMG#T5SeKUG7RF8ly8-tAn}gvw*_AJkKj;sUA)a5}3{ zI`Frr4zTK)6(}W}E+9rfMS%XFiIm60y_~S1dgEDZU~MpnT?xz$7d+!IRnQG7MJjl; z#U;&1vN$&kXpMr4E~b4*w;d^3#=qd3@G>R7dPjurEL2o}uT4tcv%Jf7+H9h}`-6Md zL0wGtCLt(9<070fii8`+t9aXDu(;6K?(fQJ>C2*tM@>ro1mb7v4RvyjiE+0oepqaH zmpMO#+<~G_oMg1{$a{FNG=3_K-I~^xdJ7|+^?jBzJB95q^)48RP7*2|yf?nq`;v`m z_I2AqR=3N(bv>>9-IAC2H5o8;o??}z-@~9O&6LZVnlPRta_a-Q?8z-j+jXs$EEY!Z zv$`nQzV!JP$C1KQ1hM*_ay)mKmL}m^KEW__#d81N4?i-Yc(Kdbr@#e>-Kur<AEd}| Ot_{wd3NB89X7B?Tq`Y<j literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-medium.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-medium.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..edc0bd12967722a5056e02c1af126465fafbe453 GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006LnMDlA<sW{S~X`b)*;(1^gJRlQft$B-y0dk+S^vDI|&L zxW!ASFXx=Tz>UD{r2hD;1tFyFn!;XIrM=u{FE`4#=0lWx3ttBY{M<P+XwiIZs_C24 zR!!qkAtz~cEGhGCy)EbXnw!2yO)<9HmAu@B7(o~POaRtJ@EeN`$hgn>X$Q?|fQce_ z{J=atD|{)v8Vg*~*kt<<VS`dg0YIR_1)hc;BlNu+<0f&zMc7*fgzJCcBrp|I<1-3r z*|siXZ$K3FE2+=PBy^x6?a(ufS$^!9Q7_OLH`)_uIwlgV@~=7$SAqAdpi)v&_RG%h znGX<PV$%i?PtNG>+8RykZ<O7Mnth%h-la~5vKSjTB8`ol)ZH7(OzIOlNhpqqo>h!( zc4;qC(NRWBVfbV6XB@wc6LF$$NL~FM3`N^vhZh^cE9Ci}FSa1rkW$;}l%&ybX6EN3 zerh46A3rlUurX9wH(eQxiLrpPu5Ou-Z5vX0BzW%O^_CXrHQIDSqNsK?3*xc2C-Cy| zE8c^L`=UIJ3L8nFWbAdpIhjGpGyNhkZ!BT&N|ECN>A&UC^?ES3A95L<8&L!R07BB- AM*si- literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-pale.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-pale.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..8f5cc1be07e70f2e3064c6e6cf36f9ccef04557e GIT binary patch literal 363 zcmV-x0hIn5Py_(v+FYt!-<aYpaF0wx?D<nQ7z=2+umV+m|J`*iOQ}4j{z2`=;sT0_ zbRB?d=?k*7!d2I-KuNRdLZtKW0ig387$KN?I$@O3P7hrmDV5=AqueKYOgA(Y_m4Ov zh_emKeIt=4hzYGuuxV%72fOV^LG6BnuSZJX>63Rv=uG0h{Ju62`E<VXG{u@oRHM<j z2#C$JUM~a%_Hk2Pm<l5WDKgkL9RwFxt$(i^Y7G`-iW(pJ9>z~kGpZ^I&f?fyt7sf; zlrFH|#z)(P5-1dTXYYl^UlzxzrE7z{zzD1AXCbzI><)b`LJb&r&vZ@q&5hRjxbC1; z=gZz3pT>By_|jh!$|?jLC;rzkV5BpJ>;@-vOP+G51HA0!K9g=&=Ne@(xTUL$;;<jR z-#`x^o*an1+!Kr{IVa$FDepO;tpdyZy`TJggRZteU#?z7B5-Ft)avwCl(^Va<B=f} J-0XrzU<t;cuz~;p literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-pale.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-pale.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a8647bfe32e48b26c254604a93d8d349c1ca4597 GIT binary patch literal 444 zcmV;t0Ym;DiwFP!000006Ma+Ba>5`G{1s>VS~Ho}RE;0w9B_$L0u+wcjN`v|Fo4lI z9bU-Yvb!7`ZUj~b_36(Rgpj&#-|cD9*wbaIa-)oEUj(r2cD-Z3kG(TNi}vO1Bd!Uy zXj_j8IZ31Qkrl=@^_ScX18T~>4aAjt1bwb=S8=7fvFLz|d!0UQ(3}E9iB$1{dAfJ_ zaP({}a7klZ<qiu<AteHV3TJ#82F%pg+ZY$kr4r#_6%a1J!AW2$L-S`bvTnMjOL9Pz z{VS=DWlQKlW!W$=%qTw&%%}(IiW}_-H0`rU*KO8yorkNy`$cjosW|(yudc`$33P?T zlQX(McSh6l2W5Ytc3s!IXV4gw+1R)dWo+c6?w?3jQXkMsLa{IMFy~}JD%#7;DGa|& z{)pp`aUxIDg>tK}U?}e$_IR=-VGW2)GkXQeLV<QMO48^jGxJl3@2-&H``5|^Hl|b7 z#gx%l6yHIBxKu)RU4jfqaDRu#EY0FI+FOKH(S9<IgFS$kw_owv++82a)2OhO1WNJ* mpJ~Qza&j*}YfLXzxIY?E=YRI!<GJ)0n9DCsbS(~11ONcb*Vd2# literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-soft.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-soft.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..ba20c049adcc1908e18b3fd0c9e4d59d91698913 GIT binary patch literal 369 zcmV-%0gnC~Py_&E++3=x|CqMG#T5SeKUG7RF8ly8-tAn}gvw*_AJkKj;sUA)a5}3{ zI`Frr4zTK)6(}W}E+9rfMS%XFiIm60y_|5xD8sa1t%0?{Aa*4%H(c<H!&E^xq!g*( z)fSgDBgx|2FrYOGF1ncZA>DSQXc_;4Z^Fxz`05=Iy0cJG`MowNdC&4L*J-nf`tA?z zSqF77*_(u*5RHp)#wZeQ7_Z`Oi^1YTXS=^Er=>58CLT2@^%IDnsW;TgH73U0s`z2C z;a%qZ5ON2KI&qTG!XxkDz0&xpFm`KNTk0*0bk_G-&g>Mn!_>QABsxi`bnxEzTJK9X zrrFnR2U*=N`_}ce_IFEO=GSDv(0Phgntl(1rZiJ7Z)(DLj>xSK;Ib#TByHEVTC!Le zz0c~RVEfYNTO3CUPZ7lGd&=?LVOpAmYxxAj&=t%5dq4chgyO|6XP*KWAa<+P)qjv8 P!?`v%b1Jwv37WwVLbkz< literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-soft.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-dark-soft.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..93ad9b8659d1033047c50b483c5727b8ccda124c GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006LnMVlA<sWd=;zq?@F-(D)=zgBpEPgNOH+=D`olaTSyYo z_5OvKp6;FxxDlA0)E|GfAcWLiQ`pO@vX|Q&<whCTe29vd@O5Co&z&=a7R^VoDe_G_ z!&Xh>Q6VR3bS$azvM#GRzviazQB%xqw-v9-kR#|~oC(0X2ytW40U7r>f7(HF8eozL z5kD|b&kkQouf_tGG&b2TWZ0k-QXmkhaKWdc$4Gte#<<B`2od&H0pa=|I0;NeX#9*u zT2|IY><x&be<k%fJqaDCC_D5FBg&6GGwOvp<3@V|O~)jH`~0hp!&Tt@D!7!Coc(%d zcjSWvn1~x(dvZp1*VbrSf1~V9)a>&7@D4g1%3^HXh%`2GQg?48GpSGLB%wGadA4V4 zvrT)EijFdJ3d0|hKjZjqoQM;3L+a}9U?{#Fc6hOoe2+Ze@x>M-8xpjgPDvX5W@dgq z;-?lO{P>x<fsLWcy6MVjOo|0m_5PL#*|q`FBf)bIueY=~uhFIx62*R7vtS;3djc;X zzv4Z4xG&1nsIZX)O2%Fnn$t5ld6r)!=8YxpZ6$JCF#WeYhF%Zm_5)BuE~8Nd007Y( B+9v=2 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-hard.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-hard.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..b6b81421ca0d06d701971b7c5ccf347172a27476 GIT binary patch literal 369 zcmV-%0gnC~Py_(v+FYt!-?&G-1tzBEyLa|0$&?Yoq`eDsC_W0ehHt8P2!mWgVVlGV zig+S|HuZGw{09gm{dT}r*Q`XTu<1gg_e((N{{pz-!oh7#Au^@9M%FHdW>=X=c}#Tr zVX7z>NfzgZm0MiOgp?u`oYd+CQy0@dq}$FE9BBt%CrZzJ_Kpl)S*)b&*9MUHEbnqm z%_iZk;hqMFX=ZN_k^(YLF&JSo0FY(8ZEH|oU}$~iaKvrFJ+j7wA7K6rydx18ECv>? zD)Clqj4m_oVr>HwiBOX8$h?R5r14V$xED(s@Jb^LW1Z#P4skgQeF#Ds#UT&$UicdK zB^%T1<J!TjE|>isY8s!rB`@=9av(TWiO~LU81P^*<?@CiOrJEl^#NY?<hEql(Q6fy zlxmaJMWObk&$oCT9-k75E$@j&LKm!1glBn2q3bp){JkGGndqe^^vmH>6as~|YgV^S PDKf}SGYi3Kmo%Lp%Vn+O literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-hard.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-hard.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..0947141fd39569a9fe80096e70fae3cf6f3ee29d GIT binary patch literal 462 zcmV;<0Wtm`iwFP!000006Ma+LlG`8*{guq@>&D}4d`X;-$q0}g8VnRfH=a!Xz2g|D zlV<uRq$8c93)~1S&g!SXSr9_%q1)N(rncAn;^jse*L~Dwb*Sni1AZBt30ia?{h_Z# zyTCSG=TRXiX>>{vHLu`niEp_XN7R&JOaLBsF-9;Xf78^wuA<*qbU?;^E>9aYrvNiW z^!UI$Ju7@ky%`H!($p1E=#~YgkYWLW3Rm?sjF?J4x-o7R7hQy-RY17?4Nd}637Vcs z$U&54*+e=ZO8S-5muwO`P>D8-3=_&vBQxrybis}G1e#8X1o|D6X@FdT_nW9vQdahl zT|AJv2&>!XD^1&zGkUo7M$`5i<#491Ez9FO=zJ)vv2i2v*vLseyrC?lKBJR_;*{yz zLtB-Y_aYUYWU46)|2z2$PT$6fG*K6FSHFUxWIG)2YE$v*N6YH{Y73Hu4DIJrl19Io znO~0hsf7eTeHJdTDP~zWUl~n_v22^B-QNo#`#wTOBzW%O^_EuWHQ9VZ`+nEA>FeNV z&){YLic9eLSd^zpVJ8Wc<PpB&oXx1@nSK>mHkSWvQ;WQk|E4F`>%rXr0CmGAz)=JM E0B<GY4*&oF literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-medium.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-medium.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..9bd20c3d2bb2a28ed1b969911f02c7d78e13a266 GIT binary patch literal 369 zcmV-%0gnC~Py_(v+FYt!-?&G-1tzBEyLa|0$&?Yoq`eDsC_W0ehHt8P2!mWgVVlGV zig+S|HuZGw{09gm{dT}r*Q`XTu<1gg_e((N{{pz-!oh8mf}~1yjjUY^&8{+$@|fuK z!&Ff&k}S>*E4R3m2`NP?IH}bOrY@#^NVlCSIMNQjPL!Vc>>U}pvRFykuMHsYS>ENC znoYu6!#xcU)6Cu=Bn4!gVlcvF03geF+t#4Gz|i{2;fULUdt{9VKfwGMct;{GSPU#& zRpPDK7+q%E#o7iW5}_pFk$DgAN#myia4(iN;FU%g#yZQn9pZ8r`VfRNibEdgz3?^e zOE#w2$F+l5T`v1O)HFVKOJ3&J<Unw$5~2OyFyO&r%H<73m_BK8>jS*($!*E9qt_}Z zDb*&ci$d*7pKtLxJU%59Tiz3mgf3X22+#74Lf36p_<KKWGSN#-=$FH%C<F>^*Q{=v PQe=>uW)_0eE@?VH-&VDO literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-medium.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-medium.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..aaf7d51efdc242528569246e3b3bc3270a06436b GIT binary patch literal 461 zcmV;;0W$s{iwFP!000006Ma+LlG-o~{S{{Rb;*R13xtnhd{KgnW4pH8CByLVoe;|n zbf<5!bfj~1v9J<~i~bqzj!CJ^(CyuAQ@h(^@d~T0?>_3XI#%_GGjScfjYf7KJ@0p- zU0|E83!p)uvW8M*Eh@HK;#*<I5e!m{O9sb%iXj`w-!!$TtK_#1JVWb0m#2$HU}Q5z z@`T6(zAAi6y<5kG!l^5g&@GQz1EvBJG_2|wHUgD?c4Pf4F1Zj!ry0WbH}i^dO;CE0 zkfSWivPpCdk@Rb2uGvKJOcQM!IS?vLBe(jkbRnz>$PAu|g!Ow?(g1~KA#9RLg<07@ zcJV~!BD`*!9Zfr+w`REa*5LLF)NsMBEz8q)(D_hSV-r^9v7uLH_=d7j<^o<J$aAJ| zk8M>#-iy+BR#a13@ptl9n7*u+G*KUOSHGe~vONrNb5y+g(enDR+JfRSL;LxZlr`VX zEG$R-(gMNHpM{TnN?Fd&SB4WYmTl9thesh*-zUfj$X<JRzopfAO)j6%q2Ko{eH|Fx zg$0$r;u1VP7Zq^Q&?#hEi3DG9&Sp~bO1}y$8_R#TsbyZtf78kJelU+ecS5IyQ3L=0 D%`xD% literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-soft.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-soft.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..0b1d87a0d17a7af6972d548305a7c19f6a90b4fb GIT binary patch literal 369 zcmV-%0gnC~Py_(v+FYt!-|*)rEif@P-@UV6Nv4btChc9AL-A3#HGEUWLm1=|3iCo# zT2(V+|H)tS`AZ8Urr!><>Y9}(6*XN1dcOpO{tsOH8bY|O%pplt*CYrg!(mq$q&gNl zeK%B;izJJ4UzJ;2%7ihHf+n?kPS?e>59ziu1y@?Z*YVODK6^)ot^$fu)@uXEdzN=O zrbd(SR&Y-pL^q>1a7h6fyXcJYGtRjw<87OR@&Zk(D~BsC3--tw4}L)TGq8q4T&S3< z@KlLgvC+FsyGykVNF;zp=*YZ>_ond^IS*e<ZNMvy(2RMOGdrZ|FtjcR^ilIX(0gHP z+?Q-jqmO3?qq<!7cgSgc?v}jFugQSW5)<(J-!R}{GUeiiBuq~ZxwQ^m_T(PPw4>E3 zM`Li4)kUH9rO&r`9v+_(iY@PnM#3vpfr58=N1+=oR``2AEHZ&?q+K?j5*H}6RkOTp P8pwEVnpp^TyQJy-7Y47t literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-soft.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/gruvbox-light-soft.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..6327459bd06417f5e61acc5fcc949686981bf3f4 GIT binary patch literal 461 zcmV;;0W$s{iwFP!000006Ma+Lj^Z#3{S~Bn9jeaI3zUyRxws`unq(4ZhYIoUtI{}I z*wMZ@_OXvIC&Ef7&iYrlIVPntL$`C+P3^At#Vf3~zI&_7>QL23&ctQ#HX7Nz^`B64 zvA{N67eIqRWeugsT2$;~iEo7+M=(e+E*TtlDTZtyf78^Wu9Dw6@C>bgU!E=+fsxG= z$rB<E_}t-3>diVP6i!{yrU;K(1EvBJG_2|wHUgD?Ok@4rTyi0dPBVn<Z{`)_nxOQg zMh>zp%O=q=MCxBFbIB%xXPRi^$bnE{8oAXkr3+zAKxXhnB&^@Dk`^d53t^MGRG2&a z$1WboT!hzc^FiAV=&c!Uy*0S~1~r_qYs>QZ6Lc2JYHh;Gyf*a83_nm7%ACO~1bNEz z?V+to$ahg1Pl{?vEB<c&0@Jtkk~ZpNp6V-FB-_IPS4YLG&z9Hw)fE(v8QRZMQr7&i zv#^NxX#|3w-U}c3l(L+kRfZEWmTl9t`+Ff(-zUfj$ew3-)zV5{lgkp?_q)EOuLGky zv!L=<T!P2Pp#n}CI)zND^b^;dvza=1re6h?i{(Gt)H0vszv<+970mq)X?~ruQ3L=0 DAhF}W literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/hardcore.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/hardcore.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..eb4451ba40329a5f5e1217342cfaec0ac5201389 GIT binary patch literal 365 zcmV-z0h0b3Py_(va$BlghnYYN{=?nK=`0%I=M=&u`R`ncqR{N~O;itIkV_a;r0W1w zOJ5L6CscLK3X~zAE>HUZ9soMci>@6#ozP`e9eVJ>P#K<<a+#=Og1}VVpNcd=TyJT) zFV!SLOlbN3rkiOW@@+>7>gG52YNXVip1&hP_aV}I`F(95@?Jm(G=(*hD2>u_5fGbc zy)Xa;_Hh%1*>RRB&FXa9bP%|}s`b5cs8z5aQ>f9A4-tN%n9;1TnmT!{qT<d*=?v>0 zI@%(%1FFchP{?b&7aBh`AyG@$26+J^tSUb<v5k;BM6n1vsRG78!n=%Xx-Z3;TOZdQ zv}(2Nz4U2}e-<d=n$XlU+-Uu47?9JMOm>44HcOuJ82f11v-?cC9l0(kRakJxqIT}E zFFkCj9y&ZVAXeQIjCL$2=YW^;nghHju;kzS;g?MK`6=Yf)u)~a+-ZfHg^HQUjA7Q1 LMiSht1&#Xy0VK1_ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/hardcore.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/hardcore.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..cfc6a1a918affe7212b4440ab0206e7f04bad982 GIT binary patch literal 453 zcmV;$0XqI4iwFP!000006Ma+Lj^Z#3{S~Bn9V({Gv`{_<If+}cq)9e$cBl~lz6wn; zg+(jBxb}&UFQ?oHtWN5ezgiGN>Y>}(%j(NsZgZ3yWnA~hMYID0ejc0&T6AyqN3<EX z>N<}KIZ31QlkHcuIlty+98puweL}R9BN%eL-9$@qW6=Q__db8xpg9GI6e;2Z^Yqx^ z)6=W5z$Hyx)us#!N+G2J0u?UmX&5n=zE5LZY%YZeN2`Ev{Rf-`rZO~t=0^H`-L!S0 z1ESo&lKNa+LI*0-hLK@L`DtWEJ(aGw(Vjrlv5<&;`_bp+D)4@lx|CEp`^T^D$WjCw z!P?JM#FI06xb{ZV`WxkNqORR+4zHk5D2ugmBg)#yNj<!vtfW4nlZ4_}=%K;7#&Q>_ z=qPhdVffGH&p3S>C-O#JC{z6ohO+N)z>ED+(r&wJ7gvxh6lfo%B#nNtGe3*?VT24n zzE>`=DZR2Ts*I-0*fe5~{jCzR?-OK1g2x%2wX~4eWQ&CM*z|qg4372$UY1{RP9E-u v@-!*zB!QAV!55s-O`SZ_FB0>`iXwJwx69i7@ADjb7R>E0?x+OjQ3L=0Hl*O& literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/harmonic16-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/harmonic16-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..54df9c024460c8eef024b398499e30358a7e124d GIT binary patch literal 363 zcmV-x0hIn5Py_&Eo33f)_7<r4HgF__nuUM2zWr8-Vxf{~zjR{W+ZognpG3xAzdOt# z(HaR<fYVup(t*F6n#f_9ZlGkd<0Xpfp8`PtM{p&j-OC9}8WK#AbtKw07>X_By1=U8 zsl}-xJy)g`H6h!c7O)l&iO{M>7cCrNLk>v6^2;6IW-ndh-S3XjVJj;tf3FQno*gZu zQ?g0*g&*7#2XQg8SC2sf8ZV+V0q`{xWoVgW5M1DF;dkY*)UsfrsBx*UOZ@B^LmBYq zRz-&qrgxt670F#tlwX4)@8El-@v+jnTeG#HUSNc?+Gjqq4cQJ2<3hA3Q#BZP_syvH z!R?rR+;%XlgDY%JPh<b%qMlxd0dbqN8h1UWY$jjc(1iA!BC95nSAe%9+m2SH@-iH| z(R;QxE3u8kg(nMQ_wNHn5(0+2mUl2zx?-7s?}tA!fo`N-o;@jCAhA$2OMju%1x~LD JUhD)-`46}#u3Z2C literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/harmonic16-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/harmonic16-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..79e40581ca61752b4b0d1dd7a3a4ad55b95b7869 GIT binary patch literal 444 zcmV;t0Ym;DiwFP!000006Ma+LZsQ;j{gp_4ZLDmzc3S6Sq5;MZ8w?bNZLFyOUJ(N! z*=XN}xtw$60yhGiqx$177KD&`?0?(ys<r3u#mkK{u7BZ7bhzC!;HS}<phf?(VZZp6 zFKMg3_o$GQG&+~OZCbwjSmJALrU^CWShwBbM~)GU*$==t$K*E_9guOa%hLwUDL|x1 z9v_&edxa0B7h{1-n)_y#A}lC{lmG-Otnf5Un4z!T7#GDQ7vW?T5U&4%lfYC?&Ce`^ z4ezY&5*-j_{YvUnF$o>0OdBSKIm^!zGwK1l;YND`O@|u^8wv?m;QcD8lvI@cV>j2# z0`kr(5KqqN@iG`q>o1h!k^0?cvwxNv52YF#H=>M<oYdnJ%0}uVI!P!Fg}&|LsLEcX zqJzws!tmSVPdI-WC-OvHC|!L9L)msX;@RH7qvUD}l7*5w#8Z++Kbe_dj`*&HoPKz1 zTwrsmvMyd3&9`Z`U1St;7*fiF1ou5W-cog5v#m}j%1`2PvPbZ;e8nZWzb?wttgx2^ mN~WJ!b4D{Mxu>rJ%f@Q#vgZGmXV>GweE$IPrc+E&1ONbsB-sT3 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/harmonic16-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/harmonic16-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..c01d9e6cdfc9d17bc73273caaff1770e0ebd7811 GIT binary patch literal 364 zcmV-y0h9h4Py_(voUUmldrQr>fp9|2j(_+6-EWmB7Am2vbYgzny{IKVi6(yfHq0W? z5)I6mjKWlgh+v!KlBSpKS(INBJuK5rlyr8yR8jg%K<NK@Twv97aKp+q4pjT9Z6`ys zB?Kxt)hUOmqFk{S5IGRr%ak&$xM@hOQZTe|_zlG~1?Tte;g%?!=B@9}&|a%6Dfepw z$TRW6n37GxXE)rF05Qz$RYFog#vulyfUBV>11mBI;RU+cedTbPWx-)s<ASef{_Gh? zDRBC(Vp>QTou^;a+F78?8VvIez88&;RUCJ3mNwvpM(CP4^SQ0+a;TaR!bO>=LDRcq zM%)M5G5ff8Fst3me{@ab`{UxCUxxz;o6oXTJsvD3U*1rJ_KPN~CeW9Mw<XJtUS;K_ z4QO;u?aj(!=i%a$MX~$$K_i(08n5yWg<`i@`tSX4lZg_V&@a0uRR|PjSIxrDE_GJZ K3&CM0X$pUIAh#3% literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/harmonic16-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/harmonic16-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..cc96ddf1eba76fbbab9b0addf01741a053dec806 GIT binary patch literal 445 zcmV;u0Yd&CiwFP!000006Ma+Lj@mE~{S~BrT_Ut?k|lf$@?{)c9FJ>{yF_UJy)v;) zpr~)o%$ak}Tq00Hb27ie)iEix9fu$8vT5Drdx;7(=!dtTyH@o3183qqdW=>MZ>m>& z#TVFS7y=j&q|ufV!DR;@OMWYGn!r-YF~)^}oFg`tc=yr6exKv$z%xSszI?i91x1!5 zawJ3^=+WU*=@lIln&zSDbB0G_fHHvu11mnuCMeXmZqO%lIYcly!w9y2nAeP(0xh4# z2v?uH?XnyrD*lbO=lUe@%oN!;aVV%TPaMq?btBLQVwR3~5w5C;Ff4>kcB!d4`{&)< zkd@?<uSf!UwBuEwrR^8!@kB$v+Z|p()1j=!CQ#O~k=J&7A=zkq0<Q_=vC6ky8dcqk zHgwd5Q=+&}{tWXMdRZpwW9{m9L@I9&BV62_JXv0CLGxIlDxH!>`(kEcIpT*F3jFxq z_{is6<$Ss_n(xzWyQC<!QW-J<vBw^sZ)tU2vs;}|vY*Yv<W4N;`YSHU!);N4W&?vJ nX0*ugm1cToCy(;0#Imt9cU|*;%S-6_V7~tXB-+qKQ3L=0`2X0? literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/heetch-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/heetch-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..fa9578f5424dd114bc1844c11c5611a2a88b5fa8 GIT binary patch literal 373 zcmV-*0gC<`Py_&E++3=x|CqMG#nk>=TfIX<C*tjgQ2y==YKgl<70oM&M<_%K2^+Dg zE))8XRp_w;th#0eN|j9)5W}AWK>ts&M5e+$op41ACXBP@z}jFab|qqNWX>}RQ$@N^ ziOh78ZE;BxCN(tHgw`-P>tfo6blZ`Fh5rq{0WU-1%XdWR)<Q+)_q9REdzN>(PR%CO zcfN2>9mLtp-Z%sWXgrI~w5iHWmc`o^gW>`wJKrmZg>4p$EowsQ#}GdgpWs#!(?ptU z7278py^EY4K<<trp$nNBWs&#rUTFMO7`qiq8|oECIBDxFW_AM0Vd7m7DPvM;1Mju3 z^}b|dntfb%Fsqwo-<X=l?rzD;{F)4iLSrmU_%#feu$W?bLlOEjiro4DE_-rIvg{lX zRxlBCm(@kV_NC9aIF1mWJc#A@lsArEk(E<k$_E$*uCdJD`{9>NK!kRA@+okE#7?VG T|DG!>IJ7#PQ58Hp2%7#6Pp7e$ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/heetch-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/heetch-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..2a50c1daf9aa1cfd74b2eb62a8d832b591c47f53 GIT binary patch literal 461 zcmV;;0W$s{iwFP!000006Ma+Lj-xOP{gq1dIz{vX6#6k$E{0|sl5FDa6jlBA5hZ45 zr`oq*A0Hpv2Vo^-XZ<JK9FtO+uGzWks&Lo)6ctum-+XY%OHmv-6PM20Xk_!Tsq@Wl zKfzW_6F`GNWet@SY+si!<=4XYJs6~1#Y=hMDTl11crEHJJEXXE;2B!~Ieofl1V%Qt zNRbeEz-NUor8n!CP&hPMl`=eP4VVZdXjt$W)&o&Lrm=n$mqG}=(+pw#k9ozoCMbQ9 zkZmPvNkSMR>DS6!<|l$@n%c&m1EIpubE{vdGht0YX7DsGm$NM|X}Ow(uu3Ww&dPqh zvj=h}IkcsyX)yu4HQlYX2G?Jpx-&Lao*&;qN24s(Caj#-hF+QOP0LJ~GkAp{Pjh>* z+m#g^n@6Sbq=-{m@w5303}4nu+Nh87RDYvIdVA>L>WI8O<atpquAq3Fq3viTWzCzN zg~`NEBM|)bnfb_vROS5WG8}#km~V>hJ(H?!6Ql=Z&ojJwX<@Iy%@#Ur^W9z~@zA?7 z3u^uqr{wW*sDOipMj_LR;ESH)Gbwp)zer3MBkp~b7kjeRf6FQKYMA>s8)H%pQ3L=0 D&!5}5 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/heetch-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/heetch-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..b389c4f7054deb0a5f13280d0b030bb92a87665d GIT binary patch literal 368 zcmV-$0gwJ0Py_(v-ff>Mufx!J3ry~C`C{dA_LZTQ6T&3f4Yep9g)YtKq8NmENf8Pa z;B;1@bl`7J9Z55EJ5Y-G@&t7BrvT9ZsVyW!t!|Fh&av(TrGlZ@4R;KL;~7V(B3(!? zGb_@=)-(YC3@M>C3NN}^&dDDqQm_nv!B_E86JLF2gzgmKRQ_HYl)M8DsMBPV>irMy z83%DOvp0!A0U9r&Ga}<4fu{C2VlcSCS^v9oSh})c;!vZhpAh^^N<(!Aj(K~l;)cmV z?;_`igxf0;)Y;52hrFlnmBvq=Bzn!(hI#`doOOK`Gdm^iFfCmWl}HjQExb2nt2YC) z&pvKDnAPoeZf#Fv|FB_=&tgFMJZD_!?_t1{%@oTUnlPMG<h~5acDh%RZAYt31+Qd9 z571T>+m{g!8;6Fc0AiVU!3yV+lxDn^R~Ux6SoYuh;g3v=ya?^`?90Ff5`EQt57rPY OW}Y*uf)}fx8T<j;oUQf% literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/heetch-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/heetch-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..4293b5fd64a1737016be6f307c3423c12d4817f2 GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006Ma+LlG-o~{S{{Rb;+c#Nl5q@#uqubIJRpmT`~;+-U+eX zK$*VD(vi;5#llG_&gN&lc_yW{eYf}5P35om#Ved~q5G)VS6jo8GjZvI8?Ed<6ey+C z0^4+51Oo!Kvy{^CS|0ck-wHPjV3A_2Xm{+8V#s>(ODSuplHYj<3|;tKo_@3fM>bO= zPaJu~XN51RH|LqqICVvnB78IkFcpwsU{%ku0jTt&8y9AA$%Qa@!w|N=S<s9dg3^<O z>>Alh>VYAWexvOrn+Sm!q8$eggo@L^op~u;2xlWQizg!ClGlPrgkdpml1hzP**|vi zK;|M9XFFb}A`yeL{Y^QG+i%eQ8M~$|kME%Kp{&LxoXlgxpl$z#ve5PnK_kdhrdNlu ztlGR6ZSbV2rgY-(<S#INyC7+zVa#3q8Xb}ypogoc;$pwAo5N}gnvWT(=2OznzL{BE zj`*nsf}cK%F!Cv7`7mD@PQ>`ts8&_?LTaTFWB_E(J-pu1>bxeOPl(I%N3~1hVen@b zb^eM=@c39%#K}OXkr^!#e8oANNy#()DzI!U|38oni1@$h<a#}r`yZ<Q*@saC007H8 B<V64g literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/helios.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/helios.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..432aed8c337748ba857d34fe6939da1bc70eed9c GIT binary patch literal 364 zcmV-y0h9h4Py_&E++3=x|CqMG#nk@0R6|r6E`XGotBrD@aB04O>0UsBO$9u6qfmNK zpF6>-YgV8v*>nMs{uBVZ&ct@=-cG1V)?t?Q0IUs$Vt0ZGEfStAOcm*hER;}Y+~Sf} zr`a(^gjO0{bu;Zly6s58%KZml!AnWJeMf}uEmTzgUmKKsW_g$E)Y+u^;1Bn-gSeX6 z%R^9r#;XEnc8W@-$9UUf(73?G;D6<?vSq>4qDE4mL;U34kdh~w6K3vJ>}a+H-pQ8} z$Q>wB3Su%6TjWjN8;!pTW4B>zL%oI(F4{ixnJr*D6y60z>%`E^z`OUg-nVQ_vyb}@ zW_4Kho#|;Do|e4KugQQyl2{lae}(}wHj^)JXhL^Ekw+iEWlwHNwq0O#nd>A@k6B$5 zY(M&Zi{p^+<Unk=Cm1P7&Z*?Ql@}NiS1i-sx&4!gG!>y;UVI5$ATg*~(1UX=avX4a KRq$#NH1QAi=d>39 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/helios.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/helios.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7f053692d064baf07d225a55f89eb70a47c7da54 GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006Ma+dj_M!~eHD}ayEay>*7`7JfNAAQfra6&jq%-YYJsh; zx#7<+b2w+d;6`9^R)74>f)G-7&Bk6AmA&34FE`4#=0jBDIWpjv&Y7S^^HGZRYF$pS zMbmgx$VnQVo>ZHvuGkb`a?|&yDaCf}zS<vRjG#+?F2)o6#-al<?sK}@pg9E?C8Ea% z=IJ@Zm!~&lflC^iVjm+cD1{UW1S*{IY3MOgKdLcqOfI?zd#iwO`4^l7rV=z=b0Yio zZc|4&AWHcwsV~_ibfA)K=ou!IA9`lg3w6Pb_5_+vNd#HFEjOvT3cO#$EG6a4e%ZwX znMvC6AWDcNo}AI$tu>mK-zd8?HT%`-_zpTQ%B*eNh}<@EQg?483#rfOB%wHE`MPF@ zbs9DcQqf5!PGR^@=Px*X8z)jnUC32^1w+Yp*x}VC@{&PysAf};EM#aqu97tRP0#$a z#7`w8`02B7ferDMb>o)NkQK3J!0&~SZ5tsy5<J)Nx=XY58f;!6hTHXS8<WT0p25rf z6{q0wF(^-i!bTD($s>HGIhrw(XZcxRnppmSb%m=mlK(zWuGfXR{{xdWiV{%-000pW B-Nyg` literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/hopscotch.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/hopscotch.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..f04be5eb5054c19064290769cce84ce4f1aee0a0 GIT binary patch literal 367 zcmV-#0g(P1Py_(v+FYt!-w=P+f~ffQr)h+OnNVy2WdFW*wNa^D8vjB!2Xfee&Ixed z+*}9s)B#srvjU|Q(}h&~zXpK*pFpA#8@!!xB{&DcM3>09WT>`MsghHZ>G-AM^}>J= z1{Pafjs#ecU<s|ZchSYP59zie1<UXsd?QiD)W`3L(7D6rTK-=fjJ#)gm)q28(tPa? z_cTCU%<6T0P~bXV#9&00NiEYwylpusE^xN?zj9bwTQD)y#LRawe!8I}QDin@;O<py zm~D(MalVD6eM5PgDns7Gd!zBwP#UaBZJ1XW;jHm2<+g|E&<jHlwn&-C9lWPuZTBS` z)9T~CgH@d^`_^$9`@1DC^J{V-n1lpG{4)%gl1!<(frR0lDz~ABmp!>PNxPcYk^@bO zeO4ER*q1)v;yhw_3LrMSCm2<!Rk`7<d_<rXG|SPu>;7Z{D)h^<Pf-ZGveva4kqRLc Ntw|<L@Zu<Fnm^XhxOV^m literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/hopscotch.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/hopscotch.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b2696a7072fc44e0ae0697ad5530e8dcebf2bb82 GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006Ma+Lj^Z#3{S~Bn9V(#h^uouWT-=f+O|pr*LxuSFQE8kl zEZR56KKAkDL|6&gS^o+*$D~xIZ*zCul<s<8yuxbh+YjFGlGjJh#HIIkG_w834~Hh- zFR)G92GAf-SwktMD2tLW@vX4K00t>mHC0|UF@~%se^WO_Q%Apb;2B!~xjfxy1deQ` zh@LR=fX^Miq~5G!LgCbARgCaaYrt4Qf`(N+!v>(zk7=x*n~N@l!D)uD{lmOsToaU@ z)QFVDS0N%DL!|z-GM8i`c&3SV95@gvOar(2rF15&3CIkdh@_J>-_rtxW+7~1mkLv7 z|Jd0Bxhf(=NksyBYx-Mf4Q{_d^=E9W-R}4fItyjBHeqF28+v8>H<Xz&XYdL^o)UfC ziG2>~E=uD`QB7&Z-_2iO`nF!uM*Wzk`aN1C+d~gmN5%I=!<&3{1;xh%?Pe({Yu@ZE zEFyjyf#9dl%#VDES<cTY!znQynjP=%nN(dDAp;<Lp5awXD|t;WNl4TsR3sr7+?fTH zzTy%*J`NRd($FeoS`mE3Ih(PQXZlrOxmfx{d0y`56a6=xT(5$;{{VQc>H<*&002`4 B*?0f| literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/horizon-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/horizon-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..6913b16bbca1cf8fd5e19fc3c63b1e4dbae40ad0 GIT binary patch literal 369 zcmV-%0gnC~Py_(va$BlghY9}B0<$0P_PF2bPX)2~LMU&$LoG29Su9Tyc!(AfHeyp< zCiEYx&|_;-b<GNtVlZ7!)cGj@^na~18kRquaKJT3KW1GzSr!b%4txw)fIM9<Rium9 z#x`MYlO;`nkxcr8R>wVSZ`udF?MT5Q{085Mmof3lJ0f(Ek%Y?cYlD(^gB|MBY*Kyw z3-{DPoXza@JWznfv*?UKh~gx5a@%51T;OE=d*!gO&4RH-O-y}{;HOs@5>~1NB6F=` z`)s3kiPLSu?JLS@AEZUz*?Xb!Ghr-Wv9zIHVT6;m&QfOkq#XK%3&IBzKx*Laih5|B zmr-XQ*B#92eAzdqrm;I&u*7RJAR<7HLHsogn6Q{qc|#F~Gm0D+E?IVUOS0_hAr)h# z46ICTE!&qKHyK9^PXWYU?g>UUj6<n;DIZ~I=Z$6l-VeWI0wT1_lUE%VNUXP79ThbO PK^oLKlPY+26f~_LXzZzI literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/horizon-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/horizon-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..2b3ba3a2a2b2fbc6d69a2d47c82caf5df54bf9e1 GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006Ma+Bj-xOP{FO@kx<wSOu+WdGoW#&vLy}FL+oG!fzM>>7 z?N;|@?D5#14BQCJPU^3}S`b3&zAf!#v$vPqoaIIt*S>MaQRD{({M<Vev}oUUe1}Cf z!!~W}Q6VR3bZRNE%uAf>TW*E{HKkhBRb8FO8bP1(jes1Am^T(3ka6$xrwy7@fN4a` z_`p0pZur!CH5Ry}vCZmOVL>URNFY$*iciCUiTZwxano`!ML1Xmgxi1MBruhr=`$^Y z&AzHX;y55m`zxu>OGxNIrLkdPm{5Kkm{CvE88_M!Xga1L9k9CDCvg>czlmE)S~mL? zXLsa^gcl7&5>L+P{@NK$+b@*;iP}2P53it;QC6~XBNo}nN!`B~nMr*@Cke%I8DBJ_ zY?4qcNJU4PIECRq%AaxkGEO8#U0AOA42Dwdu*Zu{<ogD9Sgu|{vamqA$x71b7n=Fm z#1AJV`0+h+fsL`ty2)iUF6UH?iRP9G*>w>zAi?7e&t6*DYqUQW!s-w3xI7N_1YRz` z;#@r3AIj6Hu$2T#CirUR6vj;+$FB<Wi!F}GoAM*6_TToDdN$1M8=1wY<52_v0M6Lq ArvLx| literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/horizon-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/horizon-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..c04198a2928b4816e9832658880b7734cd7162bd GIT binary patch literal 367 zcmV-#0g(P1Py_(va$Bmq4iiLMnEfLn_Wa!HN?G5K_<H|#hgxDJnn_lTL<<S?LR4B+ zGh_cr?(_Le3nON}4QbUiD^UV}x=5J+B_Q<wfcw^m9IgiiM^NpMESn6>lujbG#$dq> z73IQ!@r{T!UCKlnBsS5cR^I8Fn)bnNJ5zA2R`6Zp<vR2FJ2JGL(OAlQZ2)-(>=4sL zlklm6d&WU@GkQgr6p*ot&InAyC{7~1ZF4ZZKr>ZW4wqXN?2a|-;ER+$$1=b^THiiZ z+~#fcZbLgqwU>aB8Z-#Uyp#8)@iXQ;e=)TIZ)k+3%d<_xmS{SZqzl4J!A}!Q@20GA zUtqM+$FqY`Z7uuT<}^MF3zm3I1Bft1f&Tj6FyLS^ZHgO`aP_3gymaWYo7<9Umzq)# z83Sn->Y`Bl(&MJ*v5rqG6nnZS8YM9bwB=oXjY2M8Ec^F<SY!ew9GA_D#03gdtF}3B NQ<@tg*u9oC*&jJ9vDW|q literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/horizon-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/horizon-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d7f84ef92fcf268984f5861ecbabb810901c0182 GIT binary patch literal 451 zcmV;!0X+U6iwFP!000006Ma+Lj^Z#3{S~Bn9V%wat>t5olei^Inq(4ZhYIoUtJ1g> z7VVp3AKS<FiF68!lldL59+c9ytxJDdZ2aXmdZjZi)F10rDNA(_AkS@Z$*TIJQOyd~ z2wT*3M1zvFvz*dYQV1O5OX<1}EpbdJQHrk|BWT%Qt@m;d+3!3CAQwKzr%zT=f}utB z#3Uj;Gki(CIuBA)Ul+R^5y=>&TtK10Sv?CKa_RdtE)3+di?H(s2$z2#Xb^^>{A40n zZMM68ZU;on-)MWDOu_($+onz+qhj9)XI@Gd(%DF0={Q?1%959BAjU;zscB;Nk6ql6 zk0PKz@f9KkXWMJzEG>Ufw<oH1tJUEhbP&pHZPKY}Z4|U^-?S{WJz>y<>NvIkRjIP# zMTw*h9W~cfPChn&#{S0z#TyN2n(8|_Vmn}q7th5v6@FnkyMh*Jf;NMcw6kw^7Do|3 zjll5ZXAzR<bCwT-%BY{l*$SbmTcLE*WJreu&ojJgX(q4UKO}_PHONdJJAZ<xr>{5$ t5BEbw>J8SKz-WfgdJbl0^4xwF7%%qr&;B=^U9W<<{RO#&4P{XT002cc(4PPR literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/humanoid-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/humanoid-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..35b53b4ae8db581905b17472083e5612d7fb11d2 GIT binary patch literal 366 zcmV-!0g?V2Py_&E++3=x|CqMG#nhs;)lcOSYac?{+ZognPa=!flZ03!nvK|0mkIsH zD&*J_R$a3KCC8=<h}KU5p!<bhzf$*f!VYCrQo}k2)&@hd9j<vUI8QrF73m3yB@tP= z#U-th;uI%@Rx3DbYubl&+mV8W`whMxFMZ;pcSPvSLPh2GwL!^emUp>M$tKlTzi>|+ z#M#VVCj<p(Jge$VnGniE8gE++f(x9iey<!B+AJ6=YJBQD5I<dSC{q}L&9#d5(MInA zr<;)5Rum_aDn;JOd!g}HVeD2cZKxL*;iT4C$ZQvuL)W{Iz%<j`7<f;7t@kY()9mBA zgIS#}`^MBXc1KHI=GSDPoMk4H{?{;I!eR>L4MphAD6;PZxa`R-$+D|j&EZ%U$s((Z zg6&72Z*d$xJUI}1z9$&PBF`Bw<vk2d*I4H7{qRdBUen($PhJErkXUUs>OV@TQkZBX MXGjIl_JXGI14>S>-v9sr literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/humanoid-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/humanoid-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..07de251acddf5483c08018554f7273d0d478f28b GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006LnMVj^Z#3d=;eqyHusn!j^|Y`EW~)G|nZ?EfwP3Po+t= zaNIxF9?#g$RG@_7tbh5NWl}2Bw_AH%)%JRyvjR1`_M<y=hpswuCN90hU}XDIZL6mG znqjN9^`JqJLX%o{haJ?rxxN-S3}7hLnzGr{GS-OoDKAP<@{~sljuE=g`O^j?D6mN) zW_;kDo+o^1y`g17(byLISm8lyphzG=!-CJS0TT6N8+6lfF-0&~%?Q?im{W}F1WliL zkj<vr)=`cTrTMiommCr}rju+KI3$!G2afuMx)5kQF+-;;(tXus5)qntzlu{T%9H&Q z7Z2ougf~?>j3<YtzjbJ6{SB%=Q@bzA<2&eNl*QQu%6v9*%Jgp}3uVsW6oEWt`LdFS zT{O^|2c_wx5~oD*bNLI5-{@qzs0(?k-vKGb4tluSOfKb@Y!<Jec*xLhvXVmc=4O62 z@zV+ke)=q2;A8BvZgLroS+QhI$M1zyT^At(5PRO?)k_O|jdo$78ekiThryniS3kev zqj-Egl&4WctB7eOB7C7ag>jN+`9)!VvBb@*{l45RnEu<IQm=-&{{?&}9ePm&001c3 B;Jg3; literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/humanoid-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/humanoid-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..944af1884cc19802924f264fd13ac894b330cd01 GIT binary patch literal 368 zcmV-$0gwJ0Py_&EbxzsG|4Y{aIdLGi|JGKICK`%(`yrIwok1;eB(hjuNjyR!T1eQ4 zO?8>jf2=|sJCLetR-jbbba`U<Qvm4y$WWqj>Uw%TMAn^WZ7>v@W%)4FJfk30q>B_% zNV0f~OIllkq=L{I`e$8C`;cxsQm}Bp!Pn!ZPki}~2;EwusQkV*D0$EFF4w8Di6OD} z(m^?hvzfhd01D7}7M&3ZP(kB3-nJMNE^xB*y>eKXX2IB?#;1Nv@G}k#iK1W`fWB5S zeYDZL!07?uwiT5UiOL}F;l0rKsQ}!Hr4988MmTBeEM#^<%3%_^Aeh!UOEtXLVXgNi z8`JFLx`SEWEc-^+G<J7OUgp<iAPJDux&Ji`n6Q{ac|#GpGm6}XK3VqUmSox4R*RUL zeO4C*+m}Ay;yAo`vLUv)Cm0C@P#Dcic@M+DHJ1K+Km3vjB$IY|@~P(niJeyK;J1ZJ O0qt-GRq$*tX!<{}r?yG} literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/humanoid-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/humanoid-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..3fb041f14f4c32d41450f6edd4a3c229581c7b79 GIT binary patch literal 456 zcmV;(0XP01iwFP!000006LnKrj^Z#7y$VwQHjzmLgm4(-r5xNiw%aaG6Cv(C3Q45{ z!~B(Nd9Rjd=@k@b`;~5iD`i~URN=bXhU<OwN^gB^KFX@xm4~C?^3q11ooYUGt!rJ5 zX{)A5U_qksj!G0LQ1uvJOW$?ikYbWaCe#!|-jaXEcAG8veSpZ($ItN@vXhwkKrwkz z773p_d?~&8z@@>yDfUxDWNQH@00kBnc#d~K(2r?+9GaV42wkuoVf}|k!-b_(dQu~T zZMGXe(Q!oT-x_zBO@zoT(dJG7Wu?9o-o8K=(z}G*;fYAJt`uXmT+35hO<fwCJNw5j z9+?Xeu`6jY38Q!IO?!vyA2971n>}O4cd3I=7HgAU&1=JGT>FNyFzyV|AgI$!U)42K za=wePcrt{ky!_q#1^OQ!6>T);d8+U1k?aU9TmykKRznSoD;SaIR6R(^c=u*!X%z9( z2$X*MEMgY@R2AZ&GVB+Or99jVWwf4BIzawB!>g7S^6JAZp*>^zKwk&CaOTO(UvUf` yABRfVTWAb&YiN-R&cU2Id8S_k#*59`E%$r2Ss?wloLsMhx&H-{7Qx6-1ONax&)6aW literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ia-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ia-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..7c144a2a76b1fe0370eba69b810e5f35059494d2 GIT binary patch literal 367 zcmV-#0g(P1N(2C8++3=x|CqMG#nhm=)rCe#qH(>y-JzBk38Hx3KX@pMh}noub(zqA ztU?`|!K!OkprqJz0a5)a0Q6&;rtZ0fHi_4UZv?E31TumrmvO?gT9_x&+e+@E54O0Z zwG%y{C$6f&Su4{%q}vV?EdJL$SvMDLvfX#Y=Fmb#<u|oK!+n-_xk8mk3?`iRxOj)N znYVff2heyHJ(*@&3mHTZZ(9Hg5ja`+Mmda3gJ5d#VpCs-$T{<dVp8kt6VrPey>pzd zK<<JfUt$as%wX=~y|{R(Fm@{zHPkBr;iRcBm)Qm^goby)r&-Ju(ZKHeT5lv9)9m9~ zgIOIc`$ktYb~{U6=GO$Vd}`7-x4(J;JC>0vZz#X;j3S#pfXklTk}SAFNU1zcvuvEz zMZxx@&$l=Z8=gWCi`-M*IB}gPl$Y-ohKg$}{l|Xz^%8(T?egSJ-~x$-Rx89YNo2~( NrNHS_!LzNPDgP#uwnP8` literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ia-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ia-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..9fcf22dd77a8187416d61a7c4db8bbdd7593fddf GIT binary patch literal 451 zcmV;!0X+U6iwFP!000006Ma+Lj^iK<{gq1dI*q2=Tbh1MWsIA$CBT5$X;k&!M`?gb zJJpI8V;_8cIiQtPo%G*ubs(iOZL@Tj+1g!hqZh5VzIj8$y#PG7-bN#vw*?Gm#LSu| zkS1hhO~x<eYO#`Ie2%v3$Z(ErH^WIWhBo^}J)GpXjy$mS@8i`)gB)R?NS+WyC@B%~ z>D|>jK*fDiZBs-<t%=iXNt!0f40M$9-dnMLs4TgdI;VkY{tvtYp))jJa}~0#*PGk` zFz4d6GUsA4dC-|Qc7if0^qsK!DRqU`1O~&0ACgU7NKiuvvs9(xQrR!Nx+6;xvD+=z z%akOrx2C-wt>O6>srJOp_Tyv!3OYz+GB&ibjE%iA?F-6EnG<=%BoBqYUczd-D0@+w z4=U%B7JnvxrvA%%nJ4OF>FP6D&bFtPF0RN6cL+4uf)cSnkAsesH7{lsMg>2#kl}~- z%16<sSI!SA<G!>*h*I7vsgB14>4@R6hi5HK<kh<(A+f7T{7J=A=S~n*`GjL|e_vGK tUQ?qOw93+-a1Lgw<dJ?77&lgW5F1?PukzpL+4U@#+c%9?T~12`0013V-4p-- literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ia-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ia-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..1b18168a578b8b4fa79cdf6dc46bae66cbe33a1e GIT binary patch literal 362 zcmV-w0hRt6Py`@k++3=x|CqMG#nk?t)Am)E3X200!X*E0NNSy$2GRi);U-B3aNZ1B z2i2J~th#2!Ny?@Rh{;a?o>xR~LZ>a3!g&PN#zLuwB+ErXS*Bs8NM31kgkiPCC26JP z2ty)k5?pgP?L)flK*7@f17C-eF6qrX0`y>^BJ%IrpyM;kyIiG8CPos_YFzxowM^bD z!~{sZhQ9QeRK%E8@wSDaV1Y~hzm>yMs)C7t#-)7*;WP7gdQ#4EqV=7M45N+Cc`lA2 zv#BT1RDc(}w;6vG#%|5dhIWM_T#`2PS)Idfn0pU;m{yvk8r?fzt9{GHH2JveU{d$X zzSS*_{mYV<`8Db9p_xn);{FH&rtBqO+R%gcoD$DIfXklTg6ujPZQ?qKQ+mqkqTu?` z=UW_x3r-fo_V<LMp4f0<G;ib`^s%dz?(UiWj|t?GW_c+D9yn<%TE8`GiA<U5GkP`f IS|?^kKQHXNga7~l literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ia-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ia-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..38118a46455d2c499ea54167245d333c85d9997d GIT binary patch literal 450 zcmV;z0X_a7iwFP!000006Ma+Lj^Z#3{S~Bn9V+gW@-ZkEw`56^OycZNA^v?88fOZF zR(^5p<NJxQ5~{QQ6K;-4sZ7_b-F3Eg*ZXJ{R$JeEEbAmk&cvnjHX7M{w7VoDY}PaZ zGze7IPzaZ>ZC9gzE^Oa}LGsmyB-w|oBl~`rB-^b6&(QkM@#&%w7+ETjEg|xN&mF#m z-mGIn;m}n3?BP*sz??vWhDkoddZ5&gX{=ApWfMa0G((vGWnM9^2})0D<RG?eL31-i z>R&5!DJp_zn##tW1EIpubE{ucSHhZr%;1TNh|L<xv_i8GX1Pm+rL$jp^*~ON)T@#t zptq*GwbtPL8&r43X1`b*-$4^mCTkN`mbIZ*rh8MeQsxX^A;?oHzpnT7Qk1(WjVDDp zr4>J$zrgTqy`+u$Sf=`l7D@Ne!PQanmE3W@oLoWiSfFj9lCtK_&caCIrx6H#`mB89 zLymGju?z>QxT!f4t9vC?+h#})$ew3-<<f*+gDVtbht2jt+lJnqSy1IGj?UxbPyq)G sjY6gsEpk#bskxKq@)O5+vGOnZPORyx{5PCTuY|e(1FDB7BT)nZ06r|@5&!@I literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/icy-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/icy-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..301ebf0adbafb08edd36282ec70515d26e078442 GIT binary patch literal 370 zcmV-&0ge6}Py_(va$Blght1Izm^~ume_g5}?6?5X{=3?2k7BLx7Rm(VFa;#$g{ZW; zni=~~a-Yv%S{M<(j;QLIl_+yQU7k#T2@(1qNu&v*%$C1)j1tOJM=wn$6PWD;Eg09y zf=~tWjby;Zxam^12?Y@`sFnI%SJOV&ZD$Hyb_HLDmoD@69U0oENQ!!G1oG~n156Q3 zzy}5QgoD(L=;Z+^NQN#r!_d%DmuS6ha}d0sW>8m-F10MQE7rK+bHtxKABZs=Ou^(+ zMQyV!@Xp;%kahsX#KZw;#k{BYrtvc(Bzq&Z30}~MnkvtH!xktVirfW8I7fg=diQya zJ8`3pK0P}S)nVB`GN<YLus{jdGyuaw8#?X&4+9-YCSTkr3GEXm_qmUj-Q1Q)yMTmq zVyqKeR~LoammW4f4;P;-icRhb;Iy_jI=IU_6q0PQWP0amk%`orU|cj`dM-d1teSzZ QlSrpapy`D`x05vS4?#w)9RL6T literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/icy-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/icy-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..bc28951e57b44496f8f1cfb4f93239bb0004ff34 GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006Ma+dlHwo`d=;zq@0ubp#x*{S#m6La65wFCHD&qkTQPvq zweBCx^mNY*4L1UclltSYmI@(t-)`(>wY8Vq9OXtC*M5-wmNmNrqx{@E6SQbQNL7-u znqjN9^`L;GG&+~mWmj$H{F<9#0F61ftzc8f9MV3=o0`;LF>Wk4ipG7;R~t0PKqrY9 z@qu}K?(n7bYAodv$F@ir7L)>v1OgN+_%t0LQQxOAZfY)u5C*F#!ulU|k}{Q`>6#iT z8(xZil%t5Le<k%f9}yf?Nj3}&63UMQGwOx9;6{6-8jneYZGd%g`D?DI_p8{Y#N64h zb8$yzk}o0vXe9CIjP9?U(YXEw*`Ki85psA3os6<r8#f}a4V~2e8_7cI6F7+=j#<7I zf<T$yMJhbX#3>AaZ2k=6w{aqE)P+3N-(WDE9rSRqiM(ofBXYxtPO^}p-DD+c^qZae z*~CvHB>3^OaDk1n%DTyAIA#M9#zlQAgzUNq835_?46j~V*lV=eLWEGx(`I0>C+g+n zE8dfb`$Ksg6|@qml03o}n$t0M@+`kd%rExf-tTDoD*r7{p;yD)egL(uBcf3R0034C B-%tPm literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ir-black.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ir-black.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..0d289863b92f5a842384dc58d3ce7feddb65ea3e GIT binary patch literal 365 zcmV-z0h0b3O#}esa$BlghvCx}m_F`)-`eUu5~Ya74WY>VQ%f9)EY@!}fk&c+gbH}> zMxpeeJhwts*Q`Jprqku+!A~JT|JS)rl@f0!IMH77Ej-R6flQjw;~?V+gFJyQV1o_D z&8AA4z+wuN0#|{5)y}jJX4_#xtM=dbGA?rB#XG`t&Jm&F&)P`IyLFw@DN_mc_P^~( z2kC00E(#DqG+YH|1ORMs)TnKXL4txV+J7oXD_s+sYRGWvBLtqPFeEr;BAlqZ6g{#w zcxSlmBW_!f005w|hTX|~i}900k=UTGNxj4nUDQoxG8>~_hzl3GirUFi*sh9N?~5Hx z_UVoTS*@3Sry80LM~f@nH5m{LHaR%{0}M1nCz<j_9oSw#<goD3vg=zCJqN26>*%Ge z0ocCuZc}k^cxplH`JQ0ZBPm$i#4`-OD3<E&i2uVxU_@XS7cY7)fM{3EZlqaERcdWc LqY7Njg2wv+kb17u literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ir-black.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ir-black.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..6c1abd6af35b67a22756996f708973005022fd7d GIT binary patch literal 455 zcmV;&0XY62iwFP!000006Ma+Ba^oNj{FTh~weh%3;<(PoWCRF@1_K3gjVIH8zi|wl zlgsoCq(!@u7H$PrC;b_&4unvq?>6qT+PTZm9OYJ9-@ULM+W;IG@N@5NG@^T{>w3nl zx-OtbPRg2$-?rO!yPflEZifL4<y^xX-ZUvk(C7HaTPxc(#jQgRWc}-Wb<uE&Fj1sP zh%C^(yoaY(>wqg7yK0{@ENYFE3JBD=sApinT>93H^^>?1A{?9s!u22U3YgB&e9c0n zY<QFAvIe58Un_GiM?w!e)5d{eMul-;RzH-kxHW;m&@q$X2d|s=JX{SStddGaMcIGn z>V_;uq?D57Ed=t`^jB#Ot-n$AC+hZfeRu|)T(TG&x1x-VyfXb0%1W6NdPOLXg&tZd z%b-|PnvN>h6qf&+{29k@>qVZZkEN@xXepmP_IPo*IB)n);$jPm#R8R+m6SD4W)@}> z-?fn8$Jfe7Hl|n3PcEaec(>tfViZcs1R0RvzK2IIE$lVAg@yJTDUx^`+zEmz|8Pzo xZi@;uYU~t&Ry@HMoYOHWxu;(w=8ct4^wz>A6aV@=haL^{^A~A|TPjWj000Uw-KGEl literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/isotope.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/isotope.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..18e9ad32e7be0b0337e9d165baafbf44dd96bdd4 GIT binary patch literal 348 zcmV-i0i*sKDg*$;(m7=t-+peuP80^fR!yhl5{it+39P!iT}o*x8oK_XG6;iYq5_`d z<wCh6hptq0%?gy3GhNIZ{uBUuo?%r^o=!Ld;JdImj)XFEAD!`xM4mtwTwr$EbV;z> zVoFR6`AJXHKBU_Y5zPIs?hUvX5?{U}G*2-FRDMw#l>BFTm+O=?qO)k`<KiDqX4=LA z4WRKPICEO^%v_<jZJ7udaJ2Jfa+q5!Fc?%qs>cMHv5a<IL^Hh}vEy3ncKCp}9W6~n z2DH+98BrYo$%<!VC>F@zsGX-`1}6mli8P)&1r*0?Su6d?#x&cwl3*q`%f8k#FSZ{` zUgp=NJx5W5U#Wn$gZ)T;a8~mJpvb%AwCv`V<e95uGVzP7E()HCKHqc%LFBk#I^R>S uD@|c5UW&WaK~ft1?>_tniDAl5i#+<387Hw*rcNC?W;<+Ad7d1^NB;+of1*(U literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/isotope.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/isotope.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..cee3dc5200617025f464468ecdac9e1950f9ed75 GIT binary patch literal 431 zcmV;g0Z{%QiwFP!000006Ma+LZtEZr{FO*~Z7ig!t?GPC#AR`|!7K-sHdd5>uN(t) z((1@Bush5Q%UF|v?&v<!B}ik?5B+mEZ(hRrx>Pkeiv8Az`P(b0PeY{aO}`aFESOE- zCvcz{$yfZVn7^gJ(=?9Yx%7qzQ)#dqN-?4PgjmWHAWEkAv}{B6nzNkgOC@EM_}<#X z(F+Bsk*B_UD;<@c11<yx9IW`f9HCO*ZbEVPR!R(GaFSv7DI-edDzt8kkqD+pN#^R^ zp+B`HLzJ#c=21aKrD;^;9%wsFKC$$Cs5iCmZK6)5v?=zGo26gt?uPtf5buQ{aU?%n zEP3920S-s*--Ouz!p)&rO-hq#lj4Ye_(QBie}sq(=Fo(nZMCj4IzC_}G^BqfeS+zW zqN!7ixn1U8Ca&uU1Dr!;7S^uDjw&~topXca|Cm!+(t2mU!Vgbf%xWs9LYyPTQ<HnO z*Uq4|r9T48d-sp2Sp{hdH7r{#s%;p<Q6_A^nih6{dzQqLgC1Er)CIdzo0rAIz3{5B ZJW+dtCi&m9we*;c>o?JshtDen001@A)b9WQ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/kimber.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/kimber.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..1b14ab33b7fcded3a2fc00418c6c11f2b73d22f8 GIT binary patch literal 367 zcmV-#0g(P1O#}dB)2(Ucb|^2cZv&D95%J-#sY@SV;|Gv<@3L%1<0!v>v^8J>%?5Nn zN0hG#^3a+UO*I2${2vZa`0qIY^nWBIQts&l`?t|_wP&p-<grC(<5bfGL7aHLAUT&@ z)=QG}xydeC;>!0=+8fpmmK7$LH^08uV4{gVzk7I=mYvHlYlDz?q=sb5P@?P34s_B$ zoXpUL0U~f7PogmbXbl>c$+Gw$L4l*zm&#$TbAmxb#w0#u;0Yr|Bd+97tE&{<b{5Mz z^Kp++TY?1CsgS5)cXnT5{8XQhTe7YpUSbGGb&<8HjaV&2kqLq^pp8-3wj)Yr=cR|} z<BEe(t)_LY3L4v!iE=sy1%lEkPr3O83>aBSZE-^dHm77cj(j$)>B-5Ov+z6qD=@Ia zGRw%mw6r9CnDEqqSal9C610Q_kQea=0?#E&{kI=}!vs)Ay*zr=Gl6GXS+gRy`0$Kp N7G<jlo@@k-`vOZPt;qlY literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/kimber.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/kimber.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..89775ffe0fa4683b62567ba0685328f724aa26e5 GIT binary patch literal 455 zcmV;&0XY62iwFP!000006LnMDj^Z#3{S~Bn9V*21M)??&i(9g!NhWc2s1X0YDvh&+ zWz`qQK0dyk3M-*F>tEsKn3T#4-Iu#=DtEmvUSYNM-G>AT&>T4vm%-a;WcRV(?-$Ib z>jG#HsH`D;RaLU8miSiKaRh@DtIM)3>l8ya<Qz7C$!{HahSq;BPZy2A$mSBs6Cw}z z+}=y-%{nF&PF+C}9<>Hc1QIl?_zW9?s2|f<KR1_L2&2;sVf&kT#keLYJ*g4VwxSiO z97Cl3wKA7%B6y~$Y#ccdDoi7{`h~g>)&yh*PgJCAYSFf|T+Kq*q%IZa&i=8B2Qrh$ zmRGe*BmuoO!>zXlw?CkUGj`2xcYFt(RkB)}urjX=y)wg_l7%v7@Crema{0qSw1-2! zi_&;f#3`-#yZH-DKh{gysE>K7?`V;14+C5skvA<bdAYiR;xR+}SxU;9H#-Z9h@VCv z`02Cokxwbh`B`N+W$k`7;vnvYRDGWyBOrU8;Z;j3c}*@$sI3JPv~3vOnFW>q!zFlp x94g?Xp;O4TBE_w0&SvW5x%?`yTr6*GSN3JUV)}17xn2cx{{wo85Ef1Z008s))ItCN literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/london-tube.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/london-tube.min.css.br new file mode 100644 index 00000000..135bace7 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/london-tube.min.css.br @@ -0,0 +1,2 @@ +P j[2δlRbEJI\;*t`TLRK45g@f?H7 'Or{%zM7iI0Nj2"ذrˋlE]}]¬IsK}DM=bk;6YKf'$[ DBu`iVN*<iR3BY>HgJ*tLN)O2/2[Ej4:'0-0sZc.a_`GA˥O kOK)yJz$j>B4Z_fJ7t +V7̄cL7|jL]UM,HX4*f8g`(fMrf \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/london-tube.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/london-tube.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..2c63ad0592c949b8d049135186d5509302a22291 GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006Ma+Lj^Z#3{S~Bn9jaco(+eMi(!?!U(j=2OJ5-2&UzNtC zuxQ^LUyhIM6K(_~C-vK3EfYfOp)KrXSK7;M@p7Y#Yd=IIYEd6L#?ON@L5ubyFS0&Q zm$Y5mdQiYo8cii7E32|z;(Kn!5j0Y)Dypo?Vhq_p{-$g=BfqiW7#jDvJZ;b%1Djh! zj}M*4XNE7OS7RBMIJHR?BVAAmFaiiru)))81cJU#W86$Gx)4UI7{dM!bCPw6Qt3%V z0CLEG#dZvl_$#T;tBK&4qPAh|fU^8Fc1FEGC){X{OyiN7^hN!(E{ZGW{VuYUxH9|4 zPVSixkY3~|G4<$-9<II7xc>n;oUpCZ^zbfq7RqLA+=z8;=%gOrv`nNvfs+X0xVBHz zx-4M5i&S`&geeSvZ2k<>k8y%F>cTqJcQ8n{g8?p<!0VDj$2V7yU0755SxVCAH#_r- zh@VEF^y6pZLN~=K>t>bV^cbfRg5MG$`#z?Ofb4mOS1oPiHQ7}{O`WEth~#0kC+6k) z6_?=QekhNVf>t6^l4jlXoXyDOx&0=vT#T^0^efBapZ<S2xn2cx`wI;!orO^Z0032c B;T-?~ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/macintosh.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/macintosh.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..e7f762d173328420cf9e75d5a41f0f46f7e9979f GIT binary patch literal 361 zcmV-v0haz7MFb$kC%1j7Un=b09BE;QsfKIXS8^yTgt=Za08+Dnx}e_81FES=*8!@Q zJ}4_&QZ&_!lMEk@kF383EQh+MdD?$7VGiJ|)yMPnz!lTKz)VkR*jB<}K?SNCOPKE` zp6b?~qhamhWrYXo|9Oq(MYPbx{kuoy!Xx@1|Dz2g-jlRRDT)P2y!0n~A{+M7Voe(e z=(vYE8%Y8edKoT@27(1_mHtZ(wFU(;MM{WzlVGN4_!wEH1h~B?(KuNsTx7FGPIl-N zql`l;+EVuo#ZL|RE!`Q^1v=PL-->Z<5f^9~2@IM=nhFc)vN@4~bJfSj$NdG3I-1tr z`Z30fDb3Skpl^VMQ5uFnw}6}u6f+wf&o6n!xv|K!M(2fewGz_|fP}A;GRw~T(xywO zMhH$G!dB;yx=m37q2w)l;CRgsE9=rt?~f(w@fBptt@KBN;4uao$!}a}$_-aKF-n1Z HgP5tlc)qNz literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/macintosh.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/macintosh.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..5e914a0eb2c58d6357248508fe1c288c00517d91 GIT binary patch literal 447 zcmV;w0YLsAiwFP!000006Ma+dZt5@$eHEnr9aXqxLn{x1oWw1;q)Be#Y*dJMpGxDd zFm%;Fj(vQNzpA{(>S+I_O8~8n>zX>8S8w5boxI9hADd+CC&s-5b?TzePB$+?hzYW4 znuHb=8Se`GWh=&Sim#RLdvsJ{UBsaT2)f@+A20&>_&Pm9c8W5L<i(S+OmtV*L*~T? zP=<!4+LegR)*_XBjTRSl4tiwfTN^%(g%uZJA1n~AKOq{BmZALQhP4(Sg5`jS%eTgz zW|J_2W!c<IWK<e@>Fon`rMyc7jt(r+w(na}^HeRQv?^5^nk)NdS2yGjiEL}}R!9;> z@48Ft9j(96bVq7-LhPSG$Lm;(O?f?!jiPbg6UoZBBSu5053~HHmAlP$-ixtxFwCjF z`kDL*hc6#BPc-JatAE)O+YviF2PPMPKq4%*U}T=5?RZJXyC*YC)Aio9!0^Ls6|)>l zR*2)3(J(6tA#{DMv}xM{>5<^RhsRr5oYxTM6WZ>C0G>AX;Rwm_|5t+h+oBQ;78^rg pjVkbk=4h5m?&TMOX=BX&A$FUZr}p1;c0C@<^&8>+Mt(*F001AI*?Ry0 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/marrakesh.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/marrakesh.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..3b314b45eaaafc5f3f6506959b90c67ab850e403 GIT binary patch literal 369 zcmV-%0gnC~Py_(v+GeU=R~-MqgDv1#)1piDNgAdtfb8u|YO@c8OXDl_V8I3yzl(mN z<RsDVe0TP}I~1eePOR#h6(|)<m>)1c3gpkaDE(=LDtJ#tT#rmez}**&Q!<;!B;W zQ!2`ZNCgE@Z*eITB*=$^(3;p&H`6|(+l~|*VF%wxmNE0qJ0f(aSu*U`1}E=X-sL{E znsnc9xTgtXn$?>*pn!~1Oh%-@fvY;+wlyd&Fzol0!(rQkyP+oLe#Y=KGl4_`!bfyh z6}x2{vrCM}OuO$$#6$qfkk@!m8b77yg)dSY?iEHD8qZQ;=Zp?>lY;O`Nz5I*cc%9H zl8tHgaqVDL_sjlvoW|#A$;<qj0tm@t2^9Yi10Ez(s%{`*_@v3BvDvaGw<T%Es4XaE z8vDnrE(*0TeZIx(h~X)K*#4eiB!~nhz_WZrVH|FjqxVcVnV6&|jLTuuN+Bxbu6fYP PIZ@u%OuFE76f~nBr>nSx literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/marrakesh.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/marrakesh.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..285b5c532c51198bbd1303b647169b6d0494a2cd GIT binary patch literal 461 zcmV;;0W$s{iwFP!000006Ma+dj^iK<e3eT3cN;a$7fm0g0^+1x32@-tHmdsWt28*9 zcB}gb_TU-YgR~7KXZ<JK9B&$Bx;k^$P2sNhIV!ETzWzAm403i9TwXeF2h-Fa`(0Y@ z_A_i#*8wz0RMyawqAf&P&H1ggeGdjHSIUy@vzSBPQJj@5%|wh_2cDz#pYzoXM&iIH ziWmul2>7h<<>}2jE)|Y-LPEr#HDD~zfQD5)!+W68k8Z4=#KjOo?=(l){^MS8p$SS? z5+buAD-My4Ba(it%w;(uc&>?d=miiejJ>e>rF0^#3CIneh(u&%n&&iJ%|qBkl?oSS zzs|`6xfJ1yWf>_A=&k8)tu?s)0@a<du6DcQJLqJT)!3wMma(B%rh7w~D02p{5Sr6M zpRz-h!?G8p@ua9`W984}FED;t-_S(;uyplzut;YQ9b6q1uL@peY_$a?h6UPAR#Miy znOT@k{L})$PoIeWKe-G?V$7>b^7NiGs%;~r2jtH^yn1P6uhA_QVyt9>z6bQ~ z%!69K;+#A_78P*RP%GqG$p~L@PRFR^nSPa+H}+$zf-zdjf1gw6)iC#OYwVhtQ3L=0 DnR(yh literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/materia.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/materia.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..83cd3c82bf9fef133933a2530a61aa04511b7b97 GIT binary patch literal 366 zcmV-!0g?V2N(2Dp)U9bHJJj)QAms$J^6!4%rFx(N>$m{2JO58=q1;ipRNh%iI$+*` zMFlvWRVW?!`%_!d&*KG@s@-2v+W%7k=>LFdk?NNdPE2NvEm(`Fs)C`|iOpT^m}iir zigYJec~Pi5_>Sg434oT+>c<xy?e_}dMhcekFZdc>TH^EXhR}5-aw>nX4N88IX42`i zN%i`Jd)`4@%<K&lP=LmZ=!`><a+c>lgcv+7a8`d;4ofKuCW0DE{ZQa%)EH{{GR;)D zRgqy9=w0G`PjIWECBs5sck{i*D9@FudD+xZ>;Z(c(qSosBhd(>#`smyV&=-KTnuw) zhIRh6LEdqz!F;aHdmFkL`>T^WdhG^U3R-aXyB9EJ8>KRa_KW8fId5Wd-tAkG4X0MC zB_i_%2WGaCg@TX6LQ({-;=Pl)it%37ynZ(rdUd73Kla0)m*|5C?egry$ORI$YH8#u MXHo?(HWAbP1A-R1vj6}9 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/materia.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/materia.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..3c9c35863f7b28f8bb70267f3aa309bc15d138b0 GIT binary patch literal 450 zcmV;z0X_a7iwFP!000006Ma+Bj^Z#3{1v2qU8;%#E#+g7lei^En&cAamJ0FjtI{M} zSaff$J)W_hDK`R(v-;z27KD(xZ!3FU?d<hFXSq?vwI5uFO5l+Jzx2)oE!vOGzS>mH z3|qCWM}?fE(W#}XxAnH0>uYX?0X3ysUDi!g#u`DNWe%K+D&~zv2V~sm{Aq*c6kw8w z86TLZ=Luh0Z^i<bG`2+@D=a956bS?>T<~caFi}6YF>V?zrU(bCfN=c}oCKy4G<~K) zkng&Ek^`bNzmocrLqZ2C$%cVpLiurEM!irM+-Ogr>6As_u-m5tas}S6;*^r|WWVC# zfy^WwPYj-%(fzG6n$}+^`!lt5Sss7kCW|Z%#*N4aBPVtLMy!zfj7}1YQx<NR*l!Q{ zMWmvWOq{~-pPOHB{4!3YTe^_<`5O$S*kO-Xo5@Sg_;zuB$wG#9lZm9!Z?5HM`#!CZ z;HS^R1vbVm>n4BEm=zB~bltrWvg;ybK!WETUR|^>)@ZYNnhn52^(f$A&){YL3FqSR s@k*XXg{>q|l1KPLa|+`m&+?1H{9<oi```AIdUebF8-l1)KT8Av0MAa{yZ`_I literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-darker.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-darker.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..564c4f3e135c6a4c76c10f06108b11ee89cb83ca GIT binary patch literal 364 zcmV-y0h9h4N(2C8++3=x|CqMG#nk?t(^lwuKp7!S^6!SE)~abB9Z-7{W|C~grn*e% zKUSfS9bwfqD^PMaT|kU~3IP3`7lnH+VM)na_&Q*1B$Qb)F$m8j%oFKL9uMf-EiP$F zLen&p#ML-B>uTDEblYKqh5Plrwu?U5^*ds7Z=s^{o7$k^Gt0YNq0S=)31>Mj-r;QK zZ5qM>G@eCI?h34k(u+3Uwg5CDaI*J}au`X2U@Ca=sh>jR%)FsS=~SlX`b7F@qj!PR zBgkzjYKk<GiD2&Oy}0<RFm@{zHPmYW;iObp$m|Rj!pys%q%7AuGr->ZTJKvnrrF1} z2D7?b_Km4#>>if9%&*CSqD__+h5ywHn6QjOc|-ZRGm6~%04{rSOS0g4R%05+hpa9N zwjX`I#c_D?WJ9dGr#w52GBl5Q`R-vDxyCYo?1x`30YK0$Prd{$kl1TA3l)iA3imjJ KDtNXRG{Yb76Sc1Z literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-darker.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-darker.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..0cf43b5621d454ed25034f12e706fec6ce9231d9 GIT binary patch literal 452 zcmV;#0XzO5iwFP!000006LnM3lHwo`{1vPAbxpZ?8aIB7HNX%#39vBSnzHuauP}ho z^NJUkX}V{IhFgKnN&gO42SO;*cN=$EY~AH&igK&1@7_?#0|S2Uy^Th6Z|je=Cd{Ji z0&3)>tSR`-HmxbY<aQX)P|5v*v~rH1FLAc!T<mh(I`lx+zfVUO4W|f6B1b}Gp;Drh zPxr3Y0arA3O`9_;YK@d{3)DCxGcaJ`y|rR}sw{^H2d9B>`3JlLrVF$jOBHg}ezf~6 z2SlZKt<1S@2|ef{8wZ936~=*C{Y2exYXX6xV-;!le8<aVHH5IpRVu2L{j+aw$UBMT zY{xQ5Aa6~7mDbSm8&!Xzu3fDTub{~yv$1h2>e$FD)4z~xlsTbSgyLA``3CoUQQt*r zI;z4cEWc0wjN`ZUqD<7s+SOOIRQ4WwytqQX{}iIyA-#fPu|j3?k+SB+%);d0hZYL_ z_}=))#(c~9<T4to;u;_+3MFNR3`p?U!?TxW_8MKa5N|)%SpEhM?gT;APdFtHw}%Qe uYU~t&R>cf6&9u#xJj%}!(~I35vE8(*8Pk8Sm(a6ee*OYb6dT}61ONb%e&8Sg literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-lighter.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-lighter.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..dd996e8d89caf6f8bbec4c2c4f152f7735da56cc GIT binary patch literal 369 zcmV-%0gnC~Py_&EbX%&d!|!Md{En;j?YH_<5lllUdpm<#`y{GpK1n=6AzDb-fX?TL z@-;yY9YEDJD^PNDx&l7@&jFzSr${T!3UPh8QqpaZ=gyGrN^2`^LNkg&Wt|_J#K>%u z{=Bv{$zp{Ftzmf5#k3E4+mV8~`whMxD}C(CcSPtq2gdOG+92fJ*v`t7Xi|LV3-`o8 zoXqHrBT(Qxo<w8XoZ~b>ncOxX1Q$5k`Cd89H7ytvH9qlUfS*aJsGP)xCFWX1+i0V8 zf#U-}Z3!wn6%(z<dw4H2ekKSNOO`go3yg47>nx;p0?J`hn$VVEmGaEMdtKIYU(BeZ zkLwObb+hbiQ`6YqE!Nv>QqV>-X%zRrh5;jsDHJypp*tnZZ5e`PS2riij#_JCoD!Ap zOzj-mm)>sD4=<i<h;8l(Ms0~^#yMWfdk6+avdrK6;g?JxLDb8mPXiNpW+!Wuzqg!b PG;$rvpa`Dq1x^14y9=?7 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-lighter.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-lighter.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..6766958c89ba49b00090bd1aaef14c30dc980a7e GIT binary patch literal 457 zcmV;)0XF_0iwFP!000006Ma)#j^Z#7yb99%4iPgUgoMMOw%rL{9NTNRcZd*oUxnBv zuxOQ^c0a1BAK^w|aZ<nh)q)UG_ibq}tIA$(vzHrXT>G)#aK^U>2K?MR6SQbQI+(sW zZPm6O6>^eBrxMN)u%6><ZiWFhJz}C3v35<+XPUa%u}$<Fiw?-R&-rPC<`iI}h#nu9 zr)PyPrB`EtOB&lE31LAgqzE8T;Q~*?fC>8Ejd7E>=pr1f0>bqla1xkGsp*-7bX`@} zsRtlR`jyn@Y!W(9i8c%jQ<fhGX4DIG!HxC=nvR*I-id7<t^)5@QKh7;>>s<hXFfnW zw)^H0#FI0+zjj8``UhoyqPE^_4)0Q@Ls^WC8<EFGPU`**Wg+zmog@^;Oy7L5ebwZ> zNJU4PFoofd$)9ojF;1k3x{$m29SkMgVUHJ^z{>^%s}@_3EacQ~IwfiJo0<9fh@V<W z>BrB)1vbVi>!vHCF){AG_TOxOD}?O2m@**2a}Te#v^cNP<`b&<R&-qykAppdm-$zm zgNOT~JdFxlNuXp}&Vq9?qmpO(MPS}o!p5p>$~3kAmM7Qi!QB1=a%Gi%Q3L=0MDpE; literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-palenight.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-palenight.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..44680d15266768d38635a0c89a34382ab0616d85 GIT binary patch literal 372 zcmV-)0gL_{Py_(v+GeU;SGGQ{E#O$w{<~BU_`Iaz0?6M#liDbE6fRY_P+mZS4JbBZ zQ(Y$XAFGgKds=nP3Y40fF5(S;3IP2dJ<QT1d^+JmqRdpzT9F_KhGG{=D$p6v$W0aL zh7W#@Ub)33%`kv|!U?URbJp3k59zie1q=Thd;?yF#Fy`g&}~40%I|A~lJ_j{a-EV* zs_%T^o;ZlJnZ2<K3eb2KoiPdy0!$fiTMU8=oa}tB92VLv7%OT*>c<p66KkjqCiPQ$ zt)hLh(Ywg$0p)fSwTm?I6Gh&`d!g|YI1g7WZKxL*;iT4C%<P1g!^FB^q$)Qiv+!Qq zTJK9XrrF1J2eZ0a_KmG+?CzGl%&!SeZOpQw2)~8_6Bbh}Zzw{4Mv-gl&}C0<NtRv5 zYAWM+m(@kV_NC9aIF2BmT!>ZolxL?6DD#+?@&SfH*jV=O{qRdB00`RU$*05x5<9Kt Spd#}W@D68G1<wwGrvC#;c(gtM literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-palenight.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-palenight.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..32cedf06e28b23d1372450ba0cb046576a269cc1 GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006Ma+Lvf3~V{1s-->mfsvLN0s^<BJkp9NV?!9x}}N_fCjq z0%iJUODpY4UJEOsIO|{G=9rYq3|-}}o4vb!FHvE&_1#CiZ>8Wz&ctQ#HX7M|lx-<1 zSYVs33!p)uvW7~kvZ{Z|CBGGR9Kj&v4)p=reaaylDBjfVf$vh>I`9mw|6Hyv8iA3` z6e$uS5BRL`rSxVU6AGuUs8fbVtpQU52^v=Y3>$%3->0#D7MDT@qtgsw`-geOxF#rF zNl3q|f7DH)V~C_*D|5+51kW_l#*qV|!ZdQLUs@N!nt;sUDU;NVI0#y<W+7~nN`+b3 zKj-3(d^G6=KhVkodTWMTZw+q0Kn-W?>fP@64mulUwKid8UK@I4hBuUjGH37#L7p<b zsGw=cAUrCKCq+G_6_3qdVEVFN(nfvEQ~iz>>Fi;EtIJMmrR@9FD<~c_w4be{ta-Du zu$cI11cIMF3m^HEs+^x)hErxN8JiiU>iYy40on5muU=Z&YjW8_qHarINj!}1%!0~a zaY-KU4;66I&?#hEkr`H;^D!xTre7tN7kfBjU)A*g{##C=SHpb&1@TI^@KFQ+07bjm A761SM literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-vivid.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-vivid.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..7f2ef05247e22c9675a0c22261800e5deaf56cdd GIT binary patch literal 371 zcmV-(0gV0|Py_(v+GeU;S5W`iEjZS;YC0Qb5?U9++}|#>DS|@N{TIa`Oe94Zuo0W; zGNJ!ig&aH5s%uuD<YBr9AN>>n`oHp&P>FpyLF#K2AnTqO6AZ;}AOHcHXY8hm^bSN6 zn5A1>(mI3`sq_i0k#pA7v=8aFBLxfh8+<)p`ovf7h|ry(lFILEgOb-Q?{b}zO{(vH z;hs2%vzfh#3kuM97M<xR5CKFQZ(9t43!LnJuN)TIEEp?leCj6@Khw}qrO?Xr%(aU4 z(MInAr-zi=Rutz6B#OL;_d?^V^gO#_X+yoh2q(49LT0D59HyZQ9iEp9DGa<fVXZfl zjcN9A-NCGGmwjVu8oM7$Ugp<iAWqT@{jXubgvAuf8;a1KQRF^!=&~obB+HIg>jGbk z0uEVS6l@>*e2e4o;mLtm=AQCWh#^iSFXcT9L)%#9@BQ#gCPt|U?egSP;sS}?R_hj0 RB@?-TE@w~$&-Q|5@B{b)w2%M* literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-vivid.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material-vivid.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..1a7d566bb7c7f45801be31ddc6253781a4eafb93 GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006LnMVlHwo`d=;zq@0yAsM>IZ+#m6La5@2DtHD&qkS22){ zp7#%Cdb($ZMpy~OS^o|<$D~xIZ;88Ze!1&?jtZ--Z$I|sp6>aPGjZv?jYhT~Raxz- zdWLP<Hh>0!%9>n4DniL&&ToYs1~8a&bzRe1rW~?9$7w@FvrBR7z%#V|bH2K01V%PV zq)3Q7;B$vBr8n!CP&l?llQKMN4VVZdXjt(XHbAC+Ok@4jTnZr!PBVn<ALbR~Iz#g{ zH`3KLAvDP`#N5AD=CT|SJkwb=4jeKnj03m&g}M;d1Y`zJi%56amt|hAW+7}+mkO88 z{y7&9<cb71$tw%!t?6%_HMso-)t|9#%JTRQIvHiPHeuzmHuTE$ZzKz4&fpb-JT3BN z3AD+J;!$Zlsmv*@_}Tmg#&7Fo-l&huRA13zK6~il>VC+%koD>n6pstEo2;a)d9$-H zoA_yj3_pDqKJqbDIX}4!$E;ZG4zwfpLaMGykO7cA&+zJ{mAyu{Sco=+@$6U_+?fTn ze8o9=d^}XZQA4YcX(bYTr8yl_C(rV$#Qb8*Cz2E>Suy>$JcnKlbN>s)wze@*1ONc} C*xG~u literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..131a1775358c5e1b241d3433ba6609e822836636 GIT binary patch literal 366 zcmV-!0g?V2N(2C8++3=x|CqMG#T1Huzg0q}i^dm1kz3RfpF|eRPZC2YM6(f_>N27K zScN@ygjLt9K&i9o0%G)21nBR)DBN=iH&impG~XUr8woNujBvpX&p6BzbVG2NtGL+W zl4c|{O*09uM!{KE(>|oz4ihcnukQ_AOv$d^5t};;6_syllZMYM?{bAUkLd1x)t>cE zXOp){2nW$P3s3F}tccQ!BHp$DEFyHW`;BrM`3BL{<0Ykj0+BQIhB`{8GIiG{zAtTf zmpMIz+<~G_ktQ<nn0tCJF8(Tv-HM`?dJ7<(^c9vfJB5WX^)47G%eBrNus6Qe`<9Jq z_I0g6R=3N(an-Ed!;+WzH5o9p$+DtIzj{Fv$|#pNm0vtV<lYBx*^^t6g6mo>(>Ok4 zby2YW=<_X(BZ;RFV*7i_v(r(A<}sJ=35KC-EceHL_<9Ke0=t}i30#2KZM6Uu6~Pql Ma%NR<b`ms$A44gxb^rhX literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/material.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b9752e65dad18f5526b62083e3cd5c2a99c2f474 GIT binary patch literal 457 zcmV;)0XF_0iwFP!000006LnM3lHwo`{1vPAbxpa6nixOE8eoW=1UQ)7nzHuauVMhB z=e-RxJ>A35a4WDl>tEsKKnP{JwsP0i&Ru`zEVtVF_5-CnGT@ia+rfzTquf_z)y$Yx z+XmFgNm-Nd)z@~nJ<Rnrw|$R>Qf;^0V-2xJ(4{;pIT!nww+=m!^`G<64TjSIlSIsf zfrU(oQoi)vtOKrSY>PTp*q}91>=vkTL1v)G#CyMr_0wcAMc6wHgzG=x6)>Hk>6oUF zoBFGcOIZU^8eS`N$swT!on(ieVM2wmXI8&Z7u=daVCa-Z>W1%m+N_2UR&h#2d9r`v z;*NZfNY3^wk_7VBbT?@Yt-n!qXKL%s=J*aeS!A&`Zbe=jd1bmcl7%v7^omfNvOKS_ zX+(Y(rRk&+r?C97`3sKU){C@JKjd5e9xSEUV~1Cl$eV)@*$&eyC^lrMoP4CLd9$-H zJNW4e34Z!4{J_T8<^1F_8na>vFewTpWrXxd@O+0?FD>jfx@;j{A4*Jr1ABLdpz<f2 zi^uyz1sXNBia@JmhK1%7#z~lrx79*)>m^=85J-}aPxHO$Xnx(YKxO9TJ_JWc0C literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mellow-purple.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mellow-purple.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..fa5045155bbe02a0631d544eeacdd61c28de53b5 GIT binary patch literal 370 zcmV-&0ge6}N(3Neo3m;4cIAQ?Y}+6$*c$wIC~{3(`9>CHgfMVhBn7B}d=u5FFqMEh z#JSxCyx}JH$eInybmJr~j#q-UKS6kY^yJ&85)L>4<`vr{X_`O~IS_&iELiGUnu_E? z4jyqFbWbv>Qec$>t6F-_-Vrw&B1$y>zoWT>hau74cZcSvVI`3-YLkL{M+@n*X+(AL zoA#`8I+wIHGBk+9IXH3z;A*PpV;zG377#jB{6aYmeS2u);S$o`V8Cf~b_}fnv~X7^ zzE1_5i=3=7=As^>M$}Y#$X$FdEnb!Y?UI_7c8edK@&y*N+GKUm>^v|4tpVq7J?KWY zH*UAd*OdlI9bR$midox}i+Xw;`VCV97#@D{g2q%)EN!a3^C=R?UCOR#-h$K{MiazD zRx3Ap&-G-bpu-5k=?r0$_d#V)sB3Nv7w-XjwQVc+zkc|3iJFzbET^s}9zZKL8tSKo QlYWOX7^50EH;9?aA0hRsP5=M^ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mellow-purple.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mellow-purple.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..1bb3e630088e4fd808e1471db9040f33e13d3f45 GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006Ma+LZsITy{S~CXmdKF0knl0cmvQjo*seX<5+VM56=J)A zqJ10BoS8G1W8oxJC-Wy>J(E(~uC4uLMg8SAdxbMDv~LR3firRLf*Y)C-!?$#c0XfQ zZ5zRWK<#YC*Y&2RA9H*yT;GGm65A3*X^J81vVXs;>3*C1&O>16!u$O6gB3Wii6VL8 zz+)+?Kt1JMoo7Ph*jBp~;e#=NDO-YpMKQ~I$aU|dxG;5=TnN243}OA31<kn0(EQ9@ z5F#6B5*<U#%^Pjc#Y70qWZI$UkWq2$xie3tE8%QJX7QLw7$bz$d9#MaxJq4WES>$b zt2?q3X((lo7ZWi!+g+8jxc&y+ov_^za(D%uB(hkWaI&logSOoZ%1YZ41dSk%g`QBs zi7a=~29G+|lurC?{tV-{3o>ss3}vdX!C|%oba3&xIBy8yo5dA09|}}WI?~R**jbzv z{4hd>AK$Am@G)iiFsTg3%t$FApZi-SwNeSv1G2{%p0%`)*XWCc_D!?lJT(u!Ke4FG zC!B+a`=KI^23n2GXp!Ix&dE%jJkl=$^Tl%Q5BaH7{zU&x&#q^|-2MRvF;gc?1ONcx C=HfB{ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mexico-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mexico-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..575f70e8a3cabedc2d4a0f8eedec19ebe59f3710 GIT binary patch literal 365 zcmV-z0h0b3Py_&E++3=x|CqMG#nh_lY$n3Tcj!Wx|J$WDMNsI{{NJk#!XTT9bRB?d z=?iA*1goxDffBRn0%H8{0ic&mcU4C&)N<$nSgQ<ATV^_uV<w@gxPO`G1aY~=<-VoR z31UKP9BjIo_95MNq@Z@c!B>$|JAM6*2;Ez#_VWAMK;$#ayPT%6CKAzTIW7WXGp#ob zL4keTL}9w(giB7#c-wR^xWH=fd*x6|upkrEXym65KQnLOA~jM-d#xgIuu(eC`UoD~ zBh*zW6XRTvS9vcq{wj=JOV<W@10$@8pZVC%pgZim5AcF%!<B`1<m=%r8&m7!x`S5T zEqiZ$8spQFm-#g@=;DdShUu?iKu%}!*$qzUmOSOr2XNVw`%JnWxi+XYE>e2T>Y_O8 zN1t!89vYq;i0$qPMqNfqY;s=8D+i2RVA;R-!!MZ_r>BrFS6>1VxU&~(J^U6#8ZLWB LdP#7z3Yy^$$HTUw literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mexico-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mexico-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..9b80c8aa6aa0c5af1103aa133eda6c093a34be38 GIT binary patch literal 455 zcmV;&0XY62iwFP!000006Ma+dZt5@$eHEnr9Tj(!(w2uoPU4n~G|3Y8jtcSaSD{H( z7`pNw*FHJ^I^{-SaZ;cDYC#C8`*v$DtDU{v<|sGHxb|&Z2Rks}=iZr7i}tOngUzs2 z+j>;UNgAD=h&tGuUvo1Is43-G9W3Su`V`;Q!D8H4bU?<v&!2YGoJI&GV#JTk(_@EE zPp`%Tmo&A-K4#dc6jCG*sBpojVZcOvpT@Y*TnrHoRsrGqFE|NIC20CgjQ}gF@*|c5 zqSU{V`kY-t2P%~v2Zjmdr-2#uL|t&BJ%OfUUM_E{U6q!r!24C~Qc~{hmtWkGnWWn{ zu)#>;$r;^WJELj+jj}&cyWeaMub@FFi?wkh^4iEr-M=VVNPR*l3B@s&-)-xr{JD!% zbd-rx82+>QGfv;eiL_BS=Bd6$L&<m8<HaWOlGU4LySRd6V}^D?O48^TJM*)MA4W*< z<9p#oHpN%g1(ng1D(*RS{Nq*#*>w>zAi?7d&sti@YqD8FO;v50v~3*h3B1g|;+#C( x59Mi6*h&H=d4w-&1~+!{SbmY1FP63Yr)tV1tN%Vvp=ZI|{sDI30Zvf_000+1;m!a6 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mocha.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mocha.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..3b0c30ab74d13335e3dbf370e0c640be4c98401f GIT binary patch literal 370 zcmV-&0ge6}Py_(vn%lH`yF#1W;Qa$eg!%5BMaeZIglT&h=1_bTdQ9C^@el^Ngu=X- zh`c2F-?rcHZ-ruVS9?-*%?gyfoGwofehL8n-!c=MFngVFAyEnuvu?dK9Sp@TLZyXb zJj1|Mq>IQ!OhdLoNfQ`D0hZ7j_)TZiKA3Gs3QC;8*RawOU%VqiHz|pz%-04b@78rr zr}HM&Yr;KeAe!mDQ2+|i*hFK5!H`8!2HQ3UhYM6SuN+F47OVj^miiIF&p01(MZ_3! z|5OP}ZliUHdY^EsB2g$baTJjE@ZL0jMvP@ULmTQHj8F}6mg;s)!eN}7Akd-K=;6J} zYrQXaG~UOvgI--P`{836=iTB;cTFg(AX-rNHw-u#Oew!12;+?+*SSxY9dAj79eb^d z0VV34t&4)~OYb%qhlQsIV(WW?k$^ZsOn8?!82Z^{`QQ6tl8J#4VZW?C^-Lg9XHBQ2 Qf{Bimawb)<*#u4R2eFc@kpKVy literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mocha.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/mocha.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..46c93a2158c3c52ed2e157d8b8f27be15ee1ec7c GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006Ma+Bj^Z#3{1v2qU8){XTFS>DJ8?^nH0dSoEfwP5SEWg| zaOmDrd+Zt8Q(+}#XZ_pXdXQ3?w%+#FRncGXb5vMuUHu_*QHlK#L0npA2P5l`Ep9iP zYKE=q+LI>1%9>cR-xZr(KIhlMb{!dxxsuAffRJNoV;n1JK!&*O$pKsUIe+$p5j?;| z5h8v-&(8{9N^iCYp?IvbGGuVjnm9C&q-oL5Ku59lV;buwaUsOi^%|Jgf59n09ij0v z3K6)^%SZ>zQNLE^lAcTsbfg_Rq=@okhgQF|&V)6d!SE?fyQ#4J6_=~Q`&Ce>I4S$* zojs7LNwY&yMWvpdHSMjjhSy)D+B4T>o*&;qC!;LZCag?rW2a2}hB8y;OinS$Q=&)0 zqQG<)rTL^{Pie)^<}WmUStsL0-H@jGGgyvqM=f3Z<S;}DyTuh04hh;!R#Miy*_oeB z{4_#@pFT4;;25fUH@S?*$XEexvAAbaHBEqY#PB@BtCtq`8vA4+s1AsSAfCGZ3|^&Q zaZVl|hw?mXsuhD)BET1%(=#Y}re7rHi=~s`p{U~4{#zbHuZFpQ1M%T_5>W&I0L6gb A*Z=?k literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/monokai.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/monokai.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..8cfb5097a6f3504197427b2f2a9930d59e54d3db GIT binary patch literal 363 zcmV-x0hIn5O#}dBYg?*ZhZjX!@C|qC+i#VW)IunGJA+!{Um}avlf)zaMl==RbXK8s z;4h~Rr0SX#D0w+ujvoCK0D6x8CM}|u6Rw06z7VX|3BzD0cBKO4OW+xMsUp2<wdFe5 z(vsGZ>HvLBXpP*9E~b6Rw;d^1`oG{C@G>O6dPjurLSm`>y*4QMET99Ol1-}b{@|WC zh>MxMi3bYMcv07xY#@wH(rt@DaDlVk-<88s%YuobCZv8s@H34KRf@oJG`A``%xv^7 za(+m-9YqzDq1B4Kr}s+ZuVpM+v$dgKV1%>UXEC!=(hk$ug^tvK5MbcFiEF)Y#h7Ow zw;jytcG<V4r?G!npoD8OP~m`}!tY_gl+6^&8=BCcQ{*;w$+Bm+B-@Tw>x?M^z<p68 zvi;~`OXCRP$%B}^CkUVdK1bxWe1KsX70dj4Km3u2bpG4r*_VzBBzCJt{WdpJ71?6) Jyf}!M!4E0ZxNiUe literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/monokai.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/monokai.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..ed491d3e967e04178419c5eced5559c9c1fc729b GIT binary patch literal 456 zcmV;(0XP01iwFP!000006LnKtj^Z#7yb99%4$%<Elfxj#ZU--p?X}xGM2NeuLeieV zvVTr@byYtq+zQCf`d7F)CWJD5yLZ=3;jZ^N%B{A({gAb+Wq#}!zx3WlBifI=%IiFz zVVkxMpn;>ZhDr|2q29xs-*P()V32ZEQSA!KA?qp5ibmGO61NUKL+d~1PZtfx$R>#; z5@Hwdxx<&zn{|vU9NVl~GF{Xfa3K(&VZ~?I07U(m#`>wbC4?|I%@DSKm{+XR1f|c^ zNRyWpHNp_7f33_VJrO+9BpZhg2o=Vmv-*WP<JJUZ22V*uG}TVhay1KKvvjF2b@tCY zdmw*E4xOxM+X1~b{Y_ef+iy_)8QbdX>-Y{j8D+ILZbe!fdS&`Il9@7R@Crekk~}LR z&&dQ`R2ol;IECduo4>&LZM~q4`k1Er9WBz^Ll0M%$af&&u)2ckVuH%aO3IoyI}5Xk zpGF|~=`-`O8<#5QCzs(!ie)JpkoQa|DHq59$ew3-_0q~-qe~WIQ12vN7Y27`L8V`D yP97hJ3OH(L6*8^(0$*uP&!v-R`Bh@R7;*D*zoPkXErnj)a{mkNf#Ek!1ONaA&e{wB literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nebula.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nebula.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..3a82ad715704814d7fc27534021610b5995155ca GIT binary patch literal 372 zcmV-)0gL_{Py`@k+caf+zR&TDBv2>lSkuJi>?`@tauLF$y<;v#QRuOJQw3YdB^2gt zh@gnbUQ3gvX?mxR4WeJxtZeHAC%GI?Pj@~A@cchg5kw~VHQ_)AfikvSde+W`y$*Cl zlDJ9tmno_RWRRl>YgDKNArZwyR>yDI8@E1LH=y8(3-}sATD>RF0MLbHsARb|_;^pV zHgl=Tr1yHgJ&g~oOkVGY38>h@SOg+QaT20+or1ywQoXDkF25?+J!mZNJqDki8%G#r zgvs1X#c$cl;1Xh+8Q1*?l^YJi1Mlp4X8c6XgPY8TcSR8-PqWmhea42qi$H(|5s^c8 za8<uJFGG@iygHcF`MiA`r6HcoS&^Ni|C$hxgZ&o<9OP0eZQx*hvd6LW*}TP9N3yP- z&^(1WhE-bSxz(30Tcc@MaEcK2a*Zge{vnAnKI9F3J6J2n?w+kN0nl++N>{xIsH-np Sor2W_d4zStqzAT|m}z|qPO|s_ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nebula.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nebula.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..95762bb894d1875f0c027cec26633e063a9b4d2c GIT binary patch literal 461 zcmV;;0W$s{iwFP!000006Ma+Lj^Z#3{S~Bn9V)g!TFS>DCvi)bG|43H4i)0xSEWg& zuxQ^L``E{q6JaG5XZ<_e97w55*KFN&wRhM1>=jm9-+aIh7#xlq#HI6gFtYh5%d*<? z8MbPgfEooUYf{P{>TSK5<7;929u1`!L)KPhj1hFnUsrWq$C_*F&;wcjIX~TC1Pw4z zL{Auapyv)>Qg7CQP&7706(fAm8Yvc#sBuxxK#!^PV;bwH=Aw(RcNz%Sf50o?IziJj zHBwa-a1rT%DD|(Exnz^jgHE(V&oQCG*mJ92N*BVKKw#*UNDjM0dBC(>4I!*zmx^*{ z|JcO?nTzb&!-l0R1oGB&x7He3f1~Qo)Kr_z@f~y$%3^K8%Dgu6%5-li3uVse6`?$3 zdbVdJ)cGz-(@CY8(u$wWUvT`kUZ#!uAy4%+SW33X4zDg1FH6?4dT|BChYW2eDJg5- z>@3V8ei|XcPoIS!_!zUCpHxO;-lk-nvwI;`+eS!_1kW?PYH1;_(fvs17ZZ@Ki@iHT zQ28s)!Q<mlfkusuBG4)+ZoxU3v6E-|MPR;I{(qv{K>8~GO;4^@!QB4>_rmTcQ3L=0 DYf|3n literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nord.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nord.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..d9140ccb22cd264743238e3cc6c07df9de21ab44 GIT binary patch literal 366 zcmV-!0g?V2Py_(vY+I_V!%qxpfwx0MOkB>slFyP6!nC~$b0{8#9?LgXuqAQ{g$i&w zt57=dcc)gU>Y5cOIh(FPw0{Z!{T~D*1<qbh*rUKW$E=GWO@pD>9%tMM;ORuEQhLn^ zDNV7Nk|uoY0TM#19bU9E?StEPq+l8Ug0JDFB|d&fgw9i>sQkS)D0%nLflilAs@EUf za}MHSX0IE80yJJkXM`;zk)|-)7K6hD&g$>VVHwJTNkEOIzKihF%ac{Zu~OLIs)S*- z(YwU?7UEV#0<5#K4ahrruQYxtjI%Xc8|od5a5nT=%4`p{Loath7-k`M9^TWu*8Ac| zmwnuJFsrj=-};`${%C;`uE~IiV~0Jq-@||@n<<qyG+{ia$YCC$Ww*B^+fJ?K#1Kc8 zzAg&3FFkA~4hv5a#GdX6Ml~LT@w}Ed7+P7e{J;0ZADKWhX_sd&1}>1ORiplufS4F< M<V>pI#U^N)KizPz)&Kwi literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nord.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nord.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..2835f40644d0481ac426a2db48aad0bff8986c30 GIT binary patch literal 456 zcmV;(0XP01iwFP!000006LnM3a^f%y{1s;US~AHIAPpbG$hH!EIJRrcS27I$-U+eY zK)E+ZTCG;nh8uy!N&WR#3qnZUw;Ov|ZSCbYN4ZhPwQsn^kFGp0;OE|%phf%k2RC(H z&ahS6dQ`|s8l6h&P0hDB=hxf}18T}SzTNF0<_P)}7mYyth;d`l0U7r`f7+lq1(;gI zh!4!uqr#`stFgc(jcu`y85Wd6iUa}`F8DMIn5gg57&nQFA;Q5bAYA_gCxNL1O`k~! z>vmP14TzF{CG|N!2_2}^HVh0C%8vsx>WRAGMtcHH$GoVr+3(Y|T!Htis8Ui^_Um2T zk(mS;XAO%ao}AJBwKJO5Unu(%wfnL>yn;?fS*(p4k=I5}>i$K`Lh2JbNhprFJ!}{@ zJl{nsI?BW;4FB2u8OJZ<MB1ned8*G~D7_u_c(IARX?Q8h#T6tA8QM)&l19JSnV(Jk zFhYVK-wPMm7^|$CTt;K=SV6_BTOnlEMaX~zk25@bX<@I?{#dAP5JVJ@gFS(l`B$8i yhx?&CjS5>ypk!L)qUZFCN*>!U67$6p_ZFK9mQ4RGPoZbS+`a+L7&ov{1ONa8&e)d# literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nova.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nova.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..ebf1a33b549b97bfbde7ffeaa34f1a9390ead11f GIT binary patch literal 356 zcmV-q0h|6CPy_&E++3=x|CqMG#nk%lRX^YdOvMF|y_-pGR481U-yWqrZw)BA$q0%# z5kbG|ub%}JsCRQ%b<GNt44W<>>OTd5{-27BXPNt)kg}B51?v=8YYfFUWUMl6cp9Or zNEh0eB$l_gxTFzU^`L2O+J|)8k%AIt@HIwhiTB?Tp<@dbmHFDB<UPx~T&H@I>Prdt zbbx54_nILnKx0$Mjv|YTTukC^vq5ozYALTAik}v&9yONwCd5zEcO+Dik~DU26~81K zM;EErAa_ZTh;^D9=8?DeJ~VzRjNQS|hI)k&sy@zQ-L_yjoZ#(n@E-bF?^!mc-p9Lx zUL7s_>0%n!&XSk;HFY2gnlfG3|1e-<Fva|aAPjekZ2JH%dvZ%M?992JWpz=oed+Tp zw!^|x0I|_M!AO|cu$=HIZ!px{WV!He+9VV8RD}JqdK3(S#L}$AJy+t4s$jDTn(7Z3 CezElc literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nova.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/nova.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..f840bd5c28d154f04552c5c27e99d1734866fe77 GIT binary patch literal 440 zcmV;p0Z0BHiwFP!000006Ma+Ba-%Q|{FTh~wPD)QG=Y3fMz#fUV=UK}uVFI%_Zx!E z5svAbkya~dwMbG}oXuyrIZ#U5wl3Xuvvb#<F)GQBub<>jy(@JTATO<_XjT1G%6GZj zjj&B!2Q(;Ilg%X`uvdp_%x@)i9a_%0Lsbd*NI8afHBJsaF!|^4(?u&e!q6f`LKJ}? zCtQ@?$br<{*Tp_%L^K9D5hye`<Fn9VroL}Oei$x=7&~Wxar+0n24ONZe@;7;&|uPK z3(R?bqwQsSGI}t%ZR`YQROmZFW<gy@vVp<!DL2_S@>N0>*FXrHG^OTgvj5)29XXM} zL1I-VlE9v9duzz@_8WD3=6e6~a$JKBMw!VbNlmh`*S1}0S!jDkuNl>8eFqV>;gims zisV1#FW7&RS6NXXr>(vsaejMj@#->p^CrtfGrNKoae_93l{DEE&BAEnhZQpX^j!ET z`c&oo;4<!)cUQV;5~M?h#~qeln%S#&lZ7g%N_<VjW9QBg^z<u^$>aS{fqR3sW-wYN i_^jvfOp`pepC!hNt*Z8Gc@8ZN^Ya&iQ6n5t1ONb-V$(wa literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ocean.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ocean.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..6dfc34a1339c711ae653ca073b7b3b7c9d81892d GIT binary patch literal 370 zcmV-&0ge6}Py_(va$BlghZ*t%T40X5|G2h#DPs0RDBIo}Dv2YJ#rpjv@JO_fuo0W; zGNJ!ig*moDRoARQNrltp#qFO0K>yc7$J*vkC+sm5l2EZOyetcbVtbK`Rg&;@f>e<% zk{Cj;@g_@}kRXkcgjU->YiHUAz3oWBBKZxzikF)B_#F{C&k#`geQi+kZfs|Dnru?N z|H3`vAkJp?x&bIa<5_e@D3{Pg#&X+YFu1@;|GjcpxMsoFp+-~RMfm9!hJ+y;fY@sl z*GC(@3!H8tZm&pKr4?5Wc_;6M#!nz5U$L~I-oOYaU7dx@_E0(W3KxV7mF3#Pds@_b zU(BepkLwO*b++sqThrJbEw;4RWI&{eidCe)h5-{6Qz&mJ!sLu1hlP)pUEPu_J6bK_ zPEr*vP3;`pm)>qN4h>HUh&|mCjPen;((qDVVQA%zW&hp}zhnZ*q+Oo8=(#|mZ#Ca6 Qc?D?#o-?R|XRDxT{)_ImYybcN literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ocean.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ocean.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..1cf65d1c50714027134283d3acf6b8132e5d6fb2 GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006Ma+Lj-xOP{gq1dIz`M<phG{VauP$c4M`?3J4IFheMN~G z+O77@v5$RxIgw6bb~3-?)q_&nc1__go6=uyvsXIfLh~kbSxP(zkmoMA!K&u%mniZ= z%&<+<L^LQ#JIg7%wiH!0$G6h;JzC;eRn|p~DMrw-A8JqnlHYj@KrXz`Pd`{m156aj z69*CLvBRg-tMec=jZIdkh!~7PN(B@eT-CGCBbUBU<HFQjauN340O9rz1P#J4l%L#) zXseHkX8<DZ-)MVYOu_($X@_1QqvF^LXP!!D(%DF0>BuB1-`91{%QX<=CUvQ4>Fggn zyCat(D5Th@3vMF?XS-|bEN#D0cPDD<JU_gGPC{9&O**x#je@q_3(8E}69!GFjte~$ z0{3#ci#BxBTvIvuv-vZQ-!3TLXc(5Mz6M8Z2kh|Tx%g)#O0ipAL5pF5wv&{!voCfQ zXAwV)!0_XH76vh<EFUJ7(a4PZ7CuCA%am^01nH6BafW9tt>iWO9|`UD2r4y?y+1+J z%U7I(hx?%-jRqS{U^Fjs#W|U&lSlehV7}OL5>bCv{8j#&&aP*{-2MW=dKacq1ONax CS=UVf literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/oceanicnext.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/oceanicnext.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..5b6a876407b9bce59e60ada0007ea09e13b1c753 GIT binary patch literal 368 zcmV-$0gwJ0O#}esa$BlghoL`#7T6qDzwc5#!n-sZ0GXZtQyb-$!lm&R$_q%a0YwEo zccV~xP|qDu)io<n%5=Is82uCg`oD@4C{w(ha23l$rWvdE@;n%dU1b&|#ysO7Riq0H zBqgTagrf;TgqDKP8u?dUO#7g=9VuAF|KOYOG9|uxM}+QjM5z3~HYj=5rZYM<n^fQZ z!##BnS2KH)02H9{Dmo*K0*gs4wk-z51uk~~R}L#H3#Nvel==z6&!jZev5dvw?p175 zZ1gU3d5E|JMQx!dP7Qev?~TS!5=F&^tqt`GBV4pT%bA^`c9@nf2*wm)nS=MHto6R= zQDq<Z9n9)>*>|p|akyKIGuLE5fR(9C)1P6$jLnqG8=5d)P~^7s(Xz{1l5N+;^^B?I zUf0(0eCf?5f=GcW!k51%1LiicOaX7=6AZ(mQm(fr`9DmIlnCwe;#1EB61yeqHlUY; Ofw#+<Rl%#1h#CCP_p?v{ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/oceanicnext.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/oceanicnext.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..dbf8f797ef313a0ba0cb792b23f06278c8e74076 GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006Ma+BlG`8*{FThy>&26+W4m@fCIdotXfRL^y?8SD_l{#A zPMYZ(NGt71EMNo{C-uu;EfYfOp)2iWQ`yUHiGoqabsw;U3h=-goCjxu7Tw1e|G~@s z0^4+*M}<Jr=v1=rD_+-2ehX$CQB%s*RZ}(?bHs)eXAKja#kjHP7#a7uTy4-mfz1># z;sf{etnj7uYAgduQ&%)G!-G;tv4KE^tA3h|m|EYbF>V$YLxiJMjBxvhImx(6&~!~g z5URdTbc`tJS5lwzk<c-fXv4@cq5L#*qh4AUV6-Qu>6l3Rw*9IS2`J|MCaRQ_mHl%r z?#M?I20!aEHu2<)9<II7wEadooTzJdyTd!^Y?Rg7z=*sya#9a(C=01i=p>;yX8N{; zri}*L@*ou*W$GymJT`yE>DxGwHtIs2>US`d&JG8>*wno0dC9Y2A}4vs(0;a(H2TfX z{9@v#5fc3PS-8NbSY_SpGMcidTeuZM_I=EcNbGrlS0k;wHQDSRsM<YLQ8|wG#Jqg` z!+Y{@e<e?o!cG!X5+Z!XIUl2vXZlrQd9M8Vc++O%{<l1ZUfpv03(!fr&rSpY0JiSr A(f|Me literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/one-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/one-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..b95a2f06f76e2e4a39873236eb7bec68533b2a5b GIT binary patch literal 364 zcmV-y0h9h4Py_(vY+I_V!<)9i4l#kg+&hbsDEbLulDwrh2Z}+K=Kn=82!m`wp(0%e zpj!GuSURApYgV9?`E&(x@b3|z|8v7ZFi)-rT{?6dIHwG!O>>zH)G@=zRO~lEfP&s^ zQ0}WJt5OZL2H~cQX&=&UM~dp=H~2bIdZ#bm5uq!G2=jeyD&Dia%d22b$hW_6F9@j3 zSZ@@8Li^Z+FeU}c1mD26=@4+C)%N$wsZPP7ETP6DKSKB!#f(g*WkE>1R!MPbL%Pg* zA06E$WKwDbp$T~p?}f%sO^9!CZIKT!(rWUv9NRH+hjA=|kp!qHBD_~|P4^`mQ|s%x z1FNo=y^lVv@ove>{F)dTLXAjL|1}KCai*Nz<b=hNQ*PrBEqijGiQB=oMi6ZZw#(|G zIP6QGZ=i>Vrvk**_XHyYiYX9W$~y=2ePG4E_rsS=NMHD}`ZN%Mo$XMA{@xm8g1UWV KmIRw!(DZ&Ol(IJf literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/one-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/one-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..dd95d2330618bb21db8d19a542caa2d77439f975 GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006Ma+Lj-xOP{gq1dIz`Y@VCctGCNVVIkYp0GQ&jceSCp8g z-D<^)V;`U68^TIV&iYrlIgnDBuHL)r=HRaP*(<EJzW&%(d&qak2E?WFb}+L3Xkq$h z*ru)nY80fb;S@aJ0gE}l6}Iou5XT^e49XZI=-6L;6{2Lnb?AYt|D2z0FoFh{B%&t_ zO`zurUs7+@flxHo36nO1)<}^+qQ(`UfgYLq(T(*}anVKCI}L=}-{2KAnxXvULIh;H zd>`e2i0jwNTo#kigJ#*GZ;(-8>>I0Js1spLATV@d5m_GEH09xH2w@YeRJ2s~kDWY_ z3yH|8Jk26WAa6}~YptQ}5324=b(yBechKojR$~)ZE@LCFO!r1IQRa+Z5z5mde@G$A z+hs3G(@8O>wBqmNFF5{KFL|PVSi1TiEV1pe!>eQRG^_GPthS(<VS%>ODJg5-%q+}D z{L})&PoIe&nlWZMKV2D(teB@|)$Z<zRBam}JrX?k@On$D^BUc9LQw1q$Yb%?yE6o} z{EBn%_*hh+QDdzLwBlY@nv)qTd6r)V=8ZA;S5;KYn*W>5uGfRP{{dK{b&630007oj B=0yMi literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/onedark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/onedark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..d20a48942d1f7f12ca5a526bdb081f906d4c4b79 GIT binary patch literal 372 zcmV-)0gL_{Py_&E++3=x|CqMG#nj5>EXve&LYPZ-sZGHvY-!_jQ4GQ$n=oJ_Hq~W9 z|FH@^c7RpatU$@J=>lT#Qvm4yagxxaa8D;(QB70ESrcGwFciCDIp>1#48v5BE(8}^ z(qxNET3L!zazbkmoOLnnL%Quq!6N(yU&BjFeDRJ5-B_ro{Ju6QdCl@J*Qwd0`t}#@ zse?G1*&BtR0F7tS8Ifa|DzS~XEe6E}PPV^S4h!Eb7<<%M>PHYiBX3A##Kcm%YZc$8 zHhLF1-G|(5MIsj|R*6U6-Fu<&RblK_EN!S)7~!O^vzXa2EQhgoK^UDfWgNU$zSjGc zjcN9A-NCG`mwn@E8oM7$Ugp<?rgS1xYQKg76Bbh}Zz#fWMv+?|z-3QvNtPY0)<_Z; zd9lmtqG0>b=UW_yg{J^w>wAKcNTt$Q#!GpFq3;^Y{k<Q4$;2QPp<SMQ2wWhs-D=do SPjZ1dwA!3e6+GJnP45TQ2D9t{ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/onedark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/onedark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..ab9cdae462a3e461f1760f1e6489e185db9bbebc GIT binary patch literal 461 zcmV;;0W$s{iwFP!000006Ma)#j^Z#7yb99%4iSVrARGp@?N0FG*j~G{Lxi~dD8%*z z2JN5IU0v0W3O53?v-;z27KD(xYj*a!D(&??N4ZhPH6OrO&e|gbe(9VUv}iu^ea?5q z3|lpgM}?fE(XnKQMNw|&{F<A-M@=zT7UjOmLyn+J@v7ui;9MJv4#>FA`O^-X(*To1 zi1>kddhYP0^kyt@Nn?}MA;SixkOF}~g$q6nJx1!sG{#NMg%DwH6%elffs?>ggvQU< z2yQA~mq8AQV*g6&OL`JIP*Ha18Ag;JduG%Nb;gbM1e#7!L~IXGRdKlrykCVbC8f@O zy|V{0kzmO;H47x3oYCE_HJa96D7!N?^=5N?2c3+vSQ|GYt&N=2-5beF>N7e?C{9WK zu;;t_knSQCon+(`hW~8-g5#HQB5u?TX{x`2q4;*#;nn^)iB&vbTtTuSLEFhn(&#rk z^RtPcMu_m!XXXYrhAQhOm(ds%t1YzH-ZLTFHb8nLc%I?aOAC9AHd%;Q^<Ie3Jofes zUZ!7hP97hJ@-!-JB!QAVz!#d+Gj#GSzevm%i`)#$O%ZMN-|`rGHO&1R_WR~oQ3L=0 DLmuBO literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/outrun-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/outrun-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..beda82b63d2703d41bbedceced62207451b0a7b6 GIT binary patch literal 368 zcmV-$0gwJ0Py_(v+GeU=SMCAbEwJCc?fFwRfB{UW1wh_^cb$uxQgLklgW8S71ymcc zsV)=xk5$OA6{)&r1xmuF%Zr*n1%Uo<!2+t{=>)0SAycd~FVBOa*n$Ixh^G~#iu7^> z5hU5BN?KWi21{r){j+waeK6aO6fE3t@b!4<6Cb`KLZ>-NsQkV*D0#Q8b2=rPRA2eR zJ#i3cGkfg-6rk}eI+H>SS;#WAZ7~QgaI*5fa#(1yV63R|sc#efbcCUjNi9pwwTkx9 zM(+Zr8-&|ZRN^j85=Gw0d!g|&0Vq~1ZKxL*;iT4C$ZUs{!$b%mlrp4AY~Vc>wcZyy zn(X7cgIS#{`^MBXc1MdV-8C6VfkQy>zlH%57E>s1C_;Bekwf8=W!JYP%Z^s#IMxx) zZH>tGrFWZ(!-ppaVo&!3qY{NEi+L&UVQ3VMW&Yj|zht6mL}-^MFM2MJSZTG2{uKas OsEwQ<6+GJun)(kKOs(1g literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/outrun-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/outrun-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..9479ede2dd8b37c65795dee3f0336c6538683e2d GIT binary patch literal 456 zcmV;(0XP01iwFP!000006LnMVa^f%yd=+N;w`5$>5E>qa@rN9IIJVDLu4EYAy%S=E zK)HX8wAz(ciu4MKqy3XEfh%QP+mzwFs>1m?MWwesHgAe4ruklQd1|BYooe0~V{F4G z*s5s~SdeJEqmq)9tjhVd^j!xIDOa(I)s#ctQd}^>6vcgj$kE65=`-|BV$Vm397(-M z_}Jl7>BR>w4Gv9F=ZxsB1<V8rEG+mO?|`Up)A%?xmqQ3$upD9ik4M9WB`AGTBU*oM zJ~vs8BU1m?xYPVZh}@EF-w7a88am<a6LlfIOUNA_W)Znln;n^Jc}lC?rNOzgU+?0E zypxo$tI3#z(YyAdy~Fi4nD&TG&Dj1GbUc)WZPKgRHjKu#FC+`&jt~ukI?VFbm;R`? z^InX_gCS1k<=y!c4BtK~ay0hyRDXMq^p4QNIS@Gm%`{tV!H9l_>hY9}cP~6k(-A+6 zK=8wR5qmM@su0I3!+{jHTfwxx7RqRyAsrxpoZ<PF7UwmD`w4xp>WiF#E*yC>^RGB1 y_qRnQ94s^jxivDw7n<WUck(E|NK6}>xfv@#FPQ#YPNC<6x&8piZ~YQc1ONbCBH?!c literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/papercolor-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/papercolor-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..dac9b4d92533e0e8dd5c60f580d74c2479537f4d GIT binary patch literal 365 zcmV-z0h0b3N(2DJ!a0>4*fu3{B77zKY;6CntzJB=i-tl7;qUGYY7G)uET2gz(0GJ~ z4d{H1C|?uQp)>2I;RH%I*<P1y@;^tb7}dE<H_s)kBE2$n$4gy%0-ncv28l4Fnfh_! z`L-!489qq1d=*m=R}=4~yUi_{9855Ge|@jhL@(aWcg5zeW>Wc0ZJ2x;JK33vBaRw( zR_kFMPG;O@J{)i!PwG1{DtFNyB#{FO5jfiaMmfw)LNFM-c!{4e<fM3{DjD?kiD@mO zbw0<(jJhvK1-qXjgSpiA;z9^=8*&yk#47;dsHreNwR2VoNp3=`EKH$+z2m*yH?!*K z<647J-5+kPs~Ovu!?yOdDM$f+-mhN3l4ax<H<X`yN|tBtvBRl1CkxJ@wVFZVWO{(? z$81UZ;e{s`#P;tEMm=FDA;HUc4}x)%Ed9rR{`VxOUjOy-Xzs-Xp4rcu16r-JD2qO& LuLz#(291IVK_#y; literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/papercolor-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/papercolor-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..882f081292e77e3111ba55e76fa329072621a961 GIT binary patch literal 439 zcmV;o0Z9HIiwFP!000006Ma+dZtEZneU(c4yGEI=s#NL2R1TPwl>h^C*Qn~dPb5HT zS55o@`}p|lzzoOcq(1%C0_ReX{Xcuz?Cj;XTA5MC^`pc2FaSG`&IHZ-w+|N2irMtN zM}>@}(Fy;y6Cm1l^>3M(Ce)ODyaTZl$wx5OF}zE5W6=Q__r5-D(2N4a6v^Vl;HfI_ zDeh`4FiCUYWX2&Vg_NQ>Dy+yfOqh9>R*Z|4B@^Lf6%cO!gOf0*49(Bdz&@Uo4v2E` zO6qgD5;{;hZI}kkC_hhwQBTwjGujhqI@VJv(_;#}-=r!fmCAnIn*~`&;-JfVJUOGs zt1z0j-zdiu^<CQ@UO}Tos<AP{%h<?CJ-$fUNPR*l3Hh-~zwgSXhaeRlW#;6D-6wy> z`P(?2C+b4!>MIz^cZVZhY$g}A^x_ue5DHX89Z92K%*?L}erO@XkME5O!<?e5iz=h} zo^dBY+!`*0NRSB$9(#D!QYEk1774X2EL4jFCwl@f^CwKs!?Gw(v%+2yD4D)toikoj hC6DPV$GWk*toGeLujJ40Y<d>V?FY)gh?7eM003>w)?fet literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/papercolor-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/papercolor-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..d0cf784aa150ad97899e41edc186d5b2e03ccc30 GIT binary patch literal 349 zcmV-j0iymJM+6|mYHO)79c~tRZ$VW2>R$E#@tXiOkcbC)Z{JI8R4AN2etUFaKUOM6 z2XNjDS_kFKj;gL%aZ=OM#jM^>0G?ZBmj-VoWV!NenD0kH{xiUJfK^}Qh~!4AxZ2`U z%*6#U)#KNkO#6^-J4CSjUH4?&+_OYy?}*ElPY#j)(gp>$S>EOPB!^Vp{F^;-4%aeg z0|5n)cnuwyB<T_M>v-Gz7c}5f^WWsK)M8+wSh2JZ2sMMyPF>~zfWI%%VYbn^$i*%( zhkBgrDBhCyrsAms1Zy@lv<rA}NxLg%bx2Jx3_ZwQ7Z)DXi?CK($i_7JxW`~pm&?BO zos9jTB`@=93a@Mxfc?n@?Ab!Gw4wFFIVCPbPRpL$f^0U^=r*g1g6lz_Z*dqFoC1Uu v?kR7Bl2!1w-Jo}aTKT3P_<t<{(9tX}rOX49#-au4S?Pc=qJh_jn30|at-!DM literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/papercolor-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/papercolor-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..441a45751b006209942900e8f86fddf511e06862 GIT binary patch literal 432 zcmV;h0Z;xPiwFP!000006Ma+dZo)7Od=;eq9aW?iF_niw`EW}{8fS^KQK7y26q<z6 zp@~1KefHVsL!yG_WIn>xaiz2!x;J;(?A+yNj!HD>yO*|Y4}#0{;4xa&y#T-r*mPY0 z1Clh_0%q)e&)A&bN*qV9RC2q1kt04VYj~gI=)iMA|2luVXeC9SC~_o35o*h}ZC7<y zbX;nhx@Mm<A{qmfs}&enG_!n!()YFs`ZQS%5sc1og6$XgnhR5)<+Ds7Wcp<~PE>|B z+Mer^z;jb*<0zn@!ZZprtJaM~8;Dyv7812*?5?cgA#C!Ln(AbK-pvj9(B!=c6Ud_- zu02}XeuExP)a@BNJcA~GEM$|Ys%+%79iC7&+Md8`0(GqP>HhW7B5FfNU3w~%cjeD8 zeWO=JQ6KA8pAo6NJq&Ph_uY1V6)0Uni&&w3@{vaSM6)nE_+f<tKfX3TiYZq)pIk=M zno;S#&yW#_Kkl&h(!ySos}^Ex*H>j=bSEBk{Rhs;!|hOkCIg)&Zgg?nf-^nyB#-oq a#C)-3?|SBc%S&i&n4e#ug9MOB1ONaot<X9E literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/paraiso.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/paraiso.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..0fc0c7c349d61cf538eadcef15ee6684fe5f529d GIT binary patch literal 368 zcmV-$0gwJ0Py_(va$BlghdJH?vmfs8&;O|!!gSgPknwKkvV_WG@gLMvkm3TW4d{H1 zC|?uop#!SAW(7*gr^^e+|2YEmf5lTsb^dh16>}6Akk($7IRo33aDoX#GYLY)`9>T^ z5YuW?<#|S8lPHOS*4RJkV%i6@?MTr){s!NKl_~c1J0f(OA;ElKn<noTI+)pLBEI*9 zd)7dmO!TG!D0ChtVT=JTqG4F6ZS%q6LPvYwE2p_niw2LHl=vya&$Lj~b!n=pyH@dS zv0+{2_y|!4f;wOXO+4}*-V2SNF(LVq(w2A&BOUd1mQy=J<uEHuFhruGBy{lJ7PZ_L zJDTY0x`U|hmVNDNTHCt?O1LHkMyQR@F8vw?jTBQZZYsif3d?Qbqh;4OCuN7$28nb8 zds{n4_N9kS`H{j?1hM*_pcFbZ)JkwEpCB0J$#Q@1hcB5>wV{`zPdyVjvzN6VemiNT ORnnu(is0lVXof#iOR`D; literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/paraiso.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/paraiso.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..eb99f643589cbdb84d9a19dff6847fa5d6271c5f GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006Ma)zj^Z#7y$VwQHW8t-5e|dARDuV`_SofVBE;QCA+B^_ z(EOEad9RjdVI^c|{VUuYlTw+!{c_h$>8|(LE3CG@{a{}QIPfE9;?jE?jch;mT@HJg z(>84zK!ZSK4V4sKu`k3N-wHbnV31;UT|u3v7_y%Hjclr>PJZjaGqnD5e!6G`MmA9- zPl!C=bB8abH|v;CIJOyq@~Aan0+66#g=g3R1pS!C`l-3(LKvK82-`o*E5<dY(vup2 zuFA_Y(J@5oUn_H2Oa#v~(Z+!TWrcCzR=+@J!kU20;E71O!-3~SA~XwOle$#6boP&( zJu-hlKoohCKmvMe`deoWZofhGXKd@;?)WZs63S|A!pdcB=#}Z;P-e=U!7BuLTIh?0 zR}Ia;qtbX%gek4~+582@Z|fy()W>D2-_au39(uSs0x!8Jc(=NO;&DmsCMhXv-s~*Q zB7Pcy(odh6k9<s3&QB`Ckr;Osub{hUQgvNQ835Vy46j;R$!m0rgqpnMtVqqn;La?l z<txs?<Ks{PM-8n)rWO6P73XB8PM+ykf%#&Kb`KS2bmsq-lj~J5_rH88QesgA003%^ B;0gc$ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pasque.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pasque.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..e3fcb10185e4bcc644c0f83bbf392fafcf6cd117 GIT binary patch literal 370 zcmV-&0ge6}Py_&EbX%&d!^N-`xZ@80|6Qsf?Dzp>X5LM0lwAs!=KF_o0upRMu@Rf< zGNJ!iML2c<RoARQsnh8S_~@qy(EqKo#`^r}gewwbLltWoWLYqXT~S9YH$3AgRnQH$ zJQkwZR7o@1X`?;R8ii+FO#5KA9VuE=zrok>(i303BSLo>h^c&Eo0Pm;*EyXbo2c)8 z;a+f1XOq221PakO3ulZ<3E@ehwk?K$3!UtKubdXCSu{?l@zhTMekO$>lj0;v(s-?s z`r3wfnbSkS-Bn}~#GJATc@OV}#?Kg`d_`$XeSncpraH@+oq}?h7A_bgQp|LO_ok@z zzSz-ZU)LREb-V1FSkv0wEv|IeWWdBkP^J9WFla(C<?^N?tj-X*EkdyD`j({Zx*4sz z*c!37wfAgadbg=KJUmq(R^F3q;SQ%dwOq<O48y#!;@|t>OD0rp*yZHYzy*liR_oSg QC#8g&E@xH+XS<*o{MyjF$^ZZW literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pasque.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pasque.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..2b52e981754e60981abd946254f5997fbcb06cff GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006Ma+Lj-xOP{gq1dIz=rEQ0T{0PGV@bA;~0Wr>N?`uP8~D zcB_4J>|-BaPPh@6oz*XYvmk`jeOuV;rnJ}l;^jse*M0~TTy#eU{L(u!YSDh=^_~~7 zz&35`Q6VR3bWABQ7bRcfTW*E{HN{vd%DSpTjG&KxhK#c=_>DyeWZdWSw4>%U!b}l7 zeq^4WJA6sK84Fy})Mj;vuu&<bP(Yx<RXq&@#?p^zjGLPaF2cboAl&{2CxNL5jnCK! zG<jYg0v!;={*~01WD+`1k#-yyMwFihX4FgRj2rC<G@T+zvp*aTO<b-5?>C`KNvX4c z?CgO|MGm_!1QCjOaz^*J&S={HpzP1o*1O&D9ds7TYHi$zv^H{5_irdOsn6&np*SUa zUN!qKmhK`Ion)*j4F9|N3r;`AiMUZWrm4P1L(z8F<JHFEbzT(!t1C!0CTKTHNgDlT zXMPd!(+ClM`pn$OrjTXbtTLL?HnA4Gx@SUmU4RTo@I1q-mR9nbY?4q@7OaWe#=)M! z%k&kO;PG)NPm{t{5-1se+KO{FLnqJltH5%x^e>wtPk;8m>CyEnnEM}-uaWvu1ONd1 C&D?PS literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/phd.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/phd.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..f0f2ce52ad25edbdb20ec58b69ea5982e25e451e GIT binary patch literal 369 zcmV-%0gnC~Py_&E++3=x|CqMG#nk%0R1Z8{DlUNR-<i}#xlp)N{e|)Za+m@X^I{_M zlIVZie!ssJib<~yu<Du>C^a@+Kn#Bh0R2DFNs?0cI^haSLaAZh0c!_Cu`8YlDJ9P+ zbQS4B5v8@rx45JU6B`pVLTeZ_T}=CsZaY#?!VJC<D`VozcSPvcLPcf1HYj<|@-Ek@ z-lY0Y!aX$*&Gg<l1O;epqA?=FigB68+cpNp1*)CAaws+}SPeBX^<#*ivF}I}IK~*e zr;07vM(Yyw0p#`+wUdlXV#s@XZyG-p#%^b5L%qTXRg1G!w-Xo+6K{erCMg7U@Lu~` zZy_5~@8j7)uWpw8a50VZVadz<no!oJiAjq1Hw-u#Oew!12*Zscw?2T&p4^fQJN8-< z)a<jmDA>OA`4*2OhNl2xg?q}qQ`RO;d6$nc4BTY7-}_;b35c*?R$l@WNbJm7Cy?4$ PV~IPQNfm64f~Nliy^pL- literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/phd.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/phd.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..cfc836d9051607fe6f6f7507d754b8fe447aa547 GIT binary patch literal 461 zcmV;;0W$s{iwFP!000006Ma+Lj-xOP{gq1dIz{vX6#6k$E{0|sl5FDa6jlBA5hZ45 zr`k8iKKAkDL|6&gS^o()$D~xIYj*CsD%|xxd4<*1Hy`}Kx!4{#6PM20Xk_z|mz(Xj zo?xq{37|osvW8OjvM9@Pim!$3doW0`YEvB!MT#No$X~O%X1nCK4m?BaKc}aQMqp$k zMe>Bm13q{7l6td_357$GRVl)w)_|#i1PzONhV?+DAJbSrHkVuoz0(X~{f~LYxF#q) zsS%l1yFJa#5UGEy%w;waJkvxQdk%yOL(i>#DV+&x0y2XqB58A$=Q%A`vk+FPONDc1 zzwGRR{3*iazTBiD0lhWdt+fW%U!b}(HdUS<-$6&AEY>EhoY#h4neGi`rpy_<LXfAK zzOH#&(8YLE8c&L9N-KUge}Uo4dPy7gah~dLv`Dsx4z6xi*p}D4U0gx&I78b}O3Ioy zI}4MDpGF|~=`-_@4=Ky}QDry~W3e3vx@S_gZG!ZG?0JS)EiL3VxLHDVeW-;<%|q|b zEU5V_PQl~jPyq)GjY6gs!55sPnL2r<Uj(L$&7UYg<R!`Kzv<+970mq`X7;FpQ3L=0 D3A^4S literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pico.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pico.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..a308b0d91e72a3bfb2946c858b624be510103755 GIT binary patch literal 367 zcmV-#0g(P1N(2Dp+FYt!-?&G-1tz8zt*!n)P@+W-q3rDpB9_QvSv3+ZBy7Z{x=iRl zRw2iRxayh}C;>KINMwEr0R3MSLh-^qozMXQzCN-x63Wb|oC?8svSFS`j{(q1klq%T zw3s*%lu6<$6Pz_Q?L)flFu`K=>wDL@xK6zCj_~YStf>65HYj<|@-EjYsigY&x9y38 zIGd@<g@^!+XVICMq5$AoFW$Bo1Qa+K|57<Dv`sKp$gESJ!{9mchP*KYFjpzsTN}OG za5{~-mlb&npj=^h@?K*6Q~++px`uke5Kd~5Z8Dq3weaLU5UkuI4Yq5(*87r;Y4&l& z!K~JoePaq5yM-k$^J_8?Lrt6&#rhX8V8Tk;ls8o1>Wm`uKETVK+>)$0S`E@nNs|t; zx+vJb^!XOYu?|lw5PQBS7<rY7H80}VFr-~$ng8~~Z<u&af4fU3FCrI6jJH}`|5F;P NBHIRep1l?^sUP00vYY?_ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pico.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pico.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..bdb6fa4d278394e5979455b46645162e9dee7ef9 GIT binary patch literal 454 zcmV;%0XhC3iwFP!000006LnMVlHwo`d=;zq@0#M&Y~1)T)&N7~B*4OOYs&K7uVNq@ zJ@4OSrs?kah;S0ClldL59;DQ^Yq$Qgs{Q3QWrZ^?v~RVlo1Hpv5a%wqWM%ut7@IJw zwvA{|kao7<8{E|OcB-$1>wC0RYK-lh`d6+IbR`eG-fTZ|-gyi_F1$~lK3PEtMv0t> ziAQ?0_w@AYJP1ugTQ#}DlQBq{K%&6~pM@R^^}QPxMsqnu*n0zn>pu`Qa8sb=vlvl| zv7O9vKveu2ZO?N^7{C<S)N?GTIP~0^C+bQ#8wo5Oe?(wghQAgDVq9gHnr3JJ#MK?S zAW>|y%OsJ4v)xrWOY3jc-HF<UvBN9qcqNOm2`A^VQP8$~Az5jA!k`J|ah7Kco4PEU zCvE7c3#WAAXYywpzFm-Iq9M&)eI-XF4%p$v7xK*~NTn8A&^*mhHJ*}o_QlNNbi@xW z6!`JI3W*Q-l@H^U(NGlk+vej_+$yP+%8(uj9(#DcrNwy-esMxg1N&?qdw+tc=l^gj w9`1{ZG#G3(fzcwv7n)<3ojl4f3e(1BZUGCL|Gq7$=WDtB1+?A+vP%R208-=MJpcdz literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pop.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pop.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..e181f529fd885f611b26942f9bd5fdaee4c0b15b GIT binary patch literal 363 zcmV-x0hIn5N(2Dp+FYt!-?&G-1tz8%u4!LMoU9P0y<`BS$N}kss&JE}W^TlA1R)hc zx;f{(`v(HlzfQR7niVK1n=T|;zXpIFWblsN-w7)Ku-hVQSHdv^1|l}?Fi+GE1PIDz zi%Z=g0YM?IT0z&%v=8aF!vytz-IH|-(K~$fj__Ptth79=4Nl&(yvu#+R6=A$gK-HE z-Ar94L<Dr~VlYac0O)uVZ`&F)DA24PDu*h2f`>rH=e~o%)A1821vQK@b4!tuY>Y0@ zZenZ8QAMXQp#r<;y<+@S0PaOz!@b53nnJSBv|Y@Ft`9+BDq-9hY)^dc_az(C?BmA4 ztWKBxV+f7!(~_6@HBGREIN1j99YPv~k_P&@PY!wX0bcgx9!bJgr#$8&HoWe#x+u)P z^!XMq!V4xFU)y`ic~D^_*BP(x9)qUaDMRdzJzk=f4&l6P#wY}@l3PaqI~CK6)V5{N J1-re7Y5c{PtxEs^ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pop.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/pop.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..dd087487a923758e6539cd7f200847069ad1a75c GIT binary patch literal 448 zcmV;x0YCm9iwFP!000006Ma+Bjv^rt{1uaZT_>!wMjb!KG|-N$3~<ogIx+tH1_#*D zGZ$W(?xLz_8et_iC;b(!4y073?^<_Rtli}{Wrfw&cW;uVwdWwty|>ZG?u{`vVHRB% zP@^DaO~JP;t*O2gb{No5sjXRBxkk{JJZEX;ymjb-tbd=jE*e1*l0?pg$OApvdpdfx z4uqnyYc{#Uqt-~7K%&MOpMe1j_5C*1Cv!PPI5-W2%fH|ia9yBfTZ|xQYztWqh>Cx$ z%(;ey9(0k71IL02<G`(cqHcsWfxytAh#XhDwrxvuHH5IpE)`X0|HRE5`Af1D@UhAy zfxI>S^=J((zftuk>Nbq+UqRE9%-SZbtZgH&O#ec%QRakR5z0fAZ#TUC+|_qcnhvUP zN-KUlf5!3KdRaQ^W4+a%XsN^=d%U<p&VbLJK=D{{$23REnimZV(*!^GFYv>A<0BvQ zDd*FO(OBhh4ZF`<Bh~SkAp;UTUf_9<X0tWAIzPPqz^%;Yad0OHs(!+$xWB(rpiyI| q2(%IzKGRHLcJe4cD@@N-xHqtp<wO7fcu74^%k2k*g=7y)1ONb0YT01` literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/porple.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/porple.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..4de68853ae0a3f0dac7b7a830a6ed24e02ca1a8c GIT binary patch literal 368 zcmV-$0gwJ0Py|5aa$Blghs|Nq0{X+<@4HkFFo5Z{05UuOPimpuQMfeUS-KaHVACPa z-4(pyCUST}RoARAY4Yjv<m5jea9$N^S+`Fn+%e5^9x_&*F`-cCPDFx+gku^ciqs&K zGE`}~r6pyRsU3O**2F*KX4;2*+i`+f`u)9*kDl=69r1ZED5CM(+MwdIfDSZDE~(tU zZcp69natfRfCMN!gRTTl2`Qp7-L?n>6*ytvDu<ai3WkaqPx%a?XCBAfV+v#uuT!*F zZ1gR2YK(YIO#m*XVWzmNy%!mOBSP$gg$?BbBAn1F%Nd=cVwlGc1X|`%=pwjxajo^O z81vlYnu9srFZ(K1G&WBQlyFVz`=L;g@?XJ#5lbnTHI!gFp}=G8qh-%-ITjsl7OEk0 zI2N^YOh0<q(kMJMB>=1L2@0VX39U3Q;~nzYHdXv{Km3Y`NiIOEJn_<VfFx@(Ym}Y} Om7vC#RlqY{$c%pH8Li#` literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/porple.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/porple.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..34cc609bb6861a8e236883d00da8408611f210dd GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006LnKrj^Z#7y$VwQHW5n}6ApvCRDv7FcH8A?BE;QCA+{$l zwDMD~di831;YL7lR$u;RsSr~4?cQEjmA&3)FE`4#_Ct{AJ2J{Iy)!|J_G5S0@qInR zR&DD+0Y_<cN-3LiTW{w0nwwz&jVV@FRZVD&A?=f&k?D(mW5H20?sI<Hpg9IQm53f6 zn8)W1Us7+zQZ8|9izY@`Pzo>-2vD%#({zAD{g}qMsk!Jv7_6cQ>p#><%2a};XKJJ) zWmTqf6fyO$q`qVm!BLgUhJiss`Eg)Iy-*k2XpdCmDNnm2P>Hl$MZI6eE+yv9{<Dh* zGLt|@w>66-9-Yzstuq?eKOp-vw#{a9d<UI`vRE58BCidd)cu>1h16$o5<#4D`9sB< zy32Qw3Qsa|3d8?x{sQBVaUyNhg*?@FFqmuyJzQ;8SV<bvEv_J0$k1+*k~I3w&ipLm zrx6nT^jWyT#+YT@q%s^+MN*QA!@Ur)>mp<Tq|Y<FYH1;_(Pjy;raX{CY#s)Cre5Y> zaSk3Ihw?ZoXeCl5d4w-&PG;=nx%?t9Uo4-5)TG=ln0`%9u2;d_{{kkR)D%$!004m{ B))N2# literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/qualia.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/qualia.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..e681b62063b4b1174edaef5d5c8a8a47578e0a34 GIT binary patch literal 361 zcmV-v0haz7NCW_6aGR-KD$KNnA*Lpct&*a72<5jsL@bfTI{O43iI#96-sYQi&{Zu# z(Nr@~f^;}Oyz;h@QB=&VpW3?#EsPTFa{e)9UeMR*&$!ZVs{WGlx1TOy-p(Ng0by0~ z8f^`07cVPH5dP0=G%r(V_1(F9a83=7ZTYJ<4C6gXn{<$FK|<-=wEAh{(3lIZ=Hmeg z8*$!p(kv7qnTE?U3&LI0=6@*%rE3JK0>&DA4M3;nMwAoMNTr$VP*esMPMxQ|47$z_ zC?^#mO=1Pz$-TY!DG{<US&hLv1ff<b<{NDtFrn@yAxEKDYb40-xpKHKNgpqL>^8Vm z`_q~Vosl0*X`UX#2y$W-E6MD~7huUF-*N;0jy-$XcOID5=<Jh><5-h8io-ZrBxRO$ z_N7gia6T+N9YO5r9AFefVWv1Y@J0t^yRwAYHS>Q7tRRk;wHH5=z?NKVKK|u9^Y+ii HCSpo22j;2E literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/qualia.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/qualia.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..809d5c28674d5dacbdbe672ce714fc2f1a803c71 GIT binary patch literal 447 zcmV;w0YLsAiwFP!000006Ma+Lj^Z#3{S~Bn9jfj!44v{Z$W7ehC5^L*Ged>=_f=`q zDGXZW#qs4F+c{CJu{fGP;o?ARvR%D#=hfDouaj4?VP6L_pXm1us8i=TT3x^VD#tTr zt?D|UK_$dCRlK}y$1}y(iu)d|JdFu-$=`V#l9L^J5caRr)kUi$!ib+dAvQtox_hX+ zumeRh)Wt4EnrIA4s@G_60cWAdjC`Af{n%J?3HHu_;QA9hL1S`izUH~Gg?IR!=s+a5 zZ^)izQ_zFSw6Sk6XN93}*gQZNifs_Ea>yjGX)0{<Vhx0_N?nr7o&B(jTjmUc@37G- zfduhvyGzSf)?Y~7QR-b;?w_TO8d<DOv7Xl^o^1DovLJgzPlEa|(^sYX_(<YeH<64S zC}V0?-<v<-@Wo!|jrurG^*6F)+hd1km%&w~s@>b-6{v}GYC9^4*gn}=m;`(`LQX%t z7CtsZs&al*nGBh6TPjfcT4-w9l+vTX{S1#<TF7f~-x4aJt@78v-W?%O{)H*Hzdclt p!C*}ShVtVqI7c&ea!<bqOfUBH@BOznyB^hY{RjKa$Ye<b004Q`;y3^R literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/railscasts.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/railscasts.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..1aa8af7f18a7e968a48362752b116d21673d36e6 GIT binary patch literal 368 zcmV-$0gwJ0Py_(vn%lH`yF#1W;KB1ogq6!#l&a-~Fv;zPS`?2$m#Y7w7=%GKp|BB~ z>N27KScN;bCso(1K*`JL^7P=R0MP$2MD8GaI$<X4T3NSVng&C$3uzS7nr9fKigck( zs3J@@Q__S}P(VUx4g9mtrhR~IM+z3{Z}2s|w8R(hh|o<+A}YVH4NBe}cBs>3lj_44 z?l}i>HnTShKmi)h3UOqON@QZTEe3}RoDAP9hlMr^#)=wC{fOXalp7KNQ7omuR?$AQ z(Ywg$KH(0EL{UH(Iz`^Yd!g|&Vk}#+w4vU?2q(49VrIvr9LBi|!e|g7_wZijwcZyu zLiTap!K|*AedB8yySoKTye5=Ycv5I)zlH%j7E>&5D8lrNBG<W3mfhZxEIV4Q3ta*h zcdjl9wl6(yCJqZvDTuA_2}Z((R-)ylyur}V8q5E^AAZRM;7_|e`P6fP#L#L%{~i*h OV{PP&so>crXnH?5sj><H literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/railscasts.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/railscasts.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..405981cb80596e396d93c731d74fe1c17759fc80 GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006LnMDZsITy{S~CXmI#^)C43AT+mqnMv0Zz-B|`lBD#UgJ zWtEr7T+W%xF*gE>lltSY7KD(xZ%cbw)%J3mz1%3{+Ba-)EBJu{KljcAE!wvaHhpv2 zs%<?g<RpzwB_&jwx}M`}ZiWFhrC1G3wZj-A=#yVmyyN@mHx?a`aqsi54VqJci6VM@ zV4fa3d@8*f3tZCJ7P}Z>K`EpNAW-1~Ps4x-`aX?uQ*+TpI9LUQ>%ZV6FqKl%Z=M0F zeVJweqSU{V`kYNd2P)Bqfnmz><G_r1f-bnxo<P$vk#N5IEX%Z91>Ub>my&X4zwF|k znL)aaH;srOo}AJBwKJO5-zfVNwY$yc@G5l@%3^KYh`cs(Qui+?3#m`&B%wHFdZ_tF zv(0yrijFd23d4Ukf5!3KIFUB$LZ0d?7)rLo9xpa4Y`gF3&Eg7@g`C<=Qj$i$*qNV2 z{4hdFKfV_(urXFyH>r%q#Mp>EXLu`w?7EmTAi?7d&sti@YqVKHtYIa_r?tkxp1{le z6zAaKekf0)!d4O}nWVqqoXptCBmE*UUo2zueN}%hkp5eqT+f2J{R8nPul-R3007$u B;>rL3 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/rebecca.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/rebecca.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..5f0f5905dc6c9cc8ed03ae668455cc206cbab738 GIT binary patch literal 366 zcmV-!0g?V2O#}es(#>h*c8Dml4cs^R$E2Zk^M5*9CCgeunEc!^mugYyvHVXI4`Gl? zC{)06HwvW(<=lbw^LPhJs`poBM}G<c{huTfmCf4;SE^EA4C^kd>tHB$rArM?@r;X9 zk)AnME%O8&;RXbVU{}P|D8K4rzt)g0m|zwEeXrr7CBFJ@@XTuFsr<7xD0z=KqfSXB z)p!4GPaMS6Ox>hF1Zcd<k0XbaVh~W^V)swwu+o}fs*thNPZ)S6t)UJiG$6xWijI;* z@0`m+#@$ua0a!{Rh26vV7UQQEqS>&op<XbAi`rzK*(vLVY3oAOMZy@cy=e!%FL4Xm z#~lZ=x;?L5XlNYnPVDft8|Wwz5QY5#2F%z=Uf$4w@q!|^ZO+c?_LgMN(Q2KFD8TRI zK*aWC!31$wc#0sleeW>p@Bo&GH}M9;uqjsP?dy6-Fb_e5c6sq><^qY`s&yNwLcR*F M%jv4%)h1{Le_}wp5C8xG literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/rebecca.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/rebecca.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..8851e84e8662bfb6d2798694d11fe104c7ef7534 GIT binary patch literal 450 zcmV;z0X_a7iwFP!000006LnMDlHwo`{S~X`bxg%uqVZ#_4m6RK00YgADa(J~iUB4% z?pxD+`t<F<49DWE{`i{(&ZX{}jlC{*_IjVZ%qZiU53xca_Qw|3rE?}|-h8YNYuIil z*rI7XDr6*$PAQxH2CDTGUozA8s42y&>JS42U2;MRCEG>6vFLz|`<$LOXhs1>{^;?c z_4M4{OX|&7V3LNWsAHrJN+Cr8jtXad8hT9Bk5P;pn~N^O-YOtm{skwYRSBA&Z)X6a z)W4GYl1)MfDwPd=iwWh2zBTHFx?o0o0!^n>1O;wkl{Txu`$g<hQts@RT|AJP1aQ9+ zB9eG=Mt3)1G%deTc4unpvOK<njw+e0jTxTTMo#MPP02#)GdfAgPq}=>1@gq%2C3*I z6DK$9XY&^vzK!E)qb}sBzJj4-JM8dk6Zswiv7B8&wjo2sC?#q1o1OVd!A~P3`02B7 zp&eqDb)(8?NEO!{OQ`P!mqJ8Hj|9&%ylQDCufb*s)d0J^ZS3tCyv+Y_3LYPa@-!%H sB!QAF!e=!{Gj{S^eioQ6mOqiG53HIo{Wm?iUIlai2QF+>VNL`90HI#gpa1{> literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine-dawn.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine-dawn.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..27fc68deae887faa49df5c18c0392a1b449431c8 GIT binary patch literal 373 zcmV-*0gC<`Py_(va$BlghY9}B0<$0P*0<m4PtmB```HX?iBF=L^xI23LLpj6m=~hb zs+t-5Pja8nUs@P3_w7Kcu33qa2h-(5y<Y-C|BsT$PauceN*kh4T{~Ge8JHQJhL2#d z?}dtT0VxDBsyA86M2xXaV^XW<c3n*SptqeVxZ(=FikF)C>>U}p%19z*y*7Zn8|)C% zMU(K&f_u(EbTfJbj}(xxi_Qpcx$&`<+cpQs3pAT`<#2^%!5&zn!4C+32E{-^g>jHb z|5OQEw$ZypyGyj2KmsM0APmfVcyAg%6UOovQycJ(MrejSOAR|D=`bu@5GG0e1U<bM zMUDGnMjd@TI~djFvcG*!<8!xQiPtoM@Y5L5K>rN`4klA7Zb-uTq{(gJl4V!7CDX1+ z!aRl$?8emAs(tBklk?E{6j5w>Pc#z15-EXqc}1a{FP8s%KP)oQ(<U63&8LnF6gF3l T_;)(efkrfHCL!3ZlBV+m<|44= literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine-dawn.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine-dawn.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d69c59e82d19af70411365459743ca7c724a11ff GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006Ma+Lj^Z#3{S~Bn9V&)GOUuU~H*rgrG|42+4i)0xSEX^c zuxQ^L`}p{FBCN#htbc`@11Xj1>fBvddw0E0USYNM^~b*4Z_Db~fVgztMkDKw7TO)k z3AU>1fEooUYdEFdVkL2kuZ8V<G{mv$Q01^sF@lc$1r~59lHWS?K-PawPZy1#2xE!l z39$+E+~G^=%{mZ@hB_-#q={N1B?5^W7kmbKWa`H>){o647h&%-5UziNSI}sN@{=3+ zYQN-`=LRC~Un_H&O+pWv%f`MzMunkotbU=+gf)S{(20vQyCN@vm#ZO!Rq9gF+}S^N z_CU@g2$jrti6oG>rn|M)(E0~ecc!}BY>w}sqfi!W6IRY^Bd<*Nrevnf8NDKur@6c= z58IL#)kLM~q?l7$@ptnV9Db~qyip(LslKBnwmo)ubxgiJ6xAVLTtPK)hPI=Wlr?X5 z7A6rtjll5JXXaxwq%7x0mC-N@u&8!bd(Wh5+XU&6;CY5uEiL3VxLHEgrUYOuWADxo z)ch5v;PG*&K!e6w5oje6d{J{WQzy^m7lG+w%q{jJ7krZcrnBo+F!w*C{~_v81ONcs CW#Whc literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine-moon.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine-moon.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..6d72edc5a3613ce624e835979b7b96b63811b7db GIT binary patch literal 370 zcmV-&0ge6}Py_(va$BlghdJH?vmfs8|KHjwDVm2+X69Yg5=$bB=KYg6ghI5Cuo0W; zGNJ!ig*&!KRoARQ$@1y)!og1wp#KB0;6(m(!Uf}u@`!coWmzzYUGS8LA>$base;}T zrlE*zvZ<2RlF-<s251fZv(Bb{Fx!q4Ez;lMYj|miFWwQMn+(NNzOPM6-Ys;X(`6I& z?JwMO4(e>OHwr)@8fUegDH+g?Bx>7YaJbOP_V>zZ5t>EgfEr8v2;pa37%J(=rOaQe zgg&$3UF38hakmw<xX92r4#<0WFEoC}gybtqTk0K*bTZUg%<LGI!?<vv3@TNrhxe+e z^}g8AWM9`EWOcpl8(-7f-7QeUH6gGBiPOY>4TE+RQ!H;P!t@N0>%vFNu5U@o4y#qE zG0rACTRX@0rH4($Vc{tSvGqN{sKp2sL(HYT!O+he%m2L}zGOm`gI!KO^<041ZZ-5z Qb-ItXHfK}?XPcnu{pBXWhX4Qo literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine-moon.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine-moon.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..ca27e6bddd75b7ce09c6b1e48ffddaa839c9dc99 GIT binary patch literal 455 zcmV;&0XY62iwFP!000006LnMDvf>~R{1vOt>oKLqsEHqA4KPGj0xV4Sn6mu$tr)=Q zx^Kf=y64hxE3i20U*YCJ2xZ!)bk{}YuJ_5yt+u}T!j(X|Ju={z*4y5Q=4(@K*5z(W zTQp5TjhvJ<sidsSs@hEPCAVFNhElAmtL;w27(tu-hxMM<Jo>Fe4`luK^mM)9)Wb*- zJ)viTUORj%y;%ob(a;q87-7BEND)Aw#u=W04iofa8tcdAqKmL|8VHwvz$;)nrKV?Y zgd>xyNC!lzf33_Vn}i;8qU}3|DJu*ev-%CX;MN2JL#Ir_cCyaP)eyoWcBv?L_K#gW zGBb$W@%26}CXlzLy-90m`GcxGQ?p;Kj-OITq0H9Ct;lO5uT1-avQXxXUJ;7Za|WoP ze%?iCI;n&yEPrnPg2RvXB5l<7d8*&NrDS_-@#?br@F3az3X1hPRgO|p)_mAmm_+<C zLP|e<7rtjhta5%-84ZcC=3I)yy%0*un9?D^>kRK&n#pT$SwegZdrX_b&YdBs{1vC* x@o}g?gT_V?XqA4=jB_+&C$IFgz;v;M&1zP&Insa2lj~hD_rI%`tB6qq004%J>s0^% literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..96cee1d6aad70afd4c92ecb89e1ce0a02c393fab GIT binary patch literal 370 zcmV-&0ge6}Py_(va$BlghdJH?vmfpjt*w44k4gw-?`BX-Jc%sUZx1{aqJ@Nw*i@GZ z{l_Zg*a}r$vjQc-r^^f5KLvpP55$5K`O^t|G^H^UtP3y8f}z+Rix}sMrxT=#^r|on zX_Q8rDrr>_L@J30t+s#G&a@9^+mV8W`whN|mzwza9T7UuP)z0bwL!_dg${H|HmSb$ zg?r*4&Sv(y0VqJ@Sv6;}3@F5r+O`-37dTn_UO6mmvtVpdqp9yA{PYS#Ssl5QnQIl> z2OGWfoNgiRnxZNf85+kHd3W!H#?P3Le8tj+dVvv6+B)-@?V)nGE#e5Z(aOMkTGV=9 z>}ax&>kejhw(J{I)7Tv?P{K7CsNyshiPK-hfC-Dqmp2rlJEO>9;iF~Ow<ODsRtr*N zoK2Rtc8={!51WcZ!;=HC**(E1ZiI??DX%cJ^2RcM?}uM9(KaHq%acz%7f7tNTCG`{ Q;Xe8rr&k5fRzcJJ0X{CWk^lez literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/ros-pine.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..1d2c471e20f563adb8976b5065ba7890782ce15a GIT binary patch literal 457 zcmV;)0XF_0iwFP!000006LnMDj^Z#3{S~Bn9V*JDh4L{d7q?_dlT705P$B+(RT^gs z!>TWieSCa76;?uV)_=myF)5YlnvJ_IcJ6wgyuxbhn-5q?Xtzhs#HI5#8rgi5hq7L8 zC)lEC0%#DZtf7>3wcc#l6kiJ4_h67>yWOs=4k?DLBYy=I+gHhN9e9S;e@;&qjljsp z63G)H5BS{SOX|%!CKL`$QKtxxS_38m2^wa6hV?+yk7=wQn@cW)-f4!g{L8#zToaU@ zxsf%LK;;-B^{<t=WD~(NO=V-xfly)Sxz#V!g|H?dGkD5Hc-0=(v|P<XSfnl$=FWcE z#RHj1+Deo)bsErH)7@HYaQO|YJ7ZI?R>ybHQ7E&u2`ls3&@0ouDOo6U2Coq0X*L5F zoCLz7(s)wDDXsX~`~`+@>m_Z}$2`?nv`Dsx4z7;KH)Xxux3eoK9y7EZrKGHRv$HUX z_-O=!pFRs8`H-@lA613}RXhmM%Kg2Ns%;ab2V~DPylQDCufb&ri7l(MgrIk47F7Nf zr{M8%sDOipMj_KmB>1f6Xr@k{%g+MS#qvpZ<2PgaZ#ubN1#|xgvLuYxQ3L=0(vsPt literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/sagelight.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/sagelight.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..02acbe0696e2ea7e160894e80002b77de5563cae GIT binary patch literal 361 zcmV-v0haz7Py_(v+FYt!-<a4Rv>-k=|LZi(1SA^l7y#M*@8xQt%h7SEx`h_(u+gbV z*8!-OzMz(l*munelq{PrRE+*T0Q4e*E~MmQkVE%~5M_AULPH|Qj6+j#|3X57xZ8x= zw<sV%OlXaQO;^)CsBK3I>i>0@>n5f1^wm2ebVqQtm*3Y0BJbLChNiM6647WeE&^gR ztv3llfqmRWVH#FI4sj>8O$UVwthV1PhgyOKnV`l+euD8cWsGVoM49Mo6^Wyb(s|a0 z_-K<*qLm;ocrP@5R&h*Qx;Drw7-3cX%*S?$-C@c^Xoy&+3N*Yotfu>-M`e9nchIWa zW$(35V|-eSGuOnRPIYMu_iGrC)0upBgA>{%Pq}9SUUqq(Nw+gpN=2p9gRZST>`QMp zp@$PsCd9V)1fzul`yl3}yyJi&4J`fle)uI5BXtV-ay3LEICnDCTEDGRnTohQ(o2Gy HouC=~m?*Bk literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/sagelight.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/sagelight.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b2692d75126f92c835c0b5621f94abf10fe7abbc GIT binary patch literal 447 zcmV;w0YLsAiwFP!000006Ma+Lj^Z#3{S~Bn9V(VthN^rFauT;>N#ktd>`)>8eHEHy z3X4{LaqQ#!i6n*1$@~ge2TEx>bRX`r+PTYZwn{SOySI-v$w7cT51yh`-CN%#nPIE0 z3usWXCR;*On`HK{C5<CmE<VvF$v%dm*mrG`Y$t~vnEd<vbkRzVkV<4rh$8S~hfkqb zav(KNU9-;~5sg942^1P!<g+khNqwJ&d}=P67)NJ-as3Cp24M=cJWC@zv_IQTE(gq| zf1~ZWs*D~?DH}(D1r?@Ika<eoNV0*!^05}_0X~0}<r)ZKmAlkjJNrj(?#M+FC2Nwv zp6qb#$@2OO^>E^Dzu6pKK@(9HYm=nv+SqG5yeQdddqS@n)v=a`joQj`F%h-lqb@lW z$?wgdarz>!%0_*xQ~i#_MfW)1#nt3n_1W(hSI{C>XrHL0$-dZGm`VIFLV+LO8z04# zqnuAH<LP@G*sJZWQM&IlWJHF?8J@Ycpx5Log=Cv{lbgrUognD?6=&z+eyG5c!A>(6 pEi-&kGpV_g$MOrue6jjxw_*#0yZ;R@rf0(3{sM_Q_Y_eC002%^+eH8X literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/sandcastle.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/sandcastle.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..03b4b392feb655934fd88bc56bc66b93be1891e4 GIT binary patch literal 359 zcmV-t0hs<9Py_(vY+I_V!@XGxh`IkXx4Kj|@OB}TfA=10iIK>7pGhc03(3qA$rv;9 z#<xk*G`-vKh?j2%sJdnaN|jBQCx*WSfc_k7V>EX^CtOiYQ^r+yp0$&q*%iw<7er?i zq>6GyN|6fgZgDAV8>*Qiw1$4y#k3FUwj%|nzk+W-ltJdpcSPvcf|9ac8=O35d6)Z? zY|?$F;GP7CZf0*BfC4ghF&IU&SQzcb+cpQm1)80@ayZShU^l1<az6(AOu`wru*zAY z-zsLaHbxiH9)NZPM+SMh_o4AtVeBqa8}0>0Xd0e{4LbokOu`V_g6c$Tc(23S?_D;g z*~hzsS=}uAM{^qYUzWVguW2Q~dfX&aSl&QF|3Q=6(1&GDZcEZGaMXQP7lqo3KHuVb z1mVdCvCTcfNXe8aM8T(gfWp8nmi~J`EHW`nO*k%_rCtaWc2><pBwH~`JDQ;`*c}L( F{trn6sRRH3 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/sandcastle.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/sandcastle.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..f0a63eed7217d25d9e5d5af535512758bdd7c1e0 GIT binary patch literal 446 zcmV;v0YUyBiwFP!000006LnMVa-%Q|e3i`fZ^Psu6ha;*;}1c6F_vq~O_)sI{f1yu z!lnOgX|=nOWq}g1v;OPvmPx5h*A(`)DedihiVD=|nm1M-4)y-XnYeTggOSZ!Ugx6N zPq0nXc+en7p-CkL?DyrLDZdri_h2aHK0ZoO#@a2hF2xUdT~sNK791mV@6*)=BPg&@ zB1U}Ro}L}9O7CcyP&71I6*D|&4HO9^Xjt$W)<dFxbc1d*7efTS)r?^K#hhYXCuq7R zBXz;bLmlN9QSz^qxy(lb$8?enJ%@zyL(fsKs561a6Ek$0yWLe#@HAY_yx&BZie_j3 zowEn>HHjyOrn|RjXnO_KovEpIyW=b9xG0OU36%5L$SKpkkj#`hgHr_ZG|QKH&FjR; zgVJ<TiBqEZnfwKYD>|7b>cZUBXFy742OZq(udkqZn4#^sN(#-3nfYmnpIS)p(|hIu zA7Yht<Cf8|R+Or3Bcumn&poVnX|Y~|omWU!Wm~q<JoNU=yqdq_lsrBj%G02sQN*+o o5x&qIkI~7q{30>E*v}`biacL1{aT(v>xKFL2hk;9X;B0K0Op?G5&!@I literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/seti-ui.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/seti-ui.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..d6396a556507033455e1aeb9c95fafb9ee75d756 GIT binary patch literal 364 zcmV-y0h9h4Py_(va$BlghoL`#7T6qD_<y`t{e;~X02%jmE^0rO$MU>Tz>3R8Y^uwI z{$myX*cnw_vjU}&PL~IhpCUl7G+vj*(+LkT#3ZJywU_6?Aoh?-0#xx#gH%CxvKUg3 z^(Gvxn+nhXv?l&pchf$oZAXe0={NWqURvUtcSPtRM}*4vwMogRHl5Mwvx)lt7w&ln zbvD_X1)va(vv9^yI<*-b#kR%ZaiNp_@0HUcHjBm)HJ17r!q2QU)YFnk2-hmHuQt5P zoE{_Yz9Pq9r7?@hE8Yu@za)x^6{Rip9!5GD>nvw>j>=(Py5KOY1mFPgU0LgW)1%71 zt~<!;e%UvnrnP%nj5F6{zyZ)w8v8X2novx+yr~G&86wZ6kCt8Dl9XNFY6B!_dD6AD zY(ILli8w4gB@o-+6O0@YkxXS=${P&hqOro?`{7F_RBhPhWa+tJ5@|K`zfb{?T5WJ< KRdBWmn$Zt!v$RYA literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/seti-ui.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/seti-ui.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..55b466c0510dcd3d4864069620fc52f2d48995ed GIT binary patch literal 457 zcmV;)0XF_0iwFP!000006LnMDlHwo`{S~X`bxdhRj1xb`YM>KY39!)Yn6mu$tr%dU z>sDSmeL3g!1z{ytXZ<VO97w55-`4KBV(xmMy~1ki+Yh;)z9R>5>Aj6cwjW!zZMKIw zZPm5`H40MJ<dT{<>>%d&TG(MgLpiqFvYPP}Bj}621}0hZTZbOV`p@~-MI$J}M3Fop z@<7iDUrKM*flxHIRg)q-YK@ctBx+pX85l4_Kf1Ag5|><rgVR8`{sUeC*Eu!+W+6h> z-7fb4L|MO9=2A>T4?5Gvfn&}J<G`(cfv$u#fxytIbjusgGKtU-!YZj$RFwT=SC7mB zf_owNUkN0Tx2C^!*3kMJRez?o*=&yQQl~>%j7?Zs#ztP5{tacN%o)8Rl&3=f)d^sE zV>~KNCzUa!6+e@|;P`F5%oFvoboD!0%C^TIuP%c#COOB&78H*qwVO^!S@ULQVLsxg z7IOOOv+|LTsml53%4qyy<V^B=B~{m@lmQ8zdw9L2#d(dcoDgi9o!BMuIJh$eRi5G; zJU$i`Xw=v$0<H2(TX0ThQu0i{2+SMH*au*&?iNV@EzhpkgSr0&*&;w<Q3L=0F09_J literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/shapeshifter.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/shapeshifter.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..2ac94b96c2bf959b6262be6b56cdd0d9c97597b9 GIT binary patch literal 362 zcmV-w0hRt6O#~ohYg?*ZhZjX!&<zoR|HpgP5^fBDB=4TiMg67nSe_U9V8x{pUIUa< zIzHpbnN(e~@}w!J%h8j6f%v@QOpfXi+9;@O&7%{BW?`#UngzDX)UzoT4|J!d+R}3V zN~)e(Xf<)?+)ewCZ#zqr=ilDz=+N7G^N#F1gv2i7yV`{D3D_ZIv`GbKn$@`IPjj)k znMVjMVh(x<Fc5_(s&w0o5ILc#{&&hLHz!eKjPcNCggf(CogNF6^3xH;{Kkgn3X@~9 zavvuE0N~PCS9^CDe=TECiC7CgQb<!KV<lDRL=@(+4g!YY%OFvE7uT?FFy@x8;|7+x zU-ml5v)Y#hOS~rhKu82g{nsxjMvzL@CIQS-ws?+Rvh3NtAtKkOZ!=Rq$`jN@vDS|s zx6~LOoic{)?}<f05d;PWdw6I0IC87>*M9hdiAlZ%$}&}Vbl@(-(SUz3fmQ;*Sh0w} IT$eMWAK)mlVE_OC literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/shapeshifter.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/shapeshifter.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..3a5101bc3541b391871f8dd6d74a1ae2b10c0f15 GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006LnMDZsQ;j{gp_4Z7j!^Hg-NH;xcyFV4yH;V@3J*6){jJ z&5D=t%;C(L;h1R-#Yz5gS3@`#YV2!s*|g?zTe3_`ZTq)fS(Ur?KnXjKR(r+!x1kGX zfo=NUfdqy^t8|6XaF+U(>1hImsn)h_EFc+EvTnkOd2PTF)b@S(G+r_EB=E<K^VH#^ zyr-*IZ3q)M_r+(dP%kB5B;X)n#iz&wiTXZ@wn1D>AxuURgzaBq1)(xQ(`OO_T{Tog zY)252eks&BhX|I))YeZF63WdJ)$)nDU|KmO3Xi!-*)`2RZB`QJHc_R(tn61@+>x1t zbIx~lByni98n1&^xcvq(p0NKc%fl;ZaLH<IO!K@pv_g$9S{6c`zzPI@%<W6y`#QR3 zOTCbI6p52-_Otmj%-`Dbv{CExR9{|WiY<(AF^RmYfpfBY1wnm=4#7%7s~0<Si-R9V zNbuu(VLhGWEn|braL(SP%^vDo!No8{$OK3pXL$C~%3ia{78<(l1F9$<CUYWA<o|Ff z9_|n2aF);uBvP;lU-b-ORPxw<Rajmuaes7eQ}Gqkf3K(1vte%k09}o7=}rUy005ZW Ay#N3J literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/silk-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/silk-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..05a0a00eec1a1bb59edd4b2286277e61f6ca53c9 GIT binary patch literal 374 zcmV-+0g3(_Py_(v|G71-zFmnlwn5@!CET_3zqWd*94aA{{X2tN;x3WJ@|VOT6rv>} zHeyp<CiEYxkYjr^EYl5?96w%}9R4W)^nb6x0W?o1T#&%MP^@WI*TGQif>}wV;29OE zBE3zPnrNOx+tb=A@TCVrYnY#PcBIY6gcK}(@8s_2rB{6U-4VL2k*4zd+MwhW!V+{! zHmSbzg?r*4&Sv(;1t>t{S#+kYbE=X&u`$LVxWLKI_sU_R&4RI_#;1Oa@H1%*mA!RZ zm}?d7qe$-prw54JRul(b5=GwK_d?^VCZt)hw4q*Lgp*olA+r-y4wKe}HqD{5VBo!O zN4-z5`|RVogIV2NX=7>{yPGTY;dK~j<DFx!^1p@w6Bbh_Zzw`{Mv?0_M^|!hNtPY0 z)(GVQU<YH@v3*!Wv~l?G<UlNaA0azssa$D!DeqwzG>v8c-VeWIV(3L^mnR=)E|A!1 UwN4F|of6u0ID;y9wih)0KPFSTzyJUM literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/silk-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/silk-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a3f4f1649258e03b0424eb43c02d4d260a583c43 GIT binary patch literal 457 zcmV;)0XF_0iwFP!000006LnMVZtEZneU(c4yGGH{ByIXIl>sMZCBVSkHLCXRS80Hy zy}kd8eSG|N;6`9^R-gW6K?tdbuCmunZLdFzmm6hV_r_bngg7$bm%*8!MfX->#dpmD z+jN~rg`A|(Ddhv|vfeH6EjQzcno_LZw`E(!7{QSI2f_DTM8C1<fQ)-zo;GMs0p=3X z;{)^b*x^&^%~;@)rmkpXgaxILB7s1KD?SY)ChGe%#?8$|7vX3X5N`i~lfYDhre|uT zXU(BbvjI`+UrBw*CZPkB%7&3)LiuTAMm<p%+-Ogr>6D9bU~OKm0`E7mOG&x2f9&Fp zT#;b4FC&R3XY_FEji&84%Hd31Tb9RH&{-&}wQ(cz+Q>;gyeL^neMTn<#VMC>E3t=k zF&3nvlT4h#@ZZf}aQZe*q>Z|er}_$plI?K7t4-up&py~;bp^>nhW4|Rq|q;S<`)q^ zjF8}`_re7>#VqS)mC=+c?iwa$0Sejo5i%md;|$MQTFGm&Swd~yusy`)akOXfGJnM- zc)TCV)1<JI1WNJ<U)7w=*vVu0RbaVT{(r35wQR-o-}K~q7R=9IrSfo4Q3L=0(f{j1 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/silk-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/silk-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..07600c6953e92448698e3bfb1bec643cbbe8cd3b GIT binary patch literal 371 zcmV-(0gV0|Py_&EbX%&d!_j*S{EjR9|97b_VJZ%Qly_4bWtYOG^8BHkfCL**d@sg} zNRsGoyLY?YTcOW<f42u!*Q`XT<<k|w;V%)P|K|jz5b@6m7nZuzI@Ky*Y%nytpozi? z>5L**A$Oq01gmnBUgi`ED(IlrFswS8_CaquQ?#cUd<`qD=F4|v=#~L2C10CB-i_@n zruQcBorHVdKvm<taYPEqsKOXWyCTnQDYtD5o);>1^2%wC)1o!9#)2OM{*23x9Ft*J zpzv0SOR-^HraS=J9Uw<LX)+j@_wYV6e&QtI2ca!^Pa_p$oaMTmfN+?UCOAmToajLB zby?%Sm{EIQ?+(1WS@tu;w643wdV5WjXlGQ*%>E67E`llNHw9t3(d4=e!LqBnC1Ka; zwMM1XbZ2Vk)V}m~ljE@Xlu)d?C+nTIMUZ4X<qd@apRDlren>JQXVNdlr-2CwJF^D< R9YHWh6b;QB1l1;K`afP%xEKHc literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/silk-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/silk-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..712660a2c55ab548500a97786c1a1c6a5b77c394 GIT binary patch literal 459 zcmV;+0W|&}iwFP!000006LnKtj^Z#7yb99%4iOW`lf$64-3eYC+hccjh!A&Qh1lM} zvVTrLs;avy+z8Ch>X*M+5JKv{-P`M?u-E$%<whCTe(dYwt0<2Q_@#Gd)S~^sru)Kf zDciKIM}?fE(Xpl3v5J*Te#^};pr)8BcvV*{<Oup0Kd^!o0ds3CIw0ddmrpxtP9w|| zA>v2o=~>}R>&;l;lBPDRLWYe>Aq4<|3Rid<28_^;X^fl2g%IIj6%cNJgOk8iERCO0 z2=5O290MH?Mg2<ZOL`JIP?2^V7{)3;4a}$)=!_ff2{fG|iO8$&kd~{!`%O?ODJlEs zojocO2=74TMF8>SjP7rp(X{<R*`KMccDv)d(%C4hwQ(cT+Q>=WzoE>eKBJR_;*{u1 z4*Qy?yGTVR88L<7e>Z=@>Bl$`H|oYT)%R#9z8&^>waE^7!y#W?L9#KGcC(eF(QkI< z7ZX2?5X(=WnH$*@x~!XBMpI&J0C;oHgzUOdG9bb846j~V*=w@NLM4_(9mV5d&){YH z6_@1kaVSrd!d4O}85g<YoS#9-GyN*DTr6VOWw9@t71Dp(W9Zc|_dk$?Y7kKb004(` B;v4_~ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/snazzy.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/snazzy.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..301d0ef06bf649653b4602b54659cdf2f7e83455 GIT binary patch literal 369 zcmV-%0gnC~Py_&E)2(Ucb|`pl8>l6?{lh=}{nU{}+XIleXIZpA8b@&^4hv{1!0D_) z>A>Hf8j`wiH=xAQ`S$YCpCUm2hXgXn<;w{(2}^WZu=YJ6f<bI1OS3#fo^p^X=muq! zQ3!Tj(F~pITyvmR@-Ld2kJ0W2QnXzC1>ZGZt`l#46GD4}P%6LICME9<deCXJiTdmh z?pX(QG1;pGpb(9VaK=E)ZB7Hd?=e_h=xp|P<+Su=(Zr)>o%#yF&rxY8%rQ&dt%@Ip zcD&ngzDT&26s1$-+<D}kd{-JjX%xvdtu6HyMmp>JY?Ik4X@_d*f{|;a3>>^WWuy1S zO*Z?w?I5e&_1L<e)_!4y3hvoJhHG%R{yhwu(oCE3rY2mSBQjt5WIfCyN!w*Zicw1u z2d+V6`!c|;<5-8M6^K1QGmOH8wlUZ8YZ!{MSnl8Z;YTJ)Rs_48z390BF<UkC4^2{J PsWvz_s^H?apeg(TBE`64 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/snazzy.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/snazzy.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a725f9d4e5336e65686fd9c47529942df97f59b2 GIT binary patch literal 457 zcmV;)0XF_0iwFP!000006LnM3j^Z#3{1v2qU8+6WQYasToWv<P(j=QWw^WFKKb0n> zaNL_~k7sOW%B{fSq<@F210j^@+R|NCwY%J=EVtVF_5(LqVSQl0&z-l?i1uT%+d#RU zV5_zbsF9PhCbv{&RabJVuet4eG?Z)2uGux1Y6M-*Lk%_TQ{FoCK-PawpDr3s5k`rW z36TYQp75phY8`MzLt8Yd!lKqli9n#n1)qT)GxdEN>&M|zim-PY2-knWD_}Z9^JgAJ z%9__%4v6ynTAA}45_-^CHuelNDhxfd`h~jS)&v4W$A`#XR%Je}h7eY1N=5Tz|HQ=| z`5-CfelHS9Aa6}~mDbSu2UT~Xw)y%xyn~KLS)7eqF`tdRGTj@=LYWhKMJSH5d=0YM zWfQQdG#ypu6qY|Of5zd*dXX>c<Gj^(w3K6y9bQ}}-vbJXi&s!A&QLj8Nm=veW??e% z(+U}W{49KAL+WyVbQulvIt_26ycI%8nIJt9Jn!)8rG>o)x3JI__^&iP_U;5h&A;MQ zJlr2D(4etZ1X}R~UuceDn&er2QJ7vVbF<C1Dwj<EZO^G!!`%J?BhMbTQ3L=0*m~PE literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solar-flare-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solar-flare-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..829b8c34bd44021b3aff4eaea86fcfa0cdbda4b8 GIT binary patch literal 371 zcmV-(0gV0|Py_(v+FYt!-<Ujj3o<dW{?}G7#ltLwvVUh#OWY-zS^biDghI5CFfS$| zNuvMl@Avy#K}>SD$5q#?M2TU#5bgaE5c)qAOmM2<HniY{Q%#XlgJH7^$6S#JoxblX z${PfgAoFB%rL2K5PDMm&^}MRHX&=&UX9{*VgRjR*U-Q{JGIXUdmoi@)K;E;w%Q3~9 zgl{I?69Z9A?+tuXK*lN>(~uW5rjWR88-wry#b#bP>^d!2l{G&20p`!pbW~t0i4*fy z(IwhwU7*~>+7?iOBs5Buc@OVH<0lV8eK52EFEm0?<1Eze5QoFin9#t}R1jk5y)ZTI zOE#w7$Gd}GT`v1+Vj9=ol9%~4QKAs1NfP?MVZg;;3i%B|=x%IsZ9Kf}$=#A+$6m_- z5}HTrtS$<*FMYnbarpS;P%OQtJbVhkAftTBdlb5Qvdr)OFv$cai2bto6q!I_bJmD| RmvKm?L!)L0g4JHqbbjzSwYmTR literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solar-flare-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solar-flare-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..bc8f80cc810721f4ace6c1c72772f07040df1f4a GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006Ma+Lj^Z#3{S~Bn9V(#oLirfvByP!)CfUT@p+fxos5HqG z2JM?;AN%-n!i~V}tp50$1tFyFn%rJjg}vTqFE`4#=A)>~x+;zg_@#4Z(4zThi?(WE zhOL^$qe4#7=$HZ}w5*=vYi{};HN{w69P$H(7(o~PWmy&VHu#N22V~sm{IrASG{8g= zJbqxFo;!R=y%`H!(%58Gh_FE^q)<Sh!bLp|J;u_HX^fki3ogRmDj;0{11Ev02#wF! z2)4zp$O9b^#r~Dlmt+z;P?2`%8Ag;JduG&2>5Log2{fG&Nm;TTi_2Bu{VH@RDRuVC z&K}60B70VBc_`w^8QtAlqiOwxvO7~#Z8pbu&`BtZwQ(cT+Q>=Wy`jvcKBJR_;*{ts z&g=a?-9;)o$yieu{<HZDj$g)!xKTHxss0XzqV2H5t4(s)amF@_D@ZmZXgf(s8vSNx zeirf52oZkz%-q1nkY(MZG8!Xep0fhC_e{vP4UirQo@aQ~(n4ONO%j5<%th2P_Vx^3 zrmr{$kB>un8WlE@K*@NV1?OajPM+x(f%#&wwy1J`2!Hzj>CyEnnEN-()ZWuk1ONbn C^yc6I literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solar-flare.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solar-flare.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..7d29f20cb1260cbf0de114ac69520339bfee5264 GIT binary patch literal 375 zcmV--0f_z^Py_(v+GeU=SN1=sE#O!a{(1LXB}MZP%C>h=OMDVpv~K%}LnuTG3EzwH zB9bJ!+wR?N_g3gL-`wp<)io<ovU0i{82l0u`hSdZk(lsv!UZ=1MWMQNf?zN-y8wem zgU--%74jBD4TdLMT*_Ju_|ngz*1)YgoAx2ycBW_#Gx$cVj5S}pBSSX<(NglY3FJM? zyByPa6Zm$*J!7D%@!rTIg=AD=OiNyX0GY(wHU`5B72A2`w7Y51>R1zl9})hHZAT@< zL?rgD;+D*Ybt&aO(e{8!DgmB4<~_U*jh~va@F27WZ)l{Vi?g(D$0Qua)`S+Frba1C z@0G1_U$QavzTO>pb-nDTjcHwXOJ3&J#K4kBlZ3^8!=Q^`O7ok7Fx+TzZC$eL$=#B$ zqt_}a6Ug~4tBXSIOP_D?IAVMXD7L+)oX;hRG6SCS5ruv@S@!S!kYqv=M86cDIwl}& V&l>o5nU<*^qoJ7wL3NZgy&o%Py8QqE literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solar-flare.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solar-flare.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..9c3cf84336dfddb49e3cd97382c3e1c0e8b021ba GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006LnMBvf>~R{S~Y3>oujuEXI$q8t6nu0t_^BO<Df?R1C!E zIB!ia=k#*mMqqYUzx>UD5K?zdZm+AtUhk8a8)aPc1tqksJ~H5!&Y7S^^R=ya<*uF5 zR!!qkAtz~cDk<u+u8JwX=BDpaQ;L;kRn*%UBj}R9E)Mwtqu*F`K*oJfPa8C+03${8 z_`p29cKB9$GZwg{p~<QkVL>UR2p~}50#8Ga3HmXOabt7QMc7*fgzG=xBrugy(=#=K zZLurzNC!lze<k&0HVGZ5L>qdBDa#K%GwKaG<3@V|O{bZpEZL5w<tp%g6}yx)clM8+ zJu;sldsb|D1o7mI?ryEowEjWaovEodo8za{Q7DVGaU<rnk(0XnK$%H>MkfiyX{N6@ zulM`;E>h7+CQM=YbMqG*evA`oqb|%-{SJnb?XbhEoz=JFjBOTIkSxrp?I<N_^oO1K zNyINBr1aBw<^mgHm35=aXh@8C&I;V#Ga=hHru0bgI>Wn`7V;YGEFs9tT%@mqy*-1M z&#(9h9v_GDG$?E&fs*Ms3(nDuoxIX70@KA3wy1J`fCbWj%aiL}F!#Sb(F8nE1ONa- COyJo7 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solarized-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solarized-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..bff0d4aaf6cc0ecd284c37dd37e7070b4062481a GIT binary patch literal 371 zcmV-(0gV0|Py_&E++3=x|CqMG#nkV+RFAMFIOH*&o&QrC<&MIo`OZ>aK!Ob@ei!{j z$w{K!`R?p{cPK``9bnZpD^PMaT|kU}2>|`yu$aWe{hV-xF-@3MZGg3lq1lztGFL)p z9F~f5A%#jbtGBq63C#>QlF%9jQy0@dq}z@Z9B~I<Cri(K^^OSLS*WD!*9Ir=S>EM7 zwVHI_ZMdfiVw%;PgrI<oQ%pu=DWkNg<851m;sV2NUpXAMEw~$MJogibpNS77(u5~O zhO3I*vW?j##zUyxbtDp@4aSDNhxerMQ(^30q&D0uj4(8wrNT}j9i~2o4lPW8_r}+L zU$QZ+KCT_C>UP=Rfz$ZhEqR$=QvgBZm>BK<hXD_gDOER+Fn-eH)(3FeliQNC>qgC` zPBOaB>Y`Bl(&t;e4i8Te#F~4`Dbh|ANjcB*j>6DwR-pI9HklZuCXCDBQ;-6M-CgVA Rx6PQ;w5yqP!D$yXgC9DryoUe) literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solarized-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solarized-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..866a2150c157c4b67af916c6923daa70caf159e3 GIT binary patch literal 463 zcmV;=0Wkg_iwFP!000006LnKtlHxE7yb4wGJEZa;Aqj_}{1Cy5V|#6RhZM!#r$TH` zVAwxJYIRF;hiMMkS^jZ1LpT>|=qq#G)aH6$vP?^D`;V?71t|`cu*+bzSG@no^O9E0 z0^9Vx0|^X;R<WgS8`#%NearMXg2Gs9>OF0%P(w1rd|P$9E^uzO0ZUNZ&*js2#n6*k zB4nJW4xcA{X}xJfn82ye_Mt+(lz@SNgM<~IA|piV$2Qu|!-W*WXe2?{{v%cpDkC(0 z#z8o%%JLNC2x6RH3Ux^#f+aG_`jJ9JxoM<YzEEdOD~CkkF^Vv{qeVOvlf=1Am{MSx z>{pyUkcouWZI|bP#G%z{xSh1Z?H7pQjQu{(5AUF}QC4STny0g&6>4}RnF)0UD-ifG z$+va)!%4l6codP7YxZ;b3rt_y@_13}(^h}I#u!@|;A$dyNl4MPt5*=zC+KOmlF;hS z&D>(*rxhan_?cNxr_g2W>@u8^V$)Jy-ZL&vrvMoN$@31cURv2}GRZ;>+ZSvXhKJFd zi4*BpT#ARsLphuz^a6<#EWlTqa~LLhmR}W?7far)s-`VhO#f|<saM0?zX5wgRT@zQ F007#`-RA%R literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solarized-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solarized-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..c5edeec2aa0d0e1fc8c0df880c6ad679334fe45d GIT binary patch literal 367 zcmV-#0g(P1Py_&E++3=x|CqMG#nk%lRX^cR!zGXL-p-^pDwRv~+oQaI1RGFPz;ibW zr3dxg0ajhJ0wrhD1w{L&0MP%1mbns6T|X=4ZN|C;)&@hdm0>YCHl9wHD$<2!h8wxq z;*ut$P>E)QRy(-rV%mpv+mV7*{13j4m!A0e9T7UWP*M4RZBX)_<z22*vq|-}KipFX zaW%8o4M71Kuc9*|OBtobBHp$b6c@Ny`(HV%tSp!sYCQE_h@Y-EB+`T@M23468)X~4 zOI&V2?wTTz2yHMn<UPDM8b1}rZo}4wdW8`#TA!uN_Fy~oybD!Ym;mpoul2rUW14;3 zcQC87W#5IK#^G+s%lw)Q2pY%4X#X<|n6a5sc|#M%3yR$O04{rSOS0{1R&%M7jPA3# zDA>OA`4-3F;VFXH@}BZmsHBRdoVW50L(3H_w0GD3$wWI9p<P~l3S1zuR<#;_D~w4^ NYn(|HyxIj#^9Q4Mw9^0p literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solarized-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/solarized-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..e6dd7b3da6576e01629d7b9ed6beae6646006fa5 GIT binary patch literal 462 zcmV;<0Wtm`iwFP!000006LnMVlBzHaeHCZ+@5%@W0zQn>kAS_Fwzp01$~eCJ4$^kf z_5KUV$vH`SV46dAmVeyM5YB}fy3$-XmAT%REYnik?xSjII8;YU*k!QVE8czdysx2L zV4JRUAc3LKDz>yG$w|J{w@i;CD2%nHZ1-&)YDk8dud4%X0_Rp6umrXJTt1Cg3_Y18 zLdJRO@Oi?Q)|)nj37op@5GvG52^a`CNLcYHGD4(&Y@_WwTu32|MiPYWKVk);GD72L z9E7v7DEc5r5aaw(s7neFERj*xj}#)xO(WIvg*szeIV1{CQH0Sw&Eo-?B+hNZlmgRa zzvAqHOeC~w+TAXYIJ8;~w_YpUet{Uy*d2De<2&eVl-1do=ILx`g&N*SW<s683Iu*i z@=ewLa8fTMo<!v2n*Ch<0@IhaJYLlLwAEj)F~$}KxSB{_5R$je>J<d_3EIzA5?Z~v znOjW!v_gcRJ~Qj-6uOL^U4~OqtQ*RUd&WiI2gnFWo_Bcl(#l?wNfxTvA!qwAJdEZ{ zoJhaoQanB$%HbrT6G)_B0lw0l!!XIS{Hn0LSn_UJ)=jZu`fqzoy&C5J4WRxnZczjP E0L{JP00000 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/spacemacs.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/spacemacs.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..a75baab220a9acbbe3c1120c8541c3aba4661466 GIT binary patch literal 363 zcmV-x0hIn5PXr)j++3=xb4**fn47hxP&E=zz7QtKZUIPD1NqCT!uXd39pc>X0^V>F zIdVW%*Q_`x@aY1w{S$!aVa!*L{@H{fEh@}7cfh$=C{-7`HI<U36J(0yp)`Bww_9A2 zhKU)VC$ie`oQr86(rpI{=HVCkI!=1h<97t;#vx7Q*R?^%XO?%lN=YUL7SM29{KL6S zUN^u5NIZwWBnrj^Ew=Htg&?rNsoK}dVQ#I0k%7k3-bL`~gmw(L80mG2_1f<5z>_V+ z+zaz9m$#YBaQE<DWc<~H_$3P)+66>7WmOil+C#<A3q8myolph$G_2L8vN6p)t~r>~ z*|M*-qOrYO@-n|B{Rx&?sfGUv28>xsv9zHC!zm?hLx`3=xdmBtHN+PRt24dN>Z0KK z(dSznhKHsAV5xh`(VV4OLU|eQ&|AK(^w0h9D<;~h1kLi)OW*-%wMMIfqDnYXq{bN4 Jz;j*9G=G3Px}g97 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/spacemacs.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/spacemacs.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..9f524216bc0897b117d96994be43f0849e2de259 GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006LnMVj^iK<e3eT5yN!}G*=*B?srYbGt^`;xw~ea4`-uj) zwAT}V9DA6t&4g(V#aaGxH$ylVYV7ysx@pbzzGRt}+V)$r59de;yNp(Q#rthF)MZ^S zuub1PkibxAm98{RQ?>0<-!VN+pfJ_iuW(`w$(Zu=E1a0u1}s5sKbBA96+=&gM9er( z9X@yXa`mPSVFKsA=wgL>DFGt^2MH@aMJ7npk7=|G&BYYLWF$e@{U%lrDibt)rbdRk zZmJ>55yaHL6zY;g1WRO+^%I4Ja`QyBe4#FwRt|~6Qxwsbs1ed`C2?*On-rKE`zJ0Q z$i%Uw)uF9;Byni98gGMExcdPyp0V%B^7sxKe6rda(>!kttx)3|$wH_zSb@M#S^l%5 zRpz8#NIZ$e$u;}C_zTQG+VZqe>+@9KUSo<ajBquHyyl0tYgUgSsL#+LI7w*rW@m2k z@Y4the)=e^r*phzY%m$l+3v%k<K4aBVi+Q10wm8fyjp4HuGwS<k$uH!6`P02oQV^w zKQR=KkB4$NOXvj>DOiNBG(#9Wd6r)lmKV#8DEH-Oxnlb7^^|%w%>56d94a+X1ONaX CXx$9} literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summercamp.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summercamp.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..7e981023c01a00bcc287f31be4c3280eb1dd6083 GIT binary patch literal 373 zcmV-*0gC<`Py_(va$BlghdJH?vmfsE-=%sW2YzV{K>q%j)Mi;qv{c<fc>xJFpx7oc zf+8M>piOr=J^z6MNj~jS)io<oGCo~iIQS(X^#7Pg5Qh2J2^ZARgc4QjW!Yx9?1C#E zvRG#rgo^T(kO<8ayQxxEa-kL>sWtGY&Zd1Z+s+gmeh1%xm!aj0cVy@)L(Z^Y8$jMI zbbu+*Bz(K!o;ZkUMsF050y0j~nHJz76>OunZ4bf=4BLI>aA;a^SJs5!M~FY8!cdFT zic)Q^Dtb#cdKVe@k+uV5nR8iE<~_V8jh`_gxjIW5@IoUDwa#K@$EX~}g$pgA0Uats z?^RLbzSz-3AJ+~>b-nB_Q`30gEl|QW8Aw#BP53tqc(9maaYGUMPcFGGe6;NPUdghf z)hdys+L5iTom2bL!>0BT;*&=)dry#@l1oTJc$N<+^z&qyzxTr?6WA~9a`@D9fx>py T+W5OD)sX78W)y<cLDKYoRU)&o literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summercamp.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summercamp.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..8978725013b1e2925a38dfad4e6ec2342ebc47da GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006Ma+dZt5@$eHEnr9aT%|VC7+ulR71rG|5ezJ1WGxPo+s# z7`p!)``G9BBiwXYoYWtGwa|4^_ib%2tHxe#vzHrXT>G}GKd@;I4EVWsCg`qxt9Z4q z${Dt5TaOAkNuyIr4Ry2G&G9ui!+@GntSPsw-p3e0pZ%g?+a~&rMF(Wu`~0*)a|$p~ zM2`>5)1$(t)T^<;C5>&7gs`9#QY_G+!bLp|1E$jVZj776MHk^<6%elffs?>gf~IE@ zf^}1EH<1pAl71!iIh%wIRH6+7!-VqVz>In-U2vm4fu>_35e%w|rQs^@eic<p%F2G( z#U1%mWFti0kSAw!e-%d4`U_=$qIOr7hgZ<)P!?n3rpsd^Cw2dVvXJ_OP7-#<Oy6*1 z4dlH@MMs%xc832<{*2?7ab23I3%RSm!BDat_IR<mI3Qzuu?5LOhKlKwq|q;C=I0}R zXd%Im?}ZC&j9J!AS4LxE-0nY_C~rk4g@}*=2_AcRzNN)^jW(Z<5c_f;zt$QDdjc=> zSDb@~`=UIJ3R_8_Wa@RnIhj$(BmE*UZ!FjT_+*&Y{NMECdOn!jH+;ZIictgr0He3y AAOHXW literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summerfruit-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summerfruit-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..de642a8f9cf5fc7413f7f5eb492ffdf44dff6b64 GIT binary patch literal 362 zcmV-w0hRt6O#}eMXmhD@ed8XVw7|p^{-aAZ9FcTf0NI`YQXAz$;nF;_bYQ_oQIW0# zP%V8SE*)vrH7ii+V!DVL{d)xHMTV{%KAliy$`0L=AW(+W76OSKGj>hI{)IxKxY*)y z-y%Vx7-)^0O;^)Cq}z@Z)&J|BteceX>8p1{=q{jUFW=WDBJWw=<us!;m6%40aS>3P zvEIZ5h4!%tVS=InJYB@wrbEPqR=eLTr`m!=nW4rbKcV=UT1K7B^MQ1&VsT|dy3G2J z9^EBWi<8(h<dxnFjh_YxTU=Y@BaF0aewJf9rS34bA_PF{GcUn=V{5uE*_c{i*Bw}O zyX<}PX^js{Ugp=tAYert$Fct!2IV+Y&TewT=aN(ItwWbRxzEJyx|pvUV{(1S>Y_O8 zOP_DC9v+^aAhx|H7zJ?##EeUM=YU}tSn2Qm@Ff$Y^c48AS|%d6I|()D7pWGcI4pZU In_a{VeoNG{)&Kwi literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summerfruit-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summerfruit-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7292ba31f9478a84f8e44914775203d9ad6ac6a4 GIT binary patch literal 447 zcmV;w0YLsAiwFP!000006LnMVuHqmNeHD}Y_u62L)>|LO3^1*%6u2<#wK2Z?1`BL; z-OQiq%;C(}sjw28v;Gxs4y06O=(g^<+PUj}jtZ--?>;0;cH|%~gSXMh?qjn{Hp5n3 z7f_=hWledqWy$9JTG(+!LnXIk$#RZhC~?k`<+yd|fvo?WKV39}BBT;I5+V=u+~Ld9 zn{^-*O<mLG43AnPWdeyB7kmarEYy!_tWVA55aH-F5UziNSHN|Fme0~i-!pdD=W;+) z`q#=_s!QlWm$Gr>SWsaaxz#V!jj$#V7&_G=^6<s#ay5jo%3Ug|o&DoC4`d|)4u?t- z$XheqdTVI?gK9Wa*D`i|2Tej*tW8*1*G68M;Z4a#nKODtC{MLKW8!ObsCQACPO5N9 zEB<c&g42)nvTW4HI@NcyRD6#EUR@#I^Z)>hD<~c-v`<n}*1XwSm___FLV=$?8z1?U zUpb#tMpM;$+qSsBH&XR|hKxw?Jj1J&7V?^0l@LhAV3V82(VZcv`YX=K<Ks|)CXJmU p&`M<ZqGob)C(q><iTPrMTkN+Bn*Y8np;xus{{R~BguzY(000~&-BbVo literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summerfruit-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summerfruit-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..27783e6428e1b93eff933d8ef9a0d2416d083f95 GIT binary patch literal 360 zcmV-u0hj(8M+5-GXmhD@edC^qwt!DWELvM7ddMohpUt3_coJDO|6cmgh?a=x7_Ezl zi8#K(EFEaoH7ika{&bOW`0oLs=L}smhf|q5Zb!1rCp>3vkh)_=uAaERqM)FHO_uxC zKt)mwolO_hKIm=d2<qQ;SL-I9c>3}kxw*|~yqDk929Q@{JBw-bNchfI?HTE?nR*+$ zbU?>V6sD~xfFug!w)w#@0;`>Gltb+T1exQD1V5(CnQ({7CP@K%ed6NSM(I531A24^ zC@Ymr9OokM#l_bc$XgmU;0=MW>MYFX?1UP^gp1Gy=#(Xv*lS+nKABN#AJ-bx>Soz{ zYt0xR7F*hDqC~lnQcC&N3m9oeKE1*G!X;0+<qlnTb)QLtqpLN39LF}=o4P0t`_S7> z`a|MVh+><2qETF$jAXog7Y-QYfo1>L&;NRpU9Eq2xf&%Rh&vf-#1C}jL-8>0`P?ir GrvC#3$F&^* literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summerfruit-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/summerfruit-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..e3f6e5086402d8b1d5fb6a8bbbbc4d8ca63f739a GIT binary patch literal 445 zcmV;u0Yd&CiwFP!000006LnM3j^iK<{FO@kx{au+Yr5&jR0d4Sl>iH7w^7x9KcxXK z?RLeBV-GX7nFuGbIhnul>Oo3v`)=zmt3Up7o3p|h7rM6%o6doQIQPLNE4w$P)Qnkm zT||R|w6g^-*>vXmTDW0AOQpuybaIWLFL}mF(s>L(F1*j5K3PEtCjOj>iAQ?u?dj^( zc@Ub$u4!|HCu5K@fkcA~J_`dD>iZ}zOr7Nv;ouDruD>8?;HE&!XK6$!#`e1`2SlZR zqwTqdgaJ&EO#{b*isQhYd7^HFvys5kv5Lt3M_rUK5aTL$si}7MBW~`<N&+1Al_XMd zw!bQ8Y5k45KT+2*c6bGyEV5XeaI&tAg0}q&$wu1~22CiBRh}{NvDw#m(T0w?a7ris zZ~lzqw+pgtG^9G!XL3~HfIVJ(wSxixSiFMfsY2CcCGG5soyFO~4<i)#@x2L&kNK7l zlgnr<ircnrad&H^Rw_dVBzT<R*-Hz1jlNn4BxA72&Ew!t5Ow_t=i=f1P?1K1ohC3^ nWcWgJ3Ueoq@{7X!Vuf4mwhNkH@0QfFTW<dV%dy0jNCW@?KYZM@ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/synth-midnight-terminal-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/synth-midnight-terminal-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..576eabc04b1e31b18cdbad97a3d5f18397cc55e2 GIT binary patch literal 371 zcmV-(0gV0|Py_&E++3=x|CqMG#nkVe&Q_V0El&uO<o{z1MN#N6buNmBFqI6UFfS$| zFNyxQ?f3gzp_ts&0ajhJ0;SHT3y9%Q0ige<BxNaguM@7Yz!GcL9k6yV6uY9D8XEJA zLRXP4xZ;|da*Iovh*>ORNoWm&ri*DG(rrfyN}R#hu+kD=z9T}n7Ah+9wL!^ymUp>M z=S`~DgnQ0FG}C+I5EP)XiN=UTuteZ8-nKC~T%f9X<xs-3U=66T)Q=&4#=aww$4cSM zKUKn#ZL}^?A3*MjcUxgHCIj-G-kZixg|XWi+EDLcgldShRJRit4ij&Jz%q{|@$g>z zT5lyAQ}5&1L9cF>{qQl3^I^%${F+c!(4r{pZy0bgm{NX25XKutZhZikJ-H<rb~>aw zi}Rw`XLV7qed+Tp9*2de2x66c%4awiX-;{UHy8$Pvi$G;Fv-L)6=A=uz62(asI#W1 R=wy;ntei;|Y&JpD{{esuwh{mU literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/synth-midnight-terminal-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/synth-midnight-terminal-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..77ddcc80d96ce5c434729015e786d0f5f2e1c8ba GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006Ma+Bj-xOP{FO@kx<xD$Xz9mPCNVVEkYp3*wy5gApD0O= z_Nsde_SiGF2c|h@XZg$B3~(;g(3a-9sm%4hM46V_wjb<^m27wHfL#Wwz2fahUgdSZ zUtpWIbtsXM&?=S``{Gc*lHW2tj;JW+cFk_TJA@p;5aUon1$BsPgBD2J&*js2#mK`< z5hBiaj-D01l-{%fCTME2CS*D<B~oa>QR1qff)Qiu$28i`;zEdUG!h86zrhOVWQ4}g zD5R^(uF3-)5Jmk`s7rbhT9A>}j~zyoo5oJdm)056$`L3!MG}Oj$$4C^1m`wErJ$tj zpLg~^rY7vb%Q~*ik=1Ir^;*&P2gPuvw#oD3JLqhb)!LZmX>DYM8s1Q5LY>hHLVim0 zd5utirMn18ClPyc&Hirwg42(-JZ{wbG}X7)6yFvHyqe^&qVM~|>I$Os3EIzA5?a04 znOjW!G(v=*J~QjPDO4FdyNsqZP6^oe_l%3a50DWFo@aRV(#l?wNftt=7#2Z1j^+$b zq+fAK9v_EtG)Zg)ffOvjSDf=RD0!w|C6<dNNAS8VqIdsW9z(B&x&Hx1ooKsJ1ONaO Cl;x@b literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/synth-midnight-terminal-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/synth-midnight-terminal-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..87a601efefcb8b1af91b1855fcd0b8ebeac7dfdd GIT binary patch literal 369 zcmV-%0gnC~Py_(va$Blghbedq(;x1B?{v1xv}}1om?Zxnb0~^JkEwG}JcOxa2!)N< zRF?_;$12>h1FE`a1xlSymlq9x3IP3|r7UBrcsk+ATI+zY?z}t?hGJKS8g4?KQIIOq zh2knwak;6ICc-34!;H`x`e$8C`(U;mDOkkc;A?nki7(#~q1zlKRDNF@l)PK$K&Q(l z)$14TIR|kzvo{Vv0UFPuGeSpPN2FBS7K6hDPU`o{VG)`I<A54V{TShAEDQ-yNkXi@ zRtbH!(YwUy0pgyBRw^>f<AA)U_d?@mLP)V<X+yn(5l)6WOPQUZa+nAg1c^b#)Wdr% zYP}UZn(X7cgIV1y`^MKab`J}ba7}0`m~+m44Fe`Drc~Zggz=0bx57uuu5U?}orYBB z3Y^>9+Bvo_J!~ot3r`WmD)$5}oJR&2FXat}LD5+L@BQ#gCWc0Yc6sup=K_h^YKn@E PjX5LAnN-2EP0;jzug<NQ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/synth-midnight-terminal-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/synth-midnight-terminal-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..2c9cf6dad1b92a78b52013156869f38aad6751d6 GIT binary patch literal 460 zcmV;-0W<y|iwFP!000006Ma+BZmTd1{gq04T@ix<EB%<tB!=cTBw6Cz6;=KBD@u~l zuDWlIeQY1wCroq9PV$et8sJ>0p)Jj2Q<=+c@iHy7ZQqK|Vqd_a19l#)_KLS}obw*@ z1-5BhhY}eHtzruMU?tlv@h#Kih>BtiN~oX?F@hobcg^l|w-0`8&;n`uzC4Xrj6BRO zg2(yJ(IdmB)T=hY1Wj$$gh=P5L<$8sN?g@bFk&oypGMo6TyPPNMgrmXFIWMcjL`Uu zM7pZ%s<4+W5Jmn{sB<z2Ey&o`j~zyoo5oJdr_veI$`L3!#wG|&lk>P-3C?W-OF@a* zFFU&<QxUf3WgRc%$Z9oQd#z~ujbb=a+vNG-6?7KLYHdvOv^KIr4KG?|LY>eGLVir` z^BST4NOuvEjw06Nn*D74jMKNaJZ{wbG}V{a6m5$GUQAL_(f9p+bp_G+1np-j39Vl2 z%q=2*7$L%s@0s=86taw+RYp@9rv&W#TgFA-2gry7k25@LX(g}8Bncr@42wV>M{@!v z(pOx9hx?%%O%hu{AO#EXRnOTBOdi{>0?WmcB6wXEQM><5kFICI-2MST4O&W31ONc@ C+t;%I literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/t3024.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/t3024.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..7fa5208b792d8e53292fc30f1ed72cacaa4af73c GIT binary patch literal 368 zcmV-$0gwJ0Py_(v)U9bHJ2Y20bQ@?L)ff1Ozjqp7fNgsKGVW<E>VHbd<Tog=Z~<i_ zHq~W9|FH^t>`0oS+ksN!%M;<~PZ6O1D^yIe>gj|VD1Za7mQh&-gV>Ew0tM$8C#iyN zpurrmI8>k+Ib=37Kx-7Ab+w$6IZmW#5r2bk!poHS>N_KJSCWj%_q9pMyLE%pX|sv? z?icP^2X!{tn<StRjk9pZu$oy0g*uKHEG~4i`@M2n_-4`Aqb8+(Lhv)G4Ru_uwRP7j zzONj3mpMHo++9V6x6T6d$b0%;X#C6osuiUz^%h1t>FX?Kc1p@&TD#Bzsu((WZ|YX> zi=9pOb=^T$x7)dKHLcyl=7M_`1BON?yhy)>K@*B8mp2t*JVWHZj>&fFSCX;|L#l!k zd)s=?_GNU3iX(-m2x8^CI6Sv$stUoSe1c(EHJ1B(KYYoADhIoqe2!d55@|K`AB<HR O>$c08Rl(Uw&<y?z2C;eo literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/t3024.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/t3024.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..2b43e74b67730c98b3b15d4d31c035fb96702afa GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006Ma+Bj^Z#3{1v2qU8*j$2U|V{If+|xq)9e$ZmAIeekzT- zg+uq|*pr#D<4C8lIGNw^>Om=OyJqVztJ+^~Q&u|TLh}YSY+!Q`AkSTJ$*Sh9{4BR+ zIl)#<6Vad~?JQrZpsK6wR9{Qi_h^Z0wXFAboofUg=lA7K?PSh7j{(Sq_vz@9m6TwV z$eEZ#q(_HOSFg^4)HF23E>}b{1}PILG`Qfi&?8gdyK!MOms5njH$b@l13`l@4CNym zQDUPuc`j=pV*f_l^BfWeFf5yTfsBenFPwRzE~K-Oz|xULa4&>n5osXCRd%UqcJ@zP z+>tX$t5B6ZvPi+%?%Fy_>u=QEiJDzm9$rDmMOlnZIyH}tg0|fY$wJ!`22H4rvwZmh zo0>UA(uR(jIhB(?lRx9|?SkTohBSBel^k&#u)~XIa#3T|R*P5ABF)ftTqW)7i<!k~ zi62^E`0>36Neuax595~6uxO{m>Q*S-wi(hR!DA24yR=xZ!OtrMAHU#}&13IR5cSVj zycZAmhl(^9Y&3z<{A(7PW0;*h$}bAji!rxUAZq@z|Gmzs=Y_fb1*eMYmQe%%0IrVV AB>(^b literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tango.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tango.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..02c634ad2a31f356cec6481807c6174d7be3056b GIT binary patch literal 371 zcmV-(0gV0|O#}esa$Blghlv9%4Ey1()tb)!mp}-!dr6TLpa#+hsxZEigsKW~I;&7R z@Rw6NRCUb?l!#B4C!0S7fc{_bLgy}iIpK@}7hJK<y(kKXVrMRgP&l4ekSfy4q?B6n z*_M{HGR;DlJ3_1JUvx6<L%!`u!P5N&UyqkQ@!>lnbQ&Q|<?ppY$$J4E=#*?yedP!D z#6eul?6m_>fX0jH%rqxtF-x~C009NgR(@0tOH&g}3}k$|+Xy^uYh?kBg@@SdO^TUn z*`M*xHxPHnx;hsrSsK{gyw?~%H6bxO`x@#6LpW=iEM&HWdZA-oC=(E-L@Bn%w$}Sn zjCtyD!@;ahmVK)Yjs4XEC0vt%GNM8grv5iDV9HJk<qaL^&M9(feYEV^Ey<pv)f_IA zOvSdSon!mb!<NS31(S`h`8`1&q@^S}<5j$ep%E8L|F<9h!bCF{p<SMR=(#{*rD|3j RZ@_?QBWFMbFZP0_{sT{IuloQ1 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tango.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tango.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..10782803d3a83103578dd7aedf337adbc77e56cd GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006LnMVj-xOPe3eT3cZ(1o<)9B!If<dUh9sLfw?$Ro{X|Jv z+Uxx@_SiFa25tmqXZ73PEC?a>(3SSOtL^o^WVunsbswS>4eyT(_+@Y=XwiKXSXSj> zf$h4^qe4#7=+x44Y^#2$@3|RA)Rby<T{m?ZYXn2eH$~g?)MG3<AmculPa8C+05e6* z_`p0pD|~6a84Fy})MZVqu%HxD93W8PW}b!-)9A-G#?9hlig2_F2={-$Nnk2L(`ORG z^E`3^Q4+7DzN{gk1C=<#$S|S&G%}-J=4RYzPoU|P7_cweqD_}o;QcO2l(fqFC(a(o zbqKE@UzK`tMh~~%Xxe|H9M04=d47Bcon5lI88>3R89AwkH<X#wXLOQKoL2e@Tgan( z_AE$6Cz)mn!+*|x!RgyLkuK`Oy46=OlwyYiUTqqlAKG6nY+gaKutNLUN7CpwH}i{w zpH@il(`V)an_`!Bv&CpijAeDGp}J>6_I-qmNbtPFtC2R|n(XSIrmpjbMe#V=GkCfF zhfDGJcqmVk!cGz>$s>HjIfqfnGySHpyx7kUSYWZ4^xyWBdNs`bFAgW;f=&bg0N%ml A#sB~S literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tender.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tender.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..8c2cefad2dca46c670284f06ab33e39b97e0b8d5 GIT binary patch literal 368 zcmV-$0gwJ0N(3Neo33f)_7<r4HlRt(!oNd(?wv)+E+d3V-YvB${#V#iJ&9rv23e{O zac*}3Z@7s+vgX4w-8d;`$BPx6KS6kY1c2_Tgi%_rj4fwv8wet!ydD@!H%=4eQQ`;c zGcrACWb1)?VAYAv**n7KD4<01|2x>5JdBA>zB@D*Ew6}tQJWOpdssl9PooAF&1k=z z)48Or7o$NW&cTr*%(JS<=9wY#-vdIY>R%|Qp|yu52A7!j9tTcO*>SvU%AyQcC)O7T z=MpE|oVl*YL3C+u4RROXON*D4l--h=mUfRHow5Q;S?%*W=qnE#*LYdDfa{qW)!z8s zC0|z>Bz1m;btq<SPcG=;b?A4h%mL={7cXc`6{XUq>N}qzajYVK1^X7H-s;#bW*z{S zenjMYvI3bfVsJV`SpGhsfoqv<>WYi^2)*64Rrp^&e7l5liCIovWgbAQHyY|!CMla7 OS#`#w2F{IQru7F&46h^r literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tender.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tender.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..8ee77e551c2d08baf053857369707858aeef6b2b GIT binary patch literal 452 zcmV;#0XzO5iwFP!000006Ma+LZsITy{S~CXmWVdt7Cr{~G6`NB+qK7ABE-M1OgwI& zXf-dBnd39J6JaG(C;cZ}9g|X-zOCJ5v38f+6ctum-@XCBfirRLy^Th;Z=btl6K2u2 z0W=6y))2ngC7bd~VTS<>Qtm@0%Q<8{#rZB-j#~$wq4n?6r;A2lWT`}sgvdjo1c0Y^ zSL>KiIJVU`XL!^aFu#_dVMb=y0K|JA#ro7)4j~LqGlb<|<`v_bp!7*ybWOco*SQ=+ zq~^6U=i(xGrm1WkI1nm~1GoB#x)Rm|WCo8^M2h`py`jx&7Q!NTsjzhR%dhUpLeh2O zv*DQ}ptq*KcGlqX8&rS7cDq^~UO|&YW@{5xmbIZ*rhiegQsx9+A;@DXFZOb^7UeEV z<53Z(wBl#;XBfY&m$XqI%T!;{BKaPAxHux;)&ja_b_K;_fp$qp%9<BD3zLE$Mj-g{ zz4DQd`IYlYWjGe$))Jt*RZ?|bh75r0afW9t&Ez$@A|YAx{f-n1gFCUH%1<~Y5BEa_ u95u8GnO3yOS<U3;P9Dq864S+qn|*Bd4aw@i&nfgQnA<-gde0F{1ONbO&DV|q literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tomorrow-night.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tomorrow-night.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..e304ee549f708ae5e69060c9c58a6cab39974009 GIT binary patch literal 353 zcmV-n0iOOFG6Vo*bX%%lhlAf*5XIH{_FMf1C3`4kZ)Z?TqFF4TBp#s<;U`pp(^-Ym zfxnzO!K!Okpp>%d0!8<y0MNf$YxY{gI5ivPTLVfXq0G2QM#|F*^8~se1dG)sJz=AA zg^sZ&sJg*LH`6}oZN~_f|Ld;S%|D;)^c{h@q!3a0Gi}iDZER;1N)j>BSjOYx9WG|l z`XLrT<3;r3!KDZxxm?L@3qat2vyGpV!zEe`OcX3W^?eAN0XI}9Bq@-&G0|bP(YwI; z4&=5J&2+g?w7tAn6!|EQ883SoiUl_~tBn;hIDq(Ha9;ePHejCfTIq)wb<%N5!DKF$ zeQP=x`=`ZvdrjKcrPkR;gJZ<L3FQj?=FTbd$OE|S>Xu}OHB83jXlmzpa(cVT2)qEY zF}1!Yi{2vPRk=;=u+o@+;D<jW0e)KK*|)$riH$N*`IF2_Tu5!?465M8UWl}R9<s13 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tomorrow-night.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tomorrow-night.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..1a6c2a35009d89548382095e8d23a1be53c58df7 GIT binary patch literal 443 zcmV;s0Yv^EiwFP!000006Ma+dj^iK<e3eT3cN^_jn@jpI6&NRFOMnA&+o<ZhuhL+e zc2}qTG4^=Im<c$A)xmtmvlmKf+qdujwA%R7WzK>#F0@You#*CgeQ?RD_UTPc-;7zc zZA61W+F8bLUZ-!aufYuiTH;#MG`T>c=cN3Qwfx9==P?L!;dws#WPy^H_;V&E84Di( zJoKHN7ocfut2$R?G6pGkD>S$uvtmHzz23uxX|kLm9J~>P>wh9>Aq_+M$WwH0bzO@r zCy01>qwTSTgh3dVO@l;6#c`0%JWyBQY$Rc6UqqVbb;EZ8BVt_TDK(YJe#F%kc_V>s zW{4D=?a!UFwEjZfAE>QgUUolllQR|z1E<QuC}`XNB35a8z@Q1$z6dwK4=<B8wAW0i z9NZRu#PQ1o#fuE7T;^|b#BsnLPo9~##RAjjwM+%qP2SPY{<5byTlQ{vhVP%NkmQ)V ze3+a?W07m%QYqbaxjrC?`{^Iev+&dCi)Ucsxn^<j2NCt{e`{cOeU?b0!B&$nnz0MD lDa<q63oi=u6EU%P-~QRKP5;}@sYiQUz5z{)As;gY003(G+KK=G literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tomorrow.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tomorrow.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..8af9b901620334e13eded8cda8174a365426c661 GIT binary patch literal 365 zcmV-z0h0b3O#}es+GeU;SGM|(E#O!a`p@Mo%5lPc@6+B=o8nOD(tHxdpm0bA+hjyk zL{J33>2A)Q1@K__b)r?*tVC(lbP;d-OGM~}&aTfigmYWcI}l?=LYrmguSsX(`U$y# z966-z7MC)EJ_7piYV1_qO#6^-J56-v>3a(%mYT2Mk)C@)11ZVc1oE5ZU5*)C34AZx zUNBJAxNhn)LNcl_#-t!YVjFMU7y>C&>?M`cndU@WqD%>XO35>|9ht&|Kos$ll9tYf zb(QjnYWILl9w!0kiFPmV8^bHS4b_Qj!3Pehn1Za<?Tp64%$m>*1f-GMTU+CPWn=1n zeK_#yZrSe`(0ZPhyv(nu1EX?8EXsdi&`u=P{H6%Z51Kq$hc0_^w<P9zBy40L;{2G^ zMWObm&$oCSB|c>o+uak544{WG@QN=ejKax^u{|{zCPaVwrTCVZfUq}f;6KI62QNlL LvkF0VPMSaydTX|i literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tomorrow.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/tomorrow.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a0b874977c947d1ddfa5147c8861bdcdbf3cdc43 GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006LnMDj^iK<{gq1dI*oeIr5{rna8kAe7%)4Hs{Z>b4KQh^ ztGpQdaE@(GxDi;K)gOPeAcWLiv$fa7-d^uhmK$YU^RW{<vExSu{L(oSv}iusww*AG zrtzqdlQcTv#bNxW`jVTzM@^|#VZEw&tPyl6UmxnKPIrt&2V~smbhJTp3NT8<j1SDy zb9*mWZ^i<bG&DsSD=a956bS?>obhSsF;PFJF>Y)wrU-khfN=R2oCKy4G#yhTyxLTo zI?4f2>R(BH$swTwm1INDFroa=GoxOp3vRS0&~!>7?Y=74arsNG!23n)Qc~{hS6n=h znFN8At5qcN<c#iat<kjnM%kUIDOaoGJLu?=+1j`fd2QsR?%qfiQlHUDLUGFS<+|dT zlLe{hBon7F{AcqQ9KMYcX`?RWslI}t6g%wjY7_Yu>$+}duOL~-&~~(vH2TfX{AA*% z5fc3LS-8N4c+0xcWi(_1Zpt;_y%4f(Bcw-y=NVqTG_%)WvxTa9Uqcm}$KIa7%lscs z#pC0lJPisPNuXr1{!DWWV<*q@v%>UZi5s?uY7aA}|6Wh2SHs-@0a!mSL{0<%0I>(* ASO5S3 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/twilight.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/twilight.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..6122b0538bd74f414f660c35954ab6edb3aedbd6 GIT binary patch literal 365 zcmV-z0h0b3Py_&E++3=x|CqMG#ni$%ZFP<6h=eeozZ;Uv)HI+CsJID9Heyp<CiEYx zkYguUb<GNtf=w3?lb-@WuVS@M-O~v<$(8j0tPO@@cU<yBV4i81D$?ts5V5pdT+(_p z(?oMZYZ9DwGwnmV?MT7G{|4WHmm%@ZJ0f&vA(h|P1|^?a-sL(an^fQb!aZ>iXES@V z5EP*CEIQMZ7Bc3kjkhfZ!39qCzgG?mZ5E6bH6isgh@ZJPRLf#5jk#9QKHKPB<n$PF z_Z9UNCeMvl<R$Ng#$Sc8Td}mEUSNciT4yn{b65^@??R6*OeSLkZ|m!!b>7A_`?&64 zR`<)kF*S|d%aWJ*H9?|Qq&!Q)uVKKB#T3gMiqM}?<k1Ik*^^t6Wk;(`N@x|!V^$Xh z+mAlq;y6Nh@*uXqCm8jZL<^JgQa->ic8z8J-VeWI0;r>1o=kxYK_Xkt(f^?^E3}a_ LqJn1!K{NURAQZ64 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/twilight.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/twilight.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..94d8a0d339d9785b1b93cbc49d2e49fb20dd899f GIT binary patch literal 456 zcmV;(0XP01iwFP!000006LnMDlA<sW{S~X`b)=jU5b$HHPSRl3kYtn2j+EuUZy`wr zUAK7Y^yQqs9Jmo!oYgOXvmk`jL$|lrO=Yk5#mkK{uKR$){2dwa%iv7VqWk#5`CHO9 zUFT6DCuwvlDeIC|yCuHmW*kvdidB6Db&3%T$=~doucnNCW6=Q__qjZ6(3}Fy6w%`Y z^Yq-|OX<y6;F6}UND&s4LW%$a6|V3!jF_Mw(-=257hQy-RY17?15N@{DK$M)BfPJn z<dF`DQvXWoOEw7|s6-n^hAGQWBQxp+y5L580!^n(BA}_;v|I(=Z(^5{a%cb8#UnF= z^etlBL=aET=;78IP1|pj!<o9nZg+f_ItyjBHf}^-8#$?mH<X3cXLOQKoHBjWx1xr8 z7pdqZ6Q(fyXY&`FzKs)Uqb}sBeg{Lzb~xbGW;yh{6l`?`$wE%;XDLae-|WmUB7Pbn zrJp_v7uXc5teaIvQ(`<+%>n9rA!Ogjlo1J@XL!}pN?w!A5^7mfwIVi;qdkL{`Bz+m y$H$>OO$s|npkz|qigPw&C(rb&z;dx4?89!~uaN#*o?Nejx&H+=Y@aDn1ONaBOWMl- literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/unikitty-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/unikitty-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..8532e3e4ba1a6366c5eff19fa08e2ad5cae69067 GIT binary patch literal 372 zcmV-)0gL_{Py_&EbX%&d!|!Md{En;jzqWcQ3gRJ@{X2tN;x19e>zBkM6rzQM3UE5B zP&)9JQ+rT#%?gy5PFKJOKLvpPue6fN7B44U5KAP*ta*^<!BFfXj$;~UJi{neq_?Cr zMJdlV>1i#Q%Zwz1)*!s-Y}yCC?MT7W{RLl-mp<{uJ0f(GgM`Z8YlD(^V>_!;vPt#r zAKViMaWS(uia-GxFQPLoCdD*yncTJ*1Q$5l{#`jNwJew@YJBQP06*i>P$}jNCFWK| zhtWpw0_XdH+fr20sYF(h_wZh6{7euk)@*I47Z~BJ_F2g67_`H<bfE<&(qyTD_o}S* zzL-&GAGaOM>U!C?rl+yLTdcR&WT3<{Wu*T-44AT+LU}_Ix^s$LmmyeobxX4CXtgTI zV(IwS)XuSe>Fp-t@ZrgUSbk3y&m|QjD|s#NVdxjdGXLHWe`I2yMQE32p9U_F*sdD& S?{q?tHs0n8s^G<5(DZ)ikh@9% literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/unikitty-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/unikitty-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..451c3b99d9e1c30da4e8c9c4995c2efd0cb8c080 GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006Ma)#j^Z#7yb99%4pD$1FAjs+b|-joY_HwkAwt}J6k><K zp#5{YtE;LX;YMI~Qh)r_f)G-7&CXs{dwaP}QErrR%?INQ7#<k#bLULZqWRe37IvEn zwrU!W3OPxmQ%O-2yP}@*Yi{};HKkm&tMY0ea|B(A*KI9e8{@{J12XP&`m{lF3NT8< zh!4!uv%{CttFgc(4NX?Y3=2vjMFN2e7knCeOw{*oj2q3x5Mgf>5U&4$lfYDhrq5(V zRGVGdMmZo#{*~0{`AO(NCE3t3OejC}%%~UYj2rC<G#zJ=V*iz=p11<<SJ9=U+1amm zc1J!)cm;VHnI~s-cWsTP^*74yL`|9Jhj-BNP!?n3M$BU)Cw2EmGL!m*P7;daEWas1 z)YZHfspu#Zr!f36`7;jR#)&jh7v`@121DuXu)~X;$-inQV6g?s!VGQ4Q<6r%nVFxC z_^E{iKYnH|upw4iH(nVHNwKU8X!o~F$hM7;9toa%c)g{?c@1_xA;yXvlX>jz3A}v# ziudH<z9>(F!bTD($s>HBIX<J4XZb~9+F0V|<u>O@_`l^T^m;J2A0*k@y-@@J0FrOq AYybcN literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/unikitty-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/unikitty-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..723c8308ee32f8867028d10fddbf44166b9ca9d1 GIT binary patch literal 370 zcmV-&0ge6}O#}esn%lH`yK-PX=r#~#C;ap7w@QlUA(U<JqL%n1vS{7*6NgZU7815e zjG%}oB4|@j=gxnCKr-L<sOp-PDA{DXf^6_hMCkvy&RK3txP^0i+n^{`g3X0ab)qw! zVU#E2EfQoVX|hQ#YoUw+Rq$#MPMuBrptqeSI>Pq7kq~3%i+7~wra&O2S(`xKjqNO^ zNhR>@ZhIy`O_RD�bflBA6CKNdhjB+qMQn3Ju#$<#f0`(cMud20udN8FNRaJWDay zONzT?Hlj-z_mQ>-RMJ#p>uC4zo-uv`#^sB;7QEq*hOWrc+>TK#jClwx1f*fqa(l&V z+!r(I?CZioR@ck^wgs)v-D17HCI_XIDI?=QV9<j~O3RxnFnnTi%|o>8>b9ij@LC0s z8RvGUc24a}Z#TJ)7@q=)ZSTpJNJ$c~Ij8uDLciQB``>=(Ffq_3_+|Js2mxVx*TBEC Qm?Q?Hp_vB3bd)r`9}tPTq5uE@ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/unikitty-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/unikitty-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..d5b92812a7f6d6aee30b8f5d3f29b9179fb032a4 GIT binary patch literal 457 zcmV;)0XF_0iwFP!000006LnMVj^iK<e3eT3cN?W@^U?HSDg#c+l>i6kwo$e3eo6yu z+Uxx@_Aq0cfg6FvMg8)33qnXebbEW-RQC40WVunsbssgak2Rhc@ay1A(4zb3`+mV} zy3V6QPSWUv=Lf#$)l%PbGmfY!)u4e2+E^nPQocR5P0M25Sad+feJ)2EG^YTwM9lcW zJUzGfa`kR3a7j~FG_k^hQb>_Npu!cOh7l9>V;bY;=3<I)v<e8ff51s#DnZjRH6q&G zzKMI;0#WK;Nqx;Bp#zm<!^kk9{4_G7UZ@Lhv?tJX&LVYnDAP<_f%lu(rKH^1KXLIu z{*dq%%Cs_1&gkLZ8%^6Ul*5I(rYukIptDO>YvV@bwULv0cq3UzeL*J)#W~CG8W6{1 z0v4pAvrL@A@Sn|Jar!b&q>Z|er}`ZXrP$$sH=D^1M<!tP3X+8k?Pn`Vqu=bzFD8B( zA;Hg|g$rzox2&68MpII3no7+7LCC(3kP!)<XL$9}%3hPr76RBcSjXmZv={I)|HGwt zdOVb;Nns}ml;jb<(wxKC$+P^bu)J8}#&Wk8<%;RQ*Hh}%FyDUx`D&!CP6Pk|Smfwj literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/vulcan.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/vulcan.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..4341e3ab446d57562775904d046808611c362ccb GIT binary patch literal 354 zcmV-o0iFIEPy_(vn%lH;yAt)F+kjDN<(l@DEXoLBlG`nk1JdR3e`#45BB44}k*)(! zEq%c*jd9gAD^Mb0x{%8MdjRO)DgiKQ_;kVol}vGQXa@y>GCZwIsZa+=R`5;5{RYGe zlx=TuxzEsvwg7}y-rF=c?L)flNI@O`246)=?ezLPBD5J`!u-BA6t7v{<(0K2$)~<> z&kBgmv|iB%1@>_hg)s~>%CdI6Z8}(7U^Vr<a;PO(kO^uu@<oiFqGM!OW=$;IwTi^S zM(I53Iec`AkP&BzOspVp@4e9Y3Y3N|T^r;rjIb(x=3`sJ?y%$ZNCIS#I(Ro-P4^@l zQ|sfpgH~-Vd+&T2<KIhO=GVkPe+>h2I+M?CaKdoOQ<j~Fmp!@9q}!=nM_FAIhkfYt zE!IQBQwU<$?<o&qUdk&6<ifymfA5E1G68+bm#asS2;7+pHNWLjM|w$cvkIE*51T5i APXGV_ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/vulcan.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/vulcan.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..605eaebf848052da29a4b92e202899c48ccf1c74 GIT binary patch literal 445 zcmV;u0Yd&CiwFP!000006Ma+dZlf>|e3eN3+aS`EIw21et?do*#n?W3eGQ8G?iInN zK+*j(yR$R<F$gQMxavRQ;Xq1dntJc<o66n4hN!UG`ue5fj2*;@gSa)`MkDK&@_kpm z?FZPVt^;Zmq^!v$Wx21aw;{h3wr$Z+&M~N1bxb*eCdWVc$C0rVw+=m!^{>OHi$+j{ zULr+8<bmcLE=nKPfl$=dMJDA@YotUVQR9TqK#Q6BIgRywb16jFIt_%|f8Z5xouT<N zH*(k=s^c!n0a5N>D{~v4gdTL3jV;HF3SG;sUQidpnm}OaoJEei;{nq0w?ab*o7APE zv9n+A;)xtdK=OB<uMo&v(>yNL(DoBmbETS<<!KGt8)dRKVdc0s^2#(Tl7%u?^omfP ze`a7zvV1Wfm8P@GoYIP)&EK&5v|i?o`Z!MYH(JVXj}6}4DtUhe#p4LQ^j1>Vtn4fd zCZ3Iu;pf-FN8Y6>=X;k?w^Wqsa!HUD3Fb2_y)>~`=SB<7u8Xa^LQvzcI3!QcLj~$I n)`~!@JnKZWf2L06@{`1HvDK~pw>*cIhWYvi_#5!nQ3L=0uIJ?Z literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-10-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-10-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..f13e5211762156d90e3471092c02109caae9b553 GIT binary patch literal 361 zcmV-v0haz7O#}dBo%4FhucSEUcaYkGdz(3x=7Lby5&*>3f9FC;QSn&ZGRhT@!et{i z)n!8eu?lzWB&)7jfl~6PON5i30zj|gXkE<JrJk}LM3x0Zu@$F-@=V=Sk)9FJJm0V+ ztgzU}j<}jQXWdNuK-&%zEW)qvHC(jBH}43~ER!*nU)BaCpKLm#)1?xFhO-(M2XQu2 zH**mI8qcCLf<my$=D2M!I8fkZ|4Zet&^EzXA!DhZN$||HAz@RiF!Wa`+9w;mi<}-y z?!F>HDkT7gUE#gN_!|S{E7mpCI}G8Z7Fo>fT-L%|yC9U03XI40PS<+hc%<y(ii26* zFZ;$9G<HvmDa|z*5I&|6v;6`FOjt>=yrBZa8ATqoBbU9nC0TQ{+5+Imj7P4mW&6>a z4dbxz6hLf$PcRZmqT)2+MZCc<&Kt}Bw;z7P1S*PldGe)jfy92R^_!(0Q3TZIjH=+- HCTK=K=y|ey literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-10-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-10-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..3bff27a5bcb2e24b838931ce71597aa0a4cf8ed6 GIT binary patch literal 452 zcmV;#0XzO5iwFP!000006LnKtZt5@)-3n5FOO#v$Az?9SVo!pLWBc0UmI$%;%EWd9 zrJA4dJkFVyndVrW<cGT&;9RJo-I&X2Yc99h%CywBeXDmt4jr)bV6|7gee3@PnZs6X z>rf&ip;b!ZO_15YW_lb^QSvdyqJv;aM(Bb>yEbTnw0)nS#w$i10)DhO-#L0L?<w`F z4KP7dTh!6hc`1=107r=nJOv{r=zA;LhT@`$a5NGK*PmbobTWmeXKrj;_EjJ0fGE{3 zg*s=I(1J{~e(W$sxoPaQe1a~RR*pc?F_H95U%@s_R)TY@Sf!v`*)P4gM`jRKHLNTn zh$E}jaP76C^%siaL~UJ`hgYHDN)}^dn&+{R6>4}vSqODPD+u{9(^ng)O3Zr^l8z!_ za?O4wf5z!cTb?FreeUYN*OYXN171u5-$1kDe6a=5`5fAZQxaOen3<a|_@RXqeta*i z@1~e#Y`8L-5@T6zY7V!8i@uK`BN9CJ@O(>)^O{UPq5Zz9n|&-EM{@!v@;{uNhx?)& uO%hu{AVvC33(la%N*?JKj(KBwB|Ek&mq>r6C)4x6+`a+KmPw3G1ONc{71VM7 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-10.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-10.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..063251f0213f03157cb951c49250de295f2bf4dc GIT binary patch literal 365 zcmV-z0h0b3N(3Ne)2(UccIc&uZi7WIOaI;eTU)&p9Xy1x`)5!~+$E}LzrTq`C`3^m zz<D!h9W-Y)W>}^hCw_Fiyrlal0MCzzSiO}n2HXf+=9Oh26d5PcNLYG7nn)gJ=?KGA z+nzM;iV=o{RoB1f;BXtNLkX7ux9e{8P!pYgcW5q4lM(qxZBTGeys$o#MvNqy@qRgn zYnirwfCi9w4INo?7UxN9X{+kL0R%2J{!k8MsRw2P7fpNL0H<HusY6>JfW14Bp{I1t zaj|2V8+z)b5ZfjKxr^_u#mfw!TC=C2-QWk8q`_QP2c{1OwFh-J#T3xudR~ueZ)nHl z<4%J~U0iN!n;HAFi+g?@`u|c(DHQ_kjy1c;l{R!=eol$g+BcW$-h%8m8ZC*sEEieP zD8lt*Wo^UI;FLpH_CB}`k{F<1-n=XHPE{-0*ZuO}C6G&+<)y2h2c$KM)~HGnwHCO+ L=+wY#Rm`;iGYGJ$ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-10.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-10.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..02e830df5d8a1fec7dc1a6626c0c3957237deec7 GIT binary patch literal 453 zcmV;$0XqI4iwFP!000006Ma+LZsITy{S~CXmM9S=l<+agmq~DOY}X!di4gz3GV!>9 zMXPz4%p9M&od_$TI_a-)bxcZShHm37tF61-=BTjR`tD5#ao|jx2XCX1-CHe^&6ri! z1<)W+Swr~kCfS@{3p<WrkaD{=S<WFFD9-oEa@;!b46T2kKV38eBTFT6Bt#wxr4Zuj z-PJlK6i!{W%NZWE2F$M|XjqULHUjb9N3lM2mO}`m(+pw#hk3=gCMbPU7qI*I+|pnS zk($@aoQsR#nWnOF<Upt}joj)d>PlD>kQqFdQJcM}Yuc=4A*^zj3QK4I_|+X*Ncw%> zux%y@=&c#9y*0T00X3Yk+tu~q6*Ng?u{L34SsQv~h8HC(WlrD~f;^V;O)FYb&zeW2 z@u-MXTJgL2GfY3$OWLT9WvcIJk$evWTpW?Njcn!e3W~=9?URm_H7|A+W(7ZtK=9*x z<s+Z+E9aBSaH5JEzWeO^TP0QBXUGW19%p#g(n4O7D-z-#b-jn&JdEzdf+|1ZoIKnQ v6>!qfDP&sFA{RB2n>%?dzevm%D<|2orl!LGeNLfg!QB1=HHo>qO9TJ_#edqs literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-95-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-95-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..0a2f64311a01b80ab417ec14c8079d6b734e403b GIT binary patch literal 356 zcmV-q0h|6CPy_&s)KINFOQx<VyZEiS2X>-+ASxU>E0?oB$Szb9Mqh51+7ypM)BPo( zN*uBY^(xYJ0IH=g$kLXou33T7u%=5my?+k?J#p;rIU<)!_0Y8lLuGi{B()PgrmsxJ z{gYUNINjoM-^9xk#DrE)ZaSLwA>DSQp!UDPHy~x`^w~QibQO}fm*3Y0BA;2_<ut{b zNK~WAxCn^NwBA600{ghh=vM`RG`{H|xWH=jd*x7Tupm>^gvbvFKLchY=5K23u2nQm zHcA&+@6yo^EN#WH6?sqZg~neGh+4Wf$P0|Hs(uz@J0y1)vIun`=HR{Hn(kXRrq;)G z2d%nX_TKq4#*8H|^J`*IiiKapfSk@0vm2byFL}y2OIr5iK9g=|xaNUPRu{!#Kl*%& z^$6n0LhSXPU{s3nQa*4%HwrBG_kObLaaX55U#>n25rR7zYQ~W&McO<vN`jk%py~XH CpRkSq literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-95-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-95-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b171ec758f24623a8b268ec64803c0d93e44a786 GIT binary patch literal 434 zcmV;j0ZslNiwFP!000006Ma+LZsQ;j{gp_4Z7ifsl*;*-XbfYA1~V)SZLFyOUJ(Pa zv(ai^hPj=&93&}h&gL`R94Mvj(Ef4P&E8#qW~(GazJ1&8k{mmbm%&rCs(tHak~wVC zwgC-F)?`bH+$EX)TS?=HmWvNQl4KvlQ0xaxlI`Ts1CxKBpDtR-5fVhUgxCdMcleZg zBL`CR)Ha9g>7p^nxqw20i+UDDET!+$kWbBJ6XWO%FmAuVYv@b~EzienLI{!JfVuQ< zw7pc7(Ss?laqO@}g=y@_Je6)F*}!1=R6x?|>$K892%Frc=GxgmdUKDgMc`w<tDOe+ zWQSW%mbc%ihcmYaA&##?6Hyjxlceg}*lRnyfNZoqqt}e;RN;k4tEzX=hEKZGR3smp zzu@#uUX_jdSf~0MiHq)Wz^hvpuMA69&|R#deWH>k`(kHdCh=;75`KDbeC(#2<$Pip zPY*;P5~9+5pF>7uSkLgxr3Jkvx1vyO9!GbEpzBwhoyYs30#628&0uu?iA&6+=1$h| c3&(u1$0u6Q>c8p5^h}taU!?|(EKvji01@)rng9R* literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-95.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-95.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..89f7d18c37aa4591441f6e4c26e19905122416e8 GIT binary patch literal 354 zcmV-o0iFIEO#}dB+ghqzhvBa+?8Vfo>1>3_M5yLuq`tphYEuNoAnD`(p6b9Mn^34o z*8!-Oz936$sJdnaN};EV*!I5%fF8zPcOO2TP#2jVw;(~F3C|g7FV$l@%ud`tv?f7Z zZE?A8=;jGx;;KzI?M?fTZaYj+`(NK{h-jTYen)uD19129%i2KXJ<GeCrkE0mYBU@d z0kN5;>oP=OA2(5$$0F6QinmP%0R>iTUn+-M!vvW^#v<PZ@Z6xrsWn2ls}zl+jnW0y zTX6IZN}Cj^!tU<9#Q5n75w`SekQWSLRh=xvwg<k@LlMf>IBZX`ru&kOsr7NiL95P| zy>||c@z0W%`86?!i`0Gr19Ey&$ZqgJzvL;$NMYHN`%L<rhil=w%<7^z>`R|-u^twl zJcvEt6O7^_<wd-4Kr0L^_uqc_4HGzpe7Sm0L@;+U)JT6NMC?JUc4UwQH=Ceo{=&ep A_5c6? literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-95.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-95.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..308b12a4040f246e9b776c486eb524ad973fde1e GIT binary patch literal 434 zcmV;j0ZslNiwFP!000006Ma+Bj^iK<{FO@kx{V@jt5)g9R1P>PSAsb(w~ea)`-uiv z(yLCqIQB3en~5Na%|-w6cMDP~Gj?D0w%Oa;W628A<hl<y#&haHTt`R2$nK+U+Xb`f zI*%F!D>51Xb&O}JZv{;g8qT%-E}m3l7<2xB@uWOibim|3mromv-~h2j%J|TGUdwyA zdM67)@!U0sROy4($caFr#){9tgqiv|4Y?>Tr5GoxfpPl>oPu6wX#UJX22srh%vrxy z=2}8V2RgS6Q;!+t=cy<CLfr^5p26_>XWIQPFMlgEc)v+16&Gdy#LW{~NCpwLCKAt% z%y=Kj@b(+kc;W8Qwx@T{=#pw}f@E16J7vZ<EgNMn=oF(om-hQz#n}g?`K&UhB=NKP zE6(5KWZtL?WvbtSIL8i0yxE$35Y;QFJ{0H>t)$4j*_mHVyc!|H&!3G8{hV%D7hT44 z?dd^08mWdMK_+Ba&+zJ{%3iZwS*VD|$zH&#@*gh6)AOM`&l)?$pjC!fJ!6=ZtlL+G c<;600+rqKf>c7`>>eVohznT4ouucR309g6k1^@s6 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-high-contrast-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-high-contrast-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..229cfbbe029ef57c3f9b584c5d0b89509bcd157b GIT binary patch literal 355 zcmV-p0i6CDKm-8fa!zG)zD-BqL>T(n82<mAj<G!lAwd|O{QH>0(W+|p@kvyLLoSu@ z8i4B3J?NG$*haqsWwfs^bX@%R0O;NE(3S7xdcqFP(e0*;PTR>tV#h3JQ?cJHNtOXK zr|r&aN-Sh8rcDoZWB~&x)Zq{KMud!=e)txEo^SZPS3lPVkx!|jqUnrDVhZg_7m&>| z-fG4K`?LvRUJ~o2<Sb(VDmYZII{sBTY6}!H!%U3&3ZrL56dr1!g}+U)wgU*4TA$;i zMQB!FL1CyXeJ>b)&YR8sU^z9U9e`Lh4@<FJV@FsK_8zxQ59<?gRNrI~X6H78B!@nF z@5?kVT^aSN<O@(NX7M*J5X*y7=EC#BQm4F<3HQO@XUf-L=`MAZLOQLF`H>Vb4Pp=q zP<47&<mhj~_M_5eJ={OP2atE?mzx6?o%e~WR?A3$_)fw~U>Y0`!I3Ev+8hPS><<=S Bs-pk^ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-high-contrast-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-high-contrast-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..fbb85bf41582be01fcca19f6c0a70fef3544fab8 GIT binary patch literal 438 zcmV;n0ZINJiwFP!000006Ma+dZtEZneU(c4yGE1lrb_9<R1P?)Zwcmt=^9mi_lX8) zX*XT*$N2O3a4>AKIl8~;8o*leL;ELOHXq?~o4tk|$M)spy_|gq<}^gk-nK8jDQ8aG zv~5C%Mu@$Z*!Obg_}1_^qL&&=<jxptNMO*C9hOu5958}#e4Vc$dm|ajgz8DTOY#Wt zsr1SL49V0syBg`Tb11ceMTe_?9!AvG_hmR1aMdL^1_y%MGem;UX{uf;kP#xYuhT$8 z;XCrD#T1O-bZQ<u)T}g(9lNK_jbWbzyc~4dLj1C<agfrcf+Sgh{ji&RrZ!<mXQetx zWItSc_Oks%8jjNL-rn{<6N^Mvj2X5IV-m>^zl>|hA2E`kJ?Q8mA}U2)CMO5dj+V_g z<tLmzIa=j1=4GFMnMLi0171RHEeLK!K6QD?>x+Ph{V!CdS-B7BHU03~#N17_D#W5K znd&$X=jqm1>iZfWQQ#5%vwT*Hnu4k(<QSZijAJ-LBK>=FY=3{8B$LCI1RT|$x1Lzc gisNzkDlos(_pezA>A&UbdKSs;3l;ccWkCc00J>$_)&Kwi literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-high-contrast.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-high-contrast.min.css.br new file mode 100644 index 00000000..3d56a374 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-high-contrast.min.css.br @@ -0,0 +1,3 @@ +G d\ + *~ϩBya{S3V\TʙT]eOP m?zfBHwƵ3|?H,mKg䡒# [\1aHT5>,=Y7͍Y%Y<qq2o] x /E 尴`bxItB;ͱ齉M%_ls%t-RC\P.%4=h^_I4>eczg0ej/cg;ELDiiC甸 ,{r b. +}a$){SuOZi[w?R ƢAސPRym"b? \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-high-contrast.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-high-contrast.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..5bb7376e6b72ab6aebe08933c76bc0f64aae33fd GIT binary patch literal 436 zcmV;l0ZaZLiwFP!000006LnMVj^Z#3d=(`AE>(5AXiw!~P(Iw^C5>~5!%`vM{S=yX zQ;t*qxb|c`cBYCnG$->FZcb>8cIe*Sb+dQZ`<zu|$aewF1^ht@bsjuLtGjL6wlieY zbpZ@0MzR^cegB=#T;C}gN3dLK`;T;Tjm1#%;#WF3PY%3b@^AB}i&k+IsYT9&C<Cw5 zJ>9&K6AF3in$KL3(HP)-UxR^)&WaHV^J5tDNn1`ajLry#-9>m5(iCX<EF<))8ci@4 z`3CKI2^qXFrEMG~6jYc-N#=>VQDg%P%g5Y=3|^pY)`$=`StIhI>z}xJAPdE|S4n9m z3GB%Zx1KETz5$05cb{#0cm+)ksg|ZlFH2*Oc6iaUL3;v^4EngV-+xq`GNR!l7EVp- zXYXg2zRBydPal`5{zT#udl=yAYVuxHZ-6o`&_4MH$-dZGm>s+tp}>!CjgNB5x13KN z<Eb`uukMY;zR!>mSgdDwc2Z@o$*l~uh=<XgM8NV7=HlV;P=O}{9kMW3;8o8QW+m(P eRbhUy%sqGjTk-t&a!Ebg<^C6Cs2uS~1ONa$$<YJ= literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-nt-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-nt-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..0f9d11859966b1f88a03e7c3030a607e8c79e8b6 GIT binary patch literal 360 zcmV-u0hj(8F$4f)QMc<I@OH)QJF32=;C|oQ?vPBWghB{qXZ}aT(q;VholVH=MA3?d zcn!d*Y4@O8T45Xg43zx7zJ_D%zeiY9Zf<#er`6N?pyhD8seuzFD|wviG4;_%*snH3 zwg6^M>#)rfF)>v`n|5l?0y;!c|IVGyAf9z@?^|#=zv1&<eoGrD+)5P{L1#lGs!gX% z(qS`g))=9HecS{|4icM6$>o9p$nU^_)#8`Qp;os*rckk{H!x@##83mRE4hwnC2oBQ zTCd`xNu^StfLxJw^bI7QoHv{M!Su)=?LdQ7^;IF3O$`19VJ}$C3X})LQN5By*c{gh zBukijFa8(J!K93ORq_ca7Bl<B3W$sF510tP&DVgZ91?`5&fjO!e}Sb7-l9Z0t&e$- z6fg}e{CJQWyen)9YM*LU49fle)w=`9U-<d&fJG<%T)BEY2w?AoTM<dQP4Tec`P^)x Gr1A#<@3jK} literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-nt-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-nt-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..54ec98922ac92cdfd931f378fef673ba8b0fcf08 GIT binary patch literal 437 zcmV;m0ZRTKiwFP!000006Ma+BisLX0{FTDKZbRW%7SfL?imjx&I+jnCyA7rPex$K_ zX?HpDB1<D_Jf1lA*c`*}d`;jz#i9L`E}M^Zxh+}8fu$V;r+o+RGzgdI+qb^&7r>@% zGX``@94q+Ef6U)f-#Q*gj9P1%!WpHO6b5U7-Tc)&ClpYY_vM&MbXs8EP&2u7Sy$9v z`mUV7kxp&%Su0%$0kw8}47eH=VMLpIzX{9Ctfmyl6hLu%1|jHzLG4&sj3CUhZUa^0 z9w?q3p`t*rt!3=cP<a|V4lk1%$1y8JJ(x&+Zwk2pId3XM(g&+=adSu71P*k@IwGrZ z9Iib_-F_hrM{PfMyZv|IY>Sm#j{QR}6^g?T>l%tj6jJmDTRjM(>C+VodLWzV+5OY| zgwq#`HzB1w?(?UxS}Zu=CDqZ25LU`lS01>2whnRpL8`oX_KCg05AThXZmL~LW@G78 z*F`u_x5iW7*ZPPG&+K2lv$E5a%rdD+3MMj+=?IzZe_Lw%`{QJt0=A?O$W`=e;~Z8V f&&yYZ<(<q$yN8SZ+iR&;hur=G1aHs#G6VnsmSxcB literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-nt.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-nt.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..4e6cadff9e622a27197c6ee7e75255cddff4c4c4 GIT binary patch literal 353 zcmV-n0iOOFC<FjxaZY6qw#$f|C@mRL`m<HjDN0uek1+cGc2kQ>UPaS=ilU51GI2Om zz;pA(*6BfY>ImI5oIp9m+v}40|7)}gzjFPtemB7mc0y(@Rpkg+;(OW&LEyy*S1L?Q zYSt}Bs>4I<2`FD&bhWv~vcm_Kzo#=N+t$aOe^*#m73A0QPud{kyTJ)Xst}?RSJL&c z4;M3Jp@#%q$BSS~bzrloHM98&2smr~ksOwi2Mhv}KG7inCXh<pHHnz@orsJ&(eH@! z9#B(Eb0-Q0LD|Fi24Xx9f|`~!48aO7I4cD;q%Z>9M^gDN&>${lFZ82XZMbm{0quql zx7C%4^M4L(@wG|cQ2)miFj~MLh!5(l>i}8qrGUekHzzC0Qn?74rYE8qnUS>zz0hf+ z$-Fnr#y%k4gtxEt>eT4M4XeM8@GU(x^6blta$aersa1RhE~7;^D1aCD0>u3TM?R;I literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-nt.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/windows-nt.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..66729b9d9f417aee62aba8a46ca35533085bf62d GIT binary patch literal 433 zcmV;i0Z#rOiwFP!000006LnM3j^Z#3{1qf#m#U`|TB&>tN)xB}NaLL2uvCbDKZPcx zuzTu@Yma9pj-$yyb8>&;EhuBq58dx@-R#5lK4&#K;x3}Q03Uj#&jVBPrrWk{J3}^I z7r}uRBwyg${eC|ecbdi#yp+PgFqML+p`z8V{FOWfU?s#K^KVFAOH!G<WMb;0y!d+S zyirgZW$K#GQt6X(Af?}cgB6`uBUI+cF^IFbk`fq$Qv$n-VpP4W(E3|^Fqk5xM5=X% z{=9?&tX!2$V-FP-r?DsZM%!reQIwZs5g>;bs3UbM#!c~uvUvIyHxFc`*jig|Y!`*e z4>wC*c3*(QNxILrJ$%FEjaZFJlUYV3jDGk*tU-SQMgenNgxiI%Pw3=`mC%rWj`|GK z7qO{h<g^^-Zz8EN!vNRtWVWlhW1kkB&3l97f0$F8clE`5g&#i}PW@E60_UBQX_0H~ zy)kHQsgEG))&2Y0tTt&1bz8PJ^E|RJhLeg|-&w949@i3Oa?qhDhq_=_YB?+(UWHeM b`HG$o5B!Sfzs)uEz8v>|)_H8wDFgrj&#Kdc literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/woodland.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/woodland.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..b724ae7b231d41188e355c8a693e2db9e52786ff GIT binary patch literal 371 zcmV-(0gV0|Py_&E++3=x|CqMG#nhgkTU{!sg;3uAcc>+{L>9|43594OVIwxxWkUb4 z3OROyRoARQDYEGTV)9b}=>KV)qzQ3PC)`m+a-vx+U~MoIyW^S@7V}KQRFU3eGMy-F zZgEMgCp_kc(3%8i-AwzCZaY%2aDIcYi<fTVn|DO$!9qpl_q9REdzN>(PRS<K_rGvY z9K_ko-Yf(KXgrI~^kht=A~oY}i$QRKll||N!$LO;#u_zl>Squ?F&}YG6^yED72O*f zz4JIdhTMHcJvok3A~o_7?}f%sg|S<)w4q*Lgp<0?yv)vFIn2EaJ&8(U!4$lAzSjGa zjcN9A-NCHxmwlsZ8oQ?@FY{|M&?EE22<`qF225B?UU@?iI%gDl^Z{J<<d$UF(Q1>{ zG0)gBtBZo|OP_CX9Bz1WK+L+QJUg|-;GFVO-i2Z88cY4XAAZRMP)EBwnF(AVk*#L0 R!JJ`I_c=XP@N8GmjDEUtxC{UQ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/woodland.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/woodland.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..bb4249a8c1799ad660a4e2dc69193b9ea5a40847 GIT binary patch literal 458 zcmV;*0X6;~iwFP!000006Ma+Lj^Z#3{S~Bn9V(boDCJ|2lei^Inq(7qhYIoUqtdt( z2JM?;AN%-nBAvqQWd6jf2c@)as@z`|g}>ZJuXM(R>O+E%Vto)G&rNWhRn^B=zQ%Pq z!WLB((V!&lET?SB%{qrMzLc(Q(Gth@sua6biV-yI7aQ2@+3!3CAQwKzr|+z!4hD+k ziJge_+~G^=)p?Mb`YPL{i0F(#N(B@eoYk|?BA32T<HFEfauK%P0O9f<1P#J4l%L#) z$_rV@L<dCNztQ$QnS=oh({`;uM#a7r&b*Y)q_dI0((y6vuFk)Bxdvifq%Jj0o&B=2 zJ8~+5E0F7LDiSF;+gxjBY59%1IZ?G+tq$*?gHUE`lTJ-*qo8f`hBDLkgh3Ok<3ulZ z0*ZXPi#BxBTvIvu*!&s$Zx<AAG<4Hce>+EP2W;@-x%d{vz9?r`(4w25^&lnf?3<m% zQN&LpF#PzLg--M-%ZEW_)H7pQ!bat{OzFB#kQND^XL!}pOkTa8BqYRsg?wFX{RyI; zzTy}>+z%D0H&|%`qgin?&cRHbJk!qt<Ha8TZ=Y{@YyVAW*Q;P|KPNvro>2q<0I2Ze Aj{pDw literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/xcode-dusk.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/xcode-dusk.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..1b0ae952d52748fc917f7d32ea3c81f9c193e6b1 GIT binary patch literal 366 zcmV-!0g?V2Py_&E++3=x|CqMG#nj5>>?`?HcS4vXyGJdGM`26#xhMu(WfKY;v8gT- z`j1t(V;fj?%?gy9O&1WIp8`PtH_QlQ+|vn1RMUhB)+Mku7>XSUCWOd%x?!qF7gEbu zkz$KWnozmMS`u2F;H-mbAJT0{3KsD<_!?eX;*)no=)yup<@dEg$$OS}xlWf&s@E^v za}MHcX0I250yLgQXX*(hS{L!Q#o%y(llr}KScGQ5IH1N---Gz+`()L$%u?a6RYIR_ z^e%C_4Y^g3;7n7k1M)833yq%&W4B^yL%o9$PKG*5neD@J=zAALR$z>&hxg3adS9|J z%|5O>nAQ2RZ+uN-cednZeoY1h#xYKE`!x)hu$WSLLlMR^ik$iYE_-rIvh1{3a)a|Y zTV-`ouzl(CEsn#&Qv|Ua?g>V`ls8sw*I54V{qRdBI;jZl^5j+E0*Tsc)W1%ZN_kT& MXHo^vHbK++0pV`5Q~&?~ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/xcode-dusk.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/xcode-dusk.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a844f44b72800ea77f13e6d63fc9ecc1f20fe25d GIT binary patch literal 457 zcmV;)0XF_0iwFP!000006Ma+dj-xOPe3eT3cZ*n9N=hH5%7>x3h9sLfw?$Ro{X|K! zv|HW3V2{URd*DVuaZ-Q$)lwm(9=h6IHjTa9mMAyMxbAIV@0<Ppz$iZt&IB#Gw~AD( zZWh?4>pUpnD2+}fP2Dt&Sn^wL#t}58+>Y#M`w??UhZJvtlw=p<#)6}0-23urgXS3M z+#*JNU>+Y8K9ydLrCj3F6>ZG0pcG&v5TIbir|AfZ`aX?uv$z;S7_FiR+rQLF%2a}; z&m@FZAA}?!6fx;nQlIk^!BLgkhLJ%+`DtWEJy93jXpdCmF)xbj1dq$#az(x0M3oY= zvS07wj?5&VHK_=RBp#j7!?iaWx8ER#6LxJ`9$rCbqpa4(jmT?5C-v~6Wg+zmoJ0`E z++Or$SyuTjQsGf1PGR`Z=Fc#F8z<66UC2{?1%v7BV1SEF<Yh@q2CFMb7BaM-tt5?p zu`|Dz_+f+uKfV_(uqjqqH@gg{e3E?$RNM+7`#wTOK>9etvzJ!(n(S)}!Dvs^%ls=Y z$;16n9w!BzM5-i@@Kw+G8I?S?UnQ1{C2rof{4<^TzvU_PY?#|WJJ%u;Q3L=0m@(Tx literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/zenburn.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/zenburn.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..572b95856c47c346f4698f49edd3c54880937023 GIT binary patch literal 361 zcmV-v0haz7N(2Dp+FYt!-<Vko9K6iko}XLYN?AiKg!2BoLoE#wSuCqYqJ@NtbRB?d z=?k(nlvUTPK=B9DC8E;52Y~*MfB;ZDozMu<P7m#iJXeONHDWi>W6HLvvil31Aa*xh z?i0wMBCbl-rm1NkVB2AWdiCpj*NC|8^wvAV)6HeFmtWQfBJW5Y(G*i6vDZ8#A{{o< zbQK#B=(uS~7>^Eg(9_$dgMb37*)Nqttzm*pA+wHrMS`cQ7)4lf%H}FXV{4;y8`g{R z=q#Zqxxksi?&Q71_?ftF(bBI$UND4Jb+S!ttI`*$N`z>{2}cIo9aYnP!4a&FD-K$< zyX?JjXp9RBm2^!EGO~bN3f8}X0XaQslilEft0hmFSC(9MbDv3{BiFbDOlr&kYv#kg z^t5R`*5YXyV$b&kBPRvmMf{oribY_V|MtUgm;n6Am#Y_r2;7+swWIg?fTVcX#`C#( HEn*5ky_T}R literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/zenburn.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/base16/zenburn.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a5975dd3c56aacf0b328b1db54552493b711f5fe GIT binary patch literal 445 zcmV;u0Yd&CiwFP!000006Ma+dZtEZneU(c4yGD_!-gfE3R0d4SN`Qg6YgF~!CmNik zz10<ej6cq?%|UvF&B=bIYXGH;>$^?3thV8Do4nFnAG<dtm6Y-zK%V>Pvs2yMW?#;f zw(7cs79|<)xa3b;&J<ruKMd$-j_Go0jG(XnKH^xNK41j$@qN06>?CC<_|=oLNc7m= zQ|Z+QkcP&t+0}^1)*@8^g%%fh4hCfC`zSt^&Z>)W2o?y}e<2zWmQ(rq+X!r6Q|W++ z`?toOXOl33W!gLl<g7Ff!rLe4MtYYB935v84SLVplNM51)h-Rqo&94s_skgtTd6-7 zBvJIPziRJj{f(wSQMYT`!>iPylEvDjSM%B^8rQ#|Y>Yc$G=%Cn({J@oZy8f$W9euZ zQ+fHj`7@5+J}Ta5%=1)V*%R9ld%Oe&|JY!Q%U3WW&#Agd$$0l-XK7OK!w8&yd~aeF zW339YsEkHt+)1$);?^jmbxj$N;Bkg$EiL3VhJ}RoQgZV+gcBsQ_=hEUxIa{)(PC!^ ntYPUdIEz_3d8A(irWa%Ew&maY-&%G(tL63s#W!5+O9TJ_mZ0CG literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/brown-paper.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/brown-paper.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..35f761d4b0f8ad899b11bcfa767b682248b442cb GIT binary patch literal 209 zcmV;?051O<O9B97a9+#XHKBz=_UX^j2OOB^d+XMn*Lhk34s^EW7P{O;j^O!R7_6CJ zb<O(H_MZxx3T>MPgG9zc<sA<VIM=JEJ;$4X--GA9+peoI4owrmdU9RwZE^Xi5b?1f zXD1QzM$+I~?>*zzFv!E&glDf|sIX(Iq9TAPG&&6+dVK_;QA1r-lLTCQ)!RJ3C!r-1 zoskqFUE~I)K)zYt<&nv&(iUqRrI%QtJxtWun1*)@^lbpvs{ysnwmrF>c+131M>o;_ LFDI|J52dw#E(&O% literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/brown-paper.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/brown-paper.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..6b7a648885e8b89feb0cb04013bd0133f7747410 GIT binary patch literal 280 zcmV+z0q6c7iwFP!000006Ma$bZo)7Oe3eQ3*`yUkMdPD9402LaJe;^BE~rAh`-DgU zp>6-};`n@LPj~#C&Q4fjGnvh2ZoXPuaQiOG5ZY#97cgJq+YtHPMmdG5haO`(O#9G% zT&CCVYLDYdV*7bxOo|aWvxJOJB~}Vu8DqXy>#YQ>PDtHOn}so13EGyFB;;mLjbsPK z%<Vv|8!BZxFr(hbhJA(seCbH&p7fGN3SA+iw^D2>`kq1YYV-B!2$8^YkyO$L9{U21 z`Bw>9J7ZScoXd>d;v8J}EvRLJl!h~5>JrZ#n*6<To*YyU0$@9<BTc<e*&`*_WD e{{2Mg`yC`ow{p^vu^|N}cliMs5K6>M0ssJVI)zOD literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/codepen-embed.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/codepen-embed.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..789e49d8a334db9b492a0189dcf8b60ea5bb0bdc GIT binary patch literal 203 zcmV;+05ty_1p**s*tR#kRKEj8)!&~=86pu3fV`D4hXqsaeJf#YuFWFTdLuJAE<UY4 zRCUb?K^n29_`wcsBIs!d6o_Q>+F4p_T;c8O0o+&D<y+0NT<Urp28^8R+43ds`qk%K zTxhj?5~(!Xl9%~45zN}O#bpy;V;Djn5{-E9iW8${*45v-`2cvia&TBE-ov=SfGYJ> zo$VL~7ND3s*R+<hiM%MhaiUaB`|TWYS!T1D!lo*fgy6rVCjx)CdW*Z-hUoS4W`<o8 F@&i8pWw8JN literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/codepen-embed.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/codepen-embed.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..0167c3e7f934323f93a915afb770dcdedb3855d9 GIT binary patch literal 264 zcmV+j0r&nNiwFP!000006HQNBZo@DPJ4}C<q6o0&vBM0qqa<2nJG13>LD0JoL#?cT zq(qU_dFHRQ8?eh1L-s>|s_Xj01`e@5jpO(@{|PD^oI@{fPxhUI;9f*c(-e`(#PUhL zs7z)?JsFTuDCmyKF9#Hiz=b&!D9~qTFcz{x1eXelIN{G)NZOnUdM+?2LboyqRyT+Q zhOx|*YJD(m^FEXhKqQjMqGAtDVM6=TKOv))5G%`&wAL}CK}(Pv!LqGKXlL4MXEbye z=*4=$?H-~!9G?H5C5hxGwQ9%CUTv{Lx6Y6#?PKs#CD|Bz5@1q6k{JB-T;GwVS^DO3 OdHe!x^$q<70ssII>39tQ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/color-brewer.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/color-brewer.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..16ae0b925ef29b87e4b7efd476683f10be8ef04b GIT binary patch literal 226 zcmV<803H7uBmzK;!*n|>t1rbA9Kl2mEoq_u3UfOjGrohI7=YFO|KFrEu>f=b>%P{| zN#WSs`Ibf>I{{_el0e9wJ#<Gm)%DpA)BXDP!@b5cjebb#)-rY+y}`x|l~_y_u|;H` z?#7gp(n{QiJk2-{>5x^3tQsN9EZ!I+-?fH_q<hA&VPSfym?5VH3fFX=D-M|@FA0qx z_3zjfMMFGxdLtdwkfR6@mmF+S94JcbjX=+8T-<ihx*t2KiUJ9@$Lj-GZW8035TjE> cT+(e3zF&mu?ql_h=}tiOfBNZwHL}t`{w_6dmH+?% literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/color-brewer.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/color-brewer.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..0f01c8b6381bcde18e2bf3bccba9a605a2b04229 GIT binary patch literal 268 zcmV+n0rUPJiwFP!000006J1f!Zi6rk{FuIu3dUfl`<Tf|4E1mlnwV{<>c3Cb5<n;~ zKI`l|U(Q$lig)eVhs&uf%MS&59D<*nxt#jGf1IC$0*oOc?_U0)MS)aC3FL+h7OOlb zAZRBB!9rj-w!R?{D8{V(-n2?pNlbfd(Mg)Q&0bbsTR&goshJrwjmeE`DHtHzaI;ky z5(qfp@07RI71YgJ+Gdb(cjD1u*X1nKOe~+2iN@>gz!8@pA54}8i#Zw8yX6rXwfInI zh8T}c%JXYy6NnQ08uu<(63$YxOsng<>Ry#e#?ek!h!pR=cTz-I7%wEir1LL}1XA-B SH?~bvn#Uh1(v#aI0ssKLU3`83 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..1c95753b48e7b41257226f1c666f39483de341a3 GIT binary patch literal 190 zcmV;v073s77y>}V+T6IPI0!Ge4I$lEA5R9|5~9y{ldk3A0r~vDt!KTX0?Ws?0L%0& zq{L`JL$581!T%&(et*+x{{Y&3L0L+(Sh~1*+t4-uQHlrB5C9-5-mDuV`?*MYR7^_u zKw7_LMvp}sHhXArS7rkm+1VArDO?b%S%0;YR^`ac*z*5N<fHTwwZiV8FVq!_8q3+O s$8iEFA^~F;i^^TsD4`yUGhJk38`EPR1-;}f3eOM6V1E_I8^3wBUK)H_9{>OV literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b015bd412bfa35a1d149d85f9863cb332d6120b7 GIT binary patch literal 245 zcmV<R01E#fiwFP!000006LnBQj)O1^d`z!P)dLb0eay;947fNko0zRo)xWQ*CV-Ik zHe-+N@tg;~r>7N`*q)qoHv@L;qs+mzr@F3R=eM95ad}8|UmwO4#uX|?;LH+QB?&8I zv?{Su=*x+&>+(u)j&@>DjbvuU%*{-!-&ERWW=72<fG@J7kwRa{;*At9ihg2Hd|yA7 zejySVE=!bj!^>1)QLXV@ui3j5?=ciR4jFf!cvQ&nXBJ(@o2JR*PV8pt80|jK{iFXz vyCorO63368odm5ONd2H~bGc+A=%)b^rB6HQ!q}1mlYRXG^&NTe83F(Rd}4CK literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/default.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/default.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..73873f224df38e3b1068462b8a971832642077b6 GIT binary patch literal 314 zcmV-A0mc3shXWwwn%lH;yBXU+zJigDwpE)dg=X+by!yXg=;_6m>cgotVd7q9BC)x) zS*~>TXhReU4nMuxE*lV{fv1OVf4kCOGxw@&MdLaljQ=n)BJpyObh-Zeyjk!d?viAe zZl!C!^5uC&QCuu`l4vneIE@bS_7ySWKcgVTUyisr)fngXJF)&f8$%{)mIX9cDQx$D z!l?2n9F%yzJ8x4zy%D#_gJ4ou!2qu#UO=^=RHa#zsO<xzPQfy0y7a+)4TI&_tg#*d z7rT8K9P$UX@&?Kn#5l**XoD86CDRl2bhGSW)y$BXP}OIY;bsd}{1Gw>GOhLq8z0zy zUhtAj4n*0A8Bx=+v%>(G41_5rh|4?<Vz-kQ3Y$DE%NP%_6Jm7jR9T9qa7h+4*yy{h M4D!LqLjqg}3s0GtCIA2c literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/default.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/default.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..8c33f9fa285cb1920b91acc0a2f118ac22a4bfa4 GIT binary patch literal 390 zcmV;10eSu(iwFP!000006Kzt_ZtEZn{gq04U9Va-cTLidxia9S+&Y+nSsP9L_bCgc zQ8)2|&pFt~*goJ!v%x=S`X4`yjh<j^6|ugY_ya>neBIt!NWv!%##q<4dmQeMHw8WT z+vcyo-DgyRzVv~UGwn;ao6boyacEzvs+u)h&BK6BJ~L6*btZgrS`vt5_c|j2eUVjF z1z9K1Z{{0_gx6=#!GNn*_lMM~B$)MvwLqVP3yxO~CPxDbY<?rA%=sFTPz#4|iyb@J zUeWevX^*>Iu4s^O)r(7m!s7NlvHVD-31WN(Z7CilSXT@S4xT`8Dqo<{FKyS0iHLgr zpH^rsI{ogPth?kF>@k3F@g1<on}7DW8pDG5h{<q4$3ZbYd;fr7K~edK5*B|-zwO>0 zmIMP(;f^&l3pZ`zs!5eB$v^uDiBNJd?Qh9(XpV=a<!R=H*muW$)2xWR4D$q*)iO<^ kx~#&%pCQ^fuR@fOu(bkYb(w<%c0V`e3jlu>vWNo!0GRr^xc~qF literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/devibeans.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/devibeans.min.css.br new file mode 100644 index 00000000..8d317c59 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/devibeans.min.css.br @@ -0,0 +1,3 @@ +0 dضu H;FAd>2htj7ei,jmkjpfuAc"D13I~m\VclL+d0#ɂ;lI0. +v糡wymDLW m"cF~BhBt6|FxDQHmX]egRZa0&5 xH/gJPxޕ%=YEơ +!tB7طFp<8lk5)ەxnM \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/devibeans.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/devibeans.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..984448f670df020dbba52d852c8f7269b121c27a GIT binary patch literal 358 zcmV-s0h#_EiwFP!000006Kzt_Zo)7O{FO<(4it@*7WOfdlei_rNxH-ttI+;^Ld2y* zd$Z#^`*QZ?NFVv4!JLK^OR$HPQtHh_is`U|?H>2~XLH4@fjK?jLPkFlFs>PfOT~6= z*V?vXP4pfESGbLaVW`PxiHt(p?st_jLIR&J{|!z!;P)sc+bY%fwM33F0oB%_c#Wbl zBcb7#*3OFRyIAa-ZKG-vj||WE@aYzwa5~3ig`rf}&SOoqSQ&jxzL4-Msb=KD=~2zX z#re$;<ox(JW-K;78vX^zfhL(Qsi@q&>ZTV<b#cV+F31*;kX@9N9p8C<-?d8oxJq=o z@chLR%z_xeOJz)P#KhCAeTm~~T=chXBkqB<Zh_N<2<2233&@;YkgNHd6rF{TC$A&P zoTlmYi_Dp=Tr7USlPdc02-)RJ9|Ny5PlN}@K+XuAQw+ncd`34M`Ed2<7u|Rwq%i{k E0DEq@4gdfE literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/docco.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/docco.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..a96af39596dd7a50fdc6ee88974a3af2f0284f96 GIT binary patch literal 273 zcmV+s0q*`A@&W+Fpmnuy^)U;#aFG3{Qz_9{fD(-bK>m1Hvr8A?wc0!Du#E+*>fC`6 zJp5qWpesBk5dZv&rkZa?Tsn<H=P7&Tn(t`qPYt69-3^CM)~^e)$JXw9-^8!ZeJ?vy zO_LyJ^wW0<^J@EGUYIwG;Di!mG5|EEI6^3VC4Fo~!i_tj#1N?<JA1%^aW*W<q!2w| zF+~iQCK0ZmK?uAU|E#YMgx-lDQo!r}wywS?oN&7c^NXgFZ6n|aX#3@<7F4N~!;*%L z7Lij0jVaC3W5}@=NsSZjR8UClpBMuu_8gVX;+LI30%#fiwCNIR-eWM>CTWvK<nkuo XB1sCC5L+ZnGAw_0-Q1JOboKTR9yNo& literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/docco.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/docco.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..59334105a602b8c96777376961836b5dfa0140c7 GIT binary patch literal 337 zcmV-X0j~ZZiwFP!000006LnJUZo)7Od>H-?ly0T8@Gz6pxFy3$y2OQ5XzxBD;_@-^ zFOKid_SvgFeWi07D8%hTDYetk9{LzYZ?=oB?&_}lU0pECHaLf#->%X37#M|Ds#?`* z*9FhZ#1rAxGLUUE^MKPSM3b3h86!}R5)!r?;*z14uTdu!>1JIP??o2!qth5~RY7f3 zPMOf&DR8vD7u<W%6qQIMY}p3?T)ibo>G{)2%RCM9tVL5+jmc^QL~wWZiC1iyZtkq> zt2HOI{hqfQB~1f!w0dOBbv!tEGD!a(j?)9bocWAyAYfb`AzIKRWC^nZBT#0L^@j|K z*yGP2P3o%75Iqv1tT|0i2b!1BD7E>RahCYg`rGt%r6uW*;l^rS%x{qJvW@e@(HU_U jjIsaHrjs<fVGqfs^Q*f{9E0z#>ATv0ZLfJG^8x?>eW|G# literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/far.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/far.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..d34d7fceb21e93cf44f63eade5a0e8f707f77080 GIT binary patch literal 200 zcmV;(05|^|N&*1HVso)zO<RD;J#+Q@ZqeYrfELKlKXv11w4m`tX|!0kX4{g;qCNK7 z3_DKo>-Hn6u36uTa0!uDSI&|3zp3NiY*}wN8ZkV$KGZ{tU59N3?kSK$jOUbZS$fUP zGdv@$f`d!~aSY%Q{PC5S%&R%)vx?2STw@$^Pi7ZxMesfCOLRCtDaXR3k2^M^jWI4v zu<|l<kl-a6EJ(PfrWL8!W6LyOY{)u#0#G<A8-4Vw-t-|_9nLu?Z1KOBBlY&3wABv~ CwPY9o literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/far.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/far.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..e3fcc6613ea6efa582076da8ad7462d96f3078ee GIT binary patch literal 259 zcmV+e0sQ_SiwFP!000006P=OKZo?o9ML%Y*OO>}(*~d%<Oyb4h3{2ao>c3CZpoy}# zJ>F|`eXvgxf9AUtmNdNd-oG2L^O&SWH$=FskJC>>2hNd_#MdfS6Pcn|wJF5<L9J{G zGinuC6UDKKH5lP46vM)x*eQ%h>jH_uFg7&r`-(E-dX?nrg9xEPWVAcPjEq(#b(SIL zqe<@Q>=@RiMgFDmmBLC07~3BmGVW$Ov0L0%5q$=n&*vJz6zAH(q?n*>C6-_?RgrMS z+p^uKEg_&nbrpgCxta|!Ym(=Yl$7!AC2Ds?8Ydmz`ZgHDGC`*NTh6*N4y3?jAK!@) J$RJAs008u9e9!;@ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/foundation.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/foundation.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..e992a1ff48d3e2b1f72b496a7309a90095b2d5d7 GIT binary patch literal 232 zcmV<E02luoxB>uVa9#_qBU(7*pTAjagFP^swJ{8%F#jbOjoW-Wby=MHdNAlnseAcB zRoAQ>d<A))dxbQ=QxB`zfvekS<Xe<T1GU<}IJs8G`Yj33yLR;!cXjG?&hjqbh>B(y zqEUb$qk`8qS|4=gTp*q(06}@mTH|x!LhwW`HB|BOC^y|UAr12AL-Tk~ARwfXYV=TK zo|rTWxU$k~PSYv$+~->yF^YtMK7-}Mmo3`W&L>d_)7ocnf?Lct5NrQg@-n}sS3G6$ iDak9!0YeP^0tW31A)5bNAH{wC5UslleVsa|CAtDP32z+$ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/foundation.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/foundation.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..e45a26fcdc8d7e00486bd81a85e08870b11ed0fd GIT binary patch literal 307 zcmV-30nGj%iwFP!000006Lpf^Zo?o9g<oY-Z<mOv-SX3inIJd`i-8oJby3xKpH^X# zP1@x#$Da>|a>S2#Q?i?e;1{Rc0|1;mk3O^qA;i7>F%(j3L&m%3B#DAi3qjIg=TSxz zlSJdD8#5|qu<6!&M@6I+p*1AYbjhFrVK*dFFmBj{cLPK9%jy2B{y<*A3?sEwPThHH z!BIk77Ei#0rm4^W<%rPjVvr%++BP=I7@u~Qy}f*#zH@1vGvM@ECjfz+Q4$oNG8m~c zfF*Yv-<s5+7DS*NrQ#?SNM`p*<;!bEPOx5m(D`);g2bfUVig45G9Yy1LqRg{S~NUA zzyM$K?z0rh()YdSd;T@G;48+}Dv#UBg{Y3{$VtoT^3cc9{uT|#-bbp${TtKsQhB)o F008PfmCgVF literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github-dark-dimmed.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github-dark-dimmed.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..31fee91fded27d203dd8213f9bb40cf5271bd6f1 GIT binary patch literal 328 zcmV-O0k{4e)dN7p#JQv?;LwTEC3{9NXu3*-Uls+fQXnKk{<tufD{4$(mTR{IhjI^Z zQ^p(xW2b6qrac|87q!}LuHT>y7u3@FdCOqx>ZNz|7feYU+pR1DRX*z}|1)AE3zcix zwoJsiaFX{4;ae*+*U8Ek4!!AmliVl;4qGVyeoDlRnvOR~0KZOj#Lz0Z-pcKEf%<)L z)ydg#WfutXUREJJRD7I7bX}!7TWjBMYj_1qTV1<juFilDbwTJt3%yQ)M-Tn6gK@#N zOY6h!LwDl!K{q0reLDga{=$`rG#mEa;K$yf>|GYt4)e#;mF_swx3^+$Yyj%ess}gM zgsphWAWF#F4z0}VVA30_IJght7b-1AX0oo<Xz@L{AL`*)2Q2bATPxnImPL{4pBmWK aFsGxT?|Nt3jevGEh8Y7qZoeDsXzL%Bu%b!; literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github-dark-dimmed.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github-dark-dimmed.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7635c2cba9e59c203b63905112df3713b7701f2e GIT binary patch literal 407 zcmV;I0cidoiwFP!000006Kzw`a^f%y{FR&OD`ZH3B+!pxWJ?adI(E*MuVp&?`%SsX zq?9*FtCiN9s5-mf=~D+6;_(Ggf$m-v=(iz;?D6>0G)>pgwfbsXW6%u4>VNV^m-i5H z&PHPR^$cJdCkIUHJF}GjLbRY9N&PZOC`jeN4;cnJiAJ;QHf=WxV#{~-S6pcaDV?5_ zD(lY_Efb!;!zO#pHu$muwL+uj4Zs{%_t2`$vd~$k2yS7(9Qr&e5>}Wf0tZPGIno^B za&W2Lls*<MK6oNJTdi7Su0Q-w9IY3xBMtO1t(J)J4=rvAUuEm~WW97=MipG~yglH4 zGk5BM;(!k0NS^1+gg9mgLh9Ondk~U`QAmGsC>EASPKh#x$0|b++as!8&(l&?iNF7} zg3#?-3bw6V)bMJ8=k+_;;mpTwBbropj>;GUz2A!)G)`wo_VF-oa}r-19W8^iMGwbt z_jTF)V<{lor9!ncwc0ICZao9F+I3AWhewW<EMu_8?Gskl*N0kN{{dp3V*Azu004fd B!I=O6 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..51110cb4a490123727fc6a082626d5e796b73086 GIT binary patch literal 328 zcmV-O0k{4e)dK)z(arNgiiVEwpppdF**}{jB^r-JBnCnz#Jl@A#z;Q<YOtF&Q$x(H z5iJy=mz(M~cYcJTH?QiN^$pv0D=|QsZyM|b26+kpswo#oyXn$l2+_LAe~s8Ev_U6s z>oVKiYqHHf744aLicShW-<ZKbs1)o3sXX*N{H<V5y$ShHR58ycql7Tj8S_nV+d}m_ z;mXO^;mS@>k$zS(fG9Ci9P7Nwhqkr%uNwVgx_Th3sLla{UDUQvN!R2^tq)%(m?FH+ zMLnDh-jd%vohERxBa#3hj-Y4_Lz$7WBzMp~a9C^TpVLY^j*{!9OM?R<$e{Y^=9<8j zR2Z_<A>fqBya(b6LYRH;I@;_ELTgiDD{IX-><f^3|J9rBYMY4K+6K)7+p=g!7tNfQ aI0xjLh$0=NEh9)B#bQQ_@R))~h5ZAAMWSy2 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..fd81bacf8cfe454b7ff858457a7e5493faa2ae4c GIT binary patch literal 404 zcmV;F0c-vriwFP!000006KzxNa^oNje3j1hZ{o4j#>DBvWCRF@mJb)i^)j8ld#5=I zySe<6v|4FdpgFtO{Hdag>G-Gy-Ra>)f_fWMEI}V1Titb?_-cOIwmK?;aq};E!^=lZ zdd@r&Jlq2a{p5gfyD)3%4<rlHA=fVxhm151!dPI$6Kga^NU@s*k)?(G6F161&Zj%2 z#)dN{OQ=u3VN-%48$;cocW^Lf-T*{tvxHU_;)Tu<CU7eQ<}eg5ky&xV1Qa>V=ulBi z>%p~lReD>r`o<I1DF)S6oh$z{B^%i5gd_f)Hfx0Wu-AR%%VHg!Y~ap|m(eYrL%-)o zprU36RP-JL&6$bG7Y9r_$l-awnH0b?>Al2iVLjxOvFLbPC8%NrqByXGTx6!-kCqX< z-X&w5=?%&k69a8O(2i$1ingssb`I+pvs0>P2>o=1Y;Qltbxx*>!=oi|R`FI!aq)HC y{NGa0+O8FXF?;#E`f}SDXrG>->-poM!!^qot+cqq>P6eP>gyW}h`4Rm0{{T5TgE#8 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..5a9961676a15141674f1ad520c78a926990015f6 GIT binary patch literal 321 zcmV-H0lxkl(gQ#gp^`6~iv|86-U1g>i`Mo=iyyCdok6TYGVj~ay~Z~}BgAL77SR$R zdhXIWH$OpAfJ9Jr&H4syJLS~S+^N_){H1PiHl|x#A{5Dt>-C2blPvZ(#JUQRo+W2? zPY9n$VB^G_C^E%jZcGY83;=8xIJe0Yr@>r&@B(ydw+}-WoTlUuZ`%U;OK{Zg#&EAL z01{mcl(_*y43dmZzf*&)>iw<Gyh2M20FkERbp~Rb1KO6n%&!UYx-Ha<7Lta@TKIZ6 zW86~K$eE;Iyba_K`@oTfT}RfjVk+~aosfd+F#nv^e9uPue2dLBDAkh1@4GfDF$*5j zM{!c(6A%jpAkAI-2tqNDLc!#ss`L_D3fUxWy~SOfD#V0UOS)UGh|0(sTrP?NilX4~ TljU80tP@5u)l{|Rn&$=lA4i;i literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/github.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..c8c89cff01ec4f4b7c21a3afe50692c28d4c2b1d GIT binary patch literal 399 zcmV;A0dW2wiwFP!000006Kzx5QUWmy{S{|?g`Kqvtis1I**0COy{v7jG7kUlh)r3L zw<ISgm(!*>*w^$egAH-}C|2S{;BEl<HpY;>+CFNnPt9-6QUyscF8-W1Jbs3#isz8v z;T}NfCJThi3$unkAQ~7fa{M^4$w*_tj~PbX^MI=FVD(Z4B10GUuiZ!sDedos8siTb z4WZg!!#aCOCivQ6qgO&cl@34@7Z=kEnYf`fgc0mafMWXW24q&4Faia36IzrM;=FK; zohQ8w8g-)y&)K$XDc7fe`X`FUv(^zu{F)YXr1CqVH=^)|Y%J}K=ggxUg5^x?Hlk(C zWl*eu49=ma;^`1wwoqk+zUx&Xd2md6&!I|Kmz)x26>g&hbyy*uHyxB}DG!ORe=H+- ze#>i#b~<=kexex<wC&rru52yVGJUs}Eq`=$(*csXy^3?4L`RETLtu^Mt`x&X*Lm{4 trl6FWPx!aj?B13I(5=>b#fOI$=d7W7QsVg@OC##`^aI_syTj810049@zoP&E literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gml.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gml.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..0cc87d8c2589a2d905a9ab8200f1493bbb203b14 GIT binary patch literal 235 zcmV<H02Kclzybhda9*lMC0dzy%741a5rkpp5#PV}8k4dF&l@y0MrpQeu1%6+>lso7 zoc$cPNLszdpzt%{8WHVq{F|lW1WsRs|KJ=qb-Kd7s*}WCzV!sCfnnemRjYNoNt#5* zjNMf>tSk|N?KcOvZHaYyYfq(Uhr8cKc&33W-EaYBSvQD^7WOM;mfdR5k!(m1Q-nj| z0GqdG8|phz#h^+hNRSFP7ADv=5fDO+UldRrXw?hSTKP~>`8cg?r{h`kt63x&Lio_6 lq2@&4*hX#F<vn#;j=dP;&n$jnCAfX+)P}4giMGa8)B((jafko_ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gml.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gml.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..4c36f63b026a9435c8e9685a586f6acfa9e14897 GIT binary patch literal 306 zcmV-20nPp&iwFP!000006K#^+Zo)7Og<oY7w*#?C6{S4PlpnWvIB`iFScUfP(;#UJ z+MUn&?AS@XInr0WX=P4*;N)$)s;cT>m^ic%=>p+r^Ov$d!Fc6hZx6KUI^FC(4jp@0 zUjh50w7cy#=jwzcpXi^HGb9uUie}bqn^G7@r+Gqk19h!3GVC09nV8=1YhB7Dpzr4s z%W*zA4dLHT%32g;|DL5tK%E4#)`<ut3&Xbf76=w)mW`-Bi!OPyV1)jZLkFT3;oH-T zX5f`8P0op@K?3yfJ!BDK*&qUe5f1m^Up+%A##a+dv&k7EB+IYve5aUnEYBd|22uhG zJXseNP-!Yt3(6diLkUY({*kBs0yi90#CW@}RFsjRMNx!i{$%$311~o27mGJ9K*0h4 E03M=?UH||9 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/googlecode.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/googlecode.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..cc2187159f2f660e91059ca62a84192c1a0ca78c GIT binary patch literal 257 zcmV+c0sj6Q@B&~&VRNw{7jFd}cem$HrOas&3P}V)^xwPdSQfAXe$T*wv|6hcYnzRV z82i*Khd4dYeMeuc>Y5b*q410zmtW&X<Gd14aJ;=*S%w04jAM8Z7EVRV8W*~$a!j0k zywfHby}i>UK%X+-E=jx}7nHcBnLes*TL!IZ#cs!@<e<IQ%eb|hW3r0x!>(}X&mNmP z6kjw=|G{jXBny8erIV<!d9kBGMXP855d=e3njIt_cn!7X=El5Q&qKBBy!n3v@au`f zn7@j8Q(bL-+=RZXU{1B2$jWu<g|4&yw{A--Kr6*D79D!dnM~UQJcpbG<6?z-q)~EN H+<5~6ar%7A literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/googlecode.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/googlecode.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..f7774299f7343c676a53be6eaaa2a04a9440eccf GIT binary patch literal 322 zcmV-I0loeoiwFP!000006LnG1Zo?o9{FuHjRisI6mVV4+z@)4OGBE3+YX3fU#Wbt7 zH`^TNyYu!)Z~3A?pQaQ`FyqErd(e?$8aI94e{HXTPDk%C@YAh(FOl(5K|=$ba5=|h zDky-*T4vPjVrU(q=9oH$sgBq&HNw6hDj}nv2^hN%NDdSUpS1F0w-X5oC;Xfr7Xfp6 zoXr`Fi8AHn!qfx|LZ=E5ifeM=)Jnz#R6CChV!C*RZP(&eq{h12Ro0apRUGlFlW0uT z_fTd?;PW~msh9a~y<f9BRk(#-ROWl8V#&tj3&HB-UBw{c!N$N{=7n%{4CHkE)nd~G zSv0kwGqUGJ?fYjdii~mByZ^CE0iuG6Gf4Ok&RRVvBe-=snNtkY<wx)t-E`z}-%O&P UkC0uyJ^%9a4MET9NAUsx0NEm*X8-^I literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gradient-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gradient-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..daabefd4421001a981c7de416114c4fcc0f685a8 GIT binary patch literal 326 zcmV-M0lEGg$paw7BE72iiM@bbaY%L|J?PV)O1S_9aL~u^KHtmaoG+lMT|=nYXs1YP zYi^OV7AGO);vbd<hwd(UT}~nRx^zjv*Rd8ymHa+uqfQHMZ#&_6DQBmL|IO&Mv;vEa zJqu{Pr&phScG&z~JbIq)<~Dwf2w{0rjM6T->8vSJaMKn#ZXsy|X&QF=b{j8g<cwdv z17xuq&qb<CoUBe58KX^H35Ef9%p1C6xaV7Jxju#nf!eqFYFB4A;17kP51Qd8cb9~Z zBy^c&5W_vp9N1hZB`%oAWdp5Gu!DqvEjNGsU%@W~LL`A>nqW|qtcx7Shvji43nw;k zm?D?a$#{sNI)-I;5^RAaAi7Pt=7=obc+@pmvwq@x+KE8Oj>D3=&OK8?-0#5Qc@9?- YXi1E9IJeW}U@Ud@VC%hB-D{ud57ZZ&wEzGB literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gradient-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gradient-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..6eac10731ba792c78f9e48f8dee2962ba018dcbc GIT binary patch literal 398 zcmV;90df8xiwFP!000006O~fiP69Cy{S^{oq6wISi@S>-W2WtNsr0h8Q;`_|-Joq* z2rs_P?VOo8Gmks-7QZ-%{SbU|ay#F!m1^N-5;EE$gyj%GYIJnJdVZETEOO<HE#~WP z&G^%-V|NcP!W$p9b8N9e{{493U&h2KeBH_jZ!J1n{CUy~f+0H=39|W~JYm6u>ZI&5 z9*9CN3OL~Bn4O3Q1^KYl@;Y+vFtN~%1_)1~+6NU^D)-^Z7%XFs5WvQ3USS}{0#>VD zRq!5<2Os2Qui33cL_ylS;vFsbrp$L7>;9`&iGEY|mr_qaM!S7BU9udj=whRgv2qRy z+SNUuI>G9wS9~XVHBV>pu~n)s#Z|Qr2pYJ-j4EygHBCEFQX6{JrNggk*;YQ-WXjQ1 za#KAV*uqbm&g4pou5KpL;DsE70g8zAQe(s<{h6T0rpW|o#~nmnCi;6k<sB^}9Sv?Z sfzjgTU9Z04;+7Xb@}C!t6ui6nrN2WRP!BuWwv2uM01ajiWy%8p0F+g{xBvhE literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gradient-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gradient-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..700a2efc5f8e4e76c59a37cc2d682b794fd917b1 GIT binary patch literal 343 zcmV-d0jT~P)&n5qrOj!r3K6?*!yDwiO2z#DKNTpL<2jz#Gf&9=x;L}SYTY^}uO(8B zb%@sH+9TO?tMvg?3l3gwK6<;Wy5{!nrRpnsJV>!s$^UJ6&9J5;FNBsz<)(9I08F>Y zUF#2&nU){`73N)=ORTL*1KP{~dYjwZJ?HCJSwOUVIqX?&1RHoNI4g@%`J7olatcx8 zP6A9a=4%yKD(Q80-l;uZw>1jWMRpmQ$w<>j4PA~Va?dvu2ls<hTSxO0T4^0365;Nv zJss!(1{@AcxC~f%3y0E!V90?C5WzXmr{ls15UdLgYJZ@70WnT__)7rx7cy95WokIa z3<gq?8Z#zM;iq-SNxg_Q99RT41cX1x;GPEQ)!dOVG6><4NFCKOU9-+vTjv|y@kCLE pLPh4+ee9Wh;{FW|H+OhixR$^;?9Rh5xfn`aayZ)dQvJ{Y`~g4spkV+2 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gradient-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/gradient-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..54c9616a6681e994e40a413cfad038f94ceb897b GIT binary patch literal 421 zcmV;W0b2eaiwFP!000006O~e1ZsRZvyh?zez%Gy!vSY_~dYFQeC`TJTT#4E?D0=rr zTFG&O{OlhoYKG(tpO5BG{Nx}`WAMqz!&)gNd-<|>GTI@8?HE96bo8rgYKh|}|6H-n zS_$4Mwc52$oAtm@D7C5>d;0w%yz$|%u3Ogh_1E*I*)}Fl;WJlQHMBj?72&N#N1LBa zdO<Me#3Dfs-;yURc)`1xv5W_zkUs?+@ngzKM1z8S*lKzIa_z8)&`t&jFHiHF9ha@j zeRwhk%a{`cu<@Q(7>Kcen_bfk1$@HuyAN`)*XmIrq9E;E$<CI0Q|3EQ^ZuQzdsdbG zrPK?M(e9K(mn_Fw^iDB0?28=~w43+b^@1t&nC~L5=IJVaJ?z_kv2|AMF9Z$TU`Ca6 zR<dqIe^pW&dex=Fw`w_7KG<Z6=_<LU9u92bCrwxKwjQdg%j6Ob-pD~1polm-HAPI) z7XpygZr&g5bcCqOL_de8yrXTTv%!NVFj_qH_3kQeyu7)Q|2fe}!Mlf7`aRS;>hVa2 Pj<K(QrTcYs*8>0mv`W>P literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/grayscale.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/grayscale.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..b3d25e08701a85ddc30ae1ff4d685da12454475e GIT binary patch literal 635 zcmV->0)+h=S_VMm|8le2xgPO$<&Qun0t|GZWY^;)h{j%rE=SF2dD>aT8QoaFv_%QL zH>ZtFI+g{PXB-Byz(dTUcEPV>d1jML&qcjC4??@Cs_JX|`7HZvMSq%5?a_~cWSvcz zruoYP1TMpQ-n|~@be^{mj7<B})8$`Yv-B0bB_mKGvN2PV_-oiKWGaeN+TK{QkNZu< zg8B*lC4(vlDgs1xfGoTmc6sy5=hV<1%O#r58_6H%dr(P}g(#@VA;2L{F{~jGAFN1! zfctw=P5F|ul`^%`m+YD~>oLkB#0BMTj2X+wReirU<t@9Z(nRdx3=p`7Q5XitsGdQ8 z_tm5KYH{UTjPGs-p_54Eqb#6C2{9&}RjDOOVz8Gq^=WwhRNO<_b0lXa!%?4GHU89G zusftYj$Hn6Kx_Y%Q<|skfg9)E%>V)qTSE!W#O>EhWm0jNsHSb&C!;&}EWd6_211)p z!evujOK!ME!)x_}Y5PtKUX&YSZ|25iVR#BC^eFhjEA|B^X}d@>StkfL0079F3!R=S zFVFKYU$|p02_y+#kW&v?L==<O(CK#y_Xxm~|K0yO<kJvaePvTKd3br~wfu|<uSq_Z zbpbbwDE1r18u(xM5fTmJU=--E)zd6G=hKLnP7{C1-PBZG=)fqPe&XB0SSD;$jo^^? zuB6L-zeN@`6elNj696sL)e1+c^wh$TaMkYnqSvd20f(+_(p4_pL<TI_dhb_wbyjW< zAbG{tyeW|CjAcJmTe4<dSu@j4n`O?Gql)opJT0$A`VwEu!-cyrtIG#+nY6$Wgtj?N VHyf4YX391)x*C@AWR=x+;16LPIl}+| literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/grayscale.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/grayscale.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..14fc3bcf25314854ea029ecab6c07df64279a0a7 GIT binary patch literal 738 zcmV<80v-JyiwFP!000006RlKTZ<{a_{VS9DvMFmzLlR1=Js3h7(&od>NSC}+1}?_M zU<#%rnfBi&66msNRVS@4mVJCbe9yVQXCZ&gzk7m<tbd}a>Xl2ph-RWl{QgN01V7Fy zgHun$F(mTy;q+7p35}DcX;*<r<Y_Lq9QsTW&b-<!f^8`>zjn)kgC|9HDhX|%!p-Gz z`hBDl7!74#Q<ORmXA&~PYp0}$UC55|*H*spenk#M78jf}d1S^C`bwQe#y|Q*l0J(G zh4VC_S1!q+*ZItr#_X<CZmy|72%+i12`z_KTU;%ciB<?9Gre4QTNN-?xP_P4zHiSi z;XEjUa&>LcwSgTAZ#>hsgF&HwElTzrJgdso5hzFKc9ae$liQ~?pI0%E#fM*`MS)|} z{PZD%6o{+~%)ygPB!AM$8iFO0{6!Z<QC?y5K>G1r=jG1hB+ow_g=;t`akJgSXM4kk z2HK|Zwu+J*D^P<OP}rpJsLcLsACwuOR@`e>z}(p@vs$*N5k^y0(=|QoZS$Q?i$`W7 zr*k)*EX%N9xHsyRn5*CHj@WjFlaXhR=Ob^h=#AT`Z9O?S9fu;s1K2DexabZHv#c^0 z<2$EoWzm>Y`sK?X%DDyS(0m`xlBm&e8@qxZOZK1DJJm9*`*P}TU0wk<R@0YN^)t<H zows%!nj7J`^uH~6h@MTuGH*)TE|DAFtPQ6$FzSUy8h0UB=ky;cWL!S5<hT|I8+q!3 zCo)p?ZNEr-$T&-&_K87~#$MO;SK7u04wZXj83e)qvSd}u;J}ixQ19=}J^J!{CzAnI z_1!Mqb)(Wo7;QHt+*4=dU!XUcAimFz-}?@#M*HDX_cV?0YCnE%fA#dG-qQS_Tt%02 zO^33YIK#-s>+2aSdT{O)ER}eK=3JS|=>}l~O>}JrkB{nrYHv&(h|`edEI&+)zfAdD UW+I`#4U|f~pZ{e>ds_wo04LOI*Z=?k literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/hybrid.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/hybrid.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..b23ab3f864ce7b342c0a32f2db594f83b3228eda GIT binary patch literal 292 zcmV+<0o(o?E(1VhaGR;ZUuWJ5Vs6i$O35aT<%<V#-etG=s1tN?-tQKxHdb46C)Jr# zlcXOaxHNG7pt7wO4P5_eN^?ey<TR0qNz~V{{G%ey2|WP*oTZWea?N8w`!2z5xFG=f zkD>H%s3WLUqnjQfQ#nbL789Hiw9F~HMzM#LhzN!z+8FYcW^E>3<#V7W6dX#eNu2dW z6LFI$b<+c!i*!iVs32p`itHTMOLV_Q7_IBfy%?8lONU(BF+X+{%Q#i0Osi$%DyP_r zCRN%wVOGR3W7vHH1zFQfcv&M63_~LpXF8rT9$FeZDkgmjZ^&p+lPJz&T^ao*sQOa5 qFlz7?tE82OG0Qa`Mw(eJb1s}}r;gPgc^Iidl26mYpjObMCgcNwbcKij literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/hybrid.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/hybrid.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..4305c8156b53df5c058ac6fd294a9bebfc7cda16 GIT binary patch literal 358 zcmV-s0h#_EiwFP!000006Lpg7Zo)7Og<l1UzYA))w55BP$w}OjkxQ4jV;$n%r$G`5 z)BeS$KA(@Rt`7P=oH>YN@7-u+yDVkdt;<*8wDav!>_j7~%j&mn5eBer8&IPl<?PE< zoe2+|O}*jU^1;cB`(}UakLte+X2Iai!$^_FbBx#(qN=yCNjPKBQtUHGFnca;&m&GJ z=VkKOMcp(-^h?xu5685!$NVJppkrl6!_mhgOolt1c%q8;Vj!iO!K4!eeJnio_%$TJ zb$jO-5cy|q2slcYRPxI9X%ydaSv6@Ikym`AbR^*<KC@Kbny>d;&ZCu&T4Op|JkPV0 za&&?mpebR^F;c?FLxK>RK?C93mZVSc3b;<;Qkj{+k=Hqy()6a%2|q@c_Y3pi=$=z( z2qBG}hK!ZC-|V`GMKc^AsBrF_B^GGX*eU|8MB0VCv;FP!2~~ffwl0dx4?#16BQFC0 E0Mh!jZU6uP literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/idea.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/idea.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..fa436e703d88e8e425690341927b7162adb65528 GIT binary patch literal 255 zcmV<b0093RHv<4fg*l}ef>VWbNJn@cZbl8uC;<8W_ge#t11s;=pzQDtXqsCi2<D?O z(6+U1r=K9-c<tC9Uq)Qk7K7PeY3d#qAE(ofoL_v|l_s_eH<*DA5~0ttgc(`wLou$Z zpX8TvjuTGO&6dcy^>kA64X=Y;sZ1_NylNXg0ucp(ZHw2`%iW}Gy|LD5kths=mG`;_ zxp3dv{^1-EUeMG;AV2MB@LGL>sc%R1;U^qQ`~~(8m}})Aw{`4r%b=o1iM$t2{-yyG zn$lhuN#AY)3NukPYF6%uqgt0mFw3$4IT_j%vq_E+6TtLZF+wY3CIzd_p?7^>LPzA) FFLDJtcu4>N literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/idea.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/idea.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..88118b6d424a5fc6e221dbc9c44859deba8000a7 GIT binary patch literal 340 zcmV-a0jvHWiwFP!000006O~fIasnX?{TQ!Zhl8V?-LDA{kQ%^3P<I^vy|We8x~+!} z7ZP6blJ{8e=_6lNq?r1Z5Mq#^4mQOSbiXpj+}0DI%SC2>yWiO{;nl>z-5H(TbH5Q{ zc(kY`DteEh6@8Y-Sb1#1army!JQDVfft;#k9vLbwk~?8dGuZ3T(a=n%J|1v9$D}J2 zImQH3qW~W3HKSq|!yFMRj;T`wIWLn=FEb3b2{0a?_utL?2RMy&C}2)b7H;h1!lBJn zyu?(4gcdKy7yVX3v?c#hznM+QoLsOE-7yRcq6(CS2%A|ZCSM4e0;89aUi}d*P@{fn zr;ci}j`6~sMimoG7W5@(Oyt6BFZv?^V|Rk&KvEN}g^hi?6}W?@u-0zs_Vh6%Aj*c& mNcan3jCz;4BG4cAkX^p(_s0U6Qw(-#&+QA4?B{ei0{{SBft<Pk literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/ir-black.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/ir-black.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..47163955c6eaf5b4a9c84ef6a5307b5fcbc46885 GIT binary patch literal 232 zcmV<E02luoV*()LU|ub(60My_KJ1@UDa$rs0Ka?IUFLXR@KiH|I+oV9C4<)b^cc)i zRL?$p_~$o6x4WQo!a;}(THfV<TkRQJxrAVN2gH7@zg$B>FI>oZCDK(%+_joF?*OBQ z9~2|1oKWTb_wy<D(lU!sRmGgJJ8hAuQ}Sxr<>dKEAVRSwlwKYlD+O~=Fo;4D#TxT! z6O(7zD5Rn=k8gM;TM=at;y|%Ke-|-}HRjOMnsgu}AVXt(8xOWv;-q{*Ib|xpEQ9Ej iU}UF>UnI&rZi;V8CF!xL+XIG{{$4cZ!?|-Q!tf8)ziz7l literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/ir-black.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/ir-black.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..56092df640c10fd4cdc189a63994199ba16585a8 GIT binary patch literal 295 zcmV+?0oeW@iwFP!000006J?RzZo?o9g&$_OONCY~ZL_B_U{Y4V8JKlZ)pwtw;<W3; zjekBL9h=QDe3pv_a~d<%WQP}})Q6!!d3bUA<y|)m(;12p6TjZFhzu?Ks>FC{BRjLa zHgdxGOxZRrLBtjo3}~2g$1t`M!zdbu-e`wS1DLbdmH&-;E4*{g>0WqiJ$p*e_@eV% zn+jG-QswN^>H+r7^{Q!>stZfU0y@~XPVni}<};4?GYN$Uqx!c-Su*!U3z`Ri>^aD4 zJWuN#|Lmk|2q>2io-soZwK-~%gfUJ57`t!C9`q_Ksfe52ysrng81TVRs!?OU+t_WL tZ6wC&2*sC+qr_d|IpE+Kf|vg;oGFdB_8I+n<YA}O^%s(_XMSV?002e4jnx1E literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/isbl-editor-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/isbl-editor-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..1eb7b506705860673a2b86f67d2510d8c1613197 GIT binary patch literal 295 zcmV+?0oeW<h64a(*_f$bDrWmzKnHjAzb*wiI`RdOU*6T0bfNXMHXe?(qB{40T%s{- zxKRp^3B)V5+HI~F4CY20po!Z>^jD3@(|`1OFW1{wC!v5qUKV=~mpve8ri<n9lUif( zmt}po)sFR+M}f{48fX7WajB31fNS0!c^Bv{4-c2D1JHWmv5*4624A{pe|HAB!!fQ& zfYZP{T4<L$c41D}o&xwC+D2mBavX_1nt!_Bz}G1;bPLO^(-rUSn1px>&4bE%q6mH% zsHy|UTx;VR0&g3<1!%1TEQY;a*d9;gv>uyHLxa~sFoKXiR1umnael=bnC7T!wQjsb tT^RxkS_I{<L6(YO#4*Y?D1VgQO90`~33&|D07}P{eA1WrGQbahTL>XDictUn literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/isbl-editor-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/isbl-editor-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..2a6bc115e50c801bfa249f10ff5c2c48a6d862e9 GIT binary patch literal 361 zcmV-v0hazBiwFP!000006LnJUPQx$^d=;eqrBllaC7r~ppnSMpSUyVPFsg}nN7<6n zmQ9u-*>~}sEpHF%!=D-D$KKgsM7ycW7<+D&b?v4rWBhC*?eX#!J}{5x8+gI3)?g-# zJ;&I0)?ndrRM1MKO7g^}h)%MAkopSCk@hJ$!g#Vyq)Y?Shg*Q5I)C?|fTMK<(thdg z>fi*jKVaLG*{w$>%|s;)>q?Oz0SZuBlU0Id;8OA#EdJBvih92;%Ip$B4~im0Yq>NI zaC3)Bnq%TP=;3=<ca3XX*9H$k*jybovuZ8<MV+KfW#>7~9^i?;keB3v1*z~|=JAz8 za8xZfb!Vwm2szsv3rYc|gj+G`?MSnmKJmD{jBp^LzSrIZpLIuxe-ntVZYoH;3-Y#{ zCKF#P#(^vZ>PaA8S|(OqQxP%)(g`jPrxt{;F0nul2kNCi-#dDb&YJ!T&!+nY;DET_ HhXVir1RbnT literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/isbl-editor-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/isbl-editor-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..912f91d049faa5f7f39c1b5f626b4bbc13f92ab3 GIT binary patch literal 281 zcmV+!0p|W2Wdi_Y*<1^+z)e~~2RGTptlCr<j0TOAD0_Fi(Bq=q%e4EnCNsXf4CbaS z6<c_RM2xwdE~SV+tnS+l17-0NL)yR4c)IOs!&e0an5*=)vVK7|8&(a<zR|_~@5mjI z1!mGH-Hy=#X?X>TQKh(x+YtXdtrVqeTjZDjN#0hAKQ`efbTbBez-AgNHh>^dzPJ`O zfUaU_+DL%+sCUAw2zJ5|6dJXHgKMr<5p(6iyuog!Z0vGvldrfaDr0m9AudX&DR2BQ z=ek?QX&pS-vGH&MJS5>24W@CK$A%rXPi8jM;kpNH;Q<?TA+svdMsmj;oJ9oLCkg1q fDs!RD!?G-S7b8sQC8jKuJvic?^)lW1@6p#i#07_# literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/isbl-editor-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/isbl-editor-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..e7a3d4fd55e19bff2bb57f7dbc7c820b667ff3fe GIT binary patch literal 346 zcmV-g0j2&QiwFP!000006LnJCZo)7O{gp|)j)@K!YLWIUlan|l!%e!xfmLY#K6NB* zDdX{6VjnwxInZag2$09xyJ%Il&|2@MBj>BdYPI@#=?%*eMc~UFEnU-~9fa+6yVuV0 zGH^#&83r;kS%KLb5gDJaSUJg1Cve2>?7T{-L58RQ1Pe`m9*|J7^Gk+$lIz<3jHW(t zwHxEJH#Yk$oVvs-BxK`kt{)qLK7p_3_^z8I2w_f|oR6_-2^jlOnd(}+-y0cwOa_lN zez)_I{kG;@8!#%D*{%_e=6z4#4G7AyGaUX0i*Y9+8sZO=XD7qxfhIe8uuD+NOm-$B z5pn|3siE1r+^xq$AqXKWZ@Q3=zY67~IvXD2Yw;=v-=Fe+J4!M#0^L;K46pjr%H;~Z sE6Q>rq?@}rmc>SurO?TRO?!Y~!sXGG2lmd^S9vnpFHz0u3uXfV0Pr5A3jhEB literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/kimbie-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/kimbie-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..061c8693bef402610c722b793fcf4ea3c1000e85 GIT binary patch literal 220 zcmV<203-h!IRYSL*tR#kRKFt_6(*fh0AKKH@4hZcx0S{MUEa46*5=xDZrb`nM08wy zdiX<C*Q^jcBgSYT1xwBu4~0>`We4B41&V}c|DIMQA!L4;EyMs>x-EH`U(*C&<G4UX zvihOU*1UyMkl1^e5?oS^#$r=$rAe60aXpwnv%Jf<dh9V#Ea^sXd;ljNpfg3D$itjM z+rXKyon%)yZXh3l72?J*#wH?2iis;`7M^7brGvs6rB(hvz25Wkmk6Q3TcQM~Qbg+a WLjmdUuHHgdr#7JE=dC7(CgcYm)oDTi literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/kimbie-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/kimbie-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..5fe8901f208dbcfd543daaa2440635f5522156ad GIT binary patch literal 290 zcmV+-0p0!|iwFP!000006J1czZo?o9{FuHjRoZlEl6}l%z)8Fs$iS?Ns{Z>l6|!n? zcjkOPZa?!!yeZI^Dfr~fusa?PP>*lgvk$}0G%$AUeg7+~w6_+Wygb-v@`AUbYZZXW zI*S5X<iKKv0Vn)kGKt8j#fM5W#Q1+mCQk&Wg3vAug4GuU0>#C(&@G5=`qwT8QHfaI z$z`oUMj>A)le=tCFaVd($tnz)ED*q!gt9K%rSaTDbIg~(7<#f+i5W{#Q3AR0kGNXp zxp;J4uTGFX#^m&q#|77`52cB%8-b~8_g#B#%QlDvQb|fN5ueS3<gcT#Zcoi2@1b30 oh!k(5cTz=J83z(z(peBCcsD(suSnA@!?~{SKV-ACFggMN05_(HyZ`_I literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/kimbie-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/kimbie-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..39eda8224dc1423cd9922ed63cd8ff82182ec7b8 GIT binary patch literal 222 zcmV<403rVyIRYSLa9%8vTfrgteW%d?Mli8)pKX8BEmYd`Qax*DcsAFjbJNxrBBJBs z)5E{0>YDYnT9Z7<1WT?)D9W?nvV!kh0)@e|dQTRmjv|#6ZBYm4q{ot%`87=oSUWBd zk)Xb*v(<006cBq2Q{pZ`gIHLWax0C&toQX`{?76)-|DgJL^;WC^yUtWlN*-Kq<Mme zu|nI(8Q4zP70xwFKC-NU8)l46L_~_oRm>1P8WlK5tWjEp|I_<>KK=|LeDE<*f>RWc Y{QXcY>0hqiVpk{BQu61mCW|KI2mk4A=Kufz literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/kimbie-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/kimbie-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..7e48b60aa66621d9f279d416e2ac23496c1a5f39 GIT binary patch literal 292 zcmV+<0o(o`iwFP!000006J1g5Zo?o9e3<@Ss&+~9wTGDuI4P@v49vPH>bp-<aaZl1 z&pw}zV}GWPv?<V+Ifm@bxSJFz)4b_GA&$GgX^*wJ?SE;N4$h(Hmpl5*fpIH5ICaqI z!gI(_NFE%PGUANiO92T9HHTPff|UL@ttlObSt@i30b}(A(SjmT6(~lGu7^`!jHqmh z->olPgM@5@K(hYwC>bM=n9fdNEMS2MP8{;OJT6V$0QGCR1jg7WX_bjkf=V2%mv^Mq zsX(I9_k(JnXiVAbCyfiP*AOL%M>Y(zY!7|gwXzM&(W=Z6Ou}a|w)~gTbZDFUSoY8@ qXGk_}Q}A3RUI|CbKvsS;aSVRGkFRLwGmqWjaQgvtGs46=0ssJDB8Zp( literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/lightfair.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/lightfair.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..3e1cecb8b76e007309e2209b88be171d2b4cc89c GIT binary patch literal 264 zcmV+j0r&nJ>;fQUbxzsGj}Gj_pz8s^s_7CXV&n^9a<`k(>BTX)AI~XDGZKw%LwE=4 z@WVl~^tuAL$EvPbU(}{Sz0C&%#jlf7J5<~VSNkvYoqF6f;Z~b2wU%*`R)mNpN|MC> zt&9n#c7z5Vo5d9|^T6p-$G~X<`s3or1@Mot5WkTbcDQaq8VsC*4Rbb0mig4ReT5W= zkqr~+_@1KX1YQyq0n&^nnKD$L$Uh;*6~_IwV2Rh{okZ0Xd((=$9Z3;sdQFVuri5<& z7>GpV#(Bd<cim3p88E;Fk4y0SC2PsC>u@{PFj^Ci7eWLPvz>&PicVnD)D+zJG}i)g OKdU$0)lhU5*-!wG#DdWP literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/lightfair.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/lightfair.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..cc258beecda2a318fdf6ea792af529fb732fec41 GIT binary patch literal 325 zcmV-L0lNMliwFP!000006K#^)Zo)7OhF@h8w}3k6N+}OBIf+{`oTN+Kv1;18PaQF! z!d>j&jz1sPNBT%VI#7tsqAbgU0)6UY7`$l~ZQK5?r+}3QhZ0r1!WOn!aLBN{JQ+F( z+12~3>);%E7NM@|EC6$~YGBOSCTNB(8z&skA)4i_#>+EdqRP*NgqlPAr)Y!c)fsJf z<YreCxuQWrw!usC;1tGed=7yhzS0CK&7D??Cyv$&Fr(`U7^m{$8vE<W%1vFhW#&kz z?=aXh&EgKv`N{fIPKwy!cRxp)MmqQP2?rCzJ319;j{F7Df+A^OOkq;GDyka;V+0bd z+9<8GY}6Qg*O(eC@w>g5M9A6D!Ce2}yy;3;cjuH>eVOldGG@P5a*gQvBP5$Hi%vWe XHkN^`pd^mLKi<I~IsnE(?E(M*_;Q?S literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/lioshi.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/lioshi.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..8524f9e76864423089a50eaaf156edf4ce6d38d4 GIT binary patch literal 245 zcmV<R01E#bcmg0~a9*lMo%mKj{QS9WK`{I{0C~B}%d{w70G;UBwq$!WgTX$UL|&(# zJ^Djc*Q^jMd`_CM<UN(CN!9O}!g$knxH8$z7osc8m+(|)=8)xGo-YZoz>-<}TJkc# zriUP0jtj(S)ZW&athcySB$^Cv5)X+bd!xvdAcT{!UW}gZ#+|^iZhNwBj%Pcx0yL4C zzp~tNS@iLr<l^8fNUF4uRNzmJjANa$g>|B-0_n*lQ$t{c3oKk(M^XFP;>k>IMUq_m ve2d)&FOo+0*U*?HIZ;`IH%TfoD>W#3^Nez)6VzMW)#)FWI}VD`K@;)=(FlCm literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/lioshi.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/lioshi.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..8656cb08876afe37e54875aaea4b32c5f6fa1e06 GIT binary patch literal 308 zcmV-40n7d$iwFP!000006J1czZo)7O{FO<(uBcm~l<s3DCvi)LlXQtQRw4d<Ld2z- z{9^m;^ZB+X`bt*?`aH&vz3DeieUA?vD8zoF_qx;VZF?W9bZ`zmUklcmdlc+D2S!0u zqYtJlh(SWO!M{FA4-QKjam3%L6bT76hgfNXl>RrZDIJDUGISFGWAy{kf+As+QpD(1 z^s8)%KdmSs%NT(~S9S`c+|4TSi;VfRoSdhH*5I+(4}}?+qgDCoz)<V<uoKi6yK+Ef zBIHs`5Wy|)a<qP2T-+<uii>MkhV1o<?~L;$L@{WwjN!?I$DLAz$sxlsyXIlbPuIFP zcvo0f((F{A<#VNX=2#$f(+QGI*CBYW63>LaWgx3%mt*kb1HPagPuw5s`t}DJB22A$ G0ssKkTa?29 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/magula.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/magula.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..15ab6608f8b6fd97855a594caf5831b5bed04efb GIT binary patch literal 212 zcmV;_04x6+F9Lv^2X;(tsIjA9Um<H-#iAygEyy?cpeXJf9Bkg;m?ccjO~dq+-Gu*t zZ}f3tHo*Yo@837*Op+*xENfulPJm_GY^ewe+B78kJ9Cx);rg1Q^0sfc;3jL9->rOE zsM}(?8MP5&sxqX}g9r<ROqYALOl^q<?eBxKR=w5~>`)5(GRmHlMX$-;&;l#U;-TTc z?khSd$5^od!mz=FRC?iXj^j~J`B(xZ(}|_w7Sd`az{@}am`>mQ0UrHTn&L)SmS4nC OqJmZo!V5bMASVI=9cuXi literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/magula.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/magula.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..0d3efdacb460a7b5685dc44484cd3f0734c79114 GIT binary patch literal 264 zcmV+j0r&nNiwFP!000006J=4+Zi6rk{FuFtiib^1>|-V;ajAzBv&3nOQ2%{GO8|As zi_bZo&*#&HztdvCjzg3jTw{eL_AlqR^?er9w(aAzGMki5(&b+poFgR(uLY_`GFh=; zlbKNqNE#^&70liU7og}T2E|5Ucy3)G5*V(EO1jncYqRxUZCUXiLmm8+MK@B{b%n$f z#=>Ayj8N@_><z{OA`W<;>hyWqgg&+q95Nn4@TjmSg@t4?v3^k{IkEe)BhEL8u8s#^ zH%w>`!U-9zN<7B2S8FiKS%Nk<q~W4{*S6)30j_hgfquF`qV&g1Iy3g9z+~&8HA)zs Og&w~)Xw(`o0ssJp8hAbc literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/mono-blue.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/mono-blue.min.css.br new file mode 100644 index 00000000..33d64839 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/mono-blue.min.css.br @@ -0,0 +1 @@ +$`dض7T[Z2ąnnA7$|2~3DPSÂ)l?, f @. #!4?6Wۙ,8%{SCqPwMSbSLmmt&WgP) D_g]o.Q >%/kb_RÊ,oPN:!BJCO5Nϟ]~ \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/mono-blue.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/mono-blue.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..71adc0757ba00607a93044fbe516f6bdbec65df2 GIT binary patch literal 267 zcmV+m0rdVKiwFP!000006NQn{Zo?o9ML(vmOGVU5O|p-f3~>`L1~M@1qNx8qZH2Vj z9`<$*VEJ6JANf758q72VpIqPV5D?FYSL4}-Zl_e;9^khBepdC~2n;WGm~grJ&}VXB zF~^8T$h(agjrdSKCZh!J3J3|~diGALE7CAZcTy_vGu~QsvSydlp{d(C-$CEg(;A(K z<&6q52?pT5av#adKca>q#@~ljibe_akl#A})F^qGu{bMrY(N)hkw7|a0y;6HWayFc zNr%ZzIa(CRG2noob5Th;mg%@y?Mq)lJ2MDY7YGD;6DwHcj;5(io8{2XBSeb#zlgFh Rb|k=LZeLBT*19DE005Y;dc*(# literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/monokai-sublime.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/monokai-sublime.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..495f3576c2f8d25f4c8dedd20c682517a658878b GIT binary patch literal 261 zcmV+g0s8(M=K?_Fa9gRq)R_RS_zic6YEwl~3I_^=$Ljyvqm{@eGrsG`#v!Acii=KN zG|0lkht35G_;~Dx6iqcFaQhchDDH}6avpEQJMj|FYcem$`ntsVty+?t5{^m|d$AYm z#%Zv@45Qd{4H1_in?dMqf*g)v?HD}noCyvFQbe+}?I)ZD)IwFP6dMo%aNlX8XO^*0 zWrBtIIw+U8DbsO?m&J3weGHScC6`=4BVQQ1{PUelYRXR;llkBzs{DsT+R+KOA(J16 z8Pu-zY|*WUC4_|M-d!y-{xi(5W_>Y)C8kzlj~fg%edy^kbu<GeORS>vpw|o<aQoQ8 L62Et9wdERK$5wux literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/monokai-sublime.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/monokai-sublime.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..6ea8125543b83386fcbe16370c3899f5a6d63c5d GIT binary patch literal 328 zcmV-O0k{4iiwFP!000006K#^wZo)7OMSo=yuPcHK+R}XtavHZ}I7yc{V-@1xCq|PM z#+x0VT;1zrd7zJQme3x1@1j-BLcEF1x_fUOIo~Y0x~n^JSzfUsL>c(?Rx|YHXAGL* z06~Wd3+$cEB-BttB4s4PBuCmFbIIs|rp`tq(NE21bc|E&vB&QrD`UOxx=FcpDp3Jj z*3RaRux00qmLMdHteG(DlqdvV?#y@2a&bc4AGoPjtB0Vsao~}#(F~;92>|Bg`-tPo zd6go8!AC>$b?!u2iJ6F&F{cirk&Y5tmTHGN^)=JWEYoyl01xIa?D7}gKYc$?O3yYX zqbA<#e+!(2%V#<T%qK&@sNCOI(6&!L&<q5O#TR%DGMnXbNM)KNn^-DYZSoTvgEsvh ag@iNH1{u<=YFn+hc=-Xr-XhcJ0ssIbEt}T> literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/monokai.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/monokai.min.css.br new file mode 100644 index 00000000..447515d6 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/monokai.min.css.br @@ -0,0 +1 @@ +@Ĺ喝2GnREƢ 1mY- ٣*m=aI\oE7 yb4ŌuY6B;%lC}K셱bQ%C<Dk}lDz؉t㈓@EF3.ZV=X4ר9u'I;*By $/@LhcX #uYZ$m*Zf|H;ji$Zm \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/monokai.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/monokai.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..0cd191e4927b3690ba29f0e8dbd80308e08a6fae GIT binary patch literal 304 zcmV-00nh#)iwFP!000006Ma(cZo)7Oe3eQ3T@i~!JJ`dZe7GgUiMzxdt18}oVvAdZ z*#6zw&e?a$`iSp>NTHL_>7@m1@+hQg4=!(thQfyR5G>)d|KkCHMTx&@&{Bg+(2p zzzhhMDOIdHDRH7GgmpI+?RKZ?MiqHW4x~}nZU=2?Xy)Y2z_I{+JQbLrgRfq;jKL6! zglU_dGa})fXHT(An!zI<{6Z0d3xUudb@q97V{abL-mW*@*ZK^Dqs6kHE$6{x(Ps!f zYKEJ5=F+E5UK<pn?0LasFHok$sjfjOkQ7np{Pf`c6|aA~hdKUMBDNF)L^;s`!j0(w ztPA`Yi08e{wt3mgUPpE@^xseUBTz5X55CWR4pU2!t26lS$opoqxqJhlK<zuk0ssKw C2$y{T literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/night-owl.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/night-owl.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..da383e29f86f35bec65ee459dc7f2d6f0918b81b GIT binary patch literal 358 zcmV-s0h#_ARt12>mNKWcvRa&En|g$Yy8HEOYe=IJ(#4BQ4GfVc_V>R{HzbAxrC2`k zghisubFIyk>QmnUhg|(~b~0P-HrMgbj-B@<kc*6?K(+tLtZ4vSU)&3!7L->js1_N6 zPu*KWt)v|-)`wO#26~~c{&7v!z-)$)8Q5?Vvs@|haHN`4rAWy|m-;%9EKHi%6*5Fc zQiXFyU{r#bLR7Y;w}i^1HZY{u4wHGaDGOz;gg{uC98rJ*Szj2XT@dZc5{XF7FL9I` zFFVS#k5xAolo82+3-}}psNpo#NU{6wzbxb8OUP~bcDo>SSWC~QlP(ES?Ba|Xi3$7w z1kEzAfgI5x5^os6z(MT>j_f=n=Rl`3myYG0J8X+lOJkMU#04sA<XY`rXOeX2n3$DV zq7V$$sO1<bIyipt_y&_QRNCa(U!1Ob$5EHaVIse<xDxocI^Iq$+j?eu9u9_@)N;(O EIhQA`e*gdg literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/night-owl.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/night-owl.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..fc466cbae42b58c4996b7cf449547ffaf3a010e2 GIT binary patch literal 440 zcmV;p0Z0BHiwFP!000006OEJIZrd;ng<oYrZ`Z<!W6Mq-W}ql4(V`zuqSpn*-hBva z$xdK*z4doUQ-_ByXZtg~OTf!1hS96zQ?=W*d-00FhIo8Zts;_tUv9GJ3titrRPPf* z(eDXfb@2S0_-g5B7_7lbEk|Sdhw)hsO37Ai%K17_mUeppttVg&Qv{ot)=ei46Z4~! z6blj^wz*%V6a5)7Y7hkFs>IRwQ$~b%=u}3dOq_|T5Br)jxjGr_>V#+^rFlM-U3N^5 z9@zxHTE>QLd9p%<ux;i55nTC)&`KiYzX#{Ym!aEQ2(fLm3dnF;ZRChyb<i95wi<yg z*=G*ZgClZRI(TsOeKKcbNMMeez{rv35LGBKulzSe19G<eBa9`f*3!K7UN<UFi$Se7 zBsZKPne@eDNF2j#$nq54$ehl66jhZo6QUa}+&3<_;4gE~y0*{Y*BIuPx4o$PZhIE8 zgdF11W3Ah|tse!ZELwv))YT)u3;uuZJLRI=qNXL6Z$qL{g)e%^<OT~&%lYqIDuPe9 i4oaD25<j5U+owa8mIb7nx~ckVrQjb&GH4=K1poj~<J6A; literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nnfx-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nnfx-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..d7040787a325573d1e7182e3ad388e7c8e06f676 GIT binary patch literal 305 zcmV-10nYv#8w3DE!?~1wu<Hn&C}vFOf2}PY5D8^VA!btg@)nhJiD;4OyNFq(GMHWl zStj<_hqml`crCu{x^FiOO8+1`{;(_9qHT5${YT|bY``w9#vB8Cis;u$T(_v>@$~1- zF8fCJ6pu48p@8PBzz$oCR86L1h9>0Ac<EB3H3U(f)Qn8zr`-2d$T?t@^nFb%w6SiG z$>kFk3R52o+9ud*MZ$^-_iRNmOrtb#vYg&RCQa~TfzcCf&1NrnVcVF{<vqxyg_N}= z3cPyvGs9zDuqW1df~CGLdfTD4-S)PuI)>^NC-QO7`8|gidj|lov|#b^#W2Yd!DI}2 z7@cM0)7eB;ovJ}`JDpMBbvEp5O#W%!aG2>KV7z#vbHAO12!snWX`p3M8HDH9MCK5l Dd1jfs literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nnfx-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nnfx-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..9c8bf7f58daafcdcd520713063b5328ccc40f36d GIT binary patch literal 379 zcmV->0fhb^iwFP!000006LnMVu7WTOeH9b`0x{8Oz=ttqE4XX7akuU&A-?;Ky5R@- zkGAKur-!aM(vKf%5U1AJU}Uviuh)BF$+~LUG|jajFl~Sq^NXfMaf9a?8M1GM+_O`r z9U5ymKci}oT<un?{XO>F6IP0Wlt@#yWpjPdh1D7jXOHMNSjOQitrXixtAipwC=+=n z?9bN87#YwwL<;O6Qh?dL0zSk>)XXNEu_&y>*n*TfWlskduk17>=o-^Vhb>;Z>}^Pt zSPLAtBEsZ_?{#e{28_BRV9fu(DX1yQV8!EiDy6=1GwLSrelca-zl(eIkWzg&v1YV? zE2dsH!3b8?%(VBR_Guf2_HAgQ9fsG#dvvr;2ZEOi%_9a8r#F=(NvUoPXK1@}7eNvU zzkozpM$qklCRNWv^?28tRzpI;);+BKOsaH=W2W;Mr2Wh?OyA7R;I|&r*O7L!;%TyH ZXQvM`B2jlo@XF7$`UluP!c80m006Wtw}b!y literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nnfx-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nnfx-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..362dbe2a19bc3d7e9d9244d15d1d82d576d27760 GIT binary patch literal 309 zcmV-50m}Xx8w3EvXmhFVIxw>q(4UA{{eG*6CcGp<Xeayd#wU>&l0~vhQm+h}b47`U z=-_f6&?_+d#j37ZF<=%qF~s_rX@y>WXSw`|_Shs*W+>PrFa1if<K!~#Ph(bZva5AV z!5~o_LIKT?gA+F0>l$-nhoLF*dbo6{Q3*kmecfV-lU&MeTa4OvSS>q^#uk_}Z%`@a zLj;8pD}w3-dlkejC~-}uA&e~G6y>hNb_<!bAdfjpPv{Eu_TWS8SP?k92X*k`l4ce; zE?$36@E`?yB0t3wEbY`pecjc%#a@+V!*CtqNVpxH-xFTO?g79n^~B=SsaOh(d&HoF zp}$Zjr|4PCi&CAc7@qk%qrlr%v9>n#r)kA*#+QKUh&N_Q=QvZnAZ(aX11*b6H$2BC HGU3G&z|NGR literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nnfx-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nnfx-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..82085751b14f6f90b009321ee7410a8390fb940a GIT binary patch literal 379 zcmV->0fhb^iwFP!000006LnMDZo)7O{S_o$X;p0q82cEMv`)!zk}h!uRmHzgl(;}! z-r~!#k5BCUh(Do|qCC~!MO*EcN~!PCq4WD?Q54r4g{`BgA-fn{<hS(90EyMRKo-br zTX)J?%FdwcBki|E@!i{jT7<nOfx6@_>z%yb;iWSMEUoU=Z*&CRTUfCz5==&obkH{8 zPSBp6uaaejfi6LI#V$bvk$+AYkxf}MldOke=_*JiP}|e$p}^u9&0V6Az%4!0aA{UA zO$N!;Fcl)O7NIrLVKN9zgMuLY6J866OoKEHZw_%?wH|n*2w^cr^zXcn9@y136KPof z&F9xtOBHQN+S!@%A<Dqhkf>jpGVJhBf!QkOO+@jup;^iSfay*#rK-}mf-^7)yloXA zyh&1$lWzaXtUfk8a)6#Mj|K=OIe(XS?9{x8gQp1)D>wF%nBL6fLPj;F*TJ*7@*#2{ Z@1_TtGQl)Q5p<X-^$+*wOidgF000_KwxIw3 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nord.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nord.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..f32ecb5afac974159e1af0caafc751f590afb51b GIT binary patch literal 585 zcmV-P0=E4d?Ft~|Qm50J5=$n?wDz84<bePF-suR^e2m5j;t4{&abQ~%mf#6$taDjI zjWyZ|Qyn9%dkV_MknaDR-@Gm-2=bmRu^mU<%c9@=+@EQ|X}(fBmjf0F@7v)2rAz<J zkl6$nXwamS1<xKBB*fq5&-ImZ(MZ);*R(ne^E}P~NU(f=K#Cjrb3e(#of){><@!45 z-!VgY*Pi{YLv`VHQortppU*6{WJ3KN`ZI6k=}t}k7cJI`hIF8$fPfc#P*5H_-=kU4 z`n{^R7OUIVG58Ph?A9=xcfFw+N*(9~0_-tLCVTG?Bn;4`smlR2N<cbf4ua7e&QSbw zJ|5!|)Nzdv)##O@I)4(;e{n!CR&n^!q;K~ty|scHS?_+$N0q47T5A=?4u@RN1FJc_ z_|M$Y3|VYfjm+?UtNql!aPsR)pn>{2^$blzlv$zWeWP?sA{jC^%47y2%^QQ}HNX(f zQ~?61{PPcBYfb}*Sh+nirJD0q#&79?a;Y003^5>6W&fLzm!j=Xf+MRw_#Zk($`c8& zd&Da6ed{W5k<~1P4zvl5%c$<kWt0<DNX^8$UZB@P-2lW1)c2<}V3Chunp%K0$v^`0 zHW$VOBWr(Pg7I0hda9%SnvGqz9#LdPZ8yJ1PaL8@Pknm(i2vjqcHz>=C9Gh&rkabx z$#pUHtF_b%z@eUr+gD|caC)uHigr(J=75b%jK<QNFe;uZHpHp>L{Tm<@0sSKUhGfa X3N!ch@@vsdyTy;qLH{EUXlg<MToNpP literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nord.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/nord.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..9ff5a782ac96ffa424a739a4c74bb0ca48787a5c GIT binary patch literal 684 zcmV;d0#p4TiwFP!000006O~r&Zlf>|e3eN3(@IdmHBAU7-K(6|_ClN*+x15p6!qOt zX@LMSsqYU$+S&E&?5yE=FAnxhfWFm6dCAI$U-+_KXP?iPK=SoWttZx<sS?VR53FE_ zyYF~vQ6P27qz>vHP~?!)d=B7jh*yLX^1D*fr60)ay(_m_Hpf!|)=pFA5OB@}5!xt? z#<fGRpc%V4L0j}p1u?)FcU;MlFzGkW)C3;$%}bK+vLs(;$@A+|m&8!uy`){9?6ygs zZALl7bK(AS*$M4hjlqtV)u_CrU#Eup=!1W{^4tkbM(+_N-mv{phILtjJ2W7AU$hNT zA~<*H8-l}h$htsaUC3aKC*6mTP*Mz|b%x8qNbo|ipr0eY;c0_`#s=+4yb$Pu1gT=- za@goSSZ>c>2DPpgSaJt~_e?5f8ZRL1O=py>&tY#1F5k+%I-)r{Jh_x1RR%7~mtHb7 zf=le6?_Rlq-kQE{HZbsR8k8;=V~URVa7?U02g&tyH5qQ7@rp$beVZfLov|$L;3dF` zzjiShjD!Xk?u%tBF5NLlFdT>opX9L70vtx7MrZVD2#~dh8dD&$S}k<f6Agi<YtkG3 ziqt^&7+-h{pUc(Bas?aaxm2s^ZL?h4YNYP4x;kJ`D=W6!0Caq_ES9~eTj!YpONBak z)Au*=$-L|o`h&_;y~nCRwO;+O1GluTjV?bxXX|&PG2>Mgn8nTE_&);I!ird`wNdKW zjwqB;xyQ2N#=4a5xnNI=<o9sG7$Y6v2r)RpczlzBTODH|;UQLwMk#5j;o8M!$ePPj z^j?qAv$ejtiF6gqK^sNUS}yC@47=#ho7?5`arDvP4_@`s-5vCiH+Q*y|2a-S%tLYu SP4Di&A^!k0?x^SP3IG60Xj`BF literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/obsidian.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/obsidian.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..0ceceb6440dc50ed2a07ad00878783c96ba3f750 GIT binary patch literal 275 zcmV+u0qp)89|J&Saa%0tMO!$sAtL_MsT2-T@B_$tmu!pWEI^C1+gf!ju2pp|9HJha zz+ki%JqU3SR9&;aqWzB%5@dGCpi30V2>ynJKZSEI@BWPzC;>mm#jl~vZ)xdcplL1z z?NCR9N>UU#5VE}HjGG9dvMgeP&CO`R60gaQ0M(Ll*>r*`!nuqUfiSHT;q}VZ1#Q>i z7BRsrFxyM`WUz~+qiMw*#?$ZF+GDe&Wx%6Yy&yWI`kpdKKt@!aWhtn}EvoonNidfp zicGb3d;@mKhfEUZAc_@g;qZxuVMNkMkqkVHIiMYSnNn$@Uz1Jc0Sm|5t=^cqc;9iA Z1Sy|ciStGe^AS9oSr#-b95~s{mHyI6f<^!U literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/obsidian.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/obsidian.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..0b0e1d40774b46b9646077c4980e03a1a9f491f9 GIT binary patch literal 338 zcmV-Y0j>TYiwFP!000006Ma(KZo)7O{gp|)4paiPfqe|h#Vr}Rl*AcBh<~48aSIIX zE%vd`@o_xc+0S%V!G^e*Km`nzA5y4&7en@XGhv)b2AA2jY`TZjF+~0T8(D)8g)LD6 z3kpM=8vUF>(UHP>p_+P8=zMk(B0+7dG-Cx4h|$Q5KxkcaDXW57<M%}*LI>YHRq4gL zS*}Wz0~7?TR?VCb<XRgv!50ddjm51QLu&y`0IuJOWKs#eaPaKzI_h(-Pmpz>Y?g`m zP;~SH*IR+`D)l9z5z>+ro_cx`LcX|?Qt09<VKkn|(#gqSho4nVUD5hfa1K0;q`|`7 zHV!$ATjz5Q>ze4vow6bgHzO*}Bu$`$8twddEf0%Sck=f~Ln(}5u!RO6_Hu56$LSGF kx5G^{TD*?<_P0d^{aW`{G`qEJ$BS$)KM5D$93TS#0O_ck4gdfE literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/paraiso-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/paraiso-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..91e4a0ed4407c084468057dbee54724f0f547731 GIT binary patch literal 223 zcmV<503iPxDgq$n*jz2FV%~}$OkUOh|C`h}UV=aS?xS~aZHvYNUB^EaVYV$Pgo3`h z+VZ;m?BS2hyY&jea}u3{0G6Dy^x(^XW{3T4ks-&k`wq=DXPk8ipqnM>ExWx!yIo+w z>(m6h@p!@Dc<sZ|`h3enp&LCu9Xz6i+tQ#Lu5}LI9GAoNXM-KwmSZgvy+H&gh|oE3 zJmD9z?tS6@zvP7r?^@#9YqwNERowBGK$uMqBBX^bY~pJ)<%)3{q16lCdduU06xSsy ZMveM=Glb=RNK=s1zi{yL4IhVP><?u^c5?s# literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/paraiso-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/paraiso-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..207cf99aa718f457a0872dbc7e71a9de0e3a4f47 GIT binary patch literal 287 zcmV+)0pR{0iwFP!000006J3$fZo)7OML&ku6;W28?LKC5Qnz?GNtZZd72@BgiMT_1 z^L0+HZ=CI!Khn*By-YD=KlGdZSmPewY~T?44ZL>Pnfvw^t88!%y}UfsXAXk5!nH$t zY)^$_@|OZR6ey(!hoy`-;rCobLPjegR+b^9|4kZ7M_|$l-OM0ZeL*BJtgb3G6OPCF za44BfCYE>dg&mMlD5zu-jKG>SJA<)^86r51CCj|pk6mYKwFi+%CW~fCXrJtb<S*8U zwy9gaHw^Ryn#_#4;3Sc}J~}PV1XhoxHOE$GUvRmGsC!yBCorwQQy&a81xGiZAyK-G l!Aq57VeCnO$rd0<41RhXUy-J>^rzkK{sRs)t2!$J005SUfI|QP literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/paraiso-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/paraiso-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..75b97bc073c06c1eab7ca36895f23f353d93f574 GIT binary patch literal 244 zcmV<Q01N*cYyu#}K)uE#^0t(hN)H;exx@&C5}|$X^A2`f%MqfI^%JJ3Z8jD{gTC6V zJk`%0LeqZYU*P=r^LTx|^=T<RH`7-_jW9nYmcR1%KEnwfv906m#bl#Qv$Cd$RYYJs zQhzVOdj~HyhL}<%x>ed*aBn9%y!O+gKW`_6*C}s@cCNRoV+ce;{fk?a@UsMDC#^LO zSc_p@er_@2Hf%@QDh_0k2HAx0bfobONsh6W?tS*ugljXx+htab(HI$+XCU^Y1KF?# uZ{v}V5lpCEuqe(h@HA%B5Q4OIWmtELZ*JK<X;PyDdfG<u&$j^Gy%2wY4tJ{n literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/paraiso-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/paraiso-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..23cfb97a4261e376a3fd0270cd64cb30366a33f0 GIT binary patch literal 328 zcmV-O0k{4iiwFP!000006J3$fQsXcTMSq1IUI{~X(xy#6W=FP_R8+Q%txz%@{+)+f zEW?|wd~|&+=YkJj0zRMlwcY~N%&<+4#b5qV%u*DRp5z_N%yR8MCRkNY8A716Og+ZW z`=kSZS&FPFOpiF?F}RZ#mNGpK^YC}@cdYXgBPM;itG87YZ;czrJ&t|jn9`*|5fxgQ zAYv;EF8Gm~sL1G5O6M7B{oSO{Itq(b7&C)n_YQ@?vALSGOgQiR-L7SFE3y8g)YyQG zN@9{pu>f1rH99O!WGE0VmTvjmem)*uZ}y;C$gOHwD*7MxO8P(6jDF}3HWvc@0Nu)r zw&1FTl0CX^(FvQ!aB%yB-F?CBD#iBny*Y)&@I$|IFf<%vK0~E?n<Z&ibz_`JfyutP aYLT?ukFQ9}S*P*k<?{>N!rB3C0ssJegP*_v literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/pojoaque.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/pojoaque.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..0bd619709833fd6a25338139f7d0fa25455ca468 GIT binary patch literal 291 zcmV+;0o?u@=K?_FXq%}5OY?j277%m)zgtfkPL}&D@7~&R(-myI$+qJGXMNDGIu{f^ zUIdEU$_@<@y<b)p<4M}zqA*NkV#b@gwrJM`S>dba^9cdLN~k}b^*|CSL~q3UtC#9i zc6#S1A58LCu%8?d1vmN&`E}Trq(Oqyz?tsG7KzGr{ra8!6yFOtRhXj<Q5#kwi|B~n z5U26hMWF^UV#=lBPUWqe-;Y%`0!)SEw9Sx6k^o5H{Qb5a^5)iPljcjc0JZ!bjeD`( zyTInD=!!`Nu>ZzBtyfY>rnq4pkSteGaEo-JaA#yBVKK21VL$`KWk-xh-Zl(+BN!*Q pft(P#R_pSpn<74k5R*BWlKuk(;S@Ka$Gde>NaoMsbbX@$xB;a=kvaeX literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/pojoaque.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/pojoaque.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..55169d3bd59e437fe6c0dd3087df8cca58879cdc GIT binary patch literal 373 zcmV-*0gC<~iwFP!000006LnJIZt^e;e3eT4*(VKDpp=$9%;cnQ2{>_=INyfQ-hE<A z0-Cgcb$xg7oxM8JDO@!Z`@>?;dhEs*1^PUBj&3+aPfs(S7~UeTPV@Ay@;D<%6|`rf zig1)lc&--fZr!h&&(%$Dso7d|^88c1MHb9&?79~ByO)ujEQ4GK4@Q8DPD~gEBZgg~ zp7HX|en=G=K@XIwfP`AuF9oKouG*&Gv`K4VEifgti&mjeg~tg$=By*$xT4UsUEgK} z6%EO&$<sKnSRU68V~P<f4#!c|Ta}X_2%&mFWkwlH(9Q&c%m3gFs5|0@UVZal^RLUC zyBS=J@4CLObBH3|sCW-ub$z$%izy<^yCLJw>C>V>b{AF1h;XrrDJyB!sC5Y#32!Of z?`ON&jHy}H^KIex&dg9qTWIUN{*k?n1lNZXT-5t*+iVg5?R<n_!u78M3gX#KKkauk T(@_rly8iqE)1Z2C=mG!$%#pa0 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/purebasic.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/purebasic.min.css.br new file mode 100644 index 00000000..6ce50770 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/purebasic.min.css.br @@ -0,0 +1 @@ + dp^,[yɴMŊ'1fYC0 (U@+9ͤ/K :E۶bGǪ4`u61ӫ?Sj b2&W0¨Òƕ4#$:ւA:%(=:^U_&ېtjƩ+ᎠC^lR2<,C JmUjp71[E.CTl/Y*ȳ \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/purebasic.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/purebasic.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..73119fddb25c5a1a8b38c4719c7632e7fbb513ec GIT binary patch literal 291 zcmV+;0o?u{iwFP!000006Lpf&Zo?o9MSo>dUzaMXrgY0bW-?$>uLdG8>!PUtKCOi` ztGX9tuzfDRus!f+nic5d5JUE+-&kv{vFGh?;`y>RAQDSxv)4kwm#qhfHOx+7EgK<% ztL-VPBqf$<#90RpvEQ_9dzERx7+O(va1MQKi8$c*SXsE1Pspex#AZyGO<2GH1*|f$ ze9!`BNcC1noK7K{vU4c#^eC}NTzVIUu6wt^OLIaR4$|+JQFJiX5rLsbBwSCwAQC9P zxzKgzJE@i5Nh0~-=Gbd%%iCP4NM)&DgN!S0nEbIqCZ_^d$lLBk?RN#jBp88LF5J&e p=5OOabFY3vk{J9jKdwVJ9w1S=rjtyJJqa-B^AE|^nO%$m001S`hKB$E literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/qtcreator-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/qtcreator-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..e5d3137e64f399a41aa131c2d93bd0ead62fc1d7 GIT binary patch literal 249 zcmV<V00#dX+yVeZ(K%_3;Kb4a9?}2z_ST8Aa6taOZ~OQ0X<)_MI101Cvbi>knU7jM z7$SOT4<DQY-P!eZ+b@82$G}D<{6g7xwdk?5nWn0%zA2HWfN01jfEqZueUO3!bXkNF z*QBz@To$=Zp;Z$BFZe@P8GTzCnZzyO^{*pnP|uCo&>42n$l}66H5BwB0Ujh{Q`w-{ z8gSE-S>|n^VaQcA6huS}K!3a4=$dl%^Qbl8(G#vw9Rl%0*yO~dl~t9bISOIrVuhH2 zB^|lfV`XBO|7dvrnO3p$5suN|Bo}=5H?U!A3tZnVFy|oW_*-}4=*5O=oObyGxMhG1 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/qtcreator-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/qtcreator-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..237a5c764fbdad25918e767dc9f0230d11126757 GIT binary patch literal 309 zcmV-50m}X#iwFP!000006Ma(AYQr!L{FOpqmr@3S(0xpiV>#6-+nFtI3#I=)+F7Y7 zV{evxI^CVUJMnwIjFDqHYysfSz<8cgEWsYO`~Cj9y8$}%^9eHLm)|l=ieXyE1{mPA zB28gNsW>LV1YE07yunn9j}iszIpKugv(mZVRjx5w+|-T8I7&?2$dDVs?mvObFUyP< z7lU+J7RCb!FpYK6l`sm$P_buRzGAW}8N8BYY+<V&fk|77H<4EtuCEJnF<Aq7poN67 z3BH0sB#|kyUb$X*?#?&ObY+?$fmh@Ai`^Z1tgTN-1m>}97&J7nmKsl{5X+IYWD4hJ zw>NpuJ<_n&&YZE>_;?Bmt84T#gJ2tkwp3^PXn%YO?=fhc78x4@9tCuyckcQFRVv{7 H-2wmrI;D?M literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/qtcreator-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/qtcreator-light.min.css.br new file mode 100644 index 00000000..aadb68c5 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/qtcreator-light.min.css.br @@ -0,0 +1,2 @@ + dضygAMj_~_T` v;"64x~5Pcuf(CK424< yU(qew:9.sk"DaJ/f#0ck1UYhAQ͕s(gX +e[/RqjOH*(fG)f+2Qb\ 3)>4or;O5 $0$!h;ƃ\xk1 \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/qtcreator-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/qtcreator-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..1c4e11da6dad6b7880f6b315107fe4d54752eca4 GIT binary patch literal 310 zcmV-60m=R!iwFP!000006Ma!ZZUQk3{0b7+g1GcTAA_8%cX4szG;wHGsDH13cuA?$ zTRa)tGvn=%-^;}dOWv<{yWN`uf10w?IPBNsIDT)hgbjvtghJ)zUKY&~r>?EhTxCXW zBqqfS+^SfE!`zCGDvIr$al)_EW<@y9ZI+h-S8W|KdX>EK48_!@niJ!H`fP*F2`{5W z-4vY}_oTq&TjyA#SCZJcC!9Ye4<;Id4Jp{u7DWn^L341zO`I^DO<Sq1SSAm;k~02H z5L7d{s`eEii$sg$YJb)Bw^<1?1oM9T*xsmz2Av@jxPIO1E7)ma7^rjRDzP5ON~U;v z_I%a&jFCmQAgN#-<Z%#+i**c%L9tK6Ad}jk?yh>uh)WO>0!9mUK*r8NK!smDKl3K4 I4CDd;0JpJ{U;qFB literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/rainbow.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/rainbow.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..8844d25318af0f3e1c1318e0820f12909efccb0a GIT binary patch literal 270 zcmV+p0rCDD=K=u4pm{B<J_fh)yaD*1bI}Yp8-V;=W7V}U_$om9`Ki<4;ZXDuLf5WM zoR1*>v8rp<8f=^}39}|L>08fc@P5;fCL9n13mU#ho5fjr-T8Y#3_8y1O?9>DEo$JE zX9Gs`GiwIbax^Y<QzZ=aNU+#sekq;3J>RQs!za^<-Hu*HMV5I{vOn3;#2PIqaZLbe zMmk!l($L67Eb5Ga1zwm#Mvw;aV$+efaf%OuZOgsGj_LvlX%W@pj(?x|3I!}yn(Qwo z{zplAyLqRICUM<!*>%_&$l6%;*wnUKcfDGX;E$+ujt-H<z-CS0`vu>^yFwfQNNr@a UL+k#x5tJL#Q@(~wh!0*V0#9*;8~^|S literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/rainbow.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/rainbow.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..0c793a9b54ad687ae84947ec0c3f15d4171393e0 GIT binary patch literal 339 zcmV-Z0j&NXiwFP!000006NOUSZo)7O{gp|)u81-yP5Bt)ByP!Yk}h$_D#X7}KvH0v zv^QVQv3+dM_w*i564ap!esH>(tu`yM5?kfThi0ZrEwDV#FR(&+YtixR&HETU<0;`p zC2CP^Tkp7tJQ6mBfs9H_(Au!^E>RCS9(~ZsBf}Vgk{6Lsu@419mqI-DQzIpEO*dGH z;U^22f5rNUgZ8;XD@3{8q$1j@d!K+Ee)XBn!MHAyYLF;1Ne+g1XR;ax7N?f#K_(lf zX>hrgx~lUg31WPCK>Zxq<mE8ho`A9VgkV5U$SZ4pt+Pv^jF^O~>io}yk%M>L>3X&! znr_d{X0e!L5@EhJ8FxsgMTX2DWXy;-TIuQUEhFKjYfftQwp_L;+4^7yf~O}$#9FWO l^W0B*F^wGVe^-~Vl$d~M`#nSxZ+f2I@EZ#k?a$}}001%Xq(1-v literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/routeros.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/routeros.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..53950a446fea45d715ac20b3937e9ec3b433d650 GIT binary patch literal 276 zcmV+v0qg!73j+Yeux+Wb{$j{M3!>ux|J8IvwgqU^2l&5t@9aed*2$v2&qB3hfrX1Y z9ZbiDpjX>rOj92(Emn2S`pUL8^E6n|ir)QkU+KCh>lO_cNZ@ci&pXb>bc;)3K>4GO ze=%{fndiZ!l>QnQy2a%y<*h4F&3~FEfW62ON02e@1wc56qb%=o+)$Z;L4-1kL^3z) z*woonePJWb20hG1U&ONZP$J=sd#ksuUlBaGkr!6|wd7@fO~8biS-Ul@`JRnKg*gkD zQpZUXL472tBODxuEnni!pSxZR);$i9?NeBrc3qcm?Ij(v^f{?!2pXZYR2HrTPAu9P aSuh!p6nrm=bhM6bzuw}mPKQ?6ys`lEV2CIH literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/routeros.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/routeros.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..c49bb64c545fc799de9c9725e84581ab44d7ad6e GIT binary patch literal 332 zcmV-S0ki%eiwFP!000006K#^wZo)7OMSo=yuLBhcK?5H%If+{`+@wpKu?p?qr;fN( z1@$HOURODGygAcnx|u*B9#^~F?xew7+8DC8$5m5}-|uFuS*NTM&nk;;Lf4_6g1W9t zV1r?3-|ymr!!<-(REG?2uL2JpmSaLf!y&F2+FKJmudnFZGanC?5CL;^Iy1`U6)Kq0 zCVRs!cnOuN_6h_J3CB?G&7H<r#8(ddL}3V0TAEI{6G!KzSH`X<U>wQC8u|&co(L2E z14@l!nirj3H%-o8${!J1{OOla<5ZSjpD^1X?$GH#OW1FS4m3&QA_YjBeYJluFh(HB z4mGGL18d!^E1ezjhkHmO<RVP4kEb&Vrq>zwLxOE{*eW#(%HrHdKJBAbN;jnnyZ#Kx erTf|>9te+)ft-=Sa}54@tNsAh`Ms750{{U3d6dKe literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/school-book.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/school-book.min.css.br new file mode 100644 index 00000000..f959d81f --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/school-book.min.css.br @@ -0,0 +1,3 @@ +U dp^,#Z!^l3]k stm,M!Ec5TuvKK? +ӆװhPW-.!5"=৚랬ۙmOA%W! e[LeSVD +SܣQoK1K 4wwy`b51n$R'rj=҈wC޾ \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/school-book.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/school-book.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..8d8be1cbad3bd70c5c24895192fe0ec917d879cd GIT binary patch literal 270 zcmV+p0rCDHiwFP!000006Ma$bZi6rke3<?nRo0D8(1)4wVZg&lXyU9wRo{K8ngFY& z{qx1n`R=?Q=qp~eCm-6~8`RBfeNs}7eelVdcGn%dS{-it`&c!?eDT4&JP;v6kd#pb z0?j^DEc?PI>gLpW$JGU}AGrMxA~VILBL7~SJJJ|r^e)p%=71_OWULYre`0B?L<GDD za^s>#Z%85sbbSG{RlcZZuoFp!yXxnsZy8W3Dw`R3t>>wfWvZAtXd#*|o6+7{a7CX1 zf{iK*EOU8Io)-o<iuWZB<Mk@-zx<uFMbeY`au_Thx2IYY@=HR`POpF85bQL_i1E>m UJQK9Yl2G4%003QVHdX=v0Ec*go&W#< literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/shades-of-purple.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/shades-of-purple.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..9cde69b1fd1bf6910efc7a33d8b381bad20baa75 GIT binary patch literal 256 zcmV+b0ssCR5d%QP;@5quhf1{aID7Pm|NPCT25w9+^N73e+)EXPV*(ZLzX|%d{5AK3 zVohyg@_px4ym`&g?Gc#Tk&a}VgX9OqnuxxmZ;~MRZ~W};r`(V4yI3Rj`d>)sAPA(y z4sef%kdTXd2zwC6u~AkCR;fy>f9)sgqHwjWog4;Y%U#OpE%g+#gkd<XwpSV0sq+9) z;BY}W+;N;SP8tJ_jf6(bzS>aZS*#<`t6aj*Dvg#Mr=Ce69Zf+{<Loco4kb!QVSE~K z2xoF<h}@0^@Glt*RF+B%AyEqH-8gCA%EinFbAIwg%!VihXtuy2;TM|E#uvU2*;Z8N GLGTCJ`GF7s literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/shades-of-purple.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/shades-of-purple.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..ba556c9ac4f88319bb667cfb89db88f89eabf69f GIT binary patch literal 313 zcmV-90ml9xiwFP!000006LnJUZo?o9e3eQ4yH@nOOCM%3;H0buGBE0@s_#BUBP5No zfB1YppRrdL`ic(;>e>XKoURrdy^;IlS$XoITHsdKb$zbA<K+!abKz<y#B<e^En||A zA1}<DVZ(%drUos9_(#KmEksz?I7mQK1PTbup`fQhHu9aYG7Mx?rpjc9KaG3OUQw~} zLqw?9hnFt$1B<OI-fuqW*&JwXMp~UGBNJneWg<e(f%3Y?H4=`>zLPH{0UP{jr`|f@ zDW(WwoPuq{q<xQaFs|u?yOo}Dz-U_n#_`ZQr8nzs9?T*`=627wvEb}aC~qygasr?Z z`?9M1gISLZV}RaCxAd7!3=??QJm&9ZB9yGe;UeI$Kj}<F+g>1=_@^^-ATw=_LOg!~ LZaVJh5(5AL0Bw~b literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/srcery.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/srcery.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..77d363e913267d4157619c0b0ff2872d774ab1d8 GIT binary patch literal 256 zcmV+b0ssCR$O1sb#JQZ9B}(T^@iL@G_^-e597tf{!v&DtJ$GlCrZ5k*DenP>fqniq z*XGL1^@ftk$@%HQPuPzAfxz8MY+@1-BxklDoBcoBf^2AuF9)1le;$`P&hMxMfx}VO zX-d+B{BRgSDH?l)x&f!0R{h`6RN;cc0YLyx^~#_ZCc4^KmTrCR+<jROTyA*+;_|u~ zL#cS!bD$BlOenM%YY=0+QIT;IYYmf$RCFbuqg{41c&#M^URI1CW3ws(X_Q^kwOnaj zSmJX1>(tG>U8zwfwG|nL6AW-JAWRcZopD&xYY8P)p)GCx(l#l$);Sb*`*&?v9(&tS G#ql5V7khyK literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/srcery.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/srcery.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..3f141ab89b3a259530132a0b6b51a30b44b536b1 GIT binary patch literal 327 zcmV-N0l5AjiwFP!000006KzpjPQx$|JPg0IYEnwvau~F>*Qu#r*lS8u_3jAjjiQLZ zeawt!*4wlDC^re}GUix=K0S4+lil%6MHlnw$tV<Rf8YMXHqH`eaL<qKvqr*JmnsY0 z{^OL%%g7X(5;E#lfWViA(&&(E3=Ma|=^C?UD4O2%LxTcQwzAGon;O)D8o<w{aJeYx zP*Kc(0_&M_P|A8}^?H&DRvkHvB{!!rQi}fAEH2el)a)nam@w1CeDuiy;pPjn1?d>Z zElckJQ1UrJYr6;~t8+-L$vEP7V$YOq7+K>eq}uZZWwnmpEo&sm;L9Au9F#Epc^sTz zT)QTi)q6Dv$s85E$H1PP4VPAWB;Ze~USgijb)p*%jgCH@q1bXWG0>*a<nUw(oK@_J Zatz~ReMLK-=``$i_aESpK*z}f006?$q5}W` literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/stackoverflow-dark.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/stackoverflow-dark.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..3197ccabc9abfe68ea316c6c824a28489e3f6ef1 GIT binary patch literal 266 zcmV+l0rmbH6axT6#W`tqLT3hP4**u3QX0Ym$o=o8aWY;(3YRXN$#~PLi<`!H_%Q;k zbUYr5ExYQP^)-~{1fG5|XnXLCXMVj$Yu(MdX=4Z=;MVjzT^h0JQV6j8agBd5aj^jc z9^tNcjkW30M=wn^gP%Kk+m?<rQ$rxi3_L{*%|Zf!VaTlitfo%%PS(tnHX$mX+?2xX zw_p;!9H!C)ramrQ@-;cvdEmA5g~0M^HZU?3V-(T7Fp;4+)fCKn{5`F_(-^H`UM}m* zgqz|)Vwkp!19!%QsuGUpC4ip`nC5cG1#!pBpn@Pyyd-9saYYg%%v=`8<ShbrK@akJ Q(_M|<b1+USWs$h<57<Y3(f|Me literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/stackoverflow-dark.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/stackoverflow-dark.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..1bfc66a7a069a5d2fbc630c6214ed28912ae8d40 GIT binary patch literal 332 zcmV-S0ki%eiwFP!000006Lpg7Zo)7Og<oY7e+OzMpqD+&lsInj$fYFCScQ1^sUj(? z>V6&{C+BmV-AR9i8#wKJyXm^_Lkc+e-bJh0O$nte<$X8xY(tcRUpiA6oH1x;qiLFC zC<iS1_lG#+cy(SSWst?&nh_9~oSl_MVCT0i`h0&~3j|CNg4zFTkc^Dkg+n8uOs*9M zQ-qC1qEF%y9pf^aG8>~Av|yZQa%mjqgs!O7KF>a%1}#EZMbu=^=^Bqc{tV0DX@*>5 zPd0~!(MYG4P~XCnkUHaMnWN=Fs$+eBKL0Xp2pE-HC6$phe^TCxCPpu20ODuLpEr<E zYvj}hPCa)4@B)(l!DGZ#T!k8^Uy)6PRaqVLrj?>svpT}QDUyk1IEg^v);Y`Dz@x^N eSZK-sfxWZ+!@eT*CvK~vxc>sphS?ky0{{S$U7G;_ literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/stackoverflow-light.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/stackoverflow-light.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..845253559b8459a0c5d253a4ea81ee6770a10aed GIT binary patch literal 271 zcmV+q0r37CAOiqoYF?_lt`}O+0Q>Q$T82sN&?9{J-^=2~6DZ*^TP%2iTAORr=IYZA z(L=cSvSxABHS0^;1{L`E<a$xgM)9k@M<sK27GM^x;2kl_az4$*baQ1WKpwzY|7+sm zBz(b^l)oFJ&6O|$K*}Wg#%<fu5pQY;0Wju5-G}ac1A$Rx7r(5ti*9_0PNw`JitwCL z0Fxao^2cT>U$E6rOJ3&J1a9ZR>v#--BiOECq%7trBD|o4OOR;@b`k%c)_l)KYmI`H zsUwqA$AiQuckBn2$b+gfFR>?%sbk<RIO(y~ZI*XAIjA5~fHIUb<#+-WtRRHRGJg|- V`?wdX-dtCwKXN#3vS!Nx_yMD2h7<q* literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/stackoverflow-light.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/stackoverflow-light.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..2bfe27c099ba0b59056a8097d1d87cb3d6a21d2b GIT binary patch literal 339 zcmV-Z0j&NXiwFP!000006Lpf^Zi6rkMqg!8Z`Ue?0xf%(DL;mK4GBw}b*SRqC)9+t zh>0ubID98@c4z(NZ_;Y(>P^<<d0u@8E-$UK!KixEl+!ovrnapQ!qaPWB+_;rn3<JD z2~}dsO5*MNy|}<|wNAyV1LALMz=I^TX09|yvTjSfO%ZHgl&364a3c3FKoJNMJ+eHn zj*%MPL5wh=6X0U;9W22z8<QJB*K1BN*`%eRpA$q?6l^~(c1z8@Uscp-F7Y=GTKMgk z!P6Pi8aXs6)DNAodMWk89de<QekxORai~sAjgRYJru80zva6;dpr%huQ_)D^_$+|* zNO`#f5wr%1ZPKcTOJ4AjJ-NiEa6jd$u>uX#!$?rFOl6RUtrR}PtSOtrAwuZ-Gxz9k ljWx9OG-#-ixJH>qMb4V`j<102nd*wM@eeRGE!`ml002!ypsN4? literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/sunburst.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/sunburst.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..7711e0aca11ee6c7240d7d32363c980042e8ae3c GIT binary patch literal 297 zcmV+^0oMK-V*?<>#5J9meMkYFN$EOf|Nl>=43Gc@gO4d-|G#^auC3i*In_0-RvKHQ zQx~1O%M*c&Qudg*_&2R~n=1s<1rbrC+5J`et5wEe%Y(pzS^26qGupzR3n*&U_}TkP zHAd+>3RUKK8E<(hHR#h_2GR$scTF3g3Tp~!xwv{S579DuRtA6gp1EL&*QrOLl9dKI zC<1o~=0;{g<SBe8t#><(&o>xdYsc!LG-+SvZvsqa;FQbA!C3QzTWQ3R2&KHMRVxju zOm21LEH+9KCq4qG<uCWCAZp9rhMPTZ8G<m_>``<lzBI}~kWvW_t;Y>c5vyGFrBS7? v=He?2I~c~+l0bpX)ATX0oS`^UU8}clfk!3yTsYmH^$kgj_uxD44js`S^@WX4 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/sunburst.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/sunburst.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..9f8d6e82be14734c36753141ed74b26ec8fb9f69 GIT binary patch literal 380 zcmV-?0fYV@iwFP!000006LnJUZo)7Oe3eQ3T~XFTY0JY*PU4n~d~}IBK!|sr3Q1rS zD8G`sbI$fHcls-wIf(t>-DG9AV2o{r)6RE`zM0QuIdcl(j6qB9x7+vR2+xrRIG=6r zEER!H8aqXxm59nco(|5-s0^r4kn;t>5TEEY=2}=bZM}-hKwjA)LG_xmRhgiP2TF(p z?4gQ?R(2l?dmQjM=F+WTb<$ffm>mgH&L%T=TZ(k{)wEppeVT=a5Z)eGQ6Zi9CtqHv zpJ&1&6%vK>F#pv}R-)I+Vyws~tuYPPPKKjT?oNg~oorN9vk_^qBX}?&eTQb$Kv?{M zSHQEUbj=m8*<hL#5P8L?`znQmrfwr@kl@~bTSLl1@4T5bJmjW`G=^naef$m3_Ej)I zN;Oa8Nu6?C@v?jxM2Q+-s8%II);?9`*j*Qrx@!4`RcWi4qGaxxw+--!qZxM)R5-ut aCy;k`xWNZh!;ZQQW0zkeHfEh<0{{R5nzYpb literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/tomorrow-night-blue.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/tomorrow-night-blue.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..eb3efb3ee1347e41f835f575d9482a6e7de15476 GIT binary patch literal 219 zcmV<103`n#H39%c#W^Q#k(?N&XFj||0}X6}4M6Vgx9EGo8b4WJQ#VCa^bkC{c4|Y` zXNR6$b<Jvd(wP&H>R&3q6F-e)@@r3x4%}yB*q%jiL5XW>1jjTkmcO5hvDSUrL@CM1 z1`BZ3$s;+CLzHO|A|eH=0e7SKwsC!WY(gXixDioJzTMMKRz)d&|No9GEFiS7oL7?D z;5ZZM46#9mqdoFOmakAH+v?3{M@lV-ID~#d3P{Q;C8U%IuLHw%{V?*1B+E(!Y2L4d V81LuxCc0V~5g&hVC^-|?{Q*tDVd?+? literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/tomorrow-night-blue.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/tomorrow-night-blue.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..cad89099311c7e90eab363fd2e048d85640fb0e0 GIT binary patch literal 284 zcmV+%0ptE3iwFP!000006J3zeZo)7OML&ku6%_<3bRRQ0iPL&GNtd`|72@9~jkut_ z`P$a?@!gL6SsI%{z$kCqKlL>y!JAE-a=+>Jr=#iakBLJ@p%m+4gn+foIN;AzML|X@ zDL0m(l>bd~wIeWSg<)b4Y`!5A7*<!63gi9R!J)#KnOHtZVVL4&Ed?`hRRIMQcn$`0 z6%%9#N+-+oa>X7`zFq;5OlE!t;yofbojOM^ftZ;YHO3;DqJCJGU=pi`+xZ=wt4Bfm zVj(2Ye~oeAmE?lUHDwKNjZ<LIbu`B4`ptm73^~ow^_#ZcAC9~C^#irUFpW^C+<c1C i6j>O15@52*COO67F}@-Vqx4<d-hTnCW<(7(0ssKaBZ0gC literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/tomorrow-night-bright.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/tomorrow-night-bright.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..66d86e069b65457a5e193b4440c1f89c621e3e68 GIT binary patch literal 221 zcmV<303!bzH39&{k~y8IMR2CMhca$QH|anF3$qSDcH5#g0N?8^u!qvQ5H&cMIMi05 zpM%ALz^?mtvoh(-o0aN6l=m#o($f9Cr)aP2YcMshX0U3d_gqDeX<Ds(qmHqWbJ<Z@ z*0aG9Tz&S)I)o$&H40dftY}Dg@O9htcm~~JiUL{%R3HMZC8SBpVHE%W{ffvr3KOGT zzhtYy=_b&D&|nv$j1eN;l=ozB_MA}y!~&f{qmr&Ws#i)JWQn97t{Y=4TM7jf3Y$Ti XZ<Gk}VczWM8x9g4f8SJcCa(JjAjxV9 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/tomorrow-night-bright.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/tomorrow-night-bright.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..bf399f1c5c3e2e6910c2710c4e32bf429576bf33 GIT binary patch literal 287 zcmV+)0pR{0iwFP!000006J1d4PQx$^e3<>EQ>C@*2M>ds#B^p(QWBR@O?!6)jkgK; zkIz1x&$mDEN3Lx29)rB>|Ip_W1+O-8Oyh1i4*hVvZ5xM-LNOF#0FR|jIN|qPKt@I@ zF;$i!=l?@;Wg;+Xhkj-dtiB)-7*<t<YR0t<wufTIEX49gYKAGC@2y}0F36*R8eY7? zRKN@gyt<QhzF)zvw@q8FfJh><JOaVawoRv7=jbUAvoNE^m?crr5A*6xWYsW(g$9a7 zM*AcoB#(bPfTL618P`ip8s0rlfl2B1Fm$fp=vM>wJf*k<H}2}XepUPMTSXH6e1c5* l`W}N+Sysl81emOPlN7_WtuIK^Nye_OZ$E7(!D2Q7002jXgjxUq literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/vs.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/vs.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..65b35387ed55df862b0f2853c620e6f07b5071e6 GIT binary patch literal 211 zcmV;^04)C-Edl^!+*~X-Zw1#UhW~VvuC{5$5#D;gu_zo9uyk1#hgqs~2MnT*CJZ%Q zQ}%f9o21o+1Eu1FLbCo)F@~BC9z`V@QIxm$6egI0+yLbbDF9tU$56Ak3VEzZxW!pD zAU-Ea!LI*I!x!z=h6Xm7762;o@IF@LrjRhFh{RZmgn;#EU(Y+PFlCl~IaX103h$+V z6ASxk_-bIo?~3>%5EkS@GMZZR46i<=E$AX5YHx}b;DO2oFYGxebEIu`Xr=EyRgqPs Nb7qBGOCjUEEFF%oUf%!! literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/vs.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/vs.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..262d43ae5dc14019a5bd19ff135daf0d5dbea9b4 GIT binary patch literal 274 zcmV+t0qy=DiwFP!000006J1f!Zo?o9{FuD172Q;A%RXi@;7~6HGUKd@s{Z>_71F40 z_HjP@j{S*$%Ef{kgXB5+z8i+&%Vo~ecgC3O{zllj93v)uxp%*FR;=|O2!Un1+-HIy zraEM2V*RF6nIkUeEWUOLVv{Jy=rqetAyh~qRKd=eq3VJ6q?DT;s0!J6y@W|ofLBqs z;T9E2t2oAqL2<jULCsFXNgwqxHJ2T{9gc@%y~`uxW>-XoXJ@xtpRuXn>~m9mwVwxQ zPJMQd1cKnw5>S<j3i>r>W^7->l*YDbi8k{iMr-h+j$oWlP^esnoOD-oVeCnP$yGv8 Y$tm2Q&q(2<{kt*Oe=j?I*DeA80Ec{r1ONa4 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/vs2015.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/vs2015.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..bf4f4799a5ded863f615d21cf311e8d7f72c5fea GIT binary patch literal 321 zcmV-H0lxkl?E?VBqHVQ6Ju{$%v)LCB|Nl>=#5$=04Suu|z4z|z23Z3%o)=qG+Q(xZ zwk=__68h}na??xOXCO7iYPY#!uo^T~x=9~>{vW#JLA+p`adxywQ~{ag%kNVLK8&p( z;N;w_o^=zYA*P03^7_CInW{MDsE<vJRct|KDO=DIVzt@rEm|?JC@==a0)!FCr!KUl z*J&(4-1A$N2*&EIb?``>oHwv6I8c2CVicXR$}jNnvPivnjAA3!;OdqUb*DGXH$drI z9J`_)gG$X266FjOKgZt4S-Y0~QDAgHhO9C434-l@SZ}ur%m1Tb{D!2XF9=b9`x0>= zu6DJ)CR^+jzRTV=D%F^$kKm8fDN-}fr!V<_bq)IIbfr6v-QgA>wi?0Ju;Lqe|7+)r THuLu=yPDuxqkwkwUQmhvnsK5e literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/vs2015.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/vs2015.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..b99772c3dd8cc7b3733176d38dc7721da603263c GIT binary patch literal 431 zcmV;g0Z{%QiwFP!000006NOXJZmTd1{gp}6-pWK*3I#sq%1K<B)k#?5+zwUy_bax9 z(p^ncUSj+BaC{t|PxKnD0_1t{E?U(+ZgD=nbmV;ZsN{S;o@ZEb#_8g`+I&T%89h*n zEEr7JFd5<Kni%$VD^;BsNZa#$p=W&OLZNgXSUcNAtI(6Sm|8^C#DBC+<UEa-87h>m zC=*T+gpkEVBhY7<IH(4831*PtA?akV?XXz~xkc5jI_y)6#{u8R{CzYd0b{|ipj+7Q zc2z<joi~vn!H?0(d8`zU;K5{-A&S76Rx>Sg-I*?(F=#XHEjnIs`v&R?`lGX41fB>x z%|JSLDkoPW>+&EfT)D9M&yf55t_KwJ`S|9*U+@|P<+bN<v0c?WnLPw%zqwtth_^9X zspK&$3;5|*stt}*Dxeup5OlcyG;Uz;?C@2-pdL=#HD!JsA`)RXF(9F2=hv#1-1;3Y zNu5nuGGoA~-1qFtGt~%avUpHRe~xwg(~5-KR@KY)rB^zP1XHK&{Pqh$PM-UVR($HV ZW%-m>iiAJ#)MfcA$v-`sR3h#J002YZ)pP&= literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/xcode.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/xcode.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..be1b05d9ae6b69161ceaeefe370a1d2c44b07bf7 GIT binary patch literal 301 zcmV+|0n+{(UIQRR!?~m>;hb41w`a8ARLU|4K3YhA+;uLhScY~Dpjx$7+m^5xIOv&~ zrC#o_N9;$ecAKjU9K;6z8U9~&E?DDx-0HVCTrvI=+%RUByLt9ivW)KWdiqN;gpm@! z=$*Bem|>vsZR2?1x4Lk(!AV4|YGh3Vr#x;LLJr3XO99cDFCLhYus0C%#M)FKy3<t$ zi+0kvV8QETeF+63o)QO&FrWlV5)T`7l)5X`eQ~IO2_;2vHW}q0+0W~Pw7+f+)uSu6 z=+V3*QKmC@_dc!UukR-097XntWJ5RU_%P*zz>}~$-+b}*0pM2`9ih!>eXF~5AIQ{k z?ryXSv?^L<U<X0eQyT<Pxa1_Vw(GI<R&G&Q(*J$zw~B${c$86R(N3n}H(!$ghHI5> literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/xcode.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/xcode.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..2a6aec2a82e0e457881ed10168c04303a99bb7eb GIT binary patch literal 393 zcmV;40e1c$iwFP!000006LpeXZsRZvMYmEQzjdHI#(8ux1tn3A8cK2{x@{12?}ON) zlbNEQBoE1ZDJ@U*R<0V%xyxyY_PB7)y_iHP9~Vlg@8wsZr{#@m0y12uQt|YG`FqNn z6aq$mo}%|5F;;A$)NXqlGFE^&dp$5#@{E_ylx>a3GiIO~MF@fwBs83I!_d_fLnj*m zls&BK2FB16Fg72MJ!p~<5=zs?wYb~P@~v<;ht+K1?4#_P0_ir}6|CCYO+KD0m9fLG zezuMZovV}{h)^yRhoCXb=u6N^T(jr9$dysb$bg%&`5uOSih{M<&3-K>)`KU0^|7Lc zpp>VF*)`uohEN`tE=TlLQkQ;~@yD#&!{OlxrLf<$X1%Y4GU&qhR~J1l<uDLDe6Xf6 zi1^}C<fib2@aP%H8`)y5A1(fD(}1X<aux}H;hZyjZAF~?pwZ<2-^yFjeb76#k&D}8 n?jNpjPO-a=f<MuBCqC|GlNkCF6kn$DKYsoKkWX6MUjqOD{~^Q0 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/xt256.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/xt256.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..6db74021f616fc0123704c2b56c3c93e2d4a0431 GIT binary patch literal 225 zcmV<703QDvssaE61l$(Ofu(B;h`ANps>DJFg}YtMBi?BYl~?I*+wxP*f75iHM=&;M z;#Xa>zO>Eqc$~VA1_SWhoqFfxuCa!eJoH|y6}PFax45fQBhBjMC1k98Ti9=IN+haH zSqxww%od0{777qe5$j$odG-oa=8GE?k0DG(8f~Od1w%_aj*C}k_7z1TL^Se<f`x)V z=2R~|T;b5b9=SHSkOm4R72O%d0vDb{ho*#Igry-khW@n0(m;_K!>={k?&;V6B!ElE bT84Ej*}E{EEqR$=QxYYG{P+15r?#<n3JhxG literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/xt256.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor.Markdown/code-styles/xt256.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..dee0b7463682ebc31137b7031f4deb9a68d807ad GIT binary patch literal 288 zcmV+*0pI=~iwFP!000006LnG1Zo?o9{FuHj6;Iuoe#~TuNxd4#j9C{|`}e78Al=r9 z7sH+J&Srb$w|sGllk^*e>p56(r%_UgL%%V`d~L6sE*G2iCv!nCOh?F+FFr->vd)Y> zDKNR(s*>V(gU?9gQTykntMh~pWhW2_E!zNQ&BCN8z)!bZgn+dy!J;fZg2Un7(<UBJ z773R^z}N=b@AfbI-GaTBq*XB^qthfE4V7!Wuh}t742s<c2!Z9=q@=B`&|UZ8@g`0< zpOXx~jU7YI^>Ge1ah3AkuRF1Y8MX3MD2}UT`$Tj~Db|><QjGC!tY-a(@K1736|$u* m%@$&PrRu{JPfIB{;^))`Fx4`k!rfSp{_Pu5@%*Q&0ssJXJ&!N| literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css index e14e6c3a..0a44e4e3 100755 --- a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css @@ -2,4 +2,4 @@ * 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-ripple-color: var(--mud-palette-primary) !important}.mud-primary-hover{background-color:var(--mud-palette-primary-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-primary-hover:hover{background-color:var(--mud-palette-primary-hover) !important}}.hover\:mud-primary-hover:focus-visible,.hover\:mud-primary-hover:active{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-ripple-color: var(--mud-palette-secondary) !important}.mud-secondary-hover{background-color:var(--mud-palette-secondary-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-secondary-hover:hover{background-color:var(--mud-palette-secondary-hover) !important}}.hover\:mud-secondary-hover:focus-visible,.hover\:mud-secondary-hover:active{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-ripple-color: var(--mud-palette-tertiary) !important}.mud-tertiary-hover{background-color:var(--mud-palette-tertiary-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-tertiary-hover:hover{background-color:var(--mud-palette-tertiary-hover) !important}}.hover\:mud-tertiary-hover:focus-visible,.hover\:mud-tertiary-hover:active{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-ripple-color: var(--mud-palette-info) !important}.mud-info-hover{background-color:var(--mud-palette-info-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-info-hover:hover{background-color:var(--mud-palette-info-hover) !important}}.hover\:mud-info-hover:focus-visible,.hover\:mud-info-hover:active{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-ripple-color: var(--mud-palette-success) !important}.mud-success-hover{background-color:var(--mud-palette-success-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-success-hover:hover{background-color:var(--mud-palette-success-hover) !important}}.hover\:mud-success-hover:focus-visible,.hover\:mud-success-hover:active{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-ripple-color: var(--mud-palette-warning) !important}.mud-warning-hover{background-color:var(--mud-palette-warning-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-warning-hover:hover{background-color:var(--mud-palette-warning-hover) !important}}.hover\:mud-warning-hover:focus-visible,.hover\:mud-warning-hover:active{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-ripple-color: var(--mud-palette-error) !important}.mud-error-hover{background-color:var(--mud-palette-error-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-error-hover:hover{background-color:var(--mud-palette-error-hover) !important}}.hover\:mud-error-hover:focus-visible,.hover\:mud-error-hover:active{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-ripple-color: var(--mud-palette-dark) !important}.mud-dark-hover{background-color:var(--mud-palette-dark-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-dark-hover:hover{background-color:var(--mud-palette-dark-hover) !important}}.hover\:mud-dark-hover:focus-visible,.hover\:mud-dark-hover:active{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-gray) !important}.mud-theme-transparent{color:inherit !important;background-color:rgba(0,0,0,0) !important}.mud-transparent{background-color:rgba(0,0,0,0) !important}.mud-transparent-text{color:rgba(0,0,0,0) !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;-webkit-tap-highlight-color:rgba(0,0,0,0)}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-color:var(--mud-palette-error);color:var(--mud-palette-error-text);bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.75rem .7rem 1.25rem;position:fixed;width:100%;z-index:9999}#blazor-error-ui .reload{color:inherit;text-decoration:underline}#blazor-error-ui .dismiss{color:inherit;cursor:pointer;position:absolute;right:.75rem;top:.5rem}#components-reconnect-modal{z-index:9999 !important;background-color:var(--mud-palette-background) !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(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 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}@media(hover: hover)and (pointer: fine){#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(0.5);transform:scale(0.5)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes mud-scale-up-center{0%{-webkit-transform:scale(0.5);transform:scale(0.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:0px}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:rgba(0,0,0,0);-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}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:rgba(0,0,0,0);transition:box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-alert.mud-square{border-radius:0px}.mud-alert.mud-dense{padding:0px 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-normal .mud-alert-close .mud-button-root{color:currentColor}.mud-alert-filled-primary{color:var(--mud-palette-primary-text);font-weight:500;background-color:var(--mud-palette-primary)}.mud-alert-filled-primary .mud-button-root{color:currentColor}.mud-alert-filled-secondary{color:var(--mud-palette-secondary-text);font-weight:500;background-color:var(--mud-palette-secondary)}.mud-alert-filled-secondary .mud-button-root{color:currentColor}.mud-alert-filled-tertiary{color:var(--mud-palette-tertiary-text);font-weight:500;background-color:var(--mud-palette-tertiary)}.mud-alert-filled-tertiary .mud-button-root{color:currentColor}.mud-alert-filled-info{color:var(--mud-palette-info-text);font-weight:500;background-color:var(--mud-palette-info)}.mud-alert-filled-info .mud-button-root{color:currentColor}.mud-alert-filled-success{color:var(--mud-palette-success-text);font-weight:500;background-color:var(--mud-palette-success)}.mud-alert-filled-success .mud-button-root{color:currentColor}.mud-alert-filled-warning{color:var(--mud-palette-warning-text);font-weight:500;background-color:var(--mud-palette-warning)}.mud-alert-filled-warning .mud-button-root{color:currentColor}.mud-alert-filled-error{color:var(--mud-palette-error-text);font-weight:500;background-color:var(--mud-palette-error)}.mud-alert-filled-error .mud-button-root{color:currentColor}.mud-alert-filled-dark{color:var(--mud-palette-dark-text);font-weight:500;background-color:var(--mud-palette-dark)}.mud-alert-filled-dark .mud-button-root{color:currentColor}.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;align-items:start}.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(0.25, 0.8, 0.5, 1);white-space:nowrap}.mud-badge.mud-badge-default{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-gray-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-icon{width:20px;height:20px}.mud-badge.mud-badge-icon .mud-icon-badge{color:inherit;font-size:12px}.mud-badge.mud-badge-dot{border-radius:50%;height:9px;min-width:0;padding:0;width:9px}.mud-badge.mud-badge{display:flex;align-items:center;justify-content:center}.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;--mud-internal-toolbar-height: 56px;height:var(--mud-internal-toolbar-height)}.mud-toolbar-gutters{padding-left:16px;padding-right:16px}@media(min-width: 0px)and (orientation: landscape){.mud-toolbar{--mud-internal-toolbar-height: 48px}}@media(min-width: 600px){.mud-toolbar{--mud-internal-toolbar-height: 64px}.mud-toolbar-gutters{padding-left:24px;padding-right:24px}}.mud-toolbar-dense{--mud-internal-toolbar-height: 48px}.mud-toolbar.mud-toolbar-wrap-content{height:auto;min-height:var(--mud-internal-toolbar-height);flex-wrap:wrap}.mud-toolbar.mud-toolbar-wrap-content.mud-toolbar-appbar{min-height:min(var(--mud-appbar-height),var(--mud-internal-toolbar-height))}.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-gray-darker)}.mud-tooltip.mud-tooltip-default.mud-tooltip-arrow::after{border-color:var(--mud-palette-gray-darker) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.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:rgba(0,0,0,0);border-top-color:inherit}.mud-avatar{display:inline-flex;overflow:hidden;position:relative;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-gray-light)}.mud-avatar.mud-avatar-small{width:24px;height:24px;font-size:.75rem}.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.5rem}.mud-avatar-rounded{border-radius:var(--mud-default-borderradius)}.mud-avatar-square{border-radius:0}.mud-avatar>.mud-image{color:rgba(0,0,0,0);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-text-primary);background-color:var(--mud-palette-lines-inputs)}.mud-avatar-filled.mud-avatar-filled-primary{color:var(--mud-palette-primary-text);background-color:var(--mud-palette-primary)}.mud-avatar-filled.mud-avatar-filled-secondary{color:var(--mud-palette-secondary-text);background-color:var(--mud-palette-secondary)}.mud-avatar-filled.mud-avatar-filled-tertiary{color:var(--mud-palette-tertiary-text);background-color:var(--mud-palette-tertiary)}.mud-avatar-filled.mud-avatar-filled-info{color:var(--mud-palette-info-text);background-color:var(--mud-palette-info)}.mud-avatar-filled.mud-avatar-filled-success{color:var(--mud-palette-success-text);background-color:var(--mud-palette-success)}.mud-avatar-filled.mud-avatar-filled-warning{color:var(--mud-palette-warning-text);background-color:var(--mud-palette-warning)}.mud-avatar-filled.mud-avatar-filled-error{color:var(--mud-palette-error-text);background-color:var(--mud-palette-error)}.mud-avatar-filled.mud-avatar-filled-dark{color:var(--mud-palette-dark-text);background-color:var(--mud-palette-dark)}.mud-avatar-group{display:flex}.mud-avatar-group .mud-avatar:first-child{margin-inline-start:0px !important}.mud-avatar-group.mud-avatar-group-outlined.mud-avatar-group-outlined-transparent .mud-avatar:not(.mud-avatar-outlined){border-color:rgba(0,0,0,0)}.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}@media(hover: hover)and (pointer: fine){.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:rgba(0,0,0,0);-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.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(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:var(--mud-default-borderradius);color:var(--mud-palette-text-primary);--mud-ripple-color: var(--mud-palette-text-primary)}@media(hover: hover)and (pointer: fine){.mud-button:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-button:focus-visible,.mud-button:active{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-ripple-color: var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-primary:hover{background-color:var(--mud-palette-primary-hover)}}.mud-button-text.mud-button-text-primary:focus-visible,.mud-button-text.mud-button-text-primary:active{background-color:var(--mud-palette-primary-hover)}.mud-button-text.mud-button-text-secondary{color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-secondary:hover{background-color:var(--mud-palette-secondary-hover)}}.mud-button-text.mud-button-text-secondary:focus-visible,.mud-button-text.mud-button-text-secondary:active{background-color:var(--mud-palette-secondary-hover)}.mud-button-text.mud-button-text-tertiary{color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-tertiary:hover{background-color:var(--mud-palette-tertiary-hover)}}.mud-button-text.mud-button-text-tertiary:focus-visible,.mud-button-text.mud-button-text-tertiary:active{background-color:var(--mud-palette-tertiary-hover)}.mud-button-text.mud-button-text-info{color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-info:hover{background-color:var(--mud-palette-info-hover)}}.mud-button-text.mud-button-text-info:focus-visible,.mud-button-text.mud-button-text-info:active{background-color:var(--mud-palette-info-hover)}.mud-button-text.mud-button-text-success{color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-success:hover{background-color:var(--mud-palette-success-hover)}}.mud-button-text.mud-button-text-success:focus-visible,.mud-button-text.mud-button-text-success:active{background-color:var(--mud-palette-success-hover)}.mud-button-text.mud-button-text-warning{color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-warning:hover{background-color:var(--mud-palette-warning-hover)}}.mud-button-text.mud-button-text-warning:focus-visible,.mud-button-text.mud-button-text-warning:active{background-color:var(--mud-palette-warning-hover)}.mud-button-text.mud-button-text-error{color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-error:hover{background-color:var(--mud-palette-error-hover)}}.mud-button-text.mud-button-text-error:focus-visible,.mud-button-text.mud-button-text-error:active{background-color:var(--mud-palette-error-hover)}.mud-button-text.mud-button-text-dark{color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-dark:hover{background-color:var(--mud-palette-dark-hover)}}.mud-button-text.mud-button-text-dark:focus-visible,.mud-button-text.mud-button-text-dark:active{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}@media(hover: hover)and (pointer: fine){.mud-button-outlined:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-button-outlined:focus-visible,.mud-button-outlined:active{background-color:var(--mud-palette-action-default-hover)}.mud-button-outlined.mud-button-outlined-primary{color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary);border:1px solid var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-primary:hover{border:1px solid var(--mud-palette-primary);background-color:var(--mud-palette-primary-hover)}}.mud-button-outlined.mud-button-outlined-primary:focus-visible,.mud-button-outlined.mud-button-outlined-primary:active{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);--mud-ripple-color: var(--mud-palette-secondary);border:1px solid var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-secondary:hover{border:1px solid var(--mud-palette-secondary);background-color:var(--mud-palette-secondary-hover)}}.mud-button-outlined.mud-button-outlined-secondary:focus-visible,.mud-button-outlined.mud-button-outlined-secondary:active{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);--mud-ripple-color: var(--mud-palette-tertiary);border:1px solid var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-tertiary:hover{border:1px solid var(--mud-palette-tertiary);background-color:var(--mud-palette-tertiary-hover)}}.mud-button-outlined.mud-button-outlined-tertiary:focus-visible,.mud-button-outlined.mud-button-outlined-tertiary:active{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);--mud-ripple-color: var(--mud-palette-info);border:1px solid var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-info:hover{border:1px solid var(--mud-palette-info);background-color:var(--mud-palette-info-hover)}}.mud-button-outlined.mud-button-outlined-info:focus-visible,.mud-button-outlined.mud-button-outlined-info:active{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);--mud-ripple-color: var(--mud-palette-success);border:1px solid var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-success:hover{border:1px solid var(--mud-palette-success);background-color:var(--mud-palette-success-hover)}}.mud-button-outlined.mud-button-outlined-success:focus-visible,.mud-button-outlined.mud-button-outlined-success:active{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);--mud-ripple-color: var(--mud-palette-warning);border:1px solid var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-warning:hover{border:1px solid var(--mud-palette-warning);background-color:var(--mud-palette-warning-hover)}}.mud-button-outlined.mud-button-outlined-warning:focus-visible,.mud-button-outlined.mud-button-outlined-warning:active{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);--mud-ripple-color: var(--mud-palette-error);border:1px solid var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-error:hover{border:1px solid var(--mud-palette-error);background-color:var(--mud-palette-error-hover)}}.mud-button-outlined.mud-button-outlined-error:focus-visible,.mud-button-outlined.mud-button-outlined-error:active{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);--mud-ripple-color: var(--mud-palette-dark);border:1px solid var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-dark:hover{border:1px solid var(--mud-palette-dark);background-color:var(--mud-palette-dark-hover)}}.mud-button-outlined.mud-button-outlined-dark:focus-visible,.mud-button-outlined.mud-button-outlined-dark:active{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);--mud-ripple-color: var(--mud-palette-text-primary);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;box-shadow:0px 3px 1px -2px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 1px 5px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-default-hover)}.mud-button-filled.mud-icon-button{padding:6px}@media(hover: hover)and (pointer: fine){.mud-button-filled:hover{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}}.mud-button-filled:focus-visible{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}.mud-button-filled:active{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}.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);--mud-ripple-color: var(--mud-palette-primary-text);background-color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-primary:hover{background-color:var(--mud-palette-primary-darken)}}.mud-button-filled.mud-button-filled-primary:focus-visible,.mud-button-filled.mud-button-filled-primary:active{background-color:var(--mud-palette-primary-darken)}.mud-button-filled.mud-button-filled-secondary{color:var(--mud-palette-secondary-text);--mud-ripple-color: var(--mud-palette-secondary-text);background-color:var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-secondary:hover{background-color:var(--mud-palette-secondary-darken)}}.mud-button-filled.mud-button-filled-secondary:focus-visible,.mud-button-filled.mud-button-filled-secondary:active{background-color:var(--mud-palette-secondary-darken)}.mud-button-filled.mud-button-filled-tertiary{color:var(--mud-palette-tertiary-text);--mud-ripple-color: var(--mud-palette-tertiary-text);background-color:var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-tertiary:hover{background-color:var(--mud-palette-tertiary-darken)}}.mud-button-filled.mud-button-filled-tertiary:focus-visible,.mud-button-filled.mud-button-filled-tertiary:active{background-color:var(--mud-palette-tertiary-darken)}.mud-button-filled.mud-button-filled-info{color:var(--mud-palette-info-text);--mud-ripple-color: var(--mud-palette-info-text);background-color:var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-info:hover{background-color:var(--mud-palette-info-darken)}}.mud-button-filled.mud-button-filled-info:focus-visible,.mud-button-filled.mud-button-filled-info:active{background-color:var(--mud-palette-info-darken)}.mud-button-filled.mud-button-filled-success{color:var(--mud-palette-success-text);--mud-ripple-color: var(--mud-palette-success-text);background-color:var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-success:hover{background-color:var(--mud-palette-success-darken)}}.mud-button-filled.mud-button-filled-success:focus-visible,.mud-button-filled.mud-button-filled-success:active{background-color:var(--mud-palette-success-darken)}.mud-button-filled.mud-button-filled-warning{color:var(--mud-palette-warning-text);--mud-ripple-color: var(--mud-palette-warning-text);background-color:var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-warning:hover{background-color:var(--mud-palette-warning-darken)}}.mud-button-filled.mud-button-filled-warning:focus-visible,.mud-button-filled.mud-button-filled-warning:active{background-color:var(--mud-palette-warning-darken)}.mud-button-filled.mud-button-filled-error{color:var(--mud-palette-error-text);--mud-ripple-color: var(--mud-palette-error-text);background-color:var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-error:hover{background-color:var(--mud-palette-error-darken)}}.mud-button-filled.mud-button-filled-error:focus-visible,.mud-button-filled.mud-button-filled-error:active{background-color:var(--mud-palette-error-darken)}.mud-button-filled.mud-button-filled-dark{color:var(--mud-palette-dark-text);--mud-ripple-color: var(--mud-palette-dark-text);background-color:var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-dark:hover{background-color:var(--mud-palette-dark-darken)}}.mud-button-filled.mud-button-filled-dark:focus-visible,.mud-button-filled.mud-button-filled-dark:active{background-color:var(--mud-palette-dark-darken)}.mud-button-disable-elevation{box-shadow:none}@media(hover: hover)and (pointer: fine){.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-ripple-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}@media(hover: hover)and (pointer: fine){.mud-button-group-root.mud-button-group-override-styles .mud-button-root:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-button-group-root.mud-button-group-override-styles .mud-button-root:focus-visible,.mud-button-group-root.mud-button-group-override-styles .mud-button-root:active{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-ripple-color: var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root:hover{background-color:var(--mud-palette-primary-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root:active{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-ripple-color: var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root:hover{background-color:var(--mud-palette-secondary-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root:active{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-ripple-color: var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root:hover{background-color:var(--mud-palette-tertiary-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root:active{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-ripple-color: var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root:hover{background-color:var(--mud-palette-info-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root:active{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-ripple-color: var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root:hover{background-color:var(--mud-palette-success-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root:active{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-ripple-color: var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root:hover{background-color:var(--mud-palette-warning-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root:active{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-ripple-color: var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root:hover{background-color:var(--mud-palette-error-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root:active{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-ripple-color: var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root:hover{background-color:var(--mud-palette-dark-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root:active{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-ripple-color: var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root:hover{background-color:var(--mud-palette-primary-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root:active{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-ripple-color: var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root:hover{background-color:var(--mud-palette-secondary-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root:active{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-ripple-color: var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root:hover{background-color:var(--mud-palette-tertiary-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root:active{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-ripple-color: var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root:hover{background-color:var(--mud-palette-info-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root:active{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-ripple-color: var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root:hover{background-color:var(--mud-palette-success-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root:active{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-ripple-color: var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root:hover{background-color:var(--mud-palette-warning-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root:active{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-ripple-color: var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root:hover{background-color:var(--mud-palette-error-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root:active{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-ripple-color: var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root:hover{background-color:var(--mud-palette-dark-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root:active{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}@media(hover: hover)and (pointer: fine){.mud-button-group-filled .mud-button-root:hover{box-shadow:var(--mud-elevation-4)}}.mud-button-group-filled .mud-button-root:focus-visible,.mud-button-group-filled .mud-button-root:active{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-ripple-color: var(--mud-palette-primary-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:hover{background-color:var(--mud-palette-primary-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:active{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-ripple-color: var(--mud-palette-secondary-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:hover{background-color:var(--mud-palette-secondary-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:active{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-ripple-color: var(--mud-palette-tertiary-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:hover{background-color:var(--mud-palette-tertiary-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:active{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-ripple-color: var(--mud-palette-info-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:hover{background-color:var(--mud-palette-info-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:active{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-ripple-color: var(--mud-palette-success-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:hover{background-color:var(--mud-palette-success-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:active{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-ripple-color: var(--mud-palette-warning-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:hover{background-color:var(--mud-palette-warning-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:active{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-ripple-color: var(--mud-palette-error-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:hover{background-color:var(--mud-palette-error-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:active{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-ripple-color: var(--mud-palette-dark-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:hover{background-color:var(--mud-palette-dark-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:active{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(0.4, 0, 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)}@media(hover: hover)and (pointer: fine){.mud-icon-button:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-icon-button:focus-visible,.mud-icon-button:active{background-color:var(--mud-palette-action-default-hover)}.mud-icon-button:disabled{color:var(--mud-palette-action-disabled);background-color:rgba(0,0,0,0)}.mud-icon-button.mud-readonly,.mud-icon-button .mud-readonly:hover{cursor:default}.mud-icon-button-color-inherit{color:inherit}@media(hover: hover)and (pointer: fine){.mud-icon-button-color-inherit:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-icon-button-color-inherit:focus-visible,.mud-icon-button-color-inherit:active{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{display:flex;flex-direction:column}.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:0px;border-top-right-radius:0px}.mud-card-content{flex-grow:1;padding:16px}.mud-card-actions{display:flex;padding:8px;align-items:center}.mud-carousel{display:flex !important;position:relative;margin:0px !important;clip-path:inset(0px 0px 0px 0px);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:0px;right:0px;top:0px;bottom:0px;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 0px;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-chart .mud-chart-legend .mud-chart-legend-item .mud-chart-legend-checkbox{display:flex;align-items:center}.mud-chart .mud-chart-legend .mud-chart-legend-item .mud-input-control{width:35px !important}.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:rgba(0,0,0,0);user-select:none;pointer-events:unset}.mud-chart-donut .mud-donut-ring{fill:rgba(0,0,0,0);stroke-width:5;stroke:#fff;pointer-events:unset}.mud-chart-donut .mud-donut-segment{stroke-width:5;fill:rgba(0,0,0,0);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:rgba(0,0,0,0)}@media(hover: hover)and (pointer: fine){.mud-checkbox .mud-disabled:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-checkbox .mud-disabled:hover *{cursor:default;color:var(--mud-palette-text-disabled)}}.mud-checkbox .mud-disabled:focus-visible,.mud-checkbox .mud-disabled:active{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-checkbox .mud-disabled:focus-visible *,.mud-checkbox .mud-disabled:active *{cursor:default;color:var(--mud-palette-text-disabled)}.mud-checkbox.mud-readonly,.mud-checkbox .mud-readonly:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.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-chart-legend-checkbox .mud-checkbox svg path:last-child{fill:var(--checkbox-color) !important}.mud-chip-container{display:contents}.mud-chip{border:none;display:inline-flex;max-width:100%;outline:0;padding:0 12px;position:relative;box-sizing:border-box;transition:background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 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;padding:0 8px}.mud-chip.mud-chip-size-small .mud-avatar{margin-left:-4px;margin-right:4px;margin-inline-start:-4px;margin-inline-end:4px;width:18px;height:18px;font-size:.625rem}.mud-chip.mud-chip-size-small .mud-icon-root{font-size:1.125rem}.mud-chip.mud-chip-size-small .mud-chip-close-button{margin-right:-4px;margin-left:4px;margin-inline-end:-4px;margin-inline-start:4px}.mud-chip.mud-chip-size-medium{height:32px;font-size:14px;border-radius:16px}.mud-chip.mud-chip-size-medium .mud-avatar{margin-left:-8px;margin-right:8px;margin-inline-start:-8px;margin-inline-end:8px;width:24px;height:24px;font-size:.75rem}.mud-chip.mud-chip-size-large{height:40px;font-size:16px;border-radius:20px;padding:0 16px}.mud-chip.mud-chip-size-large .mud-avatar{margin-left:-12px;margin-right:8px;margin-inline-start:-12px;margin-inline-end:8px;width:32px;height:32px;font-size:1rem}.mud-chip.mud-chip-size-large .mud-chip-icon{font-size:1.5rem;margin-left:-6px;margin-right:6px;margin-inline-start:-6px;margin-inline-end:6px}.mud-chip.mud-chip-label{border-radius:var(--mud-default-borderradius)}.mud-chip.mud-clickable{cursor:pointer;user-select:none}.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(0.25, 0.8, 0.5, 1),visibility 0s}.mud-chip .mud-chip-close-button .mud-icon-size-small{font-size:1.15rem}@media(hover: hover)and (pointer: fine){.mud-chip .mud-chip-close-button:hover:not(.mud-disabled){opacity:.7}}.mud-chip .mud-chip-close-button:focus-visible:not(.mud-disabled),.mud-chip .mud-chip-close-button:active:not(.mud-disabled){opacity:.7}.mud-chip>.mud-chip-content{align-items:center;display:inline-flex;height:100%;max-width:100%}.mud-chip-filled{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-action-disabled-background);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-action-disabled)}}.mud-chip-filled.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-action-disabled)}.mud-chip-filled.mud-chip-color-primary{color:var(--mud-palette-primary-text);--mud-ripple-color: var(--mud-palette-primary-text) !important;background-color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-primary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-primary-darken)}}.mud-chip-filled.mud-chip-color-primary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-primary.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-primary-darken)}.mud-chip-filled.mud-chip-color-secondary{color:var(--mud-palette-secondary-text);--mud-ripple-color: var(--mud-palette-secondary-text) !important;background-color:var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-secondary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-secondary-darken)}}.mud-chip-filled.mud-chip-color-secondary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-secondary.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-secondary-darken)}.mud-chip-filled.mud-chip-color-tertiary{color:var(--mud-palette-tertiary-text);--mud-ripple-color: var(--mud-palette-tertiary-text) !important;background-color:var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-tertiary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-tertiary-darken)}}.mud-chip-filled.mud-chip-color-tertiary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-tertiary.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-tertiary-darken)}.mud-chip-filled.mud-chip-color-info{color:var(--mud-palette-info-text);--mud-ripple-color: var(--mud-palette-info-text) !important;background-color:var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-info.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-info-darken)}}.mud-chip-filled.mud-chip-color-info.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-info.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-info-darken)}.mud-chip-filled.mud-chip-color-success{color:var(--mud-palette-success-text);--mud-ripple-color: var(--mud-palette-success-text) !important;background-color:var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-success.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-success-darken)}}.mud-chip-filled.mud-chip-color-success.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-success.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-success-darken)}.mud-chip-filled.mud-chip-color-warning{color:var(--mud-palette-warning-text);--mud-ripple-color: var(--mud-palette-warning-text) !important;background-color:var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-warning.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-warning-darken)}}.mud-chip-filled.mud-chip-color-warning.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-warning.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-warning-darken)}.mud-chip-filled.mud-chip-color-error{color:var(--mud-palette-error-text);--mud-ripple-color: var(--mud-palette-error-text) !important;background-color:var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-error.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-error-darken)}}.mud-chip-filled.mud-chip-color-error.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-error.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-error-darken)}.mud-chip-filled.mud-chip-color-dark{color:var(--mud-palette-dark-text);--mud-ripple-color: var(--mud-palette-dark-text) !important;background-color:var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-dark.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-dark-darken)}}.mud-chip-filled.mud-chip-color-dark.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-dark.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-action-default-hover)}}.mud-chip-outlined.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-action-default-hover)}.mud-chip-outlined.mud-chip-color-primary{color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary) !important;border:1px solid var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-primary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-primary-hover)}}.mud-chip-outlined.mud-chip-color-primary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-primary.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-secondary{color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary) !important;border:1px solid var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-secondary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-secondary-hover)}}.mud-chip-outlined.mud-chip-color-secondary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-secondary.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-tertiary{color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary) !important;border:1px solid var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-tertiary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-tertiary-hover)}}.mud-chip-outlined.mud-chip-color-tertiary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-tertiary.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-info{color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info) !important;border:1px solid var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-info.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-info-hover)}}.mud-chip-outlined.mud-chip-color-info.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-info.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-info.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-info.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-info.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-success{color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success) !important;border:1px solid var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-success.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-success-hover)}}.mud-chip-outlined.mud-chip-color-success.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-success.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-success.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-success.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-success.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-warning{color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning) !important;border:1px solid var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-warning.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-warning-hover)}}.mud-chip-outlined.mud-chip-color-warning.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-warning.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-error{color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error) !important;border:1px solid var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-error.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-error-hover)}}.mud-chip-outlined.mud-chip-color-error.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-error.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-error.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-error.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-error.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-dark{color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark) !important;border:1px solid var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-dark.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-dark-hover)}}.mud-chip-outlined.mud-chip-color-dark.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-dark.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}.mud-chip-text{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-action-default-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-action-disabled-background)}}.mud-chip-text.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-action-disabled-background)}.mud-chip-text.mud-chip-color-primary{color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary) !important;background-color:var(--mud-palette-primary-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-primary.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}}.mud-chip-text.mud-chip-color-primary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-primary.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}.mud-chip-text.mud-chip-color-secondary{color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary) !important;background-color:var(--mud-palette-secondary-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-secondary.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}}.mud-chip-text.mud-chip-color-secondary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-secondary.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}.mud-chip-text.mud-chip-color-tertiary{color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary) !important;background-color:var(--mud-palette-tertiary-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-tertiary.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}}.mud-chip-text.mud-chip-color-tertiary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-tertiary.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}.mud-chip-text.mud-chip-color-info{color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info) !important;background-color:var(--mud-palette-info-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-info.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}}.mud-chip-text.mud-chip-color-info.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-info.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}.mud-chip-text.mud-chip-color-success{color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success) !important;background-color:var(--mud-palette-success-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-success.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}}.mud-chip-text.mud-chip-color-success.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-success.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}.mud-chip-text.mud-chip-color-warning{color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning) !important;background-color:var(--mud-palette-warning-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-warning.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}}.mud-chip-text.mud-chip-color-warning.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-warning.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}.mud-chip-text.mud-chip-color-error{color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error) !important;background-color:var(--mud-palette-error-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-error.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}}.mud-chip-text.mud-chip-color-error.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-error.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}.mud-chip-text.mud-chip-color-dark{color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark) !important;background-color:var(--mud-palette-dark-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-dark.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}}.mud-chip-text.mud-chip-color-dark.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-dark.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}.mud-collapse-container{height:0px;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;left: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(0.39, 0.575, 0.565, 1) both;animation:mud-open-dialog-center .1s cubic-bezier(0.39, 0.575, 0.565, 1) both;box-shadow:0px 11px 15px -7px rgba(0,0,0,.2),0px 24px 38px 3px rgba(0,0,0,.14),0px 9px 46px 8px rgba(0,0,0,.12);max-height:calc(100vh - var(--mud-appbar-height));max-height:calc(100dvh - var(--mud-appbar-height));overflow-y:auto}.mud-dialog.mud-dialog-rtl .mud-dialog-title .mud-button-close{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-close{top:8px;right:8px;position:absolute}.mud-dialog .mud-dialog-content{position:relative;flex:1 1 auto;overflow:auto;padding:0px 24px;margin:8px 0px;-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:0px;margin:12px 0px}.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;overflow-y:hidden}@-webkit-keyframes mud-open-dialog-center{0%{opacity:0}1%{-webkit-transform:scale(0.5);transform:scale(0.5);opacity:1}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes mud-open-dialog-center{0%{opacity:0}1%{-webkit-transform:scale(0.5);transform:scale(0.5);opacity:1}100%{-webkit-transform:scale(1);transform:scale(1)}}.mud-focus-trap{display:contents}.mud-focus-trap .mud-focus-trap-child-container{display:contents}.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:0px;padding-bottom:0px}.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-flex-break{flex-basis:100%;width:0}.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% + 4px);margin-left:-4px;margin-top:-4px}.mud-grid-spacing-xs-1>.mud-grid-item{padding-left:4px;padding-top:4px}.mud-grid-spacing-xs-2{width:calc(100% + 8px);margin-left:-8px;margin-top:-8px}.mud-grid-spacing-xs-2>.mud-grid-item{padding-left:8px;padding-top:8px}.mud-grid-spacing-xs-3{width:calc(100% + 12px);margin-left:-12px;margin-top:-12px}.mud-grid-spacing-xs-3>.mud-grid-item{padding-left:12px;padding-top:12px}.mud-grid-spacing-xs-4{width:calc(100% + 16px);margin-left:-16px;margin-top:-16px}.mud-grid-spacing-xs-4>.mud-grid-item{padding-left:16px;padding-top:16px}.mud-grid-spacing-xs-5{width:calc(100% + 20px);margin-left:-20px;margin-top:-20px}.mud-grid-spacing-xs-5>.mud-grid-item{padding-left:20px;padding-top:20px}.mud-grid-spacing-xs-6{width:calc(100% + 24px);margin-left:-24px;margin-top:-24px}.mud-grid-spacing-xs-6>.mud-grid-item{padding-left:24px;padding-top:24px}.mud-grid-spacing-xs-7{width:calc(100% + 28px);margin-left:-28px;margin-top:-28px}.mud-grid-spacing-xs-7>.mud-grid-item{padding-left:28px;padding-top:28px}.mud-grid-spacing-xs-8{width:calc(100% + 32px);margin-left:-32px;margin-top:-32px}.mud-grid-spacing-xs-8>.mud-grid-item{padding-left:32px;padding-top:32px}.mud-grid-spacing-xs-9{width:calc(100% + 36px);margin-left:-36px;margin-top:-36px}.mud-grid-spacing-xs-9>.mud-grid-item{padding-left:36px;padding-top:36px}.mud-grid-spacing-xs-10{width:calc(100% + 40px);margin-left:-40px;margin-top:-40px}.mud-grid-spacing-xs-10>.mud-grid-item{padding-left:40px;padding-top:40px}.mud-grid-spacing-xs-11{width:calc(100% + 44px);margin-left:-44px;margin-top:-44px}.mud-grid-spacing-xs-11>.mud-grid-item{padding-left:44px;padding-top:44px}.mud-grid-spacing-xs-12{width:calc(100% + 48px);margin-left:-48px;margin-top:-48px}.mud-grid-spacing-xs-12>.mud-grid-item{padding-left:48px;padding-top:48px}.mud-grid-spacing-xs-13{width:calc(100% + 52px);margin-left:-52px;margin-top:-52px}.mud-grid-spacing-xs-13>.mud-grid-item{padding-left:52px;padding-top:52px}.mud-grid-spacing-xs-14{width:calc(100% + 56px);margin-left:-56px;margin-top:-56px}.mud-grid-spacing-xs-14>.mud-grid-item{padding-left:56px;padding-top:56px}.mud-grid-spacing-xs-15{width:calc(100% + 60px);margin-left:-60px;margin-top:-60px}.mud-grid-spacing-xs-15>.mud-grid-item{padding-left:60px;padding-top:60px}.mud-grid-spacing-xs-16{width:calc(100% + 64px);margin-left:-64px;margin-top:-64px}.mud-grid-spacing-xs-16>.mud-grid-item{padding-left:64px;padding-top:64px}.mud-grid-spacing-xs-17{width:calc(100% + 68px);margin-left:-68px;margin-top:-68px}.mud-grid-spacing-xs-17>.mud-grid-item{padding-left:68px;padding-top:68px}.mud-grid-spacing-xs-18{width:calc(100% + 72px);margin-left:-72px;margin-top:-72px}.mud-grid-spacing-xs-18>.mud-grid-item{padding-left:72px;padding-top:72px}.mud-grid-spacing-xs-19{width:calc(100% + 76px);margin-left:-76px;margin-top:-76px}.mud-grid-spacing-xs-19>.mud-grid-item{padding-left:76px;padding-top:76px}.mud-grid-spacing-xs-20{width:calc(100% + 80px);margin-left:-80px;margin-top:-80px}.mud-grid-spacing-xs-20>.mud-grid-item{padding-left:80px;padding-top:80px}@media(min-width: 0px){.mud-grid-item-xs-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-xs-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-xs-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-xs-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-xs-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-xs-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-xs-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-xs-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-xs-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-xs-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-xs-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-xs-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 600px){.mud-grid-item-sm-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-sm-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-sm-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-sm-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-sm-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-sm-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-sm-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-sm-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-sm-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-sm-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-sm-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-sm-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 960px){.mud-grid-item-md-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-md-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-md-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-md-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-md-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-md-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-md-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-md-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-md-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-md-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-md-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-md-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 1280px){.mud-grid-item-lg-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-lg-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-lg-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-lg-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-lg-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-lg-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-lg-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-lg-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-lg-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-lg-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-lg-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-lg-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 1920px){.mud-grid-item-xl-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-xl-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-xl-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-xl-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-xl-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-xl-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-xl-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-xl-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-xl-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-xl-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-xl-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-xl-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 2560px){.mud-grid-item-xxl-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-xxl-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-xxl-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-xxl-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-xxl-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-xxl-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-xxl-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-xxl-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-xxl-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-xxl-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-xxl-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-xxl-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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-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(0.4, 0, 0.2, 1) 0ms}.mud-paper-square{border-radius:0px}.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(0.4, 0, 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{margin:0;flex-shrink:0;border-color:var(--mud-palette-divider);border-width:1px;border-style:solid none none none}.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{border-color:var(--mud-palette-divider-light)}.mud-divider-middle{margin-left:16px;margin-right:16px}.mud-divider-vertical{border-style:none solid none none;height:100%}.mud-divider-flexitem{height:auto;align-self:stretch}.mud-divider-fullwidth{flex-grow:1;width:100%}.mud-drop-zone{position:relative;transition:all 300ms cubic-bezier(0.4, 0, 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(0.25, 0.8, 0.5, 1);border-radius:var(--mud-default-borderradius)}.mud-expansion-panels.mud-expansion-panels-square{border-radius:0px}.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(0.25, 0.8, 0.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(0.25, 0.8, 0.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(0.25, 0.8, 0.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-bottom:16px;flex:1 1 auto;max-width:100%}.mud-expand-panel .mud-expand-panel-content.mud-expand-panel-gutters{padding-left:24px;padding-right:24px}.mud-expand-panel .mud-expand-panel-content.mud-expand-panel-dense{padding-top:0px;padding-bottom:0px}.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:0px 3px 5px -1px rgba(0,0,0,.2),0px 6px 10px 0px rgba(0,0,0,.14),0px 1px 18px 0px rgba(0,0,0,.12);box-sizing:border-box;min-height:36px;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:50%;color:var(--mud-palette-text-primary);--mud-ripple-color: var(--mud-palette-text-primary);background-color:var(--mud-palette-action-default-hover)}@media(hover: hover)and (pointer: fine){.mud-fab:hover{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);text-decoration:none;background-color:var(--mud-palette-action-disabled-background)}}.mud-fab:focus-visible{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);text-decoration:none;background-color:var(--mud-palette-action-disabled-background)}.mud-fab:active{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 12px 17px 2px rgba(0,0,0,.14),0px 5px 22px 4px rgba(0,0,0,.12);text-decoration:none;background-color:var(--mud-palette-action-disabled-background)}.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}@media(hover: hover)and (pointer: fine){.mud-fab:disabled:hover{background-color:var(--mud-palette-action-disabled-background)}}.mud-fab-disable-elevation{box-shadow:none}@media(hover: hover)and (pointer: fine){.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);--mud-ripple-color: var(--mud-palette-primary-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-fab-primary:hover{background-color:var(--mud-palette-primary-darken)}}.mud-fab-primary:focus-visible,.mud-fab-primary:active{background-color:var(--mud-palette-primary-darken)}.mud-fab-secondary{color:var(--mud-palette-secondary-text);--mud-ripple-color: var(--mud-palette-secondary-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-fab-secondary:hover{background-color:var(--mud-palette-secondary-darken)}}.mud-fab-secondary:focus-visible,.mud-fab-secondary:active{background-color:var(--mud-palette-secondary-darken)}.mud-fab-tertiary{color:var(--mud-palette-tertiary-text);--mud-ripple-color: var(--mud-palette-tertiary-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-fab-tertiary:hover{background-color:var(--mud-palette-tertiary-darken)}}.mud-fab-tertiary:focus-visible,.mud-fab-tertiary:active{background-color:var(--mud-palette-tertiary-darken)}.mud-fab-info{color:var(--mud-palette-info-text);--mud-ripple-color: var(--mud-palette-info-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-fab-info:hover{background-color:var(--mud-palette-info-darken)}}.mud-fab-info:focus-visible,.mud-fab-info:active{background-color:var(--mud-palette-info-darken)}.mud-fab-success{color:var(--mud-palette-success-text);--mud-ripple-color: var(--mud-palette-success-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-fab-success:hover{background-color:var(--mud-palette-success-darken)}}.mud-fab-success:focus-visible,.mud-fab-success:active{background-color:var(--mud-palette-success-darken)}.mud-fab-warning{color:var(--mud-palette-warning-text);--mud-ripple-color: var(--mud-palette-warning-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-fab-warning:hover{background-color:var(--mud-palette-warning-darken)}}.mud-fab-warning:focus-visible,.mud-fab-warning:active{background-color:var(--mud-palette-warning-darken)}.mud-fab-error{color:var(--mud-palette-error-text);--mud-ripple-color: var(--mud-palette-error-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-fab-error:hover{background-color:var(--mud-palette-error-darken)}}.mud-fab-error:focus-visible,.mud-fab-error:active{background-color:var(--mud-palette-error-darken)}.mud-fab-dark{color:var(--mud-palette-dark-text);--mud-ripple-color: var(--mud-palette-dark-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-fab-dark:hover{background-color:var(--mud-palette-dark-darken)}}.mud-fab-dark:focus-visible,.mud-fab-dark:active{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-form{display:flex;flex-direction:column}.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.mud-list-item-disabled .mud-list-item-secondary-text{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:rgba(0,0,0,0);-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.mud-list-item-clickable:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-list-item-clickable:focus:not(.mud-selected-item),.mud-list-item-clickable:active{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-list-item-secondary-text{font-weight:500;color:var(--mud-palette-text-secondary)}.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;user-select:none}.mud-link.mud-link-underline-none{text-decoration:none}.mud-link.mud-link-underline-hover{text-decoration:none}@media(hover: hover)and (pointer: fine){.mud-link.mud-link-underline-hover:hover{text-decoration:underline}}.mud-link.mud-link-underline-hover:focus-visible,.mud-link.mud-link-underline-hover:active{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:rgba(0,0,0,0);transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,padding 250ms cubic-bezier(0.4, 0, 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}@media(hover: hover)and (pointer: fine){.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(0.25, 0.8, 0.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)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:var(--mud-palette-action-default-hover)}}.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled):active: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);--mud-ripple-color: var(--mud-palette-primary);background-color:var(--mud-palette-primary-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}}.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.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);--mud-ripple-color: var(--mud-palette-secondary);background-color:var(--mud-palette-secondary-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}}.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.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);--mud-ripple-color: var(--mud-palette-tertiary);background-color:var(--mud-palette-tertiary-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}}.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.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);--mud-ripple-color: var(--mud-palette-info);background-color:var(--mud-palette-info-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}}.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.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);--mud-ripple-color: var(--mud-palette-success);background-color:var(--mud-palette-success-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}}.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.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);--mud-ripple-color: var(--mud-palette-warning);background-color:var(--mud-palette-warning-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}}.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.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);--mud-ripple-color: var(--mud-palette-error);background-color:var(--mud-palette-error-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}}.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.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);--mud-ripple-color: var(--mud-palette-dark);background-color:var(--mud-palette-dark-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}}.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.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-mini .mud-nav-link{line-height:1;display:flex;align-items:center}.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:rgba(0,0,0,0)}.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:rgba(0,0,0,0)}.page-content-navigation .page-content-navigation-navlink .mud-nav-link .mud-nav-link-text{margin-left:0px;margin-inline-start:0px;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}.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:0px;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:0px;visibility:visible}.mud-picker-pos-above.mud-picker-pos-left{left:50%;transform:translateX(-50%)}.mud-picker-pos-above.mud-picker-pos-right{right:0px}.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:0px}.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)}@media(hover: hover)and (pointer: fine){.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}@media(hover: hover)and (pointer: fine){.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(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.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(0.4, 0, 0.2, 1) 0ms;align-items:center;justify-content:center;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.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}@media(hover: hover)and (pointer: fine){.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)}@media(hover: hover)and (pointer: fine){.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)))}@media(hover: hover)and (pointer: fine){.mud-range-selection-primary:hover{color:var(--mud-palette-primary-text) !important;background-color:var(--mud-palette-primary) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-secondary:hover{color:var(--mud-palette-secondary-text) !important;background-color:var(--mud-palette-secondary) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-tertiary:hover{color:var(--mud-palette-tertiary-text) !important;background-color:var(--mud-palette-tertiary) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-info:hover{color:var(--mud-palette-info-text) !important;background-color:var(--mud-palette-info) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-success:hover{color:var(--mud-palette-success-text) !important;background-color:var(--mud-palette-success) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-warning:hover{color:var(--mud-palette-warning-text) !important;background-color:var(--mud-palette-warning) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-error:hover{color:var(--mud-palette-error-text) !important;background-color:var(--mud-palette-error) !important}}@media(hover: hover)and (pointer: fine){.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%}@media(hover: hover)and (pointer: fine){.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)}@media(hover: hover)and (pointer: fine){.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:-0.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:0em}.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:0em}.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;touch-action:pinch-zoom;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;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 0px}.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 0px}.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 0px}.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 0px}.mud-picker-time-container .mud-picker-time-clock .mud-picker-time-clock-pointer.mud-picker-time-clock-pointer-animation{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,height 150ms cubic-bezier(0.4, 0, 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:rgba(0,0,0,0);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:rgba(0,0,0,0) !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(0.8, 0.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;touch-action:pinch-zoom}.mud-picker-color-picker .mud-picker-color-overlay{width:100%;height:100%;user-select:none}.mud-picker-color-picker .mud-picker-color-overlay.mud-picker-color-overlay-white{background:linear-gradient(to right, white 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%, black 100%)}.mud-picker-color-picker .mud-picker-color-selector{position:absolute;top:-13px;left:-13px;pointer-events:none}.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) 0px 1px 4px 0px}.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) 0px 1px 4px 0px}.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, #FF0000, #ff0 16.66%, #0f0 33.33%, #0ff 50%, #00f 66.66%, #f0f 83.33%, #FF0000)}.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(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-radius 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:var(--mud-default-borderradius);box-shadow:0 0 6px rgba(127,130,134,.18)}@media(hover: hover)and (pointer: fine){.mud-picker-color-dot:hover{cursor:pointer;box-shadow:0px 3px 1px -2px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 1px 5px 0px 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:0px 3px 1px -2px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 1px 5px 0px 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:0px;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}@media(hover: hover)and (pointer: fine){.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)}@media(hover: hover)and (pointer: fine){.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:var(--mud-palette-skeleton)}.mud-skeleton-text{height:auto;transform:scale(1, 0.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, 0.04), transparent)}.mud-slider{color:var(--mud-palette-text-primary);display:inline-block;width:100%;user-select:none;touch-action:pinch-zoom}.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:rgba(0,0,0,0);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(0.4, 0, 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(0.4, 0, 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 #fff !important;transform:scale(4, 4)}@media(hover: hover)and (pointer: fine){.mud-slider .mud-slider-input:disabled::-webkit-slider-thumb:hover{box-shadow:0 0 0 1px #fff !important}}.mud-slider .mud-slider-input:disabled::-moz-range-thumb{background-color:#000;color:#fff;box-shadow:0 0 0 1px #fff !important;transform:scale(4, 4)}@media(hover: hover)and (pointer: fine){.mud-slider .mud-slider-input:disabled::-moz-range-thumb:hover{box-shadow:0 0 0 1px #fff !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), 0.3)}.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-primary-rgb), 0.3)}.mud-slider.mud-slider-primary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-primary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3)}.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-primary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-primary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-primary-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-primary-rgb), 0.24)}}.mud-slider.mud-slider-primary .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-primary .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-primary-rgb), 0.24)}.mud-slider.mud-slider-primary .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-primary .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-primary-rgb), 0.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), 0.3)}.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-secondary-rgb), 0.3)}.mud-slider.mud-slider-secondary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-secondary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3)}.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-secondary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-secondary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-secondary-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-secondary-rgb), 0.24)}}.mud-slider.mud-slider-secondary .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-secondary .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-secondary-rgb), 0.24)}.mud-slider.mud-slider-secondary .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-secondary .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-secondary-rgb), 0.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), 0.3)}.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-tertiary-rgb), 0.3)}.mud-slider.mud-slider-tertiary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-tertiary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3)}.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-tertiary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-tertiary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-tertiary-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-tertiary-rgb), 0.24)}}.mud-slider.mud-slider-tertiary .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-tertiary .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-tertiary-rgb), 0.24)}.mud-slider.mud-slider-tertiary .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-tertiary .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-tertiary-rgb), 0.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), 0.3)}.mud-slider.mud-slider-info .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-info-rgb), 0.3)}.mud-slider.mud-slider-info .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-info);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3)}.mud-slider.mud-slider-info .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-info);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-info .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-info-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-info .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-info-rgb), 0.24)}}.mud-slider.mud-slider-info .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-info .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-info-rgb), 0.24)}.mud-slider.mud-slider-info .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-info .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-info-rgb), 0.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), 0.3)}.mud-slider.mud-slider-success .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-success-rgb), 0.3)}.mud-slider.mud-slider-success .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-success);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3)}.mud-slider.mud-slider-success .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-success);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-success .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-success-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-success .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-success-rgb), 0.24)}}.mud-slider.mud-slider-success .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-success .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-success-rgb), 0.24)}.mud-slider.mud-slider-success .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-success .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-success-rgb), 0.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), 0.3)}.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-warning-rgb), 0.3)}.mud-slider.mud-slider-warning .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-warning);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3)}.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-warning);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-warning .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-warning-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-warning-rgb), 0.24)}}.mud-slider.mud-slider-warning .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-warning .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-warning-rgb), 0.24)}.mud-slider.mud-slider-warning .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-warning .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-warning-rgb), 0.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), 0.3)}.mud-slider.mud-slider-error .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-error-rgb), 0.3)}.mud-slider.mud-slider-error .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-error);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3)}.mud-slider.mud-slider-error .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-error);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-error .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-error-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-error .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-error-rgb), 0.24)}}.mud-slider.mud-slider-error .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-error .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-error-rgb), 0.24)}.mud-slider.mud-slider-error .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-error .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-error-rgb), 0.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), 0.3)}.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-dark-rgb), 0.3)}.mud-slider.mud-slider-dark .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-dark);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3)}.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-dark);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-dark .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-dark-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-dark-rgb), 0.24)}}.mud-slider.mud-slider-dark .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-dark .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-dark-rgb), 0.24)}.mud-slider.mud-slider-dark .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-dark .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-dark-rgb), 0.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:50%}.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(0.4, 0, 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:0px}.mud-progress-circular-circle.mud-progress-static{transition:stroke-dashoffset 300ms cubic-bezier(0.4, 0, 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(0.65, 0.815, 0.735, 0.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(0.65, 0.815, 0.735, 0.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(0.165, 0.84, 0.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(0.165, 0.84, 0.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(0.65, 0.815, 0.735, 0.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(0.165, 0.84, 0.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(0.65, 0.815, 0.735, 0.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(0.165, 0.84, 0.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, hsla(0, 0%, 100%, 0.25) 25%, transparent 0, transparent 50%, hsla(0, 0%, 100%, 0.25) 0, hsla(0, 0%, 100%, 0.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-progress-linear.mud-progress-linear-rounded::before{border-radius:var(--mud-default-borderradius)}.mud-radio{cursor:pointer;display:inline-flex;align-items:center;vertical-align:middle;-webkit-tap-highlight-color:rgba(0,0,0,0);color:var(--mud-palette-action-default)}.mud-radio>.mud-radio-content{color:var(--mud-palette-text-primary)}@media(hover: hover)and (pointer: fine){.mud-radio .mud-disabled:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-radio .mud-disabled:hover>.mud-radio-content{color:var(--mud-palette-text-disabled)}.mud-radio .mud-disabled:hover *{cursor:default;color:var(--mud-palette-text-disabled)}}.mud-radio.mud-disabled,.mud-radio .mud-disabled:focus-visible,.mud-radio .mud-disabled:active{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-radio.mud-disabled>.mud-radio-content,.mud-radio .mud-disabled:focus-visible>.mud-radio-content,.mud-radio .mud-disabled:active>.mud-radio-content{color:var(--mud-palette-text-disabled)}.mud-radio.mud-disabled *,.mud-radio .mud-disabled:focus-visible *,.mud-radio .mud-disabled:active *{cursor:default;color:var(--mud-palette-text-disabled)}.mud-radio.mud-readonly,.mud-radio .mud-readonly:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-radio .mud-radio-dense{padding:4px}.mud-radio.mud-checked{color:var(--mud-palette-action-default)}@media(hover: hover)and (pointer: fine){.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, 0.2, 1) 0ms}.mud-radio-icon-checked{left:0;position:absolute;transform:scale(0);transition:transform 150ms cubic-bezier(0.4, 0, 1, 1) 0ms}.mud-radio-content-placement-start{margin-right:-11px;margin-inline-end:-11px;flex-direction:row-reverse}.mud-radio-content-placement-start.mud-radio-with-content{margin-left:16px;margin-inline-start:16px}.mud-radio-content-placement-end{margin-left:-11px;margin-inline-start:-11px;flex-direction:row}.mud-radio-content-placement-end.mud-radio-with-content{margin-right:16px;margin-inline-end:16px}.mud-radio-content-placement-top{margin-inline-end:unset;flex-direction:column-reverse}.mud-radio-content-placement-top.mud-radio-with-content{margin-left:16px;margin-inline-start:16px}.mud-radio-content-placement-bottom{margin-inline-end:unset;flex-direction:column}.mud-radio-content-placement-bottom.mud-radio-with-content{margin-left:16px;margin-inline-start:16px}.mud-rating-root{display:inline-flex;color:#ffb400}.mud-rating-root:focus-visible,.mud-rating-root:active{outline:none}.mud-rating-root:focus-visible:not(.mud-disabled),.mud-rating-root:active:not(.mud-disabled){background-color:var(--mud-palette-action-default-hover)}.mud-rating-item{cursor:pointer;transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-rating-item.mud-rating-item-active{transform:scale(1.2)}.mud-rating-item.mud-disabled{cursor:default;pointer-events:none}.mud-rating-item.mud-disabled *{cursor:default;color:var(--mud-palette-text-disabled)}@media(hover: hover)and (pointer: fine){.mud-rating-item .mud-disabled:hover{cursor:default;pointer-events:none}.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:0px 3px 5px -1px rgba(0,0,0,.2),0px 6px 10px 0px rgba(0,0,0,.14),0px 1px 18px 0px rgba(0,0,0,.12);touch-action:pinch-zoom}.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;overflow-wrap:anywhere}.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:rgba(0,0,0,0)}.mud-switch.mud-disabled{color:var(--mud-palette-text-disabled) !important;cursor:default}.mud-switch.mud-readonly{cursor:default;background-color:rgba(0,0,0,0) !important}@media(hover: hover)and (pointer: fine){.mud-switch .mud-readonly:hover{cursor:default;background-color:rgba(0,0,0,0) !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(0.4, 0, 0.2, 1) 0ms,background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:9px;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(0.4, 0, 0.2, 1) 0ms,transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-switch-base.mud-checked{transform:translateX(20px)}.mud-switch-base.mud-checked+.mud-switch-track{opacity:.5}@media(hover: hover)and (pointer: fine){.mud-switch-base:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-switch-base.mud-switch-disabled{color:var(--mud-palette-gray-default) !important}.mud-switch-base.mud-switch-disabled+.mud-switch-track{opacity:.12 !important}@media(hover: hover)and (pointer: fine){.mud-switch-base.mud-switch-disabled:hover{cursor:default;background-color:rgba(0,0,0,0) !important}}.mud-switch-base.mud-switch-disabled:focus-visible,.mud-switch-base.mud-switch-disabled:active{cursor:default;background-color:rgba(0,0,0,0) !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-small{width:14px;height:14px;box-shadow:0px 2px 1px -1px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 1px 3px 0px rgba(0,0,0,.12);border-radius:50%;background-color:currentColor}.mud-switch-button .mud-switch-thumb-medium{width:20px;height:20px;box-shadow:0px 2px 1px -1px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 1px 3px 0px rgba(0,0,0,.12);border-radius:50%;background-color:currentColor}.mud-switch-button .mud-switch-thumb-large{width:26px;height:26px;box-shadow:0px 2px 1px -1px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 1px 3px 0px rgba(0,0,0,.12);border-radius:50%;background-color:currentColor}.mud-switch-base-small.mud-switch-base{padding:5px}.mud-switch-base-medium.mud-switch-base{padding:9px}.mud-switch-base-large.mud-switch-base{padding:13px}.mud-switch-span-small.mud-switch-span{padding:7px;width:44px;height:24px}.mud-switch-span-medium.mud-switch-span{padding:12px;width:58px;height:38px}.mud-switch-span-large.mud-switch-span{padding:17px;width:72px;height:52px}.mud-switch-label-small{font-size:.8125rem !important}.mud-switch-label-medium{font-size:1rem !important}.mud-switch-label-large{font-size:1.1875rem !important}.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%;min-width:0}.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-gray-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 rgba(0,0,0,0);border-bottom:16px solid rgba(0,0,0,0);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 rgba(0,0,0,0);border-bottom:16px solid rgba(0,0,0,0);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-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-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-input{font-size:var(--mud-typography-input-size);font-family:var(--mud-typography-input-family);font-weight:var(--mud-typography-input-weight);line-height:var(--mud-typography-input-lineheight);letter-spacing:var(--mud-typography-input-letterspacing);text-transform:var(--mud-typography-input-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-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-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-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(0.4, 0, 0.2, 1) 0ms}.mud-table.mud-table-square{border-radius:0px}.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}.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,.mud-table-root>.mud-table-foot: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}@media(hover: hover)and (pointer: fine){.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(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 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-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell:last-child{border-right:1px solid var(--mud-palette-table-lines);border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell:first-child{border-right:none;border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-head.table-head-bordered .mud-table-row .mud-table-cell:last-child{border-right:1px solid var(--mud-palette-table-lines);border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-head.table-head-bordered .mud-table-row .mud-table-cell:only-child{border-right:none;border-top-right-radius:var(--mud-default-borderradius)}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-head .mud-table-row th.mud-table-cell:first-child{border-right:none;border-top-right-radius:var(--mud-default-borderradius)}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-foot.table-foot-bordered .mud-table-row .mud-table-cell:last-child{border-right:1px solid var(--mud-palette-table-lines);border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-foot .mud-table-row .mud-table-cell:first-child{border-right:none}.mud-table-sticky-header .mud-table-container{overflow-x:auto}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell:first-child{border-radius:var(--mud-default-borderradius) 0px 0px 0px}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell:last-child{border-radius:0px var(--mud-default-borderradius) 0px 0px}.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 .mud-table-foot{position:sticky;z-index:2;bottom:0}.mud-table-sticky-footer * .mud-table-root .mud-table-foot * .mud-table-cell{background-color:var(--mud-palette-surface)}.mud-table-row{color:inherit;display:table-row;outline:0;vertical-align:middle}@media(hover: hover)and (pointer: fine){.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)}@media(hover: hover)and (pointer: fine){.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;flex-wrap:nowrap}.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:0px !important;min-width:52px}.mud-table-pagination-select .mud-select-input{margin-top:0px !important;padding:0 7px !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{width:100%}.mud-table-empty-row{background-color:var(--mud-palette-surface);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:revert}.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}.mud-xs-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-xs-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-sm-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-sm-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-md-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-md-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-lg-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-lg-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-xl-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-xl-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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-xxl-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-xxl-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}.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 .mud-tooltip-root{width:auto}.mud-tabs.mud-tabs-vertical-reverse{flex-direction:row-reverse}.mud-tabs.mud-tabs-rounded{border-radius:var(--mud-default-borderradius);overflow:hidden}.mud-tabs.mud-tabs-rounded .mud-tabs-tabbar{border-radius:var(--mud-default-borderradius)}.mud-tabs.mud-tabs-rounded .mud-tabs-panels{border-radius:var(--mud-default-borderradius)}.mud-tabs-tabbar{position:relative;background-color:var(--mud-palette-surface)}.mud-tabs-tabbar.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-tabbar.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-tabbar.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-tabbar.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-tabbar.mud-tabs-rounded{border-radius:var(--mud-default-borderradius)}.mud-tabs-tabbar.mud-tabs-vertical .mud-tabs-tabbar-inner{flex-direction:column}.mud-tabs-tabbar.mud-tabs-vertical .mud-tabs-tabbar-inner .mud-tabs-scroll-button .mud-button-root{width:100%;border-radius:0px;height:32px}.mud-tabs-tabbar.mud-tabs-vertical .mud-tabs-tabbar-inner .mud-tabs-scroll-button .mud-button-root .mud-icon-button-label .mud-icon-root{transform:rotate(90deg)}.mud-tabs-tabbar .mud-tabs-tabbar-inner{display:flex;min-height:48px}.mud-tabs-tabbar-content{width:100%;flex:1 1 auto;display:inline-block;position:relative;white-space:nowrap;overflow:hidden}.mud-tabs-tabbar-content .mud-tabs-tabbar-wrapper{width:max-content;position:inherit;display:flex;transition:.3s cubic-bezier(0.25, 0.8, 0.5, 1)}.mud-tabs-tabbar-content .mud-tabs-tabbar-wrapper.mud-tabs-centered{margin:auto}.mud-tabs-tabbar-content .mud-tabs-tabbar-wrapper.mud-tabs-vertical{flex-direction:column}.mud-tabs-panels{position:relative;transition:.3s cubic-bezier(0.25, 0.8, 0.5, 1)}.mud-tabs-panels.mud-tabs-vertical{display:flex;flex-grow:1}.mud-tab{width:100%;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(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.mud-tab:hover{cursor:pointer;background-color:var(--mud-palette-action-default-hover)}}.mud-tab.mud-tab-active{color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.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;bottom:0;transition:left .3s cubic-bezier(0.64, 0.09, 0.08, 1);will-change:left}.mud-tab-slider.mud-tab-slider-horizontal.mud-tab-slider-horizontal-reverse{top:0;bottom:unset}.mud-tab-slider.mud-tab-slider-vertical{width:2px;right:0;transition:top .3s cubic-bezier(0.64, 0.09, 0.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-tabbar-primary{background-color:var(--mud-palette-primary);color:var(--mud-palette-primary-text)}.mud-tabs-tabbar-primary .mud-tab-slider{background:var(--mud-palette-primary-text)}.mud-tabs-tabbar-primary .mud-tab.mud-tab-active{color:var(--mud-palette-primary-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-primary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-primary-lighten)}}.mud-tabs-tabbar-secondary{background-color:var(--mud-palette-secondary);color:var(--mud-palette-secondary-text)}.mud-tabs-tabbar-secondary .mud-tab-slider{background:var(--mud-palette-secondary-text)}.mud-tabs-tabbar-secondary .mud-tab.mud-tab-active{color:var(--mud-palette-secondary-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-secondary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-secondary-lighten)}}.mud-tabs-tabbar-tertiary{background-color:var(--mud-palette-tertiary);color:var(--mud-palette-tertiary-text)}.mud-tabs-tabbar-tertiary .mud-tab-slider{background:var(--mud-palette-tertiary-text)}.mud-tabs-tabbar-tertiary .mud-tab.mud-tab-active{color:var(--mud-palette-tertiary-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-tertiary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-tertiary-lighten)}}.mud-tabs-tabbar-info{background-color:var(--mud-palette-info);color:var(--mud-palette-info-text)}.mud-tabs-tabbar-info .mud-tab-slider{background:var(--mud-palette-info-text)}.mud-tabs-tabbar-info .mud-tab.mud-tab-active{color:var(--mud-palette-info-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-info .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-info-lighten)}}.mud-tabs-tabbar-success{background-color:var(--mud-palette-success);color:var(--mud-palette-success-text)}.mud-tabs-tabbar-success .mud-tab-slider{background:var(--mud-palette-success-text)}.mud-tabs-tabbar-success .mud-tab.mud-tab-active{color:var(--mud-palette-success-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-success .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-success-lighten)}}.mud-tabs-tabbar-warning{background-color:var(--mud-palette-warning);color:var(--mud-palette-warning-text)}.mud-tabs-tabbar-warning .mud-tab-slider{background:var(--mud-palette-warning-text)}.mud-tabs-tabbar-warning .mud-tab.mud-tab-active{color:var(--mud-palette-warning-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-warning .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-warning-lighten)}}.mud-tabs-tabbar-error{background-color:var(--mud-palette-error);color:var(--mud-palette-error-text)}.mud-tabs-tabbar-error .mud-tab-slider{background:var(--mud-palette-error-text)}.mud-tabs-tabbar-error .mud-tab.mud-tab-active{color:var(--mud-palette-error-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-error .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-error-lighten)}}.mud-tabs-tabbar-dark{background-color:var(--mud-palette-dark);color:var(--mud-palette-dark-text)}.mud-tabs-tabbar-dark .mud-tab-slider{background:var(--mud-palette-dark-text)}.mud-tabs-tabbar-dark .mud-tab.mud-tab-active{color:var(--mud-palette-dark-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-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-tabbar .mud-tab{padding:6px 14px}.mud-dynamic-tabs .mud-tabs-tabbar .mud-tab .mud-icon-button{padding:4px;margin-right:-4px;margin-inline-end:-4px;margin-inline-start:unset}.mud-dynamic-tabs .mud-tabs-tabbar .mud-tab .mud-tabs-panel-header-before{padding-right:8px;padding-inline-end:8px;padding-inline-start:unset}.mud-dynamic-tabs .mud-tabs-tabbar .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-autocomplete--with-progress .mud-select-input input{padding-right:3.5rem !important}.mud-select.mud-autocomplete--with-progress .mud-input-adorned-end input{padding-right:4.5rem !important}.mud-select.mud-autocomplete--with-progress .mud-select-input .mud-icon-button{display:none !important}.mud-select.mud-autocomplete--with-progress .progress-indicator-circular{position:absolute;width:100%;top:0;bottom:0;display:flex;align-items:center;justify-content:flex-end;padding-top:.25rem;padding-bottom:.25rem;padding-right:1rem}.mud-select.mud-autocomplete--with-progress .mud-progress-linear{position:absolute;bottom:-1px;height:2px}.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-rtl-provider .mud-select .progress-indicator-circular--with-adornment{padding-right:1rem}.mud-rtl-provider.mud-application-layout-rtl .mud-select .progress-indicator-circular--with-adornment{padding-right:0rem !important;padding-left:1rem !important}.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;box-sizing:border-box;align-items:center;color-scheme:var(--mud-native-html-color-scheme)}.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}@media(hover: hover)and (pointer: fine){.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, 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, 0.2, 1) 0ms;background-color:rgba(0,0,0,.09);border-top-left-radius:4px;border-top-right-radius:4px}@media(hover: hover)and (pointer: fine){.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(0.4, 0, 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, 0.2, 1) 0ms;border-bottom:2px solid var(--mud-palette-primary);pointer-events:none}@media(hover: hover)and (pointer: fine){.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:0px}.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(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.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:1lh;margin:0;display:block;padding:6px 0 7px;min-width:0;background:none;position:relative;box-sizing:content-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mud-input>input.mud-input-root::placeholder,div.mud-input-slot.mud-input-root::placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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,.mud-input>input.mud-input-root:active,div.mud-input-slot.mud-input-root:focus,div.mud-input-slot.mud-input-root:active{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:rgba(0,0,0,0);height:auto;resize:none;cursor:auto}.mud-input>textarea.mud-input-root::placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root::-webkit-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root:-moz-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root::-moz-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root:-ms-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root::-ms-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 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,.mud-input>textarea.mud-input-root:active{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:rgba(0,0,0,0)}.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}.mud-input-control.mud-input-control-full-width{width:100%}.mud-input-control.mud-input-control-boolean-input{flex:none;margin:0}.mud-input-control.mud-input-outlined-with-label{margin-top:8px;margin-bottom:4px}.mud-input-control.mud-input-control-margin-dense{margin:4px 0px}.mud-input-control.mud-input-control-margin-dense.mud-input-outlined-with-label{margin-top:8px;margin-bottom:4px}.mud-input-control.mud-input-control-margin-normal{margin:8px 0px}.mud-input-control.mud-input-control-margin-normal.mud-input-outlined-with-label{margin-top:16px;margin-bottom:8px}.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.mud-input-text-with-label{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, 0.2, 1) 0ms,transform 200ms cubic-bezier(0, 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;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.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(0.75);transform-origin:top left}.mud-input-label-animated{transition:color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms}.mud-input-label-filled{z-index:1;transform:translate(12px, 20px) scale(1);max-width:calc(100% - 12px);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);max-width:calc(100% - 14px);pointer-events:none;background-color:var(--mud-palette-surface);padding:0px 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(0.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(0.75);max-width:calc(100% - 12px)}.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(0.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(0.75);max-width:calc(100% - 14px)}.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(0.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(0.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(0.75)}.mud-file-upload{flex-grow:0}.mud-file-upload>.mud-input-control-input-container{display:initial !important}.mud-file-upload.mud-input-control{margin-top:0}.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(0.25, 0.8, 0.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:rgba(0,0,0,0);background-color:rgba(0,0,0,0);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:0px;padding:0px;list-style:none;overflow:auto}.mud-treeview.mud-treeview-selected-primary .mud-treeview-item-content.mud-treeview-item-selected{color:var(--mud-palette-primary);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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:0px;padding:0px;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:rgba(0,0,0,0)}.mud-treeview-item .mud-treeview-item-arrow .mud-icon-button,.mud-treeview-item .mud-treeview-item-checkbox .mud-icon-button{padding:4px}.mud-treeview-item.mud-treeview-item-disabled{color:var(--mud-palette-action-disabled) !important;cursor:default !important;pointer-events:none !important}.mud-treeview-item-content{width:100%;display:flex;padding:4px 8px;align-items:center;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.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(0.25, 0.8, 0.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}.mud-treeview-select-none{user-select:none}@keyframes rotation{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.mud-application-layout-rtl .mud-treeview-item-arrow{transform:scaleX(-1)}.mud-data-grid th{position:relative}.mud-data-grid .drop-allowed{color:var(--mud-palette-success)}.mud-data-grid .drop-not-allowed{color:var(--mud-palette-error)}.mud-data-grid .drag-icon-options{transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;opacity:0;cursor:grab}.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.filter-header-cell{padding:6px 24px 6px 16px;padding-inline-start:16px;padding-inline-end:24px}.mud-data-grid .mud-table-cell.sticky-left{left:0px;position:sticky;background-color:var(--mud-palette-background-gray);z-index:1}.mud-data-grid .mud-table-cell.sticky-right{right:0px;position:sticky;background-color:var(--mud-palette-background-gray);z-index:1}.mud-data-grid .mud-table-cell .mud-input-text{margin-top:0 !important}.mud-data-grid .mud-table-cell .column-header{display:flex;align-items:center;justify-content:space-between}.mud-data-grid .mud-table-cell .column-header .sortable-column-header{width:100%}@media(hover: hover)and (pointer: fine){.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,.mud-data-grid .mud-table-cell .column-header:hover .column-options .drag-icon-options{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{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(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 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 .mud-sort-index{transform:scale(0.9) translate(-2px, -2px)}.mud-data-grid .mud-table-cell .column-header .column-options .mud-menu .mud-icon-button-label{user-select:none;transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;opacity:0}.mud-data-grid .mud-table-cell .mud-resizer{position:absolute;top:0;right:0;width:8px;cursor:col-resize;user-select:none}.mud-application-layout-rtl .mud-data-grid .mud-table-cell .mud-resizer{right:auto;left:0}@media(hover: hover)and (pointer: fine){.mud-data-grid .mud-table-cell .mud-resizer:hover{border-right:2px solid var(--mud-palette-primary)}}.mud-data-grid .mud-table-cell .mud-resizing{border-right:2px solid var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-data-grid-columns-panel:hover .column-options .sort-direction-icon,.mud-data-grid-columns-panel:hover .column-options .column-options-icon,.mud-data-grid-columns-panel:hover .column-options .drag-icon-options{opacity:.8;color:var(--mud-palette-action-default)}.mud-data-grid-columns-panel:hover .column-options .mud-menu .mud-icon-button-label{opacity:1;color:var(--mud-palette-action-default)}}.mud-data-grid-columns-panel .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(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-data-grid-columns-panel .sort-direction-icon.mud-direction-desc{opacity:1;transform:rotate(180deg)}.mud-data-grid-columns-panel .sort-direction-icon.mud-direction-asc{opacity:1;transform:rotate(0deg)}.mud-data-grid-columns-panel .mud-sort-index{transform:scale(0.9) translate(-2px, -2px)}.mud-data-grid-columns-panel .drag-icon-options{transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;opacity:1;cursor:grab}.mud-data-grid-columns-panel .mud-drop-item-preview-start{z-index:0}.mud-toggle-group{display:grid;overflow:hidden;box-sizing:border-box;border-width:0}.mud-toggle-group>.mud-toggle-item{box-shadow:none;border-width:inherit;border-style:none;border-color:inherit;border-radius:0}.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>.mud-toggle-item:not(:first-child),.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>:not(:first-child) .mud-toggle-item{margin-left:-1px}.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>.mud-toggle-item:not(:first-child).mud-toggle-item-delimiter,.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>:not(:first-child) .mud-toggle-item.mud-toggle-item-delimiter{border-left-style:solid !important}.mud-toggle-group-horizontal.mud-toggle-group-rtl>.mud-toggle-item:not(:last-child),.mud-toggle-group-horizontal.mud-toggle-group-rtl>:not(:last-child) .mud-toggle-item{margin-left:-1px}.mud-toggle-group-horizontal.mud-toggle-group-rtl>.mud-toggle-item:not(:last-child).mud-toggle-item-delimiter,.mud-toggle-group-horizontal.mud-toggle-group-rtl>:not(:last-child) .mud-toggle-item.mud-toggle-item-delimiter{border-left-style:solid !important}.mud-toggle-group-vertical>.mud-toggle-item:not(:first-child),.mud-toggle-group-vertical>:not(:first-child) .mud-toggle-item{margin-top:-1px}.mud-toggle-group-vertical>.mud-toggle-item:not(:first-child).mud-toggle-item-delimiter,.mud-toggle-group-vertical>:not(:first-child) .mud-toggle-item.mud-toggle-item-delimiter{border-top-style:solid !important}.mud-toggle-item{padding:6px;min-width:auto;border-style:none !important}.mud-toggle-item>.mud-button-label{min-height:20px}.mud-toggle-item-size-small{padding:4px}.mud-toggle-item-size-large{padding:8px}.mud-toggle-item-fixed>.mud-button-label:has(>.mud-toggle-item-check-icon){display:grid;grid-template-columns:1fr auto 1fr}.mud-toggle-item-check-icon{justify-self:end}.mud-toggle-item-content{display:contents}.mud-stepper .mud-stepper-nav .mud-step{padding:24px;position:relative;cursor:default}.mud-stepper .mud-stepper-nav .mud-step.mud-ripple{transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;cursor:pointer;user-select:none}.mud-stepper .mud-stepper-nav .mud-step.mud-ripple:hover{background-color:var(--mud-palette-action-default-hover)}.mud-stepper .mud-stepper-nav .mud-step.mud-step-disabled .mud-step-label-icon{background-color:var(--mud-palette-lines-default) !important;color:var(--mud-palette-text-disabled) !important}.mud-stepper .mud-stepper-nav .mud-step.mud-step-disabled .mud-step-label-content{color:var(--mud-palette-text-disabled) !important}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label{display:flex;align-items:center;flex-direction:row;height:100%;gap:8px}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-icon{display:flex;flex-shrink:0;color:var(--mud-palette-white);border-radius:50%;background-color:var(--mud-palette-text-disabled);height:24px;width:24px;align-items:center;justify-content:center;font-size:12px;letter-spacing:0;text-indent:0;white-space:nowrap}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-icon .mud-typography{line-height:1}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-content{width:100%;color:var(--mud-palette-text-secondary);text-align:start}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-content-title{line-height:var(--mud-typography-body2-lineheight)}.mud-stepper .mud-stepper-nav .mud-step.active .mud-step-label-content{color:var(--mud-palette-text-primary)}.mud-stepper .mud-stepper-nav.mud-stepper-nav-scrollable{overflow:auto}.mud-stepper .mud-stepper-nav.mud-stepper-nav-scrollable .mud-step{min-width:fit-content}.mud-stepper .mud-stepper-nav.mud-stepper-nav-scrollable .mud-stepper-nav-connector{min-width:32px}.mud-stepper .mud-stepper-content{padding:0 24px}.mud-stepper .mud-stepper-nav-connector{flex:1 1 auto}.mud-stepper .mud-stepper-nav-connector .mud-stepper-nav-connector-line{display:block;border-color:var(--mud-palette-lines-inputs)}.mud-stepper.mud-stepper__horizontal .mud-stepper-nav{display:flex}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step{flex-basis:175px}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step-label{flex-direction:column;justify-content:flex-start;align-items:center}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step-label .mud-step-label-icon{margin-inline-end:0px !important}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step-label .mud-step-label-content{margin-top:12px;text-align:center}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-stepper-nav-connector{margin:35px -67px 0;align-self:flex-start}.mud-stepper.mud-stepper__horizontal .mud-stepper-nav-connector{align-self:center;margin:0 -16px}.mud-stepper.mud-stepper__horizontal .mud-stepper-nav-connector .mud-stepper-nav-connector-line{border-top-style:solid;border-top-width:1px}.mud-stepper.mud-stepper__vertical .mud-stepper-nav{padding:8px 0px}.mud-stepper.mud-stepper__vertical .mud-step{padding:0 16px}.mud-stepper.mud-stepper__vertical .mud-step .mud-step-label{padding:8px 0px}.mud-stepper.mud-stepper__vertical .mud-stepper-nav-connector{margin-inline-start:28px;margin-inline-end:0}.mud-stepper.mud-stepper__vertical .mud-stepper-nav-connector .mud-stepper-nav-connector-line{border-inline-start:1px solid #bdbdbd;min-height:24px}.mud-stepper.mud-stepper__vertical .mud-stepper-content{margin-inline-start:28px;margin-inline-end:0;padding-inline-start:20px;padding-inline-end:0;border-inline-start:1px solid var(--mud-palette-lines-inputs)}.mud-stepper-step-button{display:inline-flex;-moz-box-align:center;align-items:center;-moz-box-pack:center;justify-content:center;position:relative;background-color:rgba(0,0,0,0);outline:0px;border:0px;border-radius:0px;cursor:pointer;user-select:none;vertical-align:middle;appearance:none;text-decoration:none;color:inherit;width:100%;padding:24px 16px;margin:-24px -16px;box-sizing:content-box}.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:0px !important}.border-t-0{border-top-width:0px !important}.border-r-0{border-right-width:0px !important}.border-b-0{border-bottom-width:0px !important}.border-l-0{border-left-width:0px !important}.border-x-0{border-left-width:0px !important;border-right-width:0px !important}.border-y-0{border-top-width:0px !important;border-bottom-width:0px !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-grow-start>*:first-child{flex-grow:1 !important}.flex-grow-end>*:last-child{flex-grow:1 !important}.flex-grow-start-and-end>:first-child,.flex-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-grow-all>*{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:0px}.gap-x-0{column-gap:0px}.gap-y-0{row-gap:0px}.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}.gap-17{gap:68px}.gap-x-17{column-gap:68px}.gap-y-17{row-gap:68px}.gap-18{gap:72px}.gap-x-18{column-gap:72px}.gap-y-18{row-gap:72px}.gap-19{gap:76px}.gap-x-19{column-gap:76px}.gap-y-19{row-gap:76px}.gap-20{gap:80px}.gap-x-20{column-gap:80px}.gap-y-20{row-gap:80px}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-sm-grow-end>*:last-child{flex-grow:1 !important}.flex-sm-grow-start-and-end>:first-child,.flex-sm-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-sm-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-sm-grow-all>*{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:0px}.gap-x-sm-0{column-gap:0px}.gap-y-sm-0{row-gap:0px}.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}.gap-sm-17{gap:68px}.gap-x-sm-17{column-gap:68px}.gap-y-sm-17{row-gap:68px}.gap-sm-18{gap:72px}.gap-x-sm-18{column-gap:72px}.gap-y-sm-18{row-gap:72px}.gap-sm-19{gap:76px}.gap-x-sm-19{column-gap:76px}.gap-y-sm-19{row-gap:76px}.gap-sm-20{gap:80px}.gap-x-sm-20{column-gap:80px}.gap-y-sm-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-md-grow-end>*:last-child{flex-grow:1 !important}.flex-md-grow-start-and-end>:first-child,.flex-md-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-md-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-md-grow-all>*{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:0px}.gap-x-md-0{column-gap:0px}.gap-y-md-0{row-gap:0px}.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}.gap-md-17{gap:68px}.gap-x-md-17{column-gap:68px}.gap-y-md-17{row-gap:68px}.gap-md-18{gap:72px}.gap-x-md-18{column-gap:72px}.gap-y-md-18{row-gap:72px}.gap-md-19{gap:76px}.gap-x-md-19{column-gap:76px}.gap-y-md-19{row-gap:76px}.gap-md-20{gap:80px}.gap-x-md-20{column-gap:80px}.gap-y-md-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-lg-grow-end>*:last-child{flex-grow:1 !important}.flex-lg-grow-start-and-end>:first-child,.flex-lg-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-lg-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-lg-grow-all>*{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:0px}.gap-x-lg-0{column-gap:0px}.gap-y-lg-0{row-gap:0px}.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}.gap-lg-17{gap:68px}.gap-x-lg-17{column-gap:68px}.gap-y-lg-17{row-gap:68px}.gap-lg-18{gap:72px}.gap-x-lg-18{column-gap:72px}.gap-y-lg-18{row-gap:72px}.gap-lg-19{gap:76px}.gap-x-lg-19{column-gap:76px}.gap-y-lg-19{row-gap:76px}.gap-lg-20{gap:80px}.gap-x-lg-20{column-gap:80px}.gap-y-lg-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-xl-grow-end>*:last-child{flex-grow:1 !important}.flex-xl-grow-start-and-end>:first-child,.flex-xl-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-xl-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-xl-grow-all>*{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:0px}.gap-x-xl-0{column-gap:0px}.gap-y-xl-0{row-gap:0px}.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}.gap-xl-17{gap:68px}.gap-x-xl-17{column-gap:68px}.gap-y-xl-17{row-gap:68px}.gap-xl-18{gap:72px}.gap-x-xl-18{column-gap:72px}.gap-y-xl-18{row-gap:72px}.gap-xl-19{gap:76px}.gap-x-xl-19{column-gap:76px}.gap-y-xl-19{row-gap:76px}.gap-xl-20{gap:80px}.gap-x-xl-20{column-gap:80px}.gap-y-xl-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-xxl-grow-end>*:last-child{flex-grow:1 !important}.flex-xxl-grow-start-and-end>:first-child,.flex-xxl-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-xxl-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-xxl-grow-all>*{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:0px}.gap-x-xxl-0{column-gap:0px}.gap-y-xxl-0{row-gap:0px}.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}.gap-xxl-17{gap:68px}.gap-x-xxl-17{column-gap:68px}.gap-y-xxl-17{row-gap:68px}.gap-xxl-18{gap:72px}.gap-x-xxl-18{column-gap:72px}.gap-y-xxl-18{row-gap:72px}.gap-xxl-19{gap:76px}.gap-x-xxl-19{column-gap:76px}.gap-y-xxl-19{row-gap:76px}.gap-xxl-20{gap:80px}.gap-x-xxl-20{column-gap:80px}.gap-y-xxl-20{row-gap:80px}}.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 !important}.object-cover{object-fit:cover !important}.object-contain{object-fit:contain !important}.object-fill{object-fit:fill !important}.object-scale-down{object-fit:scale-down !important}.object-center{object-position:center !important}.object-top{object-position:top !important}.object-bottom{object-position:bottom !important}.object-left{object-position:left !important}.object-left-top{object-position:left top !important}.object-left-bottom{object-position:left bottom !important}.object-right{object-position:right !important}.object-right-top{object-position:right top !important}.object-right-bottom{object-position:right bottom !important}.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 !important}.fixed{position:fixed !important}.relative{position:relative !important}.static{position:static !important}.sticky{position:sticky !important}.visible{visibility:visible}.invisible{visibility:hidden}[hidden]{display:none !important}.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-17,.my-17{margin-top:68px !important}.mr-17,.mx-17{margin-right:68px !important}.ml-17,.mx-17{margin-left:68px !important}.mb-17,.my-17{margin-bottom:68px !important}.ms-17{margin-inline-start:68px !important}.me-17{margin-inline-end:68px !important}.ma-17{margin:68px !important}.mt-18,.my-18{margin-top:72px !important}.mr-18,.mx-18{margin-right:72px !important}.ml-18,.mx-18{margin-left:72px !important}.mb-18,.my-18{margin-bottom:72px !important}.ms-18{margin-inline-start:72px !important}.me-18{margin-inline-end:72px !important}.ma-18{margin:72px !important}.mt-19,.my-19{margin-top:76px !important}.mr-19,.mx-19{margin-right:76px !important}.ml-19,.mx-19{margin-left:76px !important}.mb-19,.my-19{margin-bottom:76px !important}.ms-19{margin-inline-start:76px !important}.me-19{margin-inline-end:76px !important}.ma-19{margin:76px !important}.mt-20,.my-20{margin-top:80px !important}.mr-20,.mx-20{margin-right:80px !important}.ml-20,.mx-20{margin-left:80px !important}.mb-20,.my-20{margin-bottom:80px !important}.ms-20{margin-inline-start:80px !important}.me-20{margin-inline-end:80px !important}.ma-20{margin:80px !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-17,.py-17{padding-top:68px !important}.pr-17,.px-17{padding-right:68px !important}.pl-17,.px-17{padding-left:68px !important}.pb-17,.py-17{padding-bottom:68px !important}.ps-17{padding-inline-start:68px !important}.pe-17{padding-inline-end:68px !important}.pa-17{padding:68px !important}.pt-18,.py-18{padding-top:72px !important}.pr-18,.px-18{padding-right:72px !important}.pl-18,.px-18{padding-left:72px !important}.pb-18,.py-18{padding-bottom:72px !important}.ps-18{padding-inline-start:72px !important}.pe-18{padding-inline-end:72px !important}.pa-18{padding:72px !important}.pt-19,.py-19{padding-top:76px !important}.pr-19,.px-19{padding-right:76px !important}.pl-19,.px-19{padding-left:76px !important}.pb-19,.py-19{padding-bottom:76px !important}.ps-19{padding-inline-start:76px !important}.pe-19{padding-inline-end:76px !important}.pa-19{padding:76px !important}.pt-20,.py-20{padding-top:80px !important}.pr-20,.px-20{padding-right:80px !important}.pl-20,.px-20{padding-left:80px !important}.pb-20,.py-20{padding-bottom:80px !important}.ps-20{padding-inline-start:80px !important}.pe-20{padding-inline-end:80px !important}.pa-20{padding:80px !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}.mt-n17,.my-n17{margin-top:-68px !important}.mr-n17,.mx-n17{margin-right:-68px !important}.ml-n17,.mx-n17{margin-left:-68px !important}.mb-n17,.my-n17{margin-bottom:-68px !important}.ms-n17{margin-inline-start:-68px !important}.me-n17{margin-inline-end:-68px !important}.ma-n17{margin:-68px !important}.mt-n18,.my-n18{margin-top:-72px !important}.mr-n18,.mx-n18{margin-right:-72px !important}.ml-n18,.mx-n18{margin-left:-72px !important}.mb-n18,.my-n18{margin-bottom:-72px !important}.ms-n18{margin-inline-start:-72px !important}.me-n18{margin-inline-end:-72px !important}.ma-n18{margin:-72px !important}.mt-n19,.my-n19{margin-top:-76px !important}.mr-n19,.mx-n19{margin-right:-76px !important}.ml-n19,.mx-n19{margin-left:-76px !important}.mb-n19,.my-n19{margin-bottom:-76px !important}.ms-n19{margin-inline-start:-76px !important}.me-n19{margin-inline-end:-76px !important}.ma-n19{margin:-76px !important}.mt-n20,.my-n20{margin-top:-80px !important}.mr-n20,.mx-n20{margin-right:-80px !important}.ml-n20,.mx-n20{margin-left:-80px !important}.mb-n20,.my-n20{margin-bottom:-80px !important}.ms-n20{margin-inline-start:-80px !important}.me-n20{margin-inline-end:-80px !important}.ma-n20{margin:-80px !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-17,.my-sm-17{margin-top:68px !important}.mr-sm-17,.mx-sm-17{margin-right:68px !important}.ml-sm-17,.mx-sm-17{margin-left:68px !important}.mb-sm-17,.my-sm-17{margin-bottom:68px !important}.ms-sm-17{margin-inline-start:68px !important}.me-sm-17{margin-inline-end:68px !important}.ma-sm-17{margin:68px !important}.mt-sm-18,.my-sm-18{margin-top:72px !important}.mr-sm-18,.mx-sm-18{margin-right:72px !important}.ml-sm-18,.mx-sm-18{margin-left:72px !important}.mb-sm-18,.my-sm-18{margin-bottom:72px !important}.ms-sm-18{margin-inline-start:72px !important}.me-sm-18{margin-inline-end:72px !important}.ma-sm-18{margin:72px !important}.mt-sm-19,.my-sm-19{margin-top:76px !important}.mr-sm-19,.mx-sm-19{margin-right:76px !important}.ml-sm-19,.mx-sm-19{margin-left:76px !important}.mb-sm-19,.my-sm-19{margin-bottom:76px !important}.ms-sm-19{margin-inline-start:76px !important}.me-sm-19{margin-inline-end:76px !important}.ma-sm-19{margin:76px !important}.mt-sm-20,.my-sm-20{margin-top:80px !important}.mr-sm-20,.mx-sm-20{margin-right:80px !important}.ml-sm-20,.mx-sm-20{margin-left:80px !important}.mb-sm-20,.my-sm-20{margin-bottom:80px !important}.ms-sm-20{margin-inline-start:80px !important}.me-sm-20{margin-inline-end:80px !important}.ma-sm-20{margin:80px !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-17,.py-sm-17{padding-top:68px !important}.pr-sm-17,.px-sm-17{padding-right:68px !important}.pl-sm-17,.px-sm-17{padding-left:68px !important}.pb-sm-17,.py-sm-17{padding-bottom:68px !important}.ps-sm-17{padding-inline-start:68px !important}.pe-sm-17{padding-inline-end:68px !important}.pa-sm-17{padding:68px !important}.pt-sm-18,.py-sm-18{padding-top:72px !important}.pr-sm-18,.px-sm-18{padding-right:72px !important}.pl-sm-18,.px-sm-18{padding-left:72px !important}.pb-sm-18,.py-sm-18{padding-bottom:72px !important}.ps-sm-18{padding-inline-start:72px !important}.pe-sm-18{padding-inline-end:72px !important}.pa-sm-18{padding:72px !important}.pt-sm-19,.py-sm-19{padding-top:76px !important}.pr-sm-19,.px-sm-19{padding-right:76px !important}.pl-sm-19,.px-sm-19{padding-left:76px !important}.pb-sm-19,.py-sm-19{padding-bottom:76px !important}.ps-sm-19{padding-inline-start:76px !important}.pe-sm-19{padding-inline-end:76px !important}.pa-sm-19{padding:76px !important}.pt-sm-20,.py-sm-20{padding-top:80px !important}.pr-sm-20,.px-sm-20{padding-right:80px !important}.pl-sm-20,.px-sm-20{padding-left:80px !important}.pb-sm-20,.py-sm-20{padding-bottom:80px !important}.ps-sm-20{padding-inline-start:80px !important}.pe-sm-20{padding-inline-end:80px !important}.pa-sm-20{padding:80px !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}.mt-sm-n17,.my-sm-n17{margin-top:-68px !important}.mr-sm-n17,.mx-sm-n17{margin-right:-68px !important}.ml-sm-n17,.mx-sm-n17{margin-left:-68px !important}.mb-sm-n17,.my-sm-n17{margin-bottom:-68px !important}.ms-sm-n17{margin-inline-start:-68px !important}.me-sm-n17{margin-inline-end:-68px !important}.ma-sm-n17{margin:-68px !important}.mt-sm-n18,.my-sm-n18{margin-top:-72px !important}.mr-sm-n18,.mx-sm-n18{margin-right:-72px !important}.ml-sm-n18,.mx-sm-n18{margin-left:-72px !important}.mb-sm-n18,.my-sm-n18{margin-bottom:-72px !important}.ms-sm-n18{margin-inline-start:-72px !important}.me-sm-n18{margin-inline-end:-72px !important}.ma-sm-n18{margin:-72px !important}.mt-sm-n19,.my-sm-n19{margin-top:-76px !important}.mr-sm-n19,.mx-sm-n19{margin-right:-76px !important}.ml-sm-n19,.mx-sm-n19{margin-left:-76px !important}.mb-sm-n19,.my-sm-n19{margin-bottom:-76px !important}.ms-sm-n19{margin-inline-start:-76px !important}.me-sm-n19{margin-inline-end:-76px !important}.ma-sm-n19{margin:-76px !important}.mt-sm-n20,.my-sm-n20{margin-top:-80px !important}.mr-sm-n20,.mx-sm-n20{margin-right:-80px !important}.ml-sm-n20,.mx-sm-n20{margin-left:-80px !important}.mb-sm-n20,.my-sm-n20{margin-bottom:-80px !important}.ms-sm-n20{margin-inline-start:-80px !important}.me-sm-n20{margin-inline-end:-80px !important}.ma-sm-n20{margin:-80px !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-17,.my-md-17{margin-top:68px !important}.mr-md-17,.mx-md-17{margin-right:68px !important}.ml-md-17,.mx-md-17{margin-left:68px !important}.mb-md-17,.my-md-17{margin-bottom:68px !important}.ms-md-17{margin-inline-start:68px !important}.me-md-17{margin-inline-end:68px !important}.ma-md-17{margin:68px !important}.mt-md-18,.my-md-18{margin-top:72px !important}.mr-md-18,.mx-md-18{margin-right:72px !important}.ml-md-18,.mx-md-18{margin-left:72px !important}.mb-md-18,.my-md-18{margin-bottom:72px !important}.ms-md-18{margin-inline-start:72px !important}.me-md-18{margin-inline-end:72px !important}.ma-md-18{margin:72px !important}.mt-md-19,.my-md-19{margin-top:76px !important}.mr-md-19,.mx-md-19{margin-right:76px !important}.ml-md-19,.mx-md-19{margin-left:76px !important}.mb-md-19,.my-md-19{margin-bottom:76px !important}.ms-md-19{margin-inline-start:76px !important}.me-md-19{margin-inline-end:76px !important}.ma-md-19{margin:76px !important}.mt-md-20,.my-md-20{margin-top:80px !important}.mr-md-20,.mx-md-20{margin-right:80px !important}.ml-md-20,.mx-md-20{margin-left:80px !important}.mb-md-20,.my-md-20{margin-bottom:80px !important}.ms-md-20{margin-inline-start:80px !important}.me-md-20{margin-inline-end:80px !important}.ma-md-20{margin:80px !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-17,.py-md-17{padding-top:68px !important}.pr-md-17,.px-md-17{padding-right:68px !important}.pl-md-17,.px-md-17{padding-left:68px !important}.pb-md-17,.py-md-17{padding-bottom:68px !important}.ps-md-17{padding-inline-start:68px !important}.pe-md-17{padding-inline-end:68px !important}.pa-md-17{padding:68px !important}.pt-md-18,.py-md-18{padding-top:72px !important}.pr-md-18,.px-md-18{padding-right:72px !important}.pl-md-18,.px-md-18{padding-left:72px !important}.pb-md-18,.py-md-18{padding-bottom:72px !important}.ps-md-18{padding-inline-start:72px !important}.pe-md-18{padding-inline-end:72px !important}.pa-md-18{padding:72px !important}.pt-md-19,.py-md-19{padding-top:76px !important}.pr-md-19,.px-md-19{padding-right:76px !important}.pl-md-19,.px-md-19{padding-left:76px !important}.pb-md-19,.py-md-19{padding-bottom:76px !important}.ps-md-19{padding-inline-start:76px !important}.pe-md-19{padding-inline-end:76px !important}.pa-md-19{padding:76px !important}.pt-md-20,.py-md-20{padding-top:80px !important}.pr-md-20,.px-md-20{padding-right:80px !important}.pl-md-20,.px-md-20{padding-left:80px !important}.pb-md-20,.py-md-20{padding-bottom:80px !important}.ps-md-20{padding-inline-start:80px !important}.pe-md-20{padding-inline-end:80px !important}.pa-md-20{padding:80px !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}.mt-md-n17,.my-md-n17{margin-top:-68px !important}.mr-md-n17,.mx-md-n17{margin-right:-68px !important}.ml-md-n17,.mx-md-n17{margin-left:-68px !important}.mb-md-n17,.my-md-n17{margin-bottom:-68px !important}.ms-md-n17{margin-inline-start:-68px !important}.me-md-n17{margin-inline-end:-68px !important}.ma-md-n17{margin:-68px !important}.mt-md-n18,.my-md-n18{margin-top:-72px !important}.mr-md-n18,.mx-md-n18{margin-right:-72px !important}.ml-md-n18,.mx-md-n18{margin-left:-72px !important}.mb-md-n18,.my-md-n18{margin-bottom:-72px !important}.ms-md-n18{margin-inline-start:-72px !important}.me-md-n18{margin-inline-end:-72px !important}.ma-md-n18{margin:-72px !important}.mt-md-n19,.my-md-n19{margin-top:-76px !important}.mr-md-n19,.mx-md-n19{margin-right:-76px !important}.ml-md-n19,.mx-md-n19{margin-left:-76px !important}.mb-md-n19,.my-md-n19{margin-bottom:-76px !important}.ms-md-n19{margin-inline-start:-76px !important}.me-md-n19{margin-inline-end:-76px !important}.ma-md-n19{margin:-76px !important}.mt-md-n20,.my-md-n20{margin-top:-80px !important}.mr-md-n20,.mx-md-n20{margin-right:-80px !important}.ml-md-n20,.mx-md-n20{margin-left:-80px !important}.mb-md-n20,.my-md-n20{margin-bottom:-80px !important}.ms-md-n20{margin-inline-start:-80px !important}.me-md-n20{margin-inline-end:-80px !important}.ma-md-n20{margin:-80px !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-17,.my-lg-17{margin-top:68px !important}.mr-lg-17,.mx-lg-17{margin-right:68px !important}.ml-lg-17,.mx-lg-17{margin-left:68px !important}.mb-lg-17,.my-lg-17{margin-bottom:68px !important}.ms-lg-17{margin-inline-start:68px !important}.me-lg-17{margin-inline-end:68px !important}.ma-lg-17{margin:68px !important}.mt-lg-18,.my-lg-18{margin-top:72px !important}.mr-lg-18,.mx-lg-18{margin-right:72px !important}.ml-lg-18,.mx-lg-18{margin-left:72px !important}.mb-lg-18,.my-lg-18{margin-bottom:72px !important}.ms-lg-18{margin-inline-start:72px !important}.me-lg-18{margin-inline-end:72px !important}.ma-lg-18{margin:72px !important}.mt-lg-19,.my-lg-19{margin-top:76px !important}.mr-lg-19,.mx-lg-19{margin-right:76px !important}.ml-lg-19,.mx-lg-19{margin-left:76px !important}.mb-lg-19,.my-lg-19{margin-bottom:76px !important}.ms-lg-19{margin-inline-start:76px !important}.me-lg-19{margin-inline-end:76px !important}.ma-lg-19{margin:76px !important}.mt-lg-20,.my-lg-20{margin-top:80px !important}.mr-lg-20,.mx-lg-20{margin-right:80px !important}.ml-lg-20,.mx-lg-20{margin-left:80px !important}.mb-lg-20,.my-lg-20{margin-bottom:80px !important}.ms-lg-20{margin-inline-start:80px !important}.me-lg-20{margin-inline-end:80px !important}.ma-lg-20{margin:80px !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-17,.py-lg-17{padding-top:68px !important}.pr-lg-17,.px-lg-17{padding-right:68px !important}.pl-lg-17,.px-lg-17{padding-left:68px !important}.pb-lg-17,.py-lg-17{padding-bottom:68px !important}.ps-lg-17{padding-inline-start:68px !important}.pe-lg-17{padding-inline-end:68px !important}.pa-lg-17{padding:68px !important}.pt-lg-18,.py-lg-18{padding-top:72px !important}.pr-lg-18,.px-lg-18{padding-right:72px !important}.pl-lg-18,.px-lg-18{padding-left:72px !important}.pb-lg-18,.py-lg-18{padding-bottom:72px !important}.ps-lg-18{padding-inline-start:72px !important}.pe-lg-18{padding-inline-end:72px !important}.pa-lg-18{padding:72px !important}.pt-lg-19,.py-lg-19{padding-top:76px !important}.pr-lg-19,.px-lg-19{padding-right:76px !important}.pl-lg-19,.px-lg-19{padding-left:76px !important}.pb-lg-19,.py-lg-19{padding-bottom:76px !important}.ps-lg-19{padding-inline-start:76px !important}.pe-lg-19{padding-inline-end:76px !important}.pa-lg-19{padding:76px !important}.pt-lg-20,.py-lg-20{padding-top:80px !important}.pr-lg-20,.px-lg-20{padding-right:80px !important}.pl-lg-20,.px-lg-20{padding-left:80px !important}.pb-lg-20,.py-lg-20{padding-bottom:80px !important}.ps-lg-20{padding-inline-start:80px !important}.pe-lg-20{padding-inline-end:80px !important}.pa-lg-20{padding:80px !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}.mt-lg-n17,.my-lg-n17{margin-top:-68px !important}.mr-lg-n17,.mx-lg-n17{margin-right:-68px !important}.ml-lg-n17,.mx-lg-n17{margin-left:-68px !important}.mb-lg-n17,.my-lg-n17{margin-bottom:-68px !important}.ms-lg-n17{margin-inline-start:-68px !important}.me-lg-n17{margin-inline-end:-68px !important}.ma-lg-n17{margin:-68px !important}.mt-lg-n18,.my-lg-n18{margin-top:-72px !important}.mr-lg-n18,.mx-lg-n18{margin-right:-72px !important}.ml-lg-n18,.mx-lg-n18{margin-left:-72px !important}.mb-lg-n18,.my-lg-n18{margin-bottom:-72px !important}.ms-lg-n18{margin-inline-start:-72px !important}.me-lg-n18{margin-inline-end:-72px !important}.ma-lg-n18{margin:-72px !important}.mt-lg-n19,.my-lg-n19{margin-top:-76px !important}.mr-lg-n19,.mx-lg-n19{margin-right:-76px !important}.ml-lg-n19,.mx-lg-n19{margin-left:-76px !important}.mb-lg-n19,.my-lg-n19{margin-bottom:-76px !important}.ms-lg-n19{margin-inline-start:-76px !important}.me-lg-n19{margin-inline-end:-76px !important}.ma-lg-n19{margin:-76px !important}.mt-lg-n20,.my-lg-n20{margin-top:-80px !important}.mr-lg-n20,.mx-lg-n20{margin-right:-80px !important}.ml-lg-n20,.mx-lg-n20{margin-left:-80px !important}.mb-lg-n20,.my-lg-n20{margin-bottom:-80px !important}.ms-lg-n20{margin-inline-start:-80px !important}.me-lg-n20{margin-inline-end:-80px !important}.ma-lg-n20{margin:-80px !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-17,.my-xl-17{margin-top:68px !important}.mr-xl-17,.mx-xl-17{margin-right:68px !important}.ml-xl-17,.mx-xl-17{margin-left:68px !important}.mb-xl-17,.my-xl-17{margin-bottom:68px !important}.ms-xl-17{margin-inline-start:68px !important}.me-xl-17{margin-inline-end:68px !important}.ma-xl-17{margin:68px !important}.mt-xl-18,.my-xl-18{margin-top:72px !important}.mr-xl-18,.mx-xl-18{margin-right:72px !important}.ml-xl-18,.mx-xl-18{margin-left:72px !important}.mb-xl-18,.my-xl-18{margin-bottom:72px !important}.ms-xl-18{margin-inline-start:72px !important}.me-xl-18{margin-inline-end:72px !important}.ma-xl-18{margin:72px !important}.mt-xl-19,.my-xl-19{margin-top:76px !important}.mr-xl-19,.mx-xl-19{margin-right:76px !important}.ml-xl-19,.mx-xl-19{margin-left:76px !important}.mb-xl-19,.my-xl-19{margin-bottom:76px !important}.ms-xl-19{margin-inline-start:76px !important}.me-xl-19{margin-inline-end:76px !important}.ma-xl-19{margin:76px !important}.mt-xl-20,.my-xl-20{margin-top:80px !important}.mr-xl-20,.mx-xl-20{margin-right:80px !important}.ml-xl-20,.mx-xl-20{margin-left:80px !important}.mb-xl-20,.my-xl-20{margin-bottom:80px !important}.ms-xl-20{margin-inline-start:80px !important}.me-xl-20{margin-inline-end:80px !important}.ma-xl-20{margin:80px !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-17,.py-xl-17{padding-top:68px !important}.pr-xl-17,.px-xl-17{padding-right:68px !important}.pl-xl-17,.px-xl-17{padding-left:68px !important}.pb-xl-17,.py-xl-17{padding-bottom:68px !important}.ps-xl-17{padding-inline-start:68px !important}.pe-xl-17{padding-inline-end:68px !important}.pa-xl-17{padding:68px !important}.pt-xl-18,.py-xl-18{padding-top:72px !important}.pr-xl-18,.px-xl-18{padding-right:72px !important}.pl-xl-18,.px-xl-18{padding-left:72px !important}.pb-xl-18,.py-xl-18{padding-bottom:72px !important}.ps-xl-18{padding-inline-start:72px !important}.pe-xl-18{padding-inline-end:72px !important}.pa-xl-18{padding:72px !important}.pt-xl-19,.py-xl-19{padding-top:76px !important}.pr-xl-19,.px-xl-19{padding-right:76px !important}.pl-xl-19,.px-xl-19{padding-left:76px !important}.pb-xl-19,.py-xl-19{padding-bottom:76px !important}.ps-xl-19{padding-inline-start:76px !important}.pe-xl-19{padding-inline-end:76px !important}.pa-xl-19{padding:76px !important}.pt-xl-20,.py-xl-20{padding-top:80px !important}.pr-xl-20,.px-xl-20{padding-right:80px !important}.pl-xl-20,.px-xl-20{padding-left:80px !important}.pb-xl-20,.py-xl-20{padding-bottom:80px !important}.ps-xl-20{padding-inline-start:80px !important}.pe-xl-20{padding-inline-end:80px !important}.pa-xl-20{padding:80px !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}.mt-xl-n17,.my-xl-n17{margin-top:-68px !important}.mr-xl-n17,.mx-xl-n17{margin-right:-68px !important}.ml-xl-n17,.mx-xl-n17{margin-left:-68px !important}.mb-xl-n17,.my-xl-n17{margin-bottom:-68px !important}.ms-xl-n17{margin-inline-start:-68px !important}.me-xl-n17{margin-inline-end:-68px !important}.ma-xl-n17{margin:-68px !important}.mt-xl-n18,.my-xl-n18{margin-top:-72px !important}.mr-xl-n18,.mx-xl-n18{margin-right:-72px !important}.ml-xl-n18,.mx-xl-n18{margin-left:-72px !important}.mb-xl-n18,.my-xl-n18{margin-bottom:-72px !important}.ms-xl-n18{margin-inline-start:-72px !important}.me-xl-n18{margin-inline-end:-72px !important}.ma-xl-n18{margin:-72px !important}.mt-xl-n19,.my-xl-n19{margin-top:-76px !important}.mr-xl-n19,.mx-xl-n19{margin-right:-76px !important}.ml-xl-n19,.mx-xl-n19{margin-left:-76px !important}.mb-xl-n19,.my-xl-n19{margin-bottom:-76px !important}.ms-xl-n19{margin-inline-start:-76px !important}.me-xl-n19{margin-inline-end:-76px !important}.ma-xl-n19{margin:-76px !important}.mt-xl-n20,.my-xl-n20{margin-top:-80px !important}.mr-xl-n20,.mx-xl-n20{margin-right:-80px !important}.ml-xl-n20,.mx-xl-n20{margin-left:-80px !important}.mb-xl-n20,.my-xl-n20{margin-bottom:-80px !important}.ms-xl-n20{margin-inline-start:-80px !important}.me-xl-n20{margin-inline-end:-80px !important}.ma-xl-n20{margin:-80px !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-17,.my-xxl-17{margin-top:68px !important}.mr-xxl-17,.mx-xxl-17{margin-right:68px !important}.ml-xxl-17,.mx-xxl-17{margin-left:68px !important}.mb-xxl-17,.my-xxl-17{margin-bottom:68px !important}.ms-xxl-17{margin-inline-start:68px !important}.me-xxl-17{margin-inline-end:68px !important}.ma-xxl-17{margin:68px !important}.mt-xxl-18,.my-xxl-18{margin-top:72px !important}.mr-xxl-18,.mx-xxl-18{margin-right:72px !important}.ml-xxl-18,.mx-xxl-18{margin-left:72px !important}.mb-xxl-18,.my-xxl-18{margin-bottom:72px !important}.ms-xxl-18{margin-inline-start:72px !important}.me-xxl-18{margin-inline-end:72px !important}.ma-xxl-18{margin:72px !important}.mt-xxl-19,.my-xxl-19{margin-top:76px !important}.mr-xxl-19,.mx-xxl-19{margin-right:76px !important}.ml-xxl-19,.mx-xxl-19{margin-left:76px !important}.mb-xxl-19,.my-xxl-19{margin-bottom:76px !important}.ms-xxl-19{margin-inline-start:76px !important}.me-xxl-19{margin-inline-end:76px !important}.ma-xxl-19{margin:76px !important}.mt-xxl-20,.my-xxl-20{margin-top:80px !important}.mr-xxl-20,.mx-xxl-20{margin-right:80px !important}.ml-xxl-20,.mx-xxl-20{margin-left:80px !important}.mb-xxl-20,.my-xxl-20{margin-bottom:80px !important}.ms-xxl-20{margin-inline-start:80px !important}.me-xxl-20{margin-inline-end:80px !important}.ma-xxl-20{margin:80px !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-17,.py-xxl-17{padding-top:68px !important}.pr-xxl-17,.px-xxl-17{padding-right:68px !important}.pl-xxl-17,.px-xxl-17{padding-left:68px !important}.pb-xxl-17,.py-xxl-17{padding-bottom:68px !important}.ps-xxl-17{padding-inline-start:68px !important}.pe-xxl-17{padding-inline-end:68px !important}.pa-xxl-17{padding:68px !important}.pt-xxl-18,.py-xxl-18{padding-top:72px !important}.pr-xxl-18,.px-xxl-18{padding-right:72px !important}.pl-xxl-18,.px-xxl-18{padding-left:72px !important}.pb-xxl-18,.py-xxl-18{padding-bottom:72px !important}.ps-xxl-18{padding-inline-start:72px !important}.pe-xxl-18{padding-inline-end:72px !important}.pa-xxl-18{padding:72px !important}.pt-xxl-19,.py-xxl-19{padding-top:76px !important}.pr-xxl-19,.px-xxl-19{padding-right:76px !important}.pl-xxl-19,.px-xxl-19{padding-left:76px !important}.pb-xxl-19,.py-xxl-19{padding-bottom:76px !important}.ps-xxl-19{padding-inline-start:76px !important}.pe-xxl-19{padding-inline-end:76px !important}.pa-xxl-19{padding:76px !important}.pt-xxl-20,.py-xxl-20{padding-top:80px !important}.pr-xxl-20,.px-xxl-20{padding-right:80px !important}.pl-xxl-20,.px-xxl-20{padding-left:80px !important}.pb-xxl-20,.py-xxl-20{padding-bottom:80px !important}.ps-xxl-20{padding-inline-start:80px !important}.pe-xxl-20{padding-inline-end:80px !important}.pa-xxl-20{padding:80px !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}.mt-xxl-n17,.my-xxl-n17{margin-top:-68px !important}.mr-xxl-n17,.mx-xxl-n17{margin-right:-68px !important}.ml-xxl-n17,.mx-xxl-n17{margin-left:-68px !important}.mb-xxl-n17,.my-xxl-n17{margin-bottom:-68px !important}.ms-xxl-n17{margin-inline-start:-68px !important}.me-xxl-n17{margin-inline-end:-68px !important}.ma-xxl-n17{margin:-68px !important}.mt-xxl-n18,.my-xxl-n18{margin-top:-72px !important}.mr-xxl-n18,.mx-xxl-n18{margin-right:-72px !important}.ml-xxl-n18,.mx-xxl-n18{margin-left:-72px !important}.mb-xxl-n18,.my-xxl-n18{margin-bottom:-72px !important}.ms-xxl-n18{margin-inline-start:-72px !important}.me-xxl-n18{margin-inline-end:-72px !important}.ma-xxl-n18{margin:-72px !important}.mt-xxl-n19,.my-xxl-n19{margin-top:-76px !important}.mr-xxl-n19,.mx-xxl-n19{margin-right:-76px !important}.ml-xxl-n19,.mx-xxl-n19{margin-left:-76px !important}.mb-xxl-n19,.my-xxl-n19{margin-bottom:-76px !important}.ms-xxl-n19{margin-inline-start:-76px !important}.me-xxl-n19{margin-inline-end:-76px !important}.ma-xxl-n19{margin:-76px !important}.mt-xxl-n20,.my-xxl-n20{margin-top:-80px !important}.mr-xxl-n20,.mx-xxl-n20{margin-right:-80px !important}.ml-xxl-n20,.mx-xxl-n20{margin-left:-80px !important}.mb-xxl-n20,.my-xxl-n20{margin-bottom:-80px !important}.ms-xxl-n20{margin-inline-start:-80px !important}.me-xxl-n20{margin-inline-end:-80px !important}.ma-xxl-n20{margin:-80px !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, 0.2, 1) 0ms,width 225ms cubic-bezier(0, 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: 0px)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: 0px){.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: 0px){.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: 0px){.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, 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, 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, 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, 0.2, 1)}.mud-drawer.mud-drawer-mini{height:100%;transition:width 225ms cubic-bezier(0, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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% - (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% - (var(--mud-appbar-height) - var(--mud-appbar-height)/8))}}@media(min-width: 0px){.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: 0px)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: 0px)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: 0px){.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, 0.2, 1) 0ms}@media(min-width: 0px)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: 0px){.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)}.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)}.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)}.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)}.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)}.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)}.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}.mud-container--gutters{padding-left:16px;padding-right:16px}@media(min-width: 600px){.mud-container--gutters{padding-left:24px;padding-right:24px}}@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: 0px){.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}.scroll-locked-no-padding{overflow:hidden}@-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:rgba(0,0,0,0);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-gray{background-color:#607d8b}.blue-gray-text{color:#607d8b}.blue-gray.lighten-5{background-color:#eceff1}.blue-gray-text.text-lighten-5{color:#eceff1}.blue-gray.lighten-4{background-color:#cfd8dc}.blue-gray-text.text-lighten-4{color:#cfd8dc}.blue-gray.lighten-3{background-color:#b0bec5}.blue-gray-text.text-lighten-3{color:#b0bec5}.blue-gray.lighten-2{background-color:#90a4ae}.blue-gray-text.text-lighten-2{color:#90a4ae}.blue-gray.lighten-1{background-color:#78909c}.blue-gray-text.text-lighten-1{color:#78909c}.blue-gray.darken-1{background-color:#546e7a}.blue-gray-text.text-darken-1{color:#546e7a}.blue-gray.darken-2{background-color:#455a64}.blue-gray-text.text-darken-2{color:#455a64}.blue-gray.darken-3{background-color:#37474f}.blue-gray-text.text-darken-3{color:#37474f}.blue-gray.darken-4{background-color:#263238}.blue-gray-text.text-darken-4{color:#263238}.gray{background-color:#9e9e9e}.gray-text{color:#9e9e9e}.gray.lighten-5{background-color:#fafafa}.gray-text.text-lighten-5{color:#fafafa}.gray.lighten-4{background-color:#f5f5f5}.gray-text.text-lighten-4{color:#f5f5f5}.gray.lighten-3{background-color:#eee}.gray-text.text-lighten-3{color:#eee}.gray.lighten-2{background-color:#e0e0e0}.gray-text.text-lighten-2{color:#e0e0e0}.gray.lighten-1{background-color:#bdbdbd}.gray-text.text-lighten-1{color:#bdbdbd}.gray.darken-1{background-color:#757575}.gray-text.text-darken-1{color:#757575}.gray.darken-2{background-color:#616161}.gray-text.text-darken-2{color:#616161}.gray.darken-3{background-color:#424242}.gray-text.text-darken-3{color:#424242}.gray.darken-4{background-color:#212121}.gray-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:rgba(0,0,0,0)}.shades-text.text-transparent{color:rgba(0,0,0,0)}.mud-ripple{--mud-ripple-offset-x: 0;--mud-ripple-offset-y: 0;position:relative;overflow:hidden}.mud-ripple:after{content:"";display:block;position:absolute;width:100%;height:100%;top:var(--mud-ripple-offset-y);left:var(--mud-ripple-offset-x);pointer-events:none;background-image:radial-gradient(circle, var(--mud-ripple-color) 10%, transparent 10.01%);background-repeat:no-repeat;background-position:50%;transform:scale(20, 20);opacity:0;transition:transform .6s,opacity 1s}.mud-ripple:active:after{transform:scale(0, 0);opacity:var(--mud-ripple-opacity);transition:0s}.mud-ripple:has(.mud-ripple:active):after{opacity:0}.mud-ripple-icon:after,.mud-ripple-checkbox:after,.mud-ripple-switch:after,.mud-ripple-radio:after{transform:scale(14, 14)}.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)} + */.mud-primary{background-color:var(--mud-palette-primary) !important}.mud-primary-text{color:var(--mud-palette-primary) !important;--mud-ripple-color: var(--mud-palette-primary) !important}.mud-primary-hover{background-color:var(--mud-palette-primary-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-primary-hover:hover{background-color:var(--mud-palette-primary-hover) !important}}.hover\:mud-primary-hover:focus-visible,.hover\:mud-primary-hover:active{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-ripple-color: var(--mud-palette-secondary) !important}.mud-secondary-hover{background-color:var(--mud-palette-secondary-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-secondary-hover:hover{background-color:var(--mud-palette-secondary-hover) !important}}.hover\:mud-secondary-hover:focus-visible,.hover\:mud-secondary-hover:active{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-ripple-color: var(--mud-palette-tertiary) !important}.mud-tertiary-hover{background-color:var(--mud-palette-tertiary-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-tertiary-hover:hover{background-color:var(--mud-palette-tertiary-hover) !important}}.hover\:mud-tertiary-hover:focus-visible,.hover\:mud-tertiary-hover:active{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-ripple-color: var(--mud-palette-info) !important}.mud-info-hover{background-color:var(--mud-palette-info-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-info-hover:hover{background-color:var(--mud-palette-info-hover) !important}}.hover\:mud-info-hover:focus-visible,.hover\:mud-info-hover:active{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-ripple-color: var(--mud-palette-success) !important}.mud-success-hover{background-color:var(--mud-palette-success-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-success-hover:hover{background-color:var(--mud-palette-success-hover) !important}}.hover\:mud-success-hover:focus-visible,.hover\:mud-success-hover:active{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-ripple-color: var(--mud-palette-warning) !important}.mud-warning-hover{background-color:var(--mud-palette-warning-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-warning-hover:hover{background-color:var(--mud-palette-warning-hover) !important}}.hover\:mud-warning-hover:focus-visible,.hover\:mud-warning-hover:active{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-ripple-color: var(--mud-palette-error) !important}.mud-error-hover{background-color:var(--mud-palette-error-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-error-hover:hover{background-color:var(--mud-palette-error-hover) !important}}.hover\:mud-error-hover:focus-visible,.hover\:mud-error-hover:active{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-ripple-color: var(--mud-palette-dark) !important}.mud-dark-hover{background-color:var(--mud-palette-dark-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-dark-hover:hover{background-color:var(--mud-palette-dark-hover) !important}}.hover\:mud-dark-hover:focus-visible,.hover\:mud-dark-hover:active{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-gray) !important}.mud-theme-transparent{color:inherit !important;background-color:rgba(0,0,0,0) !important}.mud-transparent{background-color:rgba(0,0,0,0) !important}.mud-transparent-text{color:rgba(0,0,0,0) !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;-webkit-tap-highlight-color:rgba(0,0,0,0)}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-color:var(--mud-palette-error);color:var(--mud-palette-error-text);bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.75rem .7rem 1.25rem;position:fixed;width:100%;z-index:9999}#blazor-error-ui .reload{color:inherit;text-decoration:underline}#blazor-error-ui .dismiss{color:inherit;cursor:pointer;position:absolute;right:.75rem;top:.5rem}#components-reconnect-modal{z-index:9999 !important;background-color:var(--mud-palette-background) !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(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 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}@media(hover: hover)and (pointer: fine){#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(0.5);transform:scale(0.5)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes mud-scale-up-center{0%{-webkit-transform:scale(0.5);transform:scale(0.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:0px}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 50%}50%{opacity:0;background-position:0 50%}100%{opacity:1;background-position:-200px 50%}}@-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:50% 0}50%{opacity:0;background-position:50% 0}100%{opacity:1;background-position:50% -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:rgba(0,0,0,0);-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}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%}.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:rgba(0,0,0,0);transition:box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-alert.mud-square{border-radius:0px}.mud-alert.mud-dense{padding:0px 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-normal .mud-alert-close .mud-button-root{color:currentColor}.mud-alert-filled-primary{color:var(--mud-palette-primary-text);font-weight:500;background-color:var(--mud-palette-primary)}.mud-alert-filled-primary .mud-button-root{color:currentColor}.mud-alert-filled-secondary{color:var(--mud-palette-secondary-text);font-weight:500;background-color:var(--mud-palette-secondary)}.mud-alert-filled-secondary .mud-button-root{color:currentColor}.mud-alert-filled-tertiary{color:var(--mud-palette-tertiary-text);font-weight:500;background-color:var(--mud-palette-tertiary)}.mud-alert-filled-tertiary .mud-button-root{color:currentColor}.mud-alert-filled-info{color:var(--mud-palette-info-text);font-weight:500;background-color:var(--mud-palette-info)}.mud-alert-filled-info .mud-button-root{color:currentColor}.mud-alert-filled-success{color:var(--mud-palette-success-text);font-weight:500;background-color:var(--mud-palette-success)}.mud-alert-filled-success .mud-button-root{color:currentColor}.mud-alert-filled-warning{color:var(--mud-palette-warning-text);font-weight:500;background-color:var(--mud-palette-warning)}.mud-alert-filled-warning .mud-button-root{color:currentColor}.mud-alert-filled-error{color:var(--mud-palette-error-text);font-weight:500;background-color:var(--mud-palette-error)}.mud-alert-filled-error .mud-button-root{color:currentColor}.mud-alert-filled-dark{color:var(--mud-palette-dark-text);font-weight:500;background-color:var(--mud-palette-dark)}.mud-alert-filled-dark .mud-button-root{color:currentColor}.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;align-items:start}.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(0.25, 0.8, 0.5, 1);white-space:nowrap}.mud-badge.mud-badge-default{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-gray-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-icon{width:20px;height:20px}.mud-badge.mud-badge-icon .mud-icon-badge{color:inherit;font-size:12px}.mud-badge.mud-badge-dot{border-radius:50%;height:9px;min-width:0;padding:0;width:9px}.mud-badge.mud-badge{display:flex;align-items:center;justify-content:center}.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;--mud-internal-toolbar-height: 56px;height:var(--mud-internal-toolbar-height)}.mud-toolbar-gutters{padding-left:16px;padding-right:16px}@media(min-width: 0px)and (orientation: landscape){.mud-toolbar{--mud-internal-toolbar-height: 48px}}@media(min-width: 600px){.mud-toolbar{--mud-internal-toolbar-height: 64px}.mud-toolbar-gutters{padding-left:24px;padding-right:24px}}.mud-toolbar-dense{--mud-internal-toolbar-height: 48px}.mud-toolbar.mud-toolbar-wrap-content{height:auto;min-height:var(--mud-internal-toolbar-height);flex-wrap:wrap}.mud-toolbar.mud-toolbar-wrap-content.mud-toolbar-appbar{min-height:min(var(--mud-appbar-height),var(--mud-internal-toolbar-height))}.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-gray-darker)}.mud-tooltip.mud-tooltip-default.mud-tooltip-arrow::after{border-color:var(--mud-palette-gray-darker) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.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:rgba(0,0,0,0);border-top-color:inherit}.mud-avatar{display:inline-flex;overflow:hidden;position:relative;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-gray-light)}.mud-avatar.mud-avatar-small{width:24px;height:24px;font-size:.75rem}.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.5rem}.mud-avatar-rounded{border-radius:var(--mud-default-borderradius)}.mud-avatar-square{border-radius:0}.mud-avatar>.mud-image{color:rgba(0,0,0,0);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-text-primary);background-color:var(--mud-palette-lines-inputs)}.mud-avatar-filled.mud-avatar-filled-primary{color:var(--mud-palette-primary-text);background-color:var(--mud-palette-primary)}.mud-avatar-filled.mud-avatar-filled-secondary{color:var(--mud-palette-secondary-text);background-color:var(--mud-palette-secondary)}.mud-avatar-filled.mud-avatar-filled-tertiary{color:var(--mud-palette-tertiary-text);background-color:var(--mud-palette-tertiary)}.mud-avatar-filled.mud-avatar-filled-info{color:var(--mud-palette-info-text);background-color:var(--mud-palette-info)}.mud-avatar-filled.mud-avatar-filled-success{color:var(--mud-palette-success-text);background-color:var(--mud-palette-success)}.mud-avatar-filled.mud-avatar-filled-warning{color:var(--mud-palette-warning-text);background-color:var(--mud-palette-warning)}.mud-avatar-filled.mud-avatar-filled-error{color:var(--mud-palette-error-text);background-color:var(--mud-palette-error)}.mud-avatar-filled.mud-avatar-filled-dark{color:var(--mud-palette-dark-text);background-color:var(--mud-palette-dark)}.mud-avatar-group{display:flex}.mud-avatar-group .mud-avatar:first-child{margin-inline-start:0px !important}.mud-avatar-group.mud-avatar-group-outlined.mud-avatar-group-outlined-transparent .mud-avatar:not(.mud-avatar-outlined){border-color:rgba(0,0,0,0)}.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:none;margin:0;padding:16px 12px}.mud-breadcrumb-separator{display:inline-flex;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}@media(hover: hover)and (pointer: fine){.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:rgba(0,0,0,0);-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.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(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:var(--mud-default-borderradius);color:var(--mud-palette-text-primary);--mud-ripple-color: var(--mud-palette-text-primary)}@media(hover: hover)and (pointer: fine){.mud-button:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-button:focus-visible,.mud-button:active{background-color:var(--mud-palette-action-default-hover)}.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-ripple-color: var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-primary:hover{background-color:var(--mud-palette-primary-hover)}}.mud-button-text.mud-button-text-primary:focus-visible,.mud-button-text.mud-button-text-primary:active{background-color:var(--mud-palette-primary-hover)}.mud-button-text.mud-button-text-secondary{color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-secondary:hover{background-color:var(--mud-palette-secondary-hover)}}.mud-button-text.mud-button-text-secondary:focus-visible,.mud-button-text.mud-button-text-secondary:active{background-color:var(--mud-palette-secondary-hover)}.mud-button-text.mud-button-text-tertiary{color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-tertiary:hover{background-color:var(--mud-palette-tertiary-hover)}}.mud-button-text.mud-button-text-tertiary:focus-visible,.mud-button-text.mud-button-text-tertiary:active{background-color:var(--mud-palette-tertiary-hover)}.mud-button-text.mud-button-text-info{color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-info:hover{background-color:var(--mud-palette-info-hover)}}.mud-button-text.mud-button-text-info:focus-visible,.mud-button-text.mud-button-text-info:active{background-color:var(--mud-palette-info-hover)}.mud-button-text.mud-button-text-success{color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-success:hover{background-color:var(--mud-palette-success-hover)}}.mud-button-text.mud-button-text-success:focus-visible,.mud-button-text.mud-button-text-success:active{background-color:var(--mud-palette-success-hover)}.mud-button-text.mud-button-text-warning{color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-warning:hover{background-color:var(--mud-palette-warning-hover)}}.mud-button-text.mud-button-text-warning:focus-visible,.mud-button-text.mud-button-text-warning:active{background-color:var(--mud-palette-warning-hover)}.mud-button-text.mud-button-text-error{color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-error:hover{background-color:var(--mud-palette-error-hover)}}.mud-button-text.mud-button-text-error:focus-visible,.mud-button-text.mud-button-text-error:active{background-color:var(--mud-palette-error-hover)}.mud-button-text.mud-button-text-dark{color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-dark:hover{background-color:var(--mud-palette-dark-hover)}}.mud-button-text.mud-button-text-dark:focus-visible,.mud-button-text.mud-button-text-dark:active{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}@media(hover: hover)and (pointer: fine){.mud-button-outlined:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-button-outlined:focus-visible,.mud-button-outlined:active{background-color:var(--mud-palette-action-default-hover)}.mud-button-outlined.mud-button-outlined-primary{color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary);border:1px solid var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-primary:hover{border:1px solid var(--mud-palette-primary);background-color:var(--mud-palette-primary-hover)}}.mud-button-outlined.mud-button-outlined-primary:focus-visible,.mud-button-outlined.mud-button-outlined-primary:active{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);--mud-ripple-color: var(--mud-palette-secondary);border:1px solid var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-secondary:hover{border:1px solid var(--mud-palette-secondary);background-color:var(--mud-palette-secondary-hover)}}.mud-button-outlined.mud-button-outlined-secondary:focus-visible,.mud-button-outlined.mud-button-outlined-secondary:active{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);--mud-ripple-color: var(--mud-palette-tertiary);border:1px solid var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-tertiary:hover{border:1px solid var(--mud-palette-tertiary);background-color:var(--mud-palette-tertiary-hover)}}.mud-button-outlined.mud-button-outlined-tertiary:focus-visible,.mud-button-outlined.mud-button-outlined-tertiary:active{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);--mud-ripple-color: var(--mud-palette-info);border:1px solid var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-info:hover{border:1px solid var(--mud-palette-info);background-color:var(--mud-palette-info-hover)}}.mud-button-outlined.mud-button-outlined-info:focus-visible,.mud-button-outlined.mud-button-outlined-info:active{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);--mud-ripple-color: var(--mud-palette-success);border:1px solid var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-success:hover{border:1px solid var(--mud-palette-success);background-color:var(--mud-palette-success-hover)}}.mud-button-outlined.mud-button-outlined-success:focus-visible,.mud-button-outlined.mud-button-outlined-success:active{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);--mud-ripple-color: var(--mud-palette-warning);border:1px solid var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-warning:hover{border:1px solid var(--mud-palette-warning);background-color:var(--mud-palette-warning-hover)}}.mud-button-outlined.mud-button-outlined-warning:focus-visible,.mud-button-outlined.mud-button-outlined-warning:active{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);--mud-ripple-color: var(--mud-palette-error);border:1px solid var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-error:hover{border:1px solid var(--mud-palette-error);background-color:var(--mud-palette-error-hover)}}.mud-button-outlined.mud-button-outlined-error:focus-visible,.mud-button-outlined.mud-button-outlined-error:active{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);--mud-ripple-color: var(--mud-palette-dark);border:1px solid var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-dark:hover{border:1px solid var(--mud-palette-dark);background-color:var(--mud-palette-dark-hover)}}.mud-button-outlined.mud-button-outlined-dark:focus-visible,.mud-button-outlined.mud-button-outlined-dark:active{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);--mud-ripple-color: var(--mud-palette-text-primary);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;box-shadow:0px 3px 1px -2px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 1px 5px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-default-hover)}.mud-button-filled.mud-icon-button{padding:6px}@media(hover: hover)and (pointer: fine){.mud-button-filled:hover{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}}.mud-button-filled:focus-visible{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}.mud-button-filled:active{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}.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);--mud-ripple-color: var(--mud-palette-primary-text);background-color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-primary:hover{background-color:var(--mud-palette-primary-darken)}}.mud-button-filled.mud-button-filled-primary:focus-visible,.mud-button-filled.mud-button-filled-primary:active{background-color:var(--mud-palette-primary-darken)}.mud-button-filled.mud-button-filled-secondary{color:var(--mud-palette-secondary-text);--mud-ripple-color: var(--mud-palette-secondary-text);background-color:var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-secondary:hover{background-color:var(--mud-palette-secondary-darken)}}.mud-button-filled.mud-button-filled-secondary:focus-visible,.mud-button-filled.mud-button-filled-secondary:active{background-color:var(--mud-palette-secondary-darken)}.mud-button-filled.mud-button-filled-tertiary{color:var(--mud-palette-tertiary-text);--mud-ripple-color: var(--mud-palette-tertiary-text);background-color:var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-tertiary:hover{background-color:var(--mud-palette-tertiary-darken)}}.mud-button-filled.mud-button-filled-tertiary:focus-visible,.mud-button-filled.mud-button-filled-tertiary:active{background-color:var(--mud-palette-tertiary-darken)}.mud-button-filled.mud-button-filled-info{color:var(--mud-palette-info-text);--mud-ripple-color: var(--mud-palette-info-text);background-color:var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-info:hover{background-color:var(--mud-palette-info-darken)}}.mud-button-filled.mud-button-filled-info:focus-visible,.mud-button-filled.mud-button-filled-info:active{background-color:var(--mud-palette-info-darken)}.mud-button-filled.mud-button-filled-success{color:var(--mud-palette-success-text);--mud-ripple-color: var(--mud-palette-success-text);background-color:var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-success:hover{background-color:var(--mud-palette-success-darken)}}.mud-button-filled.mud-button-filled-success:focus-visible,.mud-button-filled.mud-button-filled-success:active{background-color:var(--mud-palette-success-darken)}.mud-button-filled.mud-button-filled-warning{color:var(--mud-palette-warning-text);--mud-ripple-color: var(--mud-palette-warning-text);background-color:var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-warning:hover{background-color:var(--mud-palette-warning-darken)}}.mud-button-filled.mud-button-filled-warning:focus-visible,.mud-button-filled.mud-button-filled-warning:active{background-color:var(--mud-palette-warning-darken)}.mud-button-filled.mud-button-filled-error{color:var(--mud-palette-error-text);--mud-ripple-color: var(--mud-palette-error-text);background-color:var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-error:hover{background-color:var(--mud-palette-error-darken)}}.mud-button-filled.mud-button-filled-error:focus-visible,.mud-button-filled.mud-button-filled-error:active{background-color:var(--mud-palette-error-darken)}.mud-button-filled.mud-button-filled-dark{color:var(--mud-palette-dark-text);--mud-ripple-color: var(--mud-palette-dark-text);background-color:var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-dark:hover{background-color:var(--mud-palette-dark-darken)}}.mud-button-filled.mud-button-filled-dark:focus-visible,.mud-button-filled.mud-button-filled-dark:active{background-color:var(--mud-palette-dark-darken)}.mud-button-disable-elevation{box-shadow:none}@media(hover: hover)and (pointer: fine){.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{width:100%;display:inherit;align-items:inherit;justify-content:inherit}.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-ripple-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}@media(hover: hover)and (pointer: fine){.mud-button-group-root.mud-button-group-override-styles .mud-button-root:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-button-group-root.mud-button-group-override-styles .mud-button-root:focus-visible,.mud-button-group-root.mud-button-group-override-styles .mud-button-root:active{background-color:var(--mud-palette-action-default-hover)}.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-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-ripple-color: var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root:hover{background-color:var(--mud-palette-primary-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root:active{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-ripple-color: var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root:hover{background-color:var(--mud-palette-secondary-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root:active{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-ripple-color: var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root:hover{background-color:var(--mud-palette-tertiary-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root:active{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-ripple-color: var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root:hover{background-color:var(--mud-palette-info-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root:active{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-ripple-color: var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root:hover{background-color:var(--mud-palette-success-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root:active{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-ripple-color: var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root:hover{background-color:var(--mud-palette-warning-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root:active{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-ripple-color: var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root:hover{background-color:var(--mud-palette-error-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root:active{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-ripple-color: var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root:hover{background-color:var(--mud-palette-dark-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root:active{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-ripple-color: var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root:hover{background-color:var(--mud-palette-primary-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root:active{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-ripple-color: var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root:hover{background-color:var(--mud-palette-secondary-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root:active{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-ripple-color: var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root:hover{background-color:var(--mud-palette-tertiary-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root:active{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-ripple-color: var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root:hover{background-color:var(--mud-palette-info-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root:active{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-ripple-color: var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root:hover{background-color:var(--mud-palette-success-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root:active{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-ripple-color: var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root:hover{background-color:var(--mud-palette-warning-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root:active{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-ripple-color: var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root:hover{background-color:var(--mud-palette-error-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root:active{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-ripple-color: var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root:hover{background-color:var(--mud-palette-dark-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root:active{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}@media(hover: hover)and (pointer: fine){.mud-button-group-filled .mud-button-root:hover{box-shadow:var(--mud-elevation-4)}}.mud-button-group-filled .mud-button-root:focus-visible,.mud-button-group-filled .mud-button-root:active{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-ripple-color: var(--mud-palette-primary-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:hover{background-color:var(--mud-palette-primary-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:active{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-ripple-color: var(--mud-palette-secondary-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:hover{background-color:var(--mud-palette-secondary-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:active{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-ripple-color: var(--mud-palette-tertiary-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:hover{background-color:var(--mud-palette-tertiary-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:active{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-ripple-color: var(--mud-palette-info-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:hover{background-color:var(--mud-palette-info-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:active{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-ripple-color: var(--mud-palette-success-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:hover{background-color:var(--mud-palette-success-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:active{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-ripple-color: var(--mud-palette-warning-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:hover{background-color:var(--mud-palette-warning-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:active{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-ripple-color: var(--mud-palette-error-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:hover{background-color:var(--mud-palette-error-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:active{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-ripple-color: var(--mud-palette-dark-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:hover{background-color:var(--mud-palette-dark-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:active{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-icon-button{flex:0 0 auto;padding:12px;overflow:visible;font-size:1.5rem;text-align:center;transition:background-color 150ms cubic-bezier(0.4, 0, 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)}@media(hover: hover)and (pointer: fine){.mud-icon-button:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-icon-button:focus-visible,.mud-icon-button:active{background-color:var(--mud-palette-action-default-hover)}.mud-icon-button:disabled{color:var(--mud-palette-action-disabled);background-color:rgba(0,0,0,0)}.mud-icon-button.mud-readonly,.mud-icon-button .mud-readonly:hover{cursor:default}.mud-icon-button-color-inherit{color:inherit}@media(hover: hover)and (pointer: fine){.mud-icon-button-color-inherit:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-icon-button-color-inherit:focus-visible,.mud-icon-button-color-inherit:active{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{display:flex;flex-direction:column}.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:0px;border-top-right-radius:0px}.mud-card-content{flex-grow:1;padding:16px}.mud-card-actions{display:flex;padding:8px;align-items:center}.mud-carousel{display:flex !important;position:relative;margin:0px !important;clip-path:inset(0px 0px 0px 0px);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:0px;right:0px;top:0px;bottom:0px;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 0px;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-chart .mud-chart-legend .mud-chart-legend-item .mud-chart-legend-checkbox{display:flex;align-items:center}.mud-chart .mud-chart-legend .mud-chart-legend-item .mud-input-control{width:35px !important}.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:rgba(0,0,0,0);user-select:none;pointer-events:unset}.mud-chart-donut .mud-donut-ring{fill:rgba(0,0,0,0);stroke-width:5;stroke:#fff;pointer-events:unset}.mud-chart-donut .mud-donut-segment{stroke-width:5;fill:rgba(0,0,0,0);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-chart-cell text{fill:#000}.mud-chart-heatmap-legend line{stroke:var(--mud-palette-text-primary)}.mud-chart-heatmap-legend text{fill:var(--mud-palette-text-primary)}.mud-chat{display:grid;column-gap:.75rem;padding-top:.25rem;padding-bottom:.25rem;border-radius:var(--mud-default-borderradius)}.mud-chat.mud-dense .mud-chat-bubble{padding:.1875rem 1rem;min-height:.9166666667rem}.mud-chat.mud-dense .mud-chat-bubble+.mud-chat-bubble{margin-top:.1875rem}.mud-chat.mud-dense .mud-chat-header{line-height:.4166666667rem}.mud-chat.mud-square{border-radius:0px}.mud-chat.mud-square .mud-chat-bubble{border-radius:0px}.mud-chat.mud-chat-arrow-top .mud-chat-bubble:before{content:"";mask-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMycgaGVpZ2h0PSczJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGZpbGw9J2JsYWNrJyBkPSdtIDAgMCBMIDMgMCBMIDMgMyBDIDMgMiAxIDAgMCAwJy8+PC9zdmc+);bottom:auto;top:0}.mud-chat.mud-chat-arrow-top.mud-chat-start .mud-chat-bubble{border-top-left-radius:0}.mud-chat.mud-chat-arrow-top.mud-chat-end .mud-chat-bubble{border-top-right-radius:0}.mud-chat.mud-chat-arrow-bottom .mud-chat-bubble:before{content:"";mask-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMycgaGVpZ2h0PSczJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGZpbGw9J2JsYWNrJyBkPSdtIDAgMyBMIDMgMyBMIDMgMCBDIDMgMSAxIDMgMCAzJy8+PC9zdmc+);bottom:0}.mud-chat.mud-chat-arrow-bottom.mud-chat-start .mud-chat-bubble{border-bottom-left-radius:0}.mud-chat.mud-chat-arrow-bottom.mud-chat-end .mud-chat-bubble{border-bottom-right-radius:0}.mud-chat.mud-chat-arrow-middle .mud-chat-bubble:before{content:"";mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzIDMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4KICA8cG9seWdvbiBwb2ludHM9IjMsMCAzLDMgMS41LDEuNSIgZmlsbD0iYmxhY2siIC8+Cjwvc3ZnPg==);top:50%}.mud-chat.mud-chat-arrow-middle.mud-chat-start .mud-chat-bubble:before,.mud-chat.mud-chat-arrow-middle.mud-chat-end.mud-chat-rtl .mud-chat-bubble:before{transform:translateY(-50%)}.mud-chat.mud-chat-arrow-middle.mud-chat-end .mud-chat-bubble:before,.mud-chat.mud-chat-arrow-middle.mud-chat-start.mud-chat-rtl .mud-chat-bubble:before{transform:scaleX(-1) translateY(-50%)}.mud-chat-bubble{position:relative;text-align:start;align-content:center;width:fit-content;padding:.5rem 1rem;max-width:90%;border-radius:var(--mud-default-borderradius);min-width:2.75rem;min-height:2.75rem}.mud-chat-bubble.mud-chat-bubble-clickable{cursor:pointer;user-select:none;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;--mud-ripple-color: $default-foreground;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important}@media(hover: hover)and (pointer: fine){.mud-chat-bubble.mud-chat-bubble-clickable:hover{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}}.mud-chat-bubble.mud-chat-bubble-clickable:focus-visible{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}.mud-chat-bubble.mud-chat-bubble-clickable:active{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}.mud-chat-bubble:before{position:absolute;width:.75rem;height:.75rem;background-color:inherit;mask-size:contain;mask-repeat:no-repeat;mask-position:center}.mud-chat-bubble+.mud-chat-bubble{margin-top:.5rem}.mud-chat-bubble+.mud-chat-bubble:before{content:none !important}.mud-chat-header{grid-row-start:1;font-size:.875rem;line-height:1.25rem;margin-left:.25rem;margin-right:.25rem;min-height:.5rem}.mud-chat-header time{margin-left:.5rem;opacity:.5;font-size:.75rem;line-height:1rem}.mud-chat-footer{opacity:.5;font-size:.875rem;line-height:1rem;margin-left:.25rem;margin-right:.25rem;min-height:.5rem}.mud-chat .mud-avatar{align-self:center;grid-row-start:1}.mud-chat:has(.mud-chat-header) .mud-avatar{grid-row-start:2}.mud-chat-start{place-items:start;grid-template-columns:1fr 99fr}.mud-chat-start .mud-chat-header,.mud-chat-start .mud-chat-footer{grid-column-start:2}.mud-chat-start .mud-avatar{grid-column-start:1;margin-left:.25rem;margin-right:-0.35rem}.mud-chat-start .mud-chat-bubble{grid-column-start:2}.mud-chat-start .mud-chat-bubble:before{inset-inline-start:-0.749rem}.mud-chat-end{place-items:end;grid-template-columns:99fr 1fr}.mud-chat-end .mud-chat-header,.mud-chat-end .mud-chat-footer{grid-column-start:1}.mud-chat-end .mud-avatar{grid-column-start:2;margin-right:.25rem;margin-left:-0.35rem}.mud-chat-end .mud-chat-bubble{grid-column-start:1;text-align:end}.mud-chat-end .mud-chat-bubble:before{inset-inline-start:100%;transform:scaleX(-1)}.mud-chat-text-default{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-action-default-hover);--mud-ripple-color: $default-foreground}.mud-chat-text-primary{color:var(--mud-palette-primary-darken);background-color:var(--mud-palette-primary-hover);--mud-ripple-color: var(--mud-palette-primary-darken)}.mud-chat-text-secondary{color:var(--mud-palette-secondary-darken);background-color:var(--mud-palette-secondary-hover);--mud-ripple-color: var(--mud-palette-secondary-darken)}.mud-chat-text-tertiary{color:var(--mud-palette-tertiary-darken);background-color:var(--mud-palette-tertiary-hover);--mud-ripple-color: var(--mud-palette-tertiary-darken)}.mud-chat-text-info{color:var(--mud-palette-info-darken);background-color:var(--mud-palette-info-hover);--mud-ripple-color: var(--mud-palette-info-darken)}.mud-chat-text-success{color:var(--mud-palette-success-darken);background-color:var(--mud-palette-success-hover);--mud-ripple-color: var(--mud-palette-success-darken)}.mud-chat-text-warning{color:var(--mud-palette-warning-darken);background-color:var(--mud-palette-warning-hover);--mud-ripple-color: var(--mud-palette-warning-darken)}.mud-chat-text-error{color:var(--mud-palette-error-darken);background-color:var(--mud-palette-error-hover);--mud-ripple-color: var(--mud-palette-error-darken)}.mud-chat-text-dark{color:var(--mud-palette-dark-darken);background-color:var(--mud-palette-dark-hover);--mud-ripple-color: var(--mud-palette-dark-darken)}.mud-chat-outlined-default{color:var(--mud-palette-text-primary);border:1px solid var(--mud-palette-action-default-hover);--mud-ripple-color: $default-foreground}.mud-chat-outlined-default:before{background-color:var(--mud-palette-action-default-hover)}.mud-chat-outlined-default.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-default.mud-chat-arrow-bottom:before{bottom:-0.07rem !important}.mud-chat-outlined-primary{color:var(--mud-palette-primary-darken);border:1px solid var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary-darken)}.mud-chat-outlined-primary:before{background-color:var(--mud-palette-primary-darken)}.mud-chat-outlined-primary.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-primary.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-secondary{color:var(--mud-palette-secondary-darken);border:1px solid var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary-darken)}.mud-chat-outlined-secondary:before{background-color:var(--mud-palette-secondary-darken)}.mud-chat-outlined-secondary.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-secondary.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-tertiary{color:var(--mud-palette-tertiary-darken);border:1px solid var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary-darken)}.mud-chat-outlined-tertiary:before{background-color:var(--mud-palette-tertiary-darken)}.mud-chat-outlined-tertiary.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-tertiary.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-info{color:var(--mud-palette-info-darken);border:1px solid var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info-darken)}.mud-chat-outlined-info:before{background-color:var(--mud-palette-info-darken)}.mud-chat-outlined-info.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-info.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-success{color:var(--mud-palette-success-darken);border:1px solid var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success-darken)}.mud-chat-outlined-success:before{background-color:var(--mud-palette-success-darken)}.mud-chat-outlined-success.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-success.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-warning{color:var(--mud-palette-warning-darken);border:1px solid var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning-darken)}.mud-chat-outlined-warning:before{background-color:var(--mud-palette-warning-darken)}.mud-chat-outlined-warning.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-warning.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-error{color:var(--mud-palette-error-darken);border:1px solid var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error-darken)}.mud-chat-outlined-error:before{background-color:var(--mud-palette-error-darken)}.mud-chat-outlined-error.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-error.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-dark{color:var(--mud-palette-dark-darken);border:1px solid var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark-darken)}.mud-chat-outlined-dark:before{background-color:var(--mud-palette-dark-darken)}.mud-chat-outlined-dark.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-dark.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-filled-default{color:var(--mud-palette-text-primary);font-weight:500;background-color:var(--mud-palette-action-default-hover);--mud-ripple-color: $default-foreground}.mud-chat-filled-primary{color:var(--mud-palette-primary-text);font-weight:500;background-color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary-text)}.mud-chat-filled-secondary{color:var(--mud-palette-secondary-text);font-weight:500;background-color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary-text)}.mud-chat-filled-tertiary{color:var(--mud-palette-tertiary-text);font-weight:500;background-color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary-text)}.mud-chat-filled-info{color:var(--mud-palette-info-text);font-weight:500;background-color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info-text)}.mud-chat-filled-success{color:var(--mud-palette-success-text);font-weight:500;background-color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success-text)}.mud-chat-filled-warning{color:var(--mud-palette-warning-text);font-weight:500;background-color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning-text)}.mud-chat-filled-error{color:var(--mud-palette-error-text);font-weight:500;background-color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error-text)}.mud-chat-filled-dark{color:var(--mud-palette-dark-text);font-weight:500;background-color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark-text)}.mud-checkbox{cursor:pointer;display:inline-flex;align-items:center;vertical-align:middle;-webkit-tap-highlight-color:rgba(0,0,0,0)}@media(hover: hover)and (pointer: fine){.mud-checkbox .mud-disabled:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-checkbox .mud-disabled:hover *{cursor:default;color:var(--mud-palette-text-disabled)}}.mud-checkbox .mud-disabled:focus-visible,.mud-checkbox .mud-disabled:active{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-checkbox .mud-disabled:focus-visible *,.mud-checkbox .mud-disabled:active *{cursor:default;color:var(--mud-palette-text-disabled)}.mud-checkbox.mud-readonly,.mud-checkbox .mud-readonly:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.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-chart-legend-checkbox .mud-checkbox svg path:last-child{fill:var(--checkbox-color) !important}.mud-chip-container{display:contents}.mud-chip{border:none;display:inline-flex;max-width:100%;outline:0;padding:0 12px;position:relative;box-sizing:border-box;transition:background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 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;padding:0 8px}.mud-chip.mud-chip-size-small .mud-avatar{margin-left:-4px;margin-right:4px;margin-inline-start:-4px;margin-inline-end:4px;width:18px;height:18px;font-size:.625rem}.mud-chip.mud-chip-size-small .mud-icon-root{font-size:1.125rem}.mud-chip.mud-chip-size-small .mud-chip-close-button{margin-right:-4px;margin-left:4px;margin-inline-end:-4px;margin-inline-start:4px}.mud-chip.mud-chip-size-medium{height:32px;font-size:14px;border-radius:16px}.mud-chip.mud-chip-size-medium .mud-avatar{margin-left:-8px;margin-right:8px;margin-inline-start:-8px;margin-inline-end:8px;width:24px;height:24px;font-size:.75rem}.mud-chip.mud-chip-size-large{height:40px;font-size:16px;border-radius:20px;padding:0 16px}.mud-chip.mud-chip-size-large .mud-avatar{margin-left:-12px;margin-right:8px;margin-inline-start:-12px;margin-inline-end:8px;width:32px;height:32px;font-size:1rem}.mud-chip.mud-chip-size-large .mud-chip-icon{font-size:1.5rem;margin-left:-6px;margin-right:6px;margin-inline-start:-6px;margin-inline-end:6px}.mud-chip.mud-chip-label{border-radius:var(--mud-default-borderradius)}.mud-chip.mud-clickable{cursor:pointer;user-select:none}.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(0.25, 0.8, 0.5, 1),visibility 0s}.mud-chip .mud-chip-close-button .mud-icon-size-small{font-size:1.15rem}@media(hover: hover)and (pointer: fine){.mud-chip .mud-chip-close-button:hover:not(.mud-disabled){opacity:.7}}.mud-chip .mud-chip-close-button:focus-visible:not(.mud-disabled),.mud-chip .mud-chip-close-button:active:not(.mud-disabled){opacity:.7}.mud-chip>.mud-chip-content{align-items:center;display:inline-flex;height:100%;max-width:100%}.mud-chip-filled{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-action-disabled-background);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-action-disabled)}}.mud-chip-filled.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-action-disabled)}.mud-chip-filled.mud-chip-color-primary{color:var(--mud-palette-primary-text);--mud-ripple-color: var(--mud-palette-primary-text) !important;background-color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-primary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-primary-darken)}}.mud-chip-filled.mud-chip-color-primary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-primary.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-primary-darken)}.mud-chip-filled.mud-chip-color-secondary{color:var(--mud-palette-secondary-text);--mud-ripple-color: var(--mud-palette-secondary-text) !important;background-color:var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-secondary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-secondary-darken)}}.mud-chip-filled.mud-chip-color-secondary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-secondary.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-secondary-darken)}.mud-chip-filled.mud-chip-color-tertiary{color:var(--mud-palette-tertiary-text);--mud-ripple-color: var(--mud-palette-tertiary-text) !important;background-color:var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-tertiary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-tertiary-darken)}}.mud-chip-filled.mud-chip-color-tertiary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-tertiary.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-tertiary-darken)}.mud-chip-filled.mud-chip-color-info{color:var(--mud-palette-info-text);--mud-ripple-color: var(--mud-palette-info-text) !important;background-color:var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-info.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-info-darken)}}.mud-chip-filled.mud-chip-color-info.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-info.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-info-darken)}.mud-chip-filled.mud-chip-color-success{color:var(--mud-palette-success-text);--mud-ripple-color: var(--mud-palette-success-text) !important;background-color:var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-success.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-success-darken)}}.mud-chip-filled.mud-chip-color-success.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-success.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-success-darken)}.mud-chip-filled.mud-chip-color-warning{color:var(--mud-palette-warning-text);--mud-ripple-color: var(--mud-palette-warning-text) !important;background-color:var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-warning.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-warning-darken)}}.mud-chip-filled.mud-chip-color-warning.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-warning.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-warning-darken)}.mud-chip-filled.mud-chip-color-error{color:var(--mud-palette-error-text);--mud-ripple-color: var(--mud-palette-error-text) !important;background-color:var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-error.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-error-darken)}}.mud-chip-filled.mud-chip-color-error.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-error.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-error-darken)}.mud-chip-filled.mud-chip-color-dark{color:var(--mud-palette-dark-text);--mud-ripple-color: var(--mud-palette-dark-text) !important;background-color:var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-dark.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-dark-darken)}}.mud-chip-filled.mud-chip-color-dark.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-dark.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-action-default-hover)}}.mud-chip-outlined.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-action-default-hover)}.mud-chip-outlined.mud-chip-color-primary{color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary) !important;border:1px solid var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-primary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-primary-hover)}}.mud-chip-outlined.mud-chip-color-primary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-primary.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-secondary{color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary) !important;border:1px solid var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-secondary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-secondary-hover)}}.mud-chip-outlined.mud-chip-color-secondary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-secondary.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-tertiary{color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary) !important;border:1px solid var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-tertiary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-tertiary-hover)}}.mud-chip-outlined.mud-chip-color-tertiary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-tertiary.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-info{color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info) !important;border:1px solid var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-info.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-info-hover)}}.mud-chip-outlined.mud-chip-color-info.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-info.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-info.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-info.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-info.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-success{color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success) !important;border:1px solid var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-success.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-success-hover)}}.mud-chip-outlined.mud-chip-color-success.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-success.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-success.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-success.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-success.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-warning{color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning) !important;border:1px solid var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-warning.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-warning-hover)}}.mud-chip-outlined.mud-chip-color-warning.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-warning.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-error{color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error) !important;border:1px solid var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-error.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-error-hover)}}.mud-chip-outlined.mud-chip-color-error.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-error.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-error.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-error.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-error.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-dark{color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark) !important;border:1px solid var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-dark.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-dark-hover)}}.mud-chip-outlined.mud-chip-color-dark.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-dark.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}.mud-chip-text{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-action-default-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-action-disabled-background)}}.mud-chip-text.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-action-disabled-background)}.mud-chip-text.mud-chip-color-primary{color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary) !important;background-color:var(--mud-palette-primary-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-primary.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}}.mud-chip-text.mud-chip-color-primary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-primary.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}.mud-chip-text.mud-chip-color-secondary{color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary) !important;background-color:var(--mud-palette-secondary-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-secondary.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}}.mud-chip-text.mud-chip-color-secondary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-secondary.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}.mud-chip-text.mud-chip-color-tertiary{color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary) !important;background-color:var(--mud-palette-tertiary-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-tertiary.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}}.mud-chip-text.mud-chip-color-tertiary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-tertiary.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}.mud-chip-text.mud-chip-color-info{color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info) !important;background-color:var(--mud-palette-info-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-info.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}}.mud-chip-text.mud-chip-color-info.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-info.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}.mud-chip-text.mud-chip-color-success{color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success) !important;background-color:var(--mud-palette-success-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-success.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}}.mud-chip-text.mud-chip-color-success.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-success.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}.mud-chip-text.mud-chip-color-warning{color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning) !important;background-color:var(--mud-palette-warning-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-warning.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}}.mud-chip-text.mud-chip-color-warning.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-warning.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}.mud-chip-text.mud-chip-color-error{color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error) !important;background-color:var(--mud-palette-error-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-error.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}}.mud-chip-text.mud-chip-color-error.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-error.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}.mud-chip-text.mud-chip-color-dark{color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark) !important;background-color:var(--mud-palette-dark-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-dark.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}}.mud-chip-text.mud-chip-color-dark.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-dark.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}.mud-collapse-container{overflow:hidden;display:grid;grid-template-rows:minmax(0, 0fr);transition:grid-template-rows 300ms ease-in-out}.mud-collapse-entering{grid-template-rows:minmax(0, 1fr)}.mud-collapse-entered{overflow:initial;grid-template-rows:minmax(0, 1fr)}.mud-collapse-hidden{visibility:hidden}.mud-collapse-wrapper{overflow:hidden;display:flex}.mud-collapse-wrapper-inner{width:100%}.mud-dialog-container{display:flex;position:fixed;top:0;left: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(0.39, 0.575, 0.565, 1) both;animation:mud-open-dialog-center .1s cubic-bezier(0.39, 0.575, 0.565, 1) both;box-shadow:0px 11px 15px -7px rgba(0,0,0,.2),0px 24px 38px 3px rgba(0,0,0,.14),0px 9px 46px 8px rgba(0,0,0,.12);max-height:calc(100vh - var(--mud-appbar-height));max-height:calc(100dvh - var(--mud-appbar-height));overflow-y:auto}.mud-dialog.mud-dialog-rtl .mud-dialog-title .mud-button-close{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-close{top:8px;right:8px;position:absolute}.mud-dialog .mud-dialog-content{position:relative;flex:1 1 auto;overflow:auto;padding:0px 24px;margin:8px 0px;-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:0px;margin:12px 0px}.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;overflow-y:hidden}@-webkit-keyframes mud-open-dialog-center{0%{opacity:0}1%{-webkit-transform:scale(0.5);transform:scale(0.5);opacity:1}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes mud-open-dialog-center{0%{opacity:0}1%{-webkit-transform:scale(0.5);transform:scale(0.5);opacity:1}100%{-webkit-transform:scale(1);transform:scale(1)}}.mud-focus-trap{display:contents}.mud-focus-trap .mud-focus-trap-child-container{display:contents}.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:0px;padding-bottom:0px}.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-flex-break{flex-basis:100%;width:0}.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% + 4px);margin-left:-4px;margin-top:-4px}.mud-grid-spacing-xs-1>.mud-grid-item{padding-left:4px;padding-top:4px}.mud-grid-spacing-xs-2{width:calc(100% + 8px);margin-left:-8px;margin-top:-8px}.mud-grid-spacing-xs-2>.mud-grid-item{padding-left:8px;padding-top:8px}.mud-grid-spacing-xs-3{width:calc(100% + 12px);margin-left:-12px;margin-top:-12px}.mud-grid-spacing-xs-3>.mud-grid-item{padding-left:12px;padding-top:12px}.mud-grid-spacing-xs-4{width:calc(100% + 16px);margin-left:-16px;margin-top:-16px}.mud-grid-spacing-xs-4>.mud-grid-item{padding-left:16px;padding-top:16px}.mud-grid-spacing-xs-5{width:calc(100% + 20px);margin-left:-20px;margin-top:-20px}.mud-grid-spacing-xs-5>.mud-grid-item{padding-left:20px;padding-top:20px}.mud-grid-spacing-xs-6{width:calc(100% + 24px);margin-left:-24px;margin-top:-24px}.mud-grid-spacing-xs-6>.mud-grid-item{padding-left:24px;padding-top:24px}.mud-grid-spacing-xs-7{width:calc(100% + 28px);margin-left:-28px;margin-top:-28px}.mud-grid-spacing-xs-7>.mud-grid-item{padding-left:28px;padding-top:28px}.mud-grid-spacing-xs-8{width:calc(100% + 32px);margin-left:-32px;margin-top:-32px}.mud-grid-spacing-xs-8>.mud-grid-item{padding-left:32px;padding-top:32px}.mud-grid-spacing-xs-9{width:calc(100% + 36px);margin-left:-36px;margin-top:-36px}.mud-grid-spacing-xs-9>.mud-grid-item{padding-left:36px;padding-top:36px}.mud-grid-spacing-xs-10{width:calc(100% + 40px);margin-left:-40px;margin-top:-40px}.mud-grid-spacing-xs-10>.mud-grid-item{padding-left:40px;padding-top:40px}.mud-grid-spacing-xs-11{width:calc(100% + 44px);margin-left:-44px;margin-top:-44px}.mud-grid-spacing-xs-11>.mud-grid-item{padding-left:44px;padding-top:44px}.mud-grid-spacing-xs-12{width:calc(100% + 48px);margin-left:-48px;margin-top:-48px}.mud-grid-spacing-xs-12>.mud-grid-item{padding-left:48px;padding-top:48px}.mud-grid-spacing-xs-13{width:calc(100% + 52px);margin-left:-52px;margin-top:-52px}.mud-grid-spacing-xs-13>.mud-grid-item{padding-left:52px;padding-top:52px}.mud-grid-spacing-xs-14{width:calc(100% + 56px);margin-left:-56px;margin-top:-56px}.mud-grid-spacing-xs-14>.mud-grid-item{padding-left:56px;padding-top:56px}.mud-grid-spacing-xs-15{width:calc(100% + 60px);margin-left:-60px;margin-top:-60px}.mud-grid-spacing-xs-15>.mud-grid-item{padding-left:60px;padding-top:60px}.mud-grid-spacing-xs-16{width:calc(100% + 64px);margin-left:-64px;margin-top:-64px}.mud-grid-spacing-xs-16>.mud-grid-item{padding-left:64px;padding-top:64px}.mud-grid-spacing-xs-17{width:calc(100% + 68px);margin-left:-68px;margin-top:-68px}.mud-grid-spacing-xs-17>.mud-grid-item{padding-left:68px;padding-top:68px}.mud-grid-spacing-xs-18{width:calc(100% + 72px);margin-left:-72px;margin-top:-72px}.mud-grid-spacing-xs-18>.mud-grid-item{padding-left:72px;padding-top:72px}.mud-grid-spacing-xs-19{width:calc(100% + 76px);margin-left:-76px;margin-top:-76px}.mud-grid-spacing-xs-19>.mud-grid-item{padding-left:76px;padding-top:76px}.mud-grid-spacing-xs-20{width:calc(100% + 80px);margin-left:-80px;margin-top:-80px}.mud-grid-spacing-xs-20>.mud-grid-item{padding-left:80px;padding-top:80px}@media(min-width: 0px){.mud-grid-item-xs-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-xs-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-xs-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-xs-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-xs-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-xs-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-xs-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-xs-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-xs-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-xs-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-xs-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-xs-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 600px){.mud-grid-item-sm-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-sm-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-sm-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-sm-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-sm-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-sm-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-sm-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-sm-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-sm-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-sm-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-sm-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-sm-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 960px){.mud-grid-item-md-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-md-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-md-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-md-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-md-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-md-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-md-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-md-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-md-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-md-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-md-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-md-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 1280px){.mud-grid-item-lg-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-lg-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-lg-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-lg-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-lg-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-lg-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-lg-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-lg-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-lg-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-lg-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-lg-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-lg-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 1920px){.mud-grid-item-xl-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-xl-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-xl-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-xl-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-xl-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-xl-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-xl-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-xl-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-xl-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-xl-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-xl-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-xl-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 2560px){.mud-grid-item-xxl-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-xxl-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-xxl-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-xxl-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-xxl-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-xxl-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-xxl-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-xxl-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-xxl-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-xxl-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-xxl-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-xxl-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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-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(0.4, 0, 0.2, 1) 0ms}.mud-paper-square{border-radius:0px}.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(0.4, 0, 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{margin:0;flex-shrink:0;border-color:var(--mud-palette-divider);border-width:1px;border-style:solid none none none}.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{border-color:var(--mud-palette-divider-light)}.mud-divider-middle{margin-left:16px;margin-right:16px}.mud-divider-vertical{border-style:none solid none none;height:100%}.mud-divider-flexitem{height:auto;align-self:stretch}.mud-divider-fullwidth{flex-grow:1;width:100%}.mud-drop-zone{position:relative;transition:all 300ms cubic-bezier(0.4, 0, 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;user-select:none}.mud-drop-item .mud-ripple:after{display:none;transform:none}.mud-expansion-panels{flex:0 1 auto;position:relative;max-width:100%;transition:.3s cubic-bezier(0.25, 0.8, 0.5, 1);border-radius:var(--mud-default-borderradius)}.mud-expansion-panels.mud-expansion-panels-square{border-radius:0px}.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(0.25, 0.8, 0.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(0.25, 0.8, 0.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(0.25, 0.8, 0.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-bottom:16px;flex:1 1 auto;max-width:100%}.mud-expand-panel .mud-expand-panel-content.mud-expand-panel-gutters{padding-left:24px;padding-right:24px}.mud-expand-panel .mud-expand-panel-content.mud-expand-panel-dense{padding-top:0px;padding-bottom:0px}.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:0px 3px 5px -1px rgba(0,0,0,.2),0px 6px 10px 0px rgba(0,0,0,.14),0px 1px 18px 0px rgba(0,0,0,.12);box-sizing:border-box;min-height:36px;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:50%;color:var(--mud-palette-text-primary);--mud-ripple-color: var(--mud-palette-text-primary);background-color:var(--mud-palette-action-default-hover)}@media(hover: hover)and (pointer: fine){.mud-fab:hover{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);text-decoration:none;background-color:var(--mud-palette-action-disabled-background)}}.mud-fab:focus-visible{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);text-decoration:none;background-color:var(--mud-palette-action-disabled-background)}.mud-fab:active{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 12px 17px 2px rgba(0,0,0,.14),0px 5px 22px 4px rgba(0,0,0,.12);text-decoration:none;background-color:var(--mud-palette-action-disabled-background)}.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}@media(hover: hover)and (pointer: fine){.mud-fab:disabled:hover{background-color:var(--mud-palette-action-disabled-background)}}.mud-fab-disable-elevation{box-shadow:none}@media(hover: hover)and (pointer: fine){.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);--mud-ripple-color: var(--mud-palette-primary-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-fab-primary:hover{background-color:var(--mud-palette-primary-darken)}}.mud-fab-primary:focus-visible,.mud-fab-primary:active{background-color:var(--mud-palette-primary-darken)}.mud-fab-secondary{color:var(--mud-palette-secondary-text);--mud-ripple-color: var(--mud-palette-secondary-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-fab-secondary:hover{background-color:var(--mud-palette-secondary-darken)}}.mud-fab-secondary:focus-visible,.mud-fab-secondary:active{background-color:var(--mud-palette-secondary-darken)}.mud-fab-tertiary{color:var(--mud-palette-tertiary-text);--mud-ripple-color: var(--mud-palette-tertiary-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-fab-tertiary:hover{background-color:var(--mud-palette-tertiary-darken)}}.mud-fab-tertiary:focus-visible,.mud-fab-tertiary:active{background-color:var(--mud-palette-tertiary-darken)}.mud-fab-info{color:var(--mud-palette-info-text);--mud-ripple-color: var(--mud-palette-info-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-fab-info:hover{background-color:var(--mud-palette-info-darken)}}.mud-fab-info:focus-visible,.mud-fab-info:active{background-color:var(--mud-palette-info-darken)}.mud-fab-success{color:var(--mud-palette-success-text);--mud-ripple-color: var(--mud-palette-success-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-fab-success:hover{background-color:var(--mud-palette-success-darken)}}.mud-fab-success:focus-visible,.mud-fab-success:active{background-color:var(--mud-palette-success-darken)}.mud-fab-warning{color:var(--mud-palette-warning-text);--mud-ripple-color: var(--mud-palette-warning-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-fab-warning:hover{background-color:var(--mud-palette-warning-darken)}}.mud-fab-warning:focus-visible,.mud-fab-warning:active{background-color:var(--mud-palette-warning-darken)}.mud-fab-error{color:var(--mud-palette-error-text);--mud-ripple-color: var(--mud-palette-error-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-fab-error:hover{background-color:var(--mud-palette-error-darken)}}.mud-fab-error:focus-visible,.mud-fab-error:active{background-color:var(--mud-palette-error-darken)}.mud-fab-dark{color:var(--mud-palette-dark-text);--mud-ripple-color: var(--mud-palette-dark-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-fab-dark:hover{background-color:var(--mud-palette-dark-darken)}}.mud-fab-dark:focus-visible,.mud-fab-dark:active{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-form{display:flex;flex-direction:column}.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.mud-list-item-disabled .mud-list-item-secondary-text{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:rgba(0,0,0,0);-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.mud-list-item-clickable:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-list-item-clickable:focus:not(.mud-selected-item),.mud-list-item-clickable:active{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-list-item-secondary-text{font-weight:500;color:var(--mud-palette-text-secondary)}.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;user-select:none}.mud-menu-button-hidden{position:absolute}.mud-menu-list{padding:4px 0}.mud-menu-list>.mud-menu{width:100%}.mud-menu-list>.mud-divider{margin:4px 0}.mud-menu-item{width:100%;display:flex;position:relative;box-sizing:border-box;text-align:start;align-items:center;justify-content:flex-start;text-decoration:none;padding:8px 12px}.mud-menu-item>.mud-icon-root{color:var(--mud-palette-action-default)}.mud-menu-item .mud-menu-item-icon{display:inline-flex;flex-shrink:0;margin-inline-end:12px}.mud-menu-item .mud-menu-item-text{flex:1 1 auto;margin:4px 0}.mud-menu-item.mud-menu-item-dense{padding:2px 12px}.mud-menu-item.mud-disabled{color:var(--mud-palette-action-disabled) !important;cursor:default !important;pointer-events:none !important}.mud-menu-item.mud-disabled .mud-menu-item-icon{color:var(--mud-palette-action-disabled) !important}.mud-menu-list:has(.mud-menu-item-icon) .mud-menu-item:not(:has(.mud-menu-item-icon)) .mud-menu-item-text{margin-inline-start:36px}.mud-link.mud-link-underline-none{text-decoration:none}.mud-link.mud-link-underline-hover{text-decoration:none}@media(hover: hover)and (pointer: fine){.mud-link.mud-link-underline-hover:hover{text-decoration:underline}}.mud-link.mud-link-underline-hover:focus-visible,.mud-link.mud-link-underline-hover:active{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-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)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:var(--mud-palette-action-default-hover)}}.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled):active: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);--mud-ripple-color: var(--mud-palette-primary);background-color:var(--mud-palette-primary-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}}.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.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);--mud-ripple-color: var(--mud-palette-secondary);background-color:var(--mud-palette-secondary-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}}.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.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);--mud-ripple-color: var(--mud-palette-tertiary);background-color:var(--mud-palette-tertiary-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}}.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.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);--mud-ripple-color: var(--mud-palette-info);background-color:var(--mud-palette-info-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}}.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.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);--mud-ripple-color: var(--mud-palette-success);background-color:var(--mud-palette-success-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}}.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.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);--mud-ripple-color: var(--mud-palette-warning);background-color:var(--mud-palette-warning-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}}.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.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);--mud-ripple-color: var(--mud-palette-error);background-color:var(--mud-palette-error-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}}.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.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);--mud-ripple-color: var(--mud-palette-dark);background-color:var(--mud-palette-dark-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}}.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.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{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;justify-content:flex-start;text-transform:inherit;background-color:rgba(0,0,0,0);transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,padding 250ms cubic-bezier(0.4, 0, 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}@media(hover: hover)and (pointer: fine){.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(0.25, 0.8, 0.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-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-mini .mud-nav-link{line-height:1;display:flex;align-items:center}.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:rgba(0,0,0,0)}.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:rgba(0,0,0,0)}.page-content-navigation .page-content-navigation-navlink .mud-nav-link .mud-nav-link-text{margin-left:0px;margin-inline-start:0px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mud-pagination{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0;list-style:none}.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}.mud-picker-view.mud-picker-open{display:block}.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:0px;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:0px;visibility:visible}.mud-picker-pos-above.mud-picker-pos-left{left:50%;transform:translateX(-50%)}.mud-picker-pos-above.mud-picker-pos-right{right:0px}.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:0px}.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)}@media(hover: hover)and (pointer: fine){.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}@media(hover: hover)and (pointer: fine){.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(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.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;align-items:center;justify-content:center;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.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}@media(hover: hover)and (pointer: fine){.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)}@media(hover: hover)and (pointer: fine){.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)))}@media(hover: hover)and (pointer: fine){.mud-range-selection-primary:hover{color:var(--mud-palette-primary-text) !important;background-color:var(--mud-palette-primary) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-secondary:hover{color:var(--mud-palette-secondary-text) !important;background-color:var(--mud-palette-secondary) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-tertiary:hover{color:var(--mud-palette-tertiary-text) !important;background-color:var(--mud-palette-tertiary) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-info:hover{color:var(--mud-palette-info-text) !important;background-color:var(--mud-palette-info) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-success:hover{color:var(--mud-palette-success-text) !important;background-color:var(--mud-palette-success) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-warning:hover{color:var(--mud-palette-warning-text) !important;background-color:var(--mud-palette-warning) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-error:hover{color:var(--mud-palette-error-text) !important;background-color:var(--mud-palette-error) !important}}@media(hover: hover)and (pointer: fine){.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%}@media(hover: hover)and (pointer: fine){.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:hsla(0,0%,100%,.54)}@media(hover: hover)and (pointer: fine){.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:-0.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:0em}.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:0em}.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;touch-action:pinch-zoom;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;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 0px}.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 0px}.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 0px}.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 0px}.mud-picker-time-container .mud-picker-time-clock .mud-picker-time-clock-pointer.mud-picker-time-clock-pointer-animation{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,height 150ms cubic-bezier(0.4, 0, 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:rgba(0,0,0,0);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:rgba(0,0,0,0) !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(0.8, 0.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;touch-action:pinch-zoom}.mud-picker-color-picker .mud-picker-color-overlay{width:100%;height:100%;user-select:none}.mud-picker-color-picker .mud-picker-color-overlay.mud-picker-color-overlay-white{background:linear-gradient(to right, white 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%, black 100%)}.mud-picker-color-picker .mud-picker-color-selector{position:absolute;top:-13px;left:-13px;pointer-events:none}.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:0px;box-shadow:none}.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) 0px 1px 4px 0px}.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) 0px 1px 4px 0px}.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, #FF0000, #ff0 16.66%, #0f0 33.33%, #0ff 50%, #00f 66.66%, #f0f 83.33%, #FF0000)}.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(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-radius 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:var(--mud-default-borderradius);box-shadow:0 0 6px rgba(127,130,134,.18)}@media(hover: hover)and (pointer: fine){.mud-picker-color-dot:hover{cursor:pointer;box-shadow:0px 3px 1px -2px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 1px 5px 0px 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:0px 3px 1px -2px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 1px 5px 0px rgba(0,0,0,.12)}.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-popover .mud-list{max-height:inherit;overflow-y:auto}.mud-popover .mud-popover{z-index:auto}.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-select .mud-popover-cascading-value{z-index:calc(var(--mud-zindex-select) + 5)}.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 tbody tr:last-child td{border-bottom:none}.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.mud-table-dense * tr td,.mud-simple-table.mud-table-dense * tr th{padding:6px 16px}@media(hover: hover)and (pointer: fine){.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)}@media(hover: hover)and (pointer: fine){.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:var(--mud-palette-skeleton)}.mud-skeleton-text{height:auto;transform:scale(1, 0.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, 0.04), transparent)}.mud-slider{color:var(--mud-palette-text-primary);display:inline-block;width:100%;user-select:none;touch-action:pinch-zoom}.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:rgba(0,0,0,0);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(0.4, 0, 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(0.4, 0, 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 #fff !important;transform:scale(4, 4)}@media(hover: hover)and (pointer: fine){.mud-slider .mud-slider-input:disabled::-webkit-slider-thumb:hover{box-shadow:0 0 0 1px #fff !important}}.mud-slider .mud-slider-input:disabled::-moz-range-thumb{background-color:#000;color:#fff;box-shadow:0 0 0 1px #fff !important;transform:scale(4, 4)}@media(hover: hover)and (pointer: fine){.mud-slider .mud-slider-input:disabled::-moz-range-thumb:hover{box-shadow:0 0 0 1px #fff !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), 0.3)}.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-primary-rgb), 0.3)}.mud-slider.mud-slider-primary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-primary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3)}.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-primary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-primary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-primary-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-primary-rgb), 0.24)}}.mud-slider.mud-slider-primary .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-primary .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-primary-rgb), 0.24)}.mud-slider.mud-slider-primary .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-primary .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-primary-rgb), 0.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), 0.3)}.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-secondary-rgb), 0.3)}.mud-slider.mud-slider-secondary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-secondary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3)}.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-secondary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-secondary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-secondary-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-secondary-rgb), 0.24)}}.mud-slider.mud-slider-secondary .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-secondary .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-secondary-rgb), 0.24)}.mud-slider.mud-slider-secondary .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-secondary .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-secondary-rgb), 0.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), 0.3)}.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-tertiary-rgb), 0.3)}.mud-slider.mud-slider-tertiary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-tertiary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3)}.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-tertiary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-tertiary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-tertiary-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-tertiary-rgb), 0.24)}}.mud-slider.mud-slider-tertiary .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-tertiary .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-tertiary-rgb), 0.24)}.mud-slider.mud-slider-tertiary .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-tertiary .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-tertiary-rgb), 0.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), 0.3)}.mud-slider.mud-slider-info .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-info-rgb), 0.3)}.mud-slider.mud-slider-info .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-info);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3)}.mud-slider.mud-slider-info .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-info);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-info .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-info-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-info .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-info-rgb), 0.24)}}.mud-slider.mud-slider-info .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-info .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-info-rgb), 0.24)}.mud-slider.mud-slider-info .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-info .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-info-rgb), 0.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), 0.3)}.mud-slider.mud-slider-success .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-success-rgb), 0.3)}.mud-slider.mud-slider-success .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-success);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3)}.mud-slider.mud-slider-success .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-success);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-success .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-success-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-success .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-success-rgb), 0.24)}}.mud-slider.mud-slider-success .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-success .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-success-rgb), 0.24)}.mud-slider.mud-slider-success .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-success .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-success-rgb), 0.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), 0.3)}.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-warning-rgb), 0.3)}.mud-slider.mud-slider-warning .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-warning);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3)}.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-warning);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-warning .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-warning-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-warning-rgb), 0.24)}}.mud-slider.mud-slider-warning .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-warning .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-warning-rgb), 0.24)}.mud-slider.mud-slider-warning .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-warning .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-warning-rgb), 0.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), 0.3)}.mud-slider.mud-slider-error .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-error-rgb), 0.3)}.mud-slider.mud-slider-error .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-error);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3)}.mud-slider.mud-slider-error .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-error);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-error .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-error-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-error .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-error-rgb), 0.24)}}.mud-slider.mud-slider-error .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-error .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-error-rgb), 0.24)}.mud-slider.mud-slider-error .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-error .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-error-rgb), 0.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), 0.3)}.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-dark-rgb), 0.3)}.mud-slider.mud-slider-dark .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-dark);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3)}.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-dark);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-dark .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-dark-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-dark-rgb), 0.24)}}.mud-slider.mud-slider-dark .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-dark .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-dark-rgb), 0.24)}.mud-slider.mud-slider-dark .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-dark .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-dark-rgb), 0.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:50%}.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(0.4, 0, 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:0px}.mud-progress-circular-circle.mud-progress-static{transition:stroke-dashoffset 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-progress-circular-circle.mud-progress-circular-circle-rounded{stroke-linecap:round}.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(0.65, 0.815, 0.735, 0.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(0.65, 0.815, 0.735, 0.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(0.165, 0.84, 0.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(0.165, 0.84, 0.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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(0.65, 0.815, 0.735, 0.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(0.165, 0.84, 0.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(0.65, 0.815, 0.735, 0.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(0.165, 0.84, 0.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, hsla(0, 0%, 100%, 0.25) 25%, transparent 0, transparent 50%, hsla(0, 0%, 100%, 0.25) 0, hsla(0, 0%, 100%, 0.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-progress-linear.mud-progress-linear-rounded::before{border-radius:var(--mud-default-borderradius)}.mud-radio{cursor:pointer;display:inline-flex;align-items:center;vertical-align:middle;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mud-radio>.mud-radio-content{color:var(--mud-palette-text-primary)}@media(hover: hover)and (pointer: fine){.mud-radio .mud-disabled:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-radio .mud-disabled:hover>.mud-radio-content{color:var(--mud-palette-text-disabled)}.mud-radio .mud-disabled:hover *{cursor:default;color:var(--mud-palette-text-disabled)}}.mud-radio.mud-disabled,.mud-radio .mud-disabled:focus-visible,.mud-radio .mud-disabled:active{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-radio.mud-disabled>.mud-radio-content,.mud-radio .mud-disabled:focus-visible>.mud-radio-content,.mud-radio .mud-disabled:active>.mud-radio-content{color:var(--mud-palette-text-disabled)}.mud-radio.mud-disabled *,.mud-radio .mud-disabled:focus-visible *,.mud-radio .mud-disabled:active *{cursor:default;color:var(--mud-palette-text-disabled)}.mud-radio.mud-readonly,.mud-radio .mud-readonly:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-radio .mud-radio-dense{padding:4px}.mud-radio.mud-checked{color:var(--mud-palette-action-default)}@media(hover: hover)and (pointer: fine){.mud-radio.mud-checked:hover{background-color:var(--mud-palette-action-default-hover)}}.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-icons{display:flex;position:relative}.mud-radio-icons.mud-checked .mud-radio-icon-checked{transform:scale(1);transition:transform 150ms cubic-bezier(0, 0, 0.2, 1) 0ms}.mud-radio-icon-checked{left:0;position:absolute;transform:scale(0);transition:transform 150ms cubic-bezier(0.4, 0, 1, 1) 0ms}.mud-rating-root{display:inline-flex;color:#ffb400}.mud-rating-root:focus-visible,.mud-rating-root:active{outline:none}.mud-rating-root:focus-visible:not(.mud-disabled),.mud-rating-root:active:not(.mud-disabled){background-color:var(--mud-palette-action-default-hover)}.mud-rating-item{cursor:pointer;transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-rating-item.mud-rating-item-active{transform:scale(1.2)}.mud-rating-item.mud-disabled{cursor:default;pointer-events:none}.mud-rating-item.mud-disabled *{cursor:default;color:var(--mud-palette-text-disabled)}@media(hover: hover)and (pointer: fine){.mud-rating-item .mud-disabled:hover{cursor:default;pointer-events:none}.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:0px 3px 5px -1px rgba(0,0,0,.2),0px 6px 10px 0px rgba(0,0,0,.14),0px 1px 18px 0px rgba(0,0,0,.12);touch-action:pinch-zoom}.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;overflow-wrap:anywhere}.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;vertical-align:middle;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mud-switch.mud-disabled{color:var(--mud-palette-text-disabled) !important;cursor:default}.mud-switch.mud-readonly{cursor:default;background-color:rgba(0,0,0,0) !important}@media(hover: hover)and (pointer: fine){.mud-switch .mud-readonly:hover{cursor:default;background-color:rgba(0,0,0,0) !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(0.4, 0, 0.2, 1) 0ms,background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:9px;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(0.4, 0, 0.2, 1) 0ms,transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-switch-base.mud-checked{transform:translateX(20px)}.mud-switch-base.mud-checked+.mud-switch-track{opacity:.5}@media(hover: hover)and (pointer: fine){.mud-switch-base:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-switch-base.mud-switch-disabled{color:var(--mud-palette-gray-default) !important}.mud-switch-base.mud-switch-disabled+.mud-switch-track{opacity:.12 !important}@media(hover: hover)and (pointer: fine){.mud-switch-base.mud-switch-disabled:hover{cursor:default;background-color:rgba(0,0,0,0) !important}}.mud-switch-base.mud-switch-disabled:focus-visible,.mud-switch-base.mud-switch-disabled:active{cursor:default;background-color:rgba(0,0,0,0) !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-small{width:14px;height:14px;box-shadow:0px 2px 1px -1px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 1px 3px 0px rgba(0,0,0,.12);border-radius:50%;background-color:currentColor}.mud-switch-button .mud-switch-thumb-medium{width:20px;height:20px;box-shadow:0px 2px 1px -1px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 1px 3px 0px rgba(0,0,0,.12);border-radius:50%;background-color:currentColor}.mud-switch-button .mud-switch-thumb-large{width:26px;height:26px;box-shadow:0px 2px 1px -1px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 1px 3px 0px rgba(0,0,0,.12);border-radius:50%;background-color:currentColor}.mud-switch-base-small.mud-switch-base{padding:5px}.mud-switch-base-medium.mud-switch-base{padding:9px}.mud-switch-base-large.mud-switch-base{padding:13px}.mud-switch-span-small.mud-switch-span{padding:7px;width:44px;height:24px}.mud-switch-span-medium.mud-switch-span{padding:12px;width:58px;height:38px}.mud-switch-span-large.mud-switch-span{padding:17px;width:72px;height:52px}.mud-switch-label-small{font-size:.8125rem !important}.mud-switch-label-medium{font-size:1rem !important}.mud-switch-label-large{font-size:1.1875rem !important}.mud-timeline{position:relative;display:flex}.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{padding-top:24px;flex-direction:column}.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-vertical::before{top:0;bottom:0;content:"";height:100%;position:absolute;width:2px;background:var(--mud-palette-divider)}.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{flex-direction:row}.mud-timeline-horizontal .mud-timeline-item{padding:0 24px;width:100%;min-width:0}.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-horizontal::before{top:0;bottom:0;content:"";height:2px;position:absolute;width:100%;background:var(--mud-palette-divider)}.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-gray-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{content:"";position:absolute;border-top:16px solid rgba(0,0,0,0);border-bottom:16px solid rgba(0,0,0,0);border-right:16px solid rgba(0,0,0,.1);top:calc(50% - 14px)}.mud-timeline-modifiers .mud-timeline-item-content .mud-card::after{content:"";position:absolute;border-top:16px solid rgba(0,0,0,0);border-bottom:16px solid rgba(0,0,0,0);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-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-typography{margin:0}.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-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-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-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-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-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(0.4, 0, 0.2, 1) 0ms}.mud-table.mud-table-square{border-radius:0px}.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}.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}@media(hover: hover)and (pointer: fine){.mud-table-root .mud-table-head .mud-table-cell .mud-button-root:hover{color:var(--mud-palette-action-default)}.mud-table-root .mud-table-head .mud-table-cell .mud-button-root:hover .mud-table-sort-label-icon{opacity:.8}}.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,.mud-table-root>.mud-table-foot:last-child>.mud-table-row:last-child>.mud-table-cell{border-bottom:none}.mud-table-sort-label{user-select:auto;display:inline-flex;align-items:center;flex-direction:inherit;justify-content:flex-start}.mud-table-sort-label .mud-table-sort-label-icon{font-size:18px;transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 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{left:0;position:sticky;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:-4px}.mud-table-cell .mud-checkbox>.mud-icon-button{padding:4px}.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-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-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell:first-child{border-right:none;border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell:last-child{border-right:1px solid var(--mud-palette-table-lines);border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-head.table-head-bordered .mud-table-row .mud-table-cell:last-child{border-right:1px solid var(--mud-palette-table-lines);border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-head.table-head-bordered .mud-table-row .mud-table-cell:only-child{border-right:none;border-top-right-radius:var(--mud-default-borderradius)}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-head .mud-table-row th.mud-table-cell:first-child{border-right:none;border-top-right-radius:var(--mud-default-borderradius)}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-foot.table-foot-bordered .mud-table-row .mud-table-cell:last-child{border-right:1px solid var(--mud-palette-table-lines);border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-foot .mud-table-row .mud-table-cell:first-child{border-right:none}.mud-table-sticky-header .mud-table-container{overflow-x:auto}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell:first-child{border-radius:var(--mud-default-borderradius) 0px 0px 0px}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell:last-child{border-radius:0px var(--mud-default-borderradius) 0px 0px}.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-header * .mud-table-root .mud-table-head * .mud-table-loading{background-color:var(--mud-palette-surface);position:sticky;z-index:2;top:59px}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-filter-panel-cell{top:59px}table:has(.mud-table-loading) .mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-filter-panel-cell{top:63px}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell.sticky-left,.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell.sticky-right{z-index:3;background-color:var(--mud-palette-background-gray)}.mud-table-sticky-header.mud-table-dense * .mud-table-root .mud-table-head * .mud-table-loading{top:39px}.mud-table-sticky-header.mud-table-dense * .mud-table-root .mud-table-head * .mud-filter-panel-cell{top:39px}table:has(.mud-table-loading) .mud-table-sticky-header.mud-table-dense * .mud-table-root .mud-table-head * .mud-filter-panel-cell{top:43px}.mud-table-sticky-footer .mud-table-container{overflow-x:auto}.mud-table-sticky-footer * .mud-table-root .mud-table-foot{position:sticky;z-index:2;bottom:0}.mud-table-sticky-footer * .mud-table-root .mud-table-foot * .mud-table-cell{background-color:var(--mud-palette-surface)}.mud-table-row{color:inherit;display:table-row;outline:0;vertical-align:middle}@media(hover: hover)and (pointer: fine){.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)}@media(hover: hover)and (pointer: fine){.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-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;position:sticky;left:0}.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;flex-wrap:nowrap}.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:0px !important;min-width:52px}.mud-table-pagination-select .mud-select-input{margin-top:0px !important;padding:0 7px !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{width:100%}.mud-table-empty-row{background-color:var(--mud-palette-surface);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-top:-12px;margin-bottom:-12px;margin-inline-start:-12px;margin-inline-end:-2px}@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:revert}.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}.mud-xs-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-xs-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-sm-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-sm-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-md-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-md-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-lg-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-lg-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-xl-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-xl-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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-xxl-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-xxl-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}.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 .mud-tooltip-root{width:auto}.mud-tabs.mud-tabs-vertical-reverse{flex-direction:row-reverse}.mud-tabs.mud-tabs-rounded{border-radius:var(--mud-default-borderradius);overflow:hidden}.mud-tabs.mud-tabs-rounded .mud-tabs-tabbar{border-radius:var(--mud-default-borderradius)}.mud-tabs.mud-tabs-rounded .mud-tabs-panels{border-radius:var(--mud-default-borderradius)}.mud-tabs-tabbar{position:relative;background-color:var(--mud-palette-surface)}.mud-tabs-tabbar.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-tabbar.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-tabbar.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-tabbar.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-tabbar.mud-tabs-rounded{border-radius:var(--mud-default-borderradius)}.mud-tabs-tabbar.mud-tabs-vertical .mud-tabs-tabbar-inner{flex-direction:column}.mud-tabs-tabbar.mud-tabs-vertical .mud-tabs-tabbar-inner .mud-tabs-scroll-button .mud-button-root{width:100%;border-radius:0px;height:32px}.mud-tabs-tabbar.mud-tabs-vertical .mud-tabs-tabbar-inner .mud-tabs-scroll-button .mud-button-root .mud-icon-button-label .mud-icon-root{transform:rotate(90deg)}.mud-tabs-tabbar .mud-tabs-tabbar-inner{display:flex;min-height:48px}.mud-tabs-tabbar-content{width:100%;flex:1 1 auto;display:inline-block;position:relative;white-space:nowrap;overflow:hidden}.mud-tabs-tabbar-content .mud-tabs-tabbar-wrapper{width:max-content;position:inherit;display:flex;transition:.3s cubic-bezier(0.25, 0.8, 0.5, 1)}.mud-tabs-tabbar-content .mud-tabs-tabbar-wrapper.mud-tabs-centered{margin:auto}.mud-tabs-tabbar-content .mud-tabs-tabbar-wrapper.mud-tabs-vertical{flex-direction:column}.mud-tabs-panels{position:relative;transition:.3s cubic-bezier(0.25, 0.8, 0.5, 1)}.mud-tabs-panels.mud-tabs-vertical{display:flex;flex-grow:1}.mud-tab{width:100%;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(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.mud-tab:hover{cursor:pointer;background-color:var(--mud-palette-action-default-hover)}}.mud-tab.mud-tab-active{color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.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.mud-tab-panel-hidden{display:none}.mud-tab-slider{position:absolute;background:var(--mud-palette-primary)}.mud-tab-slider.mud-tab-slider-horizontal{height:2px;bottom:0;transition:left .3s cubic-bezier(0.64, 0.09, 0.08, 1);will-change:left}.mud-tab-slider.mud-tab-slider-horizontal.mud-tab-slider-horizontal-reverse{top:0;bottom:unset}.mud-tab-slider.mud-tab-slider-vertical{width:2px;right:0;transition:top .3s cubic-bezier(0.64, 0.09, 0.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-tabbar-primary{background-color:var(--mud-palette-primary);color:var(--mud-palette-primary-text)}.mud-tabs-tabbar-primary .mud-tab-slider{background:var(--mud-palette-primary-text)}.mud-tabs-tabbar-primary .mud-tab.mud-tab-active{color:var(--mud-palette-primary-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-primary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-primary-lighten)}}.mud-tabs-tabbar-secondary{background-color:var(--mud-palette-secondary);color:var(--mud-palette-secondary-text)}.mud-tabs-tabbar-secondary .mud-tab-slider{background:var(--mud-palette-secondary-text)}.mud-tabs-tabbar-secondary .mud-tab.mud-tab-active{color:var(--mud-palette-secondary-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-secondary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-secondary-lighten)}}.mud-tabs-tabbar-tertiary{background-color:var(--mud-palette-tertiary);color:var(--mud-palette-tertiary-text)}.mud-tabs-tabbar-tertiary .mud-tab-slider{background:var(--mud-palette-tertiary-text)}.mud-tabs-tabbar-tertiary .mud-tab.mud-tab-active{color:var(--mud-palette-tertiary-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-tertiary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-tertiary-lighten)}}.mud-tabs-tabbar-info{background-color:var(--mud-palette-info);color:var(--mud-palette-info-text)}.mud-tabs-tabbar-info .mud-tab-slider{background:var(--mud-palette-info-text)}.mud-tabs-tabbar-info .mud-tab.mud-tab-active{color:var(--mud-palette-info-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-info .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-info-lighten)}}.mud-tabs-tabbar-success{background-color:var(--mud-palette-success);color:var(--mud-palette-success-text)}.mud-tabs-tabbar-success .mud-tab-slider{background:var(--mud-palette-success-text)}.mud-tabs-tabbar-success .mud-tab.mud-tab-active{color:var(--mud-palette-success-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-success .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-success-lighten)}}.mud-tabs-tabbar-warning{background-color:var(--mud-palette-warning);color:var(--mud-palette-warning-text)}.mud-tabs-tabbar-warning .mud-tab-slider{background:var(--mud-palette-warning-text)}.mud-tabs-tabbar-warning .mud-tab.mud-tab-active{color:var(--mud-palette-warning-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-warning .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-warning-lighten)}}.mud-tabs-tabbar-error{background-color:var(--mud-palette-error);color:var(--mud-palette-error-text)}.mud-tabs-tabbar-error .mud-tab-slider{background:var(--mud-palette-error-text)}.mud-tabs-tabbar-error .mud-tab.mud-tab-active{color:var(--mud-palette-error-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-error .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-error-lighten)}}.mud-tabs-tabbar-dark{background-color:var(--mud-palette-dark);color:var(--mud-palette-dark-text)}.mud-tabs-tabbar-dark .mud-tab-slider{background:var(--mud-palette-dark-text)}.mud-tabs-tabbar-dark .mud-tab.mud-tab-active{color:var(--mud-palette-dark-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-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-tabbar .mud-tab{padding:6px 14px}.mud-dynamic-tabs .mud-tabs-tabbar .mud-tab .mud-icon-button{padding:4px;margin-right:-4px;margin-inline-end:-4px;margin-inline-start:unset}.mud-dynamic-tabs .mud-tabs-tabbar .mud-tab .mud-tabs-panel-header-before{padding-right:8px;padding-inline-end:8px;padding-inline-start:unset}.mud-dynamic-tabs .mud-tabs-tabbar .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-autocomplete--with-progress .mud-select-input input{padding-right:3.5rem !important}.mud-select.mud-autocomplete--with-progress .mud-input-adorned-end input{padding-right:4.5rem !important}.mud-select.mud-autocomplete--with-progress .mud-select-input .mud-icon-button{display:none !important}.mud-select.mud-autocomplete--with-progress .progress-indicator-circular{position:absolute;width:100%;top:0;bottom:0;display:flex;align-items:center;justify-content:flex-end;padding-top:.25rem;padding-bottom:.25rem;padding-right:1rem}.mud-select.mud-autocomplete--with-progress .mud-progress-linear{position:absolute;bottom:-1px;height:2px}.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-rtl-provider .mud-select .progress-indicator-circular--with-adornment{padding-right:1rem}.mud-rtl-provider.mud-application-layout-rtl .mud-select .progress-indicator-circular--with-adornment{padding-right:0rem !important;padding-left:1rem !important}.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;box-sizing:border-box;align-items:center;color-scheme:var(--mud-native-html-color-scheme);line-height:1.1876em}.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}@media(hover: hover)and (pointer: fine){.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, 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, 0.2, 1) 0ms;background-color:rgba(0,0,0,.09);border-top-left-radius:4px;border-top-right-radius:4px}@media(hover: hover)and (pointer: fine){.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(0.4, 0, 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, 0.2, 1) 0ms;border-bottom:2px solid var(--mud-palette-primary);pointer-events:none}@media(hover: hover)and (pointer: fine){.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:0px}.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%;min-width:0%;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(0.4, 0, 0.2, 1) 0ms}.mud-input.mud-input-outlined>.mud-input-outlined-border legend{float:none;visibility:hidden;font-size:.75rem;font-weight:inherit;width:0;height:0;margin:0 11px 0 11px;padding:0;position:relative}@media(hover: hover)and (pointer: fine){.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.mud-shrink>.mud-input-outlined-border legend{width:auto;padding:0 5px}.mud-input.mud-input-outlined:focus-within>.mud-input-outlined-border,.mud-input.mud-input-outlined:focus-within .mud-shrink>.mud-input-outlined-border{border-width:2px;border-color:var(--mud-palette-primary)}.mud-input.mud-input-outlined:focus-within>.mud-input-outlined-border legend,.mud-input.mud-input-outlined:focus-within .mud-shrink>.mud-input-outlined-border legend{width:auto;padding:0 5px}.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:1lh;margin:0;display:block;padding:6px 0 7px;min-width:0;background:none;position:relative;box-sizing:content-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mud-input>input.mud-input-root::placeholder,div.mud-input-slot.mud-input-root::placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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,.mud-input>input.mud-input-root:active,div.mud-input-slot.mud-input-root:focus,div.mud-input-slot.mud-input-root:active{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:rgba(0,0,0,0);resize:none;cursor:auto}.mud-input>textarea.mud-input-root::placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root::-webkit-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root:-moz-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root::-moz-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root:-ms-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root::-ms-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 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,.mud-input>textarea.mud-input-root:active{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{box-sizing:border-box;margin-top:0;margin-bottom:0;padding:27px 12px 10px;mask-image:linear-gradient(to bottom, transparent 27px, black 27px)}.mud-input>textarea.mud-input-root.mud-input-root-filled.mud-input-root-margin-dense{padding-top:23px;padding-bottom:6px;mask-image:linear-gradient(to bottom, transparent 23px, black 23px)}.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{padding-top:18px;padding-bottom:19px;mask-image:linear-gradient(to bottom, transparent 18px, black 18px)}.mud-input>textarea.mud-input-root.mud-input-root-filled.mud-input-root-hidden-label.mud-input-root-margin-dense{padding-top:10px;padding-bottom:11px;mask-image:linear-gradient(to bottom, transparent 10px, black 10px)}.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:rgba(0,0,0,0)}.mud-input>textarea.mud-input-root-outlined{box-sizing:border-box;margin-top:0;margin-bottom:0;padding:18.5px 14px;mask-image:linear-gradient(to bottom, transparent 18.5px, black 18.5px)}.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{padding-top:10.5px;padding-bottom:10.5px;mask-image:linear-gradient(to bottom, transparent 10.5px, black 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{margin-right:8px;margin-inline-end:8px;margin-inline-start:unset}.mud-input-adornment-start.mud-input-root-filled-shrink{margin-top:16px}.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}.mud-input-control.mud-input-control-full-width{width:100%}.mud-input-control.mud-input-control-boolean-input{flex:none;margin:0}.mud-input-control.mud-input-control-boolean-input .mud-radio-group{display:inherit;flex-direction:row;align-items:center;flex-wrap:wrap}.mud-input-control.mud-input-outlined-with-label{margin-top:8px;margin-bottom:4px}.mud-input-control.mud-input-control-margin-dense{margin:4px 0px}.mud-input-control.mud-input-control-margin-dense.mud-input-outlined-with-label{margin-top:8px;margin-bottom:4px}.mud-input-control.mud-input-control-margin-normal{margin:8px 0px}.mud-input-control.mud-input-control-margin-normal.mud-input-outlined-with-label{margin-top:16px;margin-bottom:8px}.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.mud-input-text-with-label{margin-top:16px}.mud-input-control>.mud-input-control-input-container>.mud-input-label-outlined.mud-input-label-inputcontrol{line-height:1.15rem}.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.15rem;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 0;min-width:unset;min-height:unset}.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-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, 0.2, 1) 0ms,transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms}.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;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.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(0.75);transform-origin:top left}.mud-input-label-animated{transition:color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,max-width 200ms cubic-bezier(0, 0, 0.2, 1) 0ms}.mud-input-label-filled{z-index:1;transform:translate(12px, 20px) scale(1);max-width:calc(100% - 12px);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);max-width:calc(100% - 14px);pointer-events:none;background-color:rgba(0,0,0,0);padding:0px 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(0.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(0.75);max-width:calc((100% - 12px)/.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(0.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(0.75);max-width:calc((100% - 14px)/.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(0.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(0.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(0.75)}.mud-input-content-placement-start{flex-direction:row-reverse}.mud-input-content-placement-start.mud-input-with-content{margin-left:16px;margin-inline-start:16px}.mud-input-content-placement-end{flex-direction:row}.mud-input-content-placement-end.mud-input-with-content{margin-right:16px;margin-inline-end:16px}.mud-input-content-placement-top{margin-inline-end:unset;flex-direction:column-reverse}.mud-input-content-placement-top.mud-input-with-content{margin-left:16px;margin-inline-start:16px}.mud-input-content-placement-bottom{margin-inline-end:unset;flex-direction:column}.mud-input-content-placement-bottom.mud-input-with-content{margin-left:16px;margin-inline-start:16px}.mud-file-upload{flex-grow:0}.mud-file-upload>.mud-input-control-input-container{display:initial !important}.mud-file-upload.mud-input-control{margin-top:0}.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(0.25, 0.8, 0.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:rgba(0,0,0,0);background-color:rgba(0,0,0,0);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:0px;padding:0px;list-style:none;overflow:auto}.mud-treeview.mud-treeview-selected-primary .mud-treeview-item-content.mud-treeview-item-selected{color:var(--mud-palette-primary);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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:0px;padding:0px;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:rgba(0,0,0,0)}.mud-treeview-item .mud-treeview-item-arrow .mud-icon-button,.mud-treeview-item .mud-treeview-item-checkbox .mud-icon-button{padding:4px}.mud-treeview-item.mud-treeview-item-disabled{color:var(--mud-palette-action-disabled) !important;cursor:default !important;pointer-events:none !important}.mud-treeview-item-content{width:100%;display:flex;padding:4px 8px;align-items:center;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.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(0.25, 0.8, 0.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}.mud-treeview-select-none{user-select:none}@keyframes rotation{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.mud-application-layout-rtl .mud-treeview-item-arrow{transform:scaleX(-1)}.mud-data-grid th{position:relative}.mud-data-grid .drop-allowed{color:var(--mud-palette-success)}.mud-data-grid .drop-not-allowed{color:var(--mud-palette-error)}.mud-data-grid .drag-icon-options{transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;opacity:0;cursor:grab}.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.filter-header-cell{padding:6px 24px 6px 16px;padding-inline-start:16px;padding-inline-end:24px}.mud-data-grid .mud-table-cell.sticky-left,.mud-data-grid .mud-table-cell.sticky-right{position:sticky;background-color:var(--mud-palette-background-gray);z-index:1}.mud-data-grid .mud-table-cell.sticky-left{left:0px}.mud-data-grid .mud-table-cell.sticky-right{right:0px}.mud-data-grid .mud-table-cell:not(.mud-table-child-content) .mud-input-text{margin-top:0 !important}.mud-data-grid .mud-table-cell .column-header{display:flex;align-items:center;justify-content:space-between}.mud-data-grid .mud-table-cell .column-header .sortable-column-header{width:100%}@media(hover: hover)and (pointer: fine){.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,.mud-data-grid .mud-table-cell .column-header:hover .column-options .drag-icon-options{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{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-inline-start:4px;margin-inline-end:unset;user-select:none;transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 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 .mud-sort-index{transform:scale(0.9) translate(-2px, -2px)}.mud-data-grid .mud-table-cell .column-header .column-options .mud-menu .mud-icon-button-label{user-select:none;transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;opacity:0}.mud-data-grid .mud-table-cell .mud-resizer{position:absolute;top:0;right:0;width:8px;cursor:col-resize;user-select:none}.mud-application-layout-rtl .mud-data-grid .mud-table-cell .mud-resizer{right:auto;left:0}@media(hover: hover)and (pointer: fine){.mud-data-grid .mud-table-cell .mud-resizer:hover{border-right:2px solid var(--mud-palette-primary)}}.mud-data-grid .mud-table-cell .mud-resizing{border-right:2px solid var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-data-grid-columns-panel:hover .column-options .sort-direction-icon,.mud-data-grid-columns-panel:hover .column-options .column-options-icon,.mud-data-grid-columns-panel:hover .column-options .drag-icon-options{opacity:.8;color:var(--mud-palette-action-default)}.mud-data-grid-columns-panel:hover .column-options .mud-menu .mud-icon-button-label{opacity:1;color:var(--mud-palette-action-default)}}.mud-data-grid-columns-panel .sort-direction-icon{font-size:18px;margin-left:4px;margin-inline-start:4px;margin-inline-end:unset;user-select:none;transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-data-grid-columns-panel .sort-direction-icon.mud-direction-desc{opacity:1;transform:rotate(180deg)}.mud-data-grid-columns-panel .sort-direction-icon.mud-direction-asc{opacity:1;transform:rotate(0deg)}.mud-data-grid-columns-panel .mud-sort-index{transform:scale(0.9) translate(-2px, -2px)}.mud-data-grid-columns-panel .drag-icon-options{transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;opacity:1;cursor:grab}.mud-data-grid-columns-panel .mud-drop-item-preview-start{z-index:0}.mud-toggle-group{display:grid;overflow:hidden;box-sizing:border-box;border-width:0;border-radius:var(--mud-default-borderradius)}.mud-toggle-group>.mud-toggle-item{box-shadow:none;border-width:inherit;border-style:none;border-color:inherit;border-radius:0}.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>.mud-toggle-item:not(:first-child),.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>:not(:first-child) .mud-toggle-item{margin-left:-1px}.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>.mud-toggle-item:not(:first-child).mud-toggle-item-delimiter,.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>:not(:first-child) .mud-toggle-item.mud-toggle-item-delimiter{border-left-style:solid !important}.mud-toggle-group-horizontal.mud-toggle-group-rtl>.mud-toggle-item:not(:last-child),.mud-toggle-group-horizontal.mud-toggle-group-rtl>:not(:last-child) .mud-toggle-item{margin-left:-1px}.mud-toggle-group-horizontal.mud-toggle-group-rtl>.mud-toggle-item:not(:last-child).mud-toggle-item-delimiter,.mud-toggle-group-horizontal.mud-toggle-group-rtl>:not(:last-child) .mud-toggle-item.mud-toggle-item-delimiter{border-left-style:solid !important}.mud-toggle-group-vertical>.mud-toggle-item:not(:first-child),.mud-toggle-group-vertical>:not(:first-child) .mud-toggle-item{margin-top:-1px}.mud-toggle-group-vertical>.mud-toggle-item:not(:first-child).mud-toggle-item-delimiter,.mud-toggle-group-vertical>:not(:first-child) .mud-toggle-item.mud-toggle-item-delimiter{border-top-style:solid !important}.mud-toggle-item{padding:6px;min-width:auto;border-style:none !important}.mud-toggle-item>.mud-button-label{min-height:20px}.mud-toggle-item .mud-toggle-item-check-icon{margin:0 6px;font-size:20px}.mud-toggle-item-size-small{padding:4px}.mud-toggle-item-size-small .mud-toggle-item-check-icon{margin:0 4px;font-size:18px}.mud-toggle-item-size-large{padding:8px}.mud-toggle-item-size-large .mud-toggle-item-check-icon{margin:0 8px;font-size:22px}.mud-toggle-item-fixed>.mud-button-label:has(>.mud-toggle-item-check-icon){display:grid;grid-template-columns:1fr auto 1fr}.mud-toggle-item-check-icon{justify-self:end}.mud-toggle-item-content{display:contents}.mud-stepper .mud-stepper-nav .mud-step{padding:24px;position:relative;cursor:default;pointer-events:none;user-select:text}.mud-stepper .mud-stepper-nav .mud-step.mud-clickable{cursor:pointer;pointer-events:auto;user-select:none;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.mud-stepper .mud-stepper-nav .mud-step.mud-clickable:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-stepper .mud-stepper-nav .mud-step.mud-clickable:focus-visible,.mud-stepper .mud-stepper-nav .mud-step.mud-clickable:active{background-color:var(--mud-palette-action-default-hover)}.mud-stepper .mud-stepper-nav .mud-step:disabled .mud-step-label-icon{background-color:var(--mud-palette-lines-default) !important;color:var(--mud-palette-text-disabled) !important}.mud-stepper .mud-stepper-nav .mud-step:disabled .mud-step-label-content{color:var(--mud-palette-text-disabled) !important}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label{display:flex;align-items:center;flex-direction:row;height:100%;gap:8px}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-icon{display:flex;flex-shrink:0;color:var(--mud-palette-white);border-radius:50%;background-color:var(--mud-palette-text-disabled);height:24px;width:24px;align-items:center;justify-content:center;font-size:12px;letter-spacing:0;text-indent:0;white-space:nowrap}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-icon .mud-typography{line-height:1}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-content{width:100%;color:var(--mud-palette-text-secondary);--mud-ripple-color: var(--mud-palette-text-secondary);text-align:start}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-content-title{line-height:var(--mud-typography-body2-lineheight)}.mud-stepper .mud-stepper-nav .mud-step.active .mud-step-label-content{color:var(--mud-palette-text-primary);--mud-ripple-color: var(--mud-palette-text-primary)}.mud-stepper .mud-stepper-nav.mud-stepper-nav-scrollable{overflow:auto}.mud-stepper .mud-stepper-nav.mud-stepper-nav-scrollable .mud-step{min-width:fit-content}.mud-stepper .mud-stepper-nav.mud-stepper-nav-scrollable .mud-stepper-nav-connector{min-width:32px}.mud-stepper .mud-stepper-content{padding:0 24px}.mud-stepper .mud-stepper-nav-connector{flex:1 1 auto}.mud-stepper .mud-stepper-nav-connector .mud-stepper-nav-connector-line{display:block;border-color:var(--mud-palette-lines-inputs)}.mud-stepper.mud-stepper__horizontal .mud-stepper-nav{display:flex}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step{flex-basis:175px}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step-label{flex-direction:column;justify-content:flex-start;align-items:center}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step-label .mud-step-label-icon{margin-inline-end:0px !important}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step-label .mud-step-label-content{margin-top:12px;text-align:center}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-stepper-nav-connector{margin:35px -67px 0;align-self:flex-start}.mud-stepper.mud-stepper__horizontal .mud-stepper-nav-connector{align-self:center;margin:0 -16px}.mud-stepper.mud-stepper__horizontal .mud-stepper-nav-connector .mud-stepper-nav-connector-line{border-top-style:solid;border-top-width:1px}.mud-stepper.mud-stepper__vertical .mud-stepper-nav{padding:8px 0px}.mud-stepper.mud-stepper__vertical .mud-step{padding:0 16px}.mud-stepper.mud-stepper__vertical .mud-step .mud-step-label{padding:8px 0px}.mud-stepper.mud-stepper__vertical .mud-stepper-nav-connector{margin-inline-start:28px;margin-inline-end:0}.mud-stepper.mud-stepper__vertical .mud-stepper-nav-connector .mud-stepper-nav-connector-line{border-inline-start:1px solid #bdbdbd;min-height:24px}.mud-stepper.mud-stepper__vertical .mud-stepper-content{margin-inline-start:28px;margin-inline-end:0;padding-inline-start:20px;padding-inline-end:0;border-inline-start:1px solid var(--mud-palette-lines-inputs)}.mud-stepper-step-button{display:inline-flex;-moz-box-align:center;align-items:center;-moz-box-pack:center;justify-content:center;position:relative;background-color:rgba(0,0,0,0);outline:0px;border:0px;border-radius:0px;cursor:pointer;user-select:none;vertical-align:middle;appearance:none;text-decoration:none;color:inherit;width:100%;padding:24px 16px;margin:-24px -16px;box-sizing:content-box}.mud-swipearea{touch-action:none}.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:0px !important}.border-t-0{border-top-width:0px !important}.border-r-0{border-right-width:0px !important}.border-b-0{border-bottom-width:0px !important}.border-l-0{border-left-width:0px !important}.border-x-0{border-left-width:0px !important;border-right-width:0px !important}.border-y-0{border-top-width:0px !important;border-bottom-width:0px !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-grow-start>*:first-child{flex-grow:1 !important}.flex-grow-end>*:last-child{flex-grow:1 !important}.flex-grow-start-and-end>:first-child,.flex-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-grow-all>*{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:0px}.gap-x-0{column-gap:0px}.gap-y-0{row-gap:0px}.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}.gap-17{gap:68px}.gap-x-17{column-gap:68px}.gap-y-17{row-gap:68px}.gap-18{gap:72px}.gap-x-18{column-gap:72px}.gap-y-18{row-gap:72px}.gap-19{gap:76px}.gap-x-19{column-gap:76px}.gap-y-19{row-gap:76px}.gap-20{gap:80px}.gap-x-20{column-gap:80px}.gap-y-20{row-gap:80px}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-sm-grow-end>*:last-child{flex-grow:1 !important}.flex-sm-grow-start-and-end>:first-child,.flex-sm-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-sm-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-sm-grow-all>*{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:0px}.gap-x-sm-0{column-gap:0px}.gap-y-sm-0{row-gap:0px}.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}.gap-sm-17{gap:68px}.gap-x-sm-17{column-gap:68px}.gap-y-sm-17{row-gap:68px}.gap-sm-18{gap:72px}.gap-x-sm-18{column-gap:72px}.gap-y-sm-18{row-gap:72px}.gap-sm-19{gap:76px}.gap-x-sm-19{column-gap:76px}.gap-y-sm-19{row-gap:76px}.gap-sm-20{gap:80px}.gap-x-sm-20{column-gap:80px}.gap-y-sm-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-md-grow-end>*:last-child{flex-grow:1 !important}.flex-md-grow-start-and-end>:first-child,.flex-md-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-md-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-md-grow-all>*{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:0px}.gap-x-md-0{column-gap:0px}.gap-y-md-0{row-gap:0px}.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}.gap-md-17{gap:68px}.gap-x-md-17{column-gap:68px}.gap-y-md-17{row-gap:68px}.gap-md-18{gap:72px}.gap-x-md-18{column-gap:72px}.gap-y-md-18{row-gap:72px}.gap-md-19{gap:76px}.gap-x-md-19{column-gap:76px}.gap-y-md-19{row-gap:76px}.gap-md-20{gap:80px}.gap-x-md-20{column-gap:80px}.gap-y-md-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-lg-grow-end>*:last-child{flex-grow:1 !important}.flex-lg-grow-start-and-end>:first-child,.flex-lg-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-lg-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-lg-grow-all>*{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:0px}.gap-x-lg-0{column-gap:0px}.gap-y-lg-0{row-gap:0px}.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}.gap-lg-17{gap:68px}.gap-x-lg-17{column-gap:68px}.gap-y-lg-17{row-gap:68px}.gap-lg-18{gap:72px}.gap-x-lg-18{column-gap:72px}.gap-y-lg-18{row-gap:72px}.gap-lg-19{gap:76px}.gap-x-lg-19{column-gap:76px}.gap-y-lg-19{row-gap:76px}.gap-lg-20{gap:80px}.gap-x-lg-20{column-gap:80px}.gap-y-lg-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-xl-grow-end>*:last-child{flex-grow:1 !important}.flex-xl-grow-start-and-end>:first-child,.flex-xl-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-xl-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-xl-grow-all>*{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:0px}.gap-x-xl-0{column-gap:0px}.gap-y-xl-0{row-gap:0px}.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}.gap-xl-17{gap:68px}.gap-x-xl-17{column-gap:68px}.gap-y-xl-17{row-gap:68px}.gap-xl-18{gap:72px}.gap-x-xl-18{column-gap:72px}.gap-y-xl-18{row-gap:72px}.gap-xl-19{gap:76px}.gap-x-xl-19{column-gap:76px}.gap-y-xl-19{row-gap:76px}.gap-xl-20{gap:80px}.gap-x-xl-20{column-gap:80px}.gap-y-xl-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-xxl-grow-end>*:last-child{flex-grow:1 !important}.flex-xxl-grow-start-and-end>:first-child,.flex-xxl-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-xxl-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-xxl-grow-all>*{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:0px}.gap-x-xxl-0{column-gap:0px}.gap-y-xxl-0{row-gap:0px}.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}.gap-xxl-17{gap:68px}.gap-x-xxl-17{column-gap:68px}.gap-y-xxl-17{row-gap:68px}.gap-xxl-18{gap:72px}.gap-x-xxl-18{column-gap:72px}.gap-y-xxl-18{row-gap:72px}.gap-xxl-19{gap:76px}.gap-x-xxl-19{column-gap:76px}.gap-y-xxl-19{row-gap:76px}.gap-xxl-20{gap:80px}.gap-x-xxl-20{column-gap:80px}.gap-y-xxl-20{row-gap:80px}}.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 !important}.object-cover{object-fit:cover !important}.object-contain{object-fit:contain !important}.object-fill{object-fit:fill !important}.object-scale-down{object-fit:scale-down !important}.object-center{object-position:center !important}.object-top{object-position:top !important}.object-bottom{object-position:bottom !important}.object-left{object-position:left !important}.object-left-top{object-position:left top !important}.object-left-bottom{object-position:left bottom !important}.object-right{object-position:right !important}.object-right-top{object-position:right top !important}.object-right-bottom{object-position:right bottom !important}.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 !important}.fixed{position:fixed !important}.relative{position:relative !important}.static{position:static !important}.sticky{position:sticky !important}.visible{visibility:visible}.invisible{visibility:hidden}[hidden]{display:none !important}.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-17,.my-17{margin-top:68px !important}.mr-17,.mx-17{margin-right:68px !important}.ml-17,.mx-17{margin-left:68px !important}.mb-17,.my-17{margin-bottom:68px !important}.ms-17{margin-inline-start:68px !important}.me-17{margin-inline-end:68px !important}.ma-17{margin:68px !important}.mt-18,.my-18{margin-top:72px !important}.mr-18,.mx-18{margin-right:72px !important}.ml-18,.mx-18{margin-left:72px !important}.mb-18,.my-18{margin-bottom:72px !important}.ms-18{margin-inline-start:72px !important}.me-18{margin-inline-end:72px !important}.ma-18{margin:72px !important}.mt-19,.my-19{margin-top:76px !important}.mr-19,.mx-19{margin-right:76px !important}.ml-19,.mx-19{margin-left:76px !important}.mb-19,.my-19{margin-bottom:76px !important}.ms-19{margin-inline-start:76px !important}.me-19{margin-inline-end:76px !important}.ma-19{margin:76px !important}.mt-20,.my-20{margin-top:80px !important}.mr-20,.mx-20{margin-right:80px !important}.ml-20,.mx-20{margin-left:80px !important}.mb-20,.my-20{margin-bottom:80px !important}.ms-20{margin-inline-start:80px !important}.me-20{margin-inline-end:80px !important}.ma-20{margin:80px !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-17,.py-17{padding-top:68px !important}.pr-17,.px-17{padding-right:68px !important}.pl-17,.px-17{padding-left:68px !important}.pb-17,.py-17{padding-bottom:68px !important}.ps-17{padding-inline-start:68px !important}.pe-17{padding-inline-end:68px !important}.pa-17{padding:68px !important}.pt-18,.py-18{padding-top:72px !important}.pr-18,.px-18{padding-right:72px !important}.pl-18,.px-18{padding-left:72px !important}.pb-18,.py-18{padding-bottom:72px !important}.ps-18{padding-inline-start:72px !important}.pe-18{padding-inline-end:72px !important}.pa-18{padding:72px !important}.pt-19,.py-19{padding-top:76px !important}.pr-19,.px-19{padding-right:76px !important}.pl-19,.px-19{padding-left:76px !important}.pb-19,.py-19{padding-bottom:76px !important}.ps-19{padding-inline-start:76px !important}.pe-19{padding-inline-end:76px !important}.pa-19{padding:76px !important}.pt-20,.py-20{padding-top:80px !important}.pr-20,.px-20{padding-right:80px !important}.pl-20,.px-20{padding-left:80px !important}.pb-20,.py-20{padding-bottom:80px !important}.ps-20{padding-inline-start:80px !important}.pe-20{padding-inline-end:80px !important}.pa-20{padding:80px !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}.mt-n17,.my-n17{margin-top:-68px !important}.mr-n17,.mx-n17{margin-right:-68px !important}.ml-n17,.mx-n17{margin-left:-68px !important}.mb-n17,.my-n17{margin-bottom:-68px !important}.ms-n17{margin-inline-start:-68px !important}.me-n17{margin-inline-end:-68px !important}.ma-n17{margin:-68px !important}.mt-n18,.my-n18{margin-top:-72px !important}.mr-n18,.mx-n18{margin-right:-72px !important}.ml-n18,.mx-n18{margin-left:-72px !important}.mb-n18,.my-n18{margin-bottom:-72px !important}.ms-n18{margin-inline-start:-72px !important}.me-n18{margin-inline-end:-72px !important}.ma-n18{margin:-72px !important}.mt-n19,.my-n19{margin-top:-76px !important}.mr-n19,.mx-n19{margin-right:-76px !important}.ml-n19,.mx-n19{margin-left:-76px !important}.mb-n19,.my-n19{margin-bottom:-76px !important}.ms-n19{margin-inline-start:-76px !important}.me-n19{margin-inline-end:-76px !important}.ma-n19{margin:-76px !important}.mt-n20,.my-n20{margin-top:-80px !important}.mr-n20,.mx-n20{margin-right:-80px !important}.ml-n20,.mx-n20{margin-left:-80px !important}.mb-n20,.my-n20{margin-bottom:-80px !important}.ms-n20{margin-inline-start:-80px !important}.me-n20{margin-inline-end:-80px !important}.ma-n20{margin:-80px !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-17,.my-sm-17{margin-top:68px !important}.mr-sm-17,.mx-sm-17{margin-right:68px !important}.ml-sm-17,.mx-sm-17{margin-left:68px !important}.mb-sm-17,.my-sm-17{margin-bottom:68px !important}.ms-sm-17{margin-inline-start:68px !important}.me-sm-17{margin-inline-end:68px !important}.ma-sm-17{margin:68px !important}.mt-sm-18,.my-sm-18{margin-top:72px !important}.mr-sm-18,.mx-sm-18{margin-right:72px !important}.ml-sm-18,.mx-sm-18{margin-left:72px !important}.mb-sm-18,.my-sm-18{margin-bottom:72px !important}.ms-sm-18{margin-inline-start:72px !important}.me-sm-18{margin-inline-end:72px !important}.ma-sm-18{margin:72px !important}.mt-sm-19,.my-sm-19{margin-top:76px !important}.mr-sm-19,.mx-sm-19{margin-right:76px !important}.ml-sm-19,.mx-sm-19{margin-left:76px !important}.mb-sm-19,.my-sm-19{margin-bottom:76px !important}.ms-sm-19{margin-inline-start:76px !important}.me-sm-19{margin-inline-end:76px !important}.ma-sm-19{margin:76px !important}.mt-sm-20,.my-sm-20{margin-top:80px !important}.mr-sm-20,.mx-sm-20{margin-right:80px !important}.ml-sm-20,.mx-sm-20{margin-left:80px !important}.mb-sm-20,.my-sm-20{margin-bottom:80px !important}.ms-sm-20{margin-inline-start:80px !important}.me-sm-20{margin-inline-end:80px !important}.ma-sm-20{margin:80px !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-17,.py-sm-17{padding-top:68px !important}.pr-sm-17,.px-sm-17{padding-right:68px !important}.pl-sm-17,.px-sm-17{padding-left:68px !important}.pb-sm-17,.py-sm-17{padding-bottom:68px !important}.ps-sm-17{padding-inline-start:68px !important}.pe-sm-17{padding-inline-end:68px !important}.pa-sm-17{padding:68px !important}.pt-sm-18,.py-sm-18{padding-top:72px !important}.pr-sm-18,.px-sm-18{padding-right:72px !important}.pl-sm-18,.px-sm-18{padding-left:72px !important}.pb-sm-18,.py-sm-18{padding-bottom:72px !important}.ps-sm-18{padding-inline-start:72px !important}.pe-sm-18{padding-inline-end:72px !important}.pa-sm-18{padding:72px !important}.pt-sm-19,.py-sm-19{padding-top:76px !important}.pr-sm-19,.px-sm-19{padding-right:76px !important}.pl-sm-19,.px-sm-19{padding-left:76px !important}.pb-sm-19,.py-sm-19{padding-bottom:76px !important}.ps-sm-19{padding-inline-start:76px !important}.pe-sm-19{padding-inline-end:76px !important}.pa-sm-19{padding:76px !important}.pt-sm-20,.py-sm-20{padding-top:80px !important}.pr-sm-20,.px-sm-20{padding-right:80px !important}.pl-sm-20,.px-sm-20{padding-left:80px !important}.pb-sm-20,.py-sm-20{padding-bottom:80px !important}.ps-sm-20{padding-inline-start:80px !important}.pe-sm-20{padding-inline-end:80px !important}.pa-sm-20{padding:80px !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}.mt-sm-n17,.my-sm-n17{margin-top:-68px !important}.mr-sm-n17,.mx-sm-n17{margin-right:-68px !important}.ml-sm-n17,.mx-sm-n17{margin-left:-68px !important}.mb-sm-n17,.my-sm-n17{margin-bottom:-68px !important}.ms-sm-n17{margin-inline-start:-68px !important}.me-sm-n17{margin-inline-end:-68px !important}.ma-sm-n17{margin:-68px !important}.mt-sm-n18,.my-sm-n18{margin-top:-72px !important}.mr-sm-n18,.mx-sm-n18{margin-right:-72px !important}.ml-sm-n18,.mx-sm-n18{margin-left:-72px !important}.mb-sm-n18,.my-sm-n18{margin-bottom:-72px !important}.ms-sm-n18{margin-inline-start:-72px !important}.me-sm-n18{margin-inline-end:-72px !important}.ma-sm-n18{margin:-72px !important}.mt-sm-n19,.my-sm-n19{margin-top:-76px !important}.mr-sm-n19,.mx-sm-n19{margin-right:-76px !important}.ml-sm-n19,.mx-sm-n19{margin-left:-76px !important}.mb-sm-n19,.my-sm-n19{margin-bottom:-76px !important}.ms-sm-n19{margin-inline-start:-76px !important}.me-sm-n19{margin-inline-end:-76px !important}.ma-sm-n19{margin:-76px !important}.mt-sm-n20,.my-sm-n20{margin-top:-80px !important}.mr-sm-n20,.mx-sm-n20{margin-right:-80px !important}.ml-sm-n20,.mx-sm-n20{margin-left:-80px !important}.mb-sm-n20,.my-sm-n20{margin-bottom:-80px !important}.ms-sm-n20{margin-inline-start:-80px !important}.me-sm-n20{margin-inline-end:-80px !important}.ma-sm-n20{margin:-80px !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-17,.my-md-17{margin-top:68px !important}.mr-md-17,.mx-md-17{margin-right:68px !important}.ml-md-17,.mx-md-17{margin-left:68px !important}.mb-md-17,.my-md-17{margin-bottom:68px !important}.ms-md-17{margin-inline-start:68px !important}.me-md-17{margin-inline-end:68px !important}.ma-md-17{margin:68px !important}.mt-md-18,.my-md-18{margin-top:72px !important}.mr-md-18,.mx-md-18{margin-right:72px !important}.ml-md-18,.mx-md-18{margin-left:72px !important}.mb-md-18,.my-md-18{margin-bottom:72px !important}.ms-md-18{margin-inline-start:72px !important}.me-md-18{margin-inline-end:72px !important}.ma-md-18{margin:72px !important}.mt-md-19,.my-md-19{margin-top:76px !important}.mr-md-19,.mx-md-19{margin-right:76px !important}.ml-md-19,.mx-md-19{margin-left:76px !important}.mb-md-19,.my-md-19{margin-bottom:76px !important}.ms-md-19{margin-inline-start:76px !important}.me-md-19{margin-inline-end:76px !important}.ma-md-19{margin:76px !important}.mt-md-20,.my-md-20{margin-top:80px !important}.mr-md-20,.mx-md-20{margin-right:80px !important}.ml-md-20,.mx-md-20{margin-left:80px !important}.mb-md-20,.my-md-20{margin-bottom:80px !important}.ms-md-20{margin-inline-start:80px !important}.me-md-20{margin-inline-end:80px !important}.ma-md-20{margin:80px !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-17,.py-md-17{padding-top:68px !important}.pr-md-17,.px-md-17{padding-right:68px !important}.pl-md-17,.px-md-17{padding-left:68px !important}.pb-md-17,.py-md-17{padding-bottom:68px !important}.ps-md-17{padding-inline-start:68px !important}.pe-md-17{padding-inline-end:68px !important}.pa-md-17{padding:68px !important}.pt-md-18,.py-md-18{padding-top:72px !important}.pr-md-18,.px-md-18{padding-right:72px !important}.pl-md-18,.px-md-18{padding-left:72px !important}.pb-md-18,.py-md-18{padding-bottom:72px !important}.ps-md-18{padding-inline-start:72px !important}.pe-md-18{padding-inline-end:72px !important}.pa-md-18{padding:72px !important}.pt-md-19,.py-md-19{padding-top:76px !important}.pr-md-19,.px-md-19{padding-right:76px !important}.pl-md-19,.px-md-19{padding-left:76px !important}.pb-md-19,.py-md-19{padding-bottom:76px !important}.ps-md-19{padding-inline-start:76px !important}.pe-md-19{padding-inline-end:76px !important}.pa-md-19{padding:76px !important}.pt-md-20,.py-md-20{padding-top:80px !important}.pr-md-20,.px-md-20{padding-right:80px !important}.pl-md-20,.px-md-20{padding-left:80px !important}.pb-md-20,.py-md-20{padding-bottom:80px !important}.ps-md-20{padding-inline-start:80px !important}.pe-md-20{padding-inline-end:80px !important}.pa-md-20{padding:80px !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}.mt-md-n17,.my-md-n17{margin-top:-68px !important}.mr-md-n17,.mx-md-n17{margin-right:-68px !important}.ml-md-n17,.mx-md-n17{margin-left:-68px !important}.mb-md-n17,.my-md-n17{margin-bottom:-68px !important}.ms-md-n17{margin-inline-start:-68px !important}.me-md-n17{margin-inline-end:-68px !important}.ma-md-n17{margin:-68px !important}.mt-md-n18,.my-md-n18{margin-top:-72px !important}.mr-md-n18,.mx-md-n18{margin-right:-72px !important}.ml-md-n18,.mx-md-n18{margin-left:-72px !important}.mb-md-n18,.my-md-n18{margin-bottom:-72px !important}.ms-md-n18{margin-inline-start:-72px !important}.me-md-n18{margin-inline-end:-72px !important}.ma-md-n18{margin:-72px !important}.mt-md-n19,.my-md-n19{margin-top:-76px !important}.mr-md-n19,.mx-md-n19{margin-right:-76px !important}.ml-md-n19,.mx-md-n19{margin-left:-76px !important}.mb-md-n19,.my-md-n19{margin-bottom:-76px !important}.ms-md-n19{margin-inline-start:-76px !important}.me-md-n19{margin-inline-end:-76px !important}.ma-md-n19{margin:-76px !important}.mt-md-n20,.my-md-n20{margin-top:-80px !important}.mr-md-n20,.mx-md-n20{margin-right:-80px !important}.ml-md-n20,.mx-md-n20{margin-left:-80px !important}.mb-md-n20,.my-md-n20{margin-bottom:-80px !important}.ms-md-n20{margin-inline-start:-80px !important}.me-md-n20{margin-inline-end:-80px !important}.ma-md-n20{margin:-80px !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-17,.my-lg-17{margin-top:68px !important}.mr-lg-17,.mx-lg-17{margin-right:68px !important}.ml-lg-17,.mx-lg-17{margin-left:68px !important}.mb-lg-17,.my-lg-17{margin-bottom:68px !important}.ms-lg-17{margin-inline-start:68px !important}.me-lg-17{margin-inline-end:68px !important}.ma-lg-17{margin:68px !important}.mt-lg-18,.my-lg-18{margin-top:72px !important}.mr-lg-18,.mx-lg-18{margin-right:72px !important}.ml-lg-18,.mx-lg-18{margin-left:72px !important}.mb-lg-18,.my-lg-18{margin-bottom:72px !important}.ms-lg-18{margin-inline-start:72px !important}.me-lg-18{margin-inline-end:72px !important}.ma-lg-18{margin:72px !important}.mt-lg-19,.my-lg-19{margin-top:76px !important}.mr-lg-19,.mx-lg-19{margin-right:76px !important}.ml-lg-19,.mx-lg-19{margin-left:76px !important}.mb-lg-19,.my-lg-19{margin-bottom:76px !important}.ms-lg-19{margin-inline-start:76px !important}.me-lg-19{margin-inline-end:76px !important}.ma-lg-19{margin:76px !important}.mt-lg-20,.my-lg-20{margin-top:80px !important}.mr-lg-20,.mx-lg-20{margin-right:80px !important}.ml-lg-20,.mx-lg-20{margin-left:80px !important}.mb-lg-20,.my-lg-20{margin-bottom:80px !important}.ms-lg-20{margin-inline-start:80px !important}.me-lg-20{margin-inline-end:80px !important}.ma-lg-20{margin:80px !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-17,.py-lg-17{padding-top:68px !important}.pr-lg-17,.px-lg-17{padding-right:68px !important}.pl-lg-17,.px-lg-17{padding-left:68px !important}.pb-lg-17,.py-lg-17{padding-bottom:68px !important}.ps-lg-17{padding-inline-start:68px !important}.pe-lg-17{padding-inline-end:68px !important}.pa-lg-17{padding:68px !important}.pt-lg-18,.py-lg-18{padding-top:72px !important}.pr-lg-18,.px-lg-18{padding-right:72px !important}.pl-lg-18,.px-lg-18{padding-left:72px !important}.pb-lg-18,.py-lg-18{padding-bottom:72px !important}.ps-lg-18{padding-inline-start:72px !important}.pe-lg-18{padding-inline-end:72px !important}.pa-lg-18{padding:72px !important}.pt-lg-19,.py-lg-19{padding-top:76px !important}.pr-lg-19,.px-lg-19{padding-right:76px !important}.pl-lg-19,.px-lg-19{padding-left:76px !important}.pb-lg-19,.py-lg-19{padding-bottom:76px !important}.ps-lg-19{padding-inline-start:76px !important}.pe-lg-19{padding-inline-end:76px !important}.pa-lg-19{padding:76px !important}.pt-lg-20,.py-lg-20{padding-top:80px !important}.pr-lg-20,.px-lg-20{padding-right:80px !important}.pl-lg-20,.px-lg-20{padding-left:80px !important}.pb-lg-20,.py-lg-20{padding-bottom:80px !important}.ps-lg-20{padding-inline-start:80px !important}.pe-lg-20{padding-inline-end:80px !important}.pa-lg-20{padding:80px !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}.mt-lg-n17,.my-lg-n17{margin-top:-68px !important}.mr-lg-n17,.mx-lg-n17{margin-right:-68px !important}.ml-lg-n17,.mx-lg-n17{margin-left:-68px !important}.mb-lg-n17,.my-lg-n17{margin-bottom:-68px !important}.ms-lg-n17{margin-inline-start:-68px !important}.me-lg-n17{margin-inline-end:-68px !important}.ma-lg-n17{margin:-68px !important}.mt-lg-n18,.my-lg-n18{margin-top:-72px !important}.mr-lg-n18,.mx-lg-n18{margin-right:-72px !important}.ml-lg-n18,.mx-lg-n18{margin-left:-72px !important}.mb-lg-n18,.my-lg-n18{margin-bottom:-72px !important}.ms-lg-n18{margin-inline-start:-72px !important}.me-lg-n18{margin-inline-end:-72px !important}.ma-lg-n18{margin:-72px !important}.mt-lg-n19,.my-lg-n19{margin-top:-76px !important}.mr-lg-n19,.mx-lg-n19{margin-right:-76px !important}.ml-lg-n19,.mx-lg-n19{margin-left:-76px !important}.mb-lg-n19,.my-lg-n19{margin-bottom:-76px !important}.ms-lg-n19{margin-inline-start:-76px !important}.me-lg-n19{margin-inline-end:-76px !important}.ma-lg-n19{margin:-76px !important}.mt-lg-n20,.my-lg-n20{margin-top:-80px !important}.mr-lg-n20,.mx-lg-n20{margin-right:-80px !important}.ml-lg-n20,.mx-lg-n20{margin-left:-80px !important}.mb-lg-n20,.my-lg-n20{margin-bottom:-80px !important}.ms-lg-n20{margin-inline-start:-80px !important}.me-lg-n20{margin-inline-end:-80px !important}.ma-lg-n20{margin:-80px !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-17,.my-xl-17{margin-top:68px !important}.mr-xl-17,.mx-xl-17{margin-right:68px !important}.ml-xl-17,.mx-xl-17{margin-left:68px !important}.mb-xl-17,.my-xl-17{margin-bottom:68px !important}.ms-xl-17{margin-inline-start:68px !important}.me-xl-17{margin-inline-end:68px !important}.ma-xl-17{margin:68px !important}.mt-xl-18,.my-xl-18{margin-top:72px !important}.mr-xl-18,.mx-xl-18{margin-right:72px !important}.ml-xl-18,.mx-xl-18{margin-left:72px !important}.mb-xl-18,.my-xl-18{margin-bottom:72px !important}.ms-xl-18{margin-inline-start:72px !important}.me-xl-18{margin-inline-end:72px !important}.ma-xl-18{margin:72px !important}.mt-xl-19,.my-xl-19{margin-top:76px !important}.mr-xl-19,.mx-xl-19{margin-right:76px !important}.ml-xl-19,.mx-xl-19{margin-left:76px !important}.mb-xl-19,.my-xl-19{margin-bottom:76px !important}.ms-xl-19{margin-inline-start:76px !important}.me-xl-19{margin-inline-end:76px !important}.ma-xl-19{margin:76px !important}.mt-xl-20,.my-xl-20{margin-top:80px !important}.mr-xl-20,.mx-xl-20{margin-right:80px !important}.ml-xl-20,.mx-xl-20{margin-left:80px !important}.mb-xl-20,.my-xl-20{margin-bottom:80px !important}.ms-xl-20{margin-inline-start:80px !important}.me-xl-20{margin-inline-end:80px !important}.ma-xl-20{margin:80px !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-17,.py-xl-17{padding-top:68px !important}.pr-xl-17,.px-xl-17{padding-right:68px !important}.pl-xl-17,.px-xl-17{padding-left:68px !important}.pb-xl-17,.py-xl-17{padding-bottom:68px !important}.ps-xl-17{padding-inline-start:68px !important}.pe-xl-17{padding-inline-end:68px !important}.pa-xl-17{padding:68px !important}.pt-xl-18,.py-xl-18{padding-top:72px !important}.pr-xl-18,.px-xl-18{padding-right:72px !important}.pl-xl-18,.px-xl-18{padding-left:72px !important}.pb-xl-18,.py-xl-18{padding-bottom:72px !important}.ps-xl-18{padding-inline-start:72px !important}.pe-xl-18{padding-inline-end:72px !important}.pa-xl-18{padding:72px !important}.pt-xl-19,.py-xl-19{padding-top:76px !important}.pr-xl-19,.px-xl-19{padding-right:76px !important}.pl-xl-19,.px-xl-19{padding-left:76px !important}.pb-xl-19,.py-xl-19{padding-bottom:76px !important}.ps-xl-19{padding-inline-start:76px !important}.pe-xl-19{padding-inline-end:76px !important}.pa-xl-19{padding:76px !important}.pt-xl-20,.py-xl-20{padding-top:80px !important}.pr-xl-20,.px-xl-20{padding-right:80px !important}.pl-xl-20,.px-xl-20{padding-left:80px !important}.pb-xl-20,.py-xl-20{padding-bottom:80px !important}.ps-xl-20{padding-inline-start:80px !important}.pe-xl-20{padding-inline-end:80px !important}.pa-xl-20{padding:80px !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}.mt-xl-n17,.my-xl-n17{margin-top:-68px !important}.mr-xl-n17,.mx-xl-n17{margin-right:-68px !important}.ml-xl-n17,.mx-xl-n17{margin-left:-68px !important}.mb-xl-n17,.my-xl-n17{margin-bottom:-68px !important}.ms-xl-n17{margin-inline-start:-68px !important}.me-xl-n17{margin-inline-end:-68px !important}.ma-xl-n17{margin:-68px !important}.mt-xl-n18,.my-xl-n18{margin-top:-72px !important}.mr-xl-n18,.mx-xl-n18{margin-right:-72px !important}.ml-xl-n18,.mx-xl-n18{margin-left:-72px !important}.mb-xl-n18,.my-xl-n18{margin-bottom:-72px !important}.ms-xl-n18{margin-inline-start:-72px !important}.me-xl-n18{margin-inline-end:-72px !important}.ma-xl-n18{margin:-72px !important}.mt-xl-n19,.my-xl-n19{margin-top:-76px !important}.mr-xl-n19,.mx-xl-n19{margin-right:-76px !important}.ml-xl-n19,.mx-xl-n19{margin-left:-76px !important}.mb-xl-n19,.my-xl-n19{margin-bottom:-76px !important}.ms-xl-n19{margin-inline-start:-76px !important}.me-xl-n19{margin-inline-end:-76px !important}.ma-xl-n19{margin:-76px !important}.mt-xl-n20,.my-xl-n20{margin-top:-80px !important}.mr-xl-n20,.mx-xl-n20{margin-right:-80px !important}.ml-xl-n20,.mx-xl-n20{margin-left:-80px !important}.mb-xl-n20,.my-xl-n20{margin-bottom:-80px !important}.ms-xl-n20{margin-inline-start:-80px !important}.me-xl-n20{margin-inline-end:-80px !important}.ma-xl-n20{margin:-80px !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-17,.my-xxl-17{margin-top:68px !important}.mr-xxl-17,.mx-xxl-17{margin-right:68px !important}.ml-xxl-17,.mx-xxl-17{margin-left:68px !important}.mb-xxl-17,.my-xxl-17{margin-bottom:68px !important}.ms-xxl-17{margin-inline-start:68px !important}.me-xxl-17{margin-inline-end:68px !important}.ma-xxl-17{margin:68px !important}.mt-xxl-18,.my-xxl-18{margin-top:72px !important}.mr-xxl-18,.mx-xxl-18{margin-right:72px !important}.ml-xxl-18,.mx-xxl-18{margin-left:72px !important}.mb-xxl-18,.my-xxl-18{margin-bottom:72px !important}.ms-xxl-18{margin-inline-start:72px !important}.me-xxl-18{margin-inline-end:72px !important}.ma-xxl-18{margin:72px !important}.mt-xxl-19,.my-xxl-19{margin-top:76px !important}.mr-xxl-19,.mx-xxl-19{margin-right:76px !important}.ml-xxl-19,.mx-xxl-19{margin-left:76px !important}.mb-xxl-19,.my-xxl-19{margin-bottom:76px !important}.ms-xxl-19{margin-inline-start:76px !important}.me-xxl-19{margin-inline-end:76px !important}.ma-xxl-19{margin:76px !important}.mt-xxl-20,.my-xxl-20{margin-top:80px !important}.mr-xxl-20,.mx-xxl-20{margin-right:80px !important}.ml-xxl-20,.mx-xxl-20{margin-left:80px !important}.mb-xxl-20,.my-xxl-20{margin-bottom:80px !important}.ms-xxl-20{margin-inline-start:80px !important}.me-xxl-20{margin-inline-end:80px !important}.ma-xxl-20{margin:80px !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-17,.py-xxl-17{padding-top:68px !important}.pr-xxl-17,.px-xxl-17{padding-right:68px !important}.pl-xxl-17,.px-xxl-17{padding-left:68px !important}.pb-xxl-17,.py-xxl-17{padding-bottom:68px !important}.ps-xxl-17{padding-inline-start:68px !important}.pe-xxl-17{padding-inline-end:68px !important}.pa-xxl-17{padding:68px !important}.pt-xxl-18,.py-xxl-18{padding-top:72px !important}.pr-xxl-18,.px-xxl-18{padding-right:72px !important}.pl-xxl-18,.px-xxl-18{padding-left:72px !important}.pb-xxl-18,.py-xxl-18{padding-bottom:72px !important}.ps-xxl-18{padding-inline-start:72px !important}.pe-xxl-18{padding-inline-end:72px !important}.pa-xxl-18{padding:72px !important}.pt-xxl-19,.py-xxl-19{padding-top:76px !important}.pr-xxl-19,.px-xxl-19{padding-right:76px !important}.pl-xxl-19,.px-xxl-19{padding-left:76px !important}.pb-xxl-19,.py-xxl-19{padding-bottom:76px !important}.ps-xxl-19{padding-inline-start:76px !important}.pe-xxl-19{padding-inline-end:76px !important}.pa-xxl-19{padding:76px !important}.pt-xxl-20,.py-xxl-20{padding-top:80px !important}.pr-xxl-20,.px-xxl-20{padding-right:80px !important}.pl-xxl-20,.px-xxl-20{padding-left:80px !important}.pb-xxl-20,.py-xxl-20{padding-bottom:80px !important}.ps-xxl-20{padding-inline-start:80px !important}.pe-xxl-20{padding-inline-end:80px !important}.pa-xxl-20{padding:80px !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}.mt-xxl-n17,.my-xxl-n17{margin-top:-68px !important}.mr-xxl-n17,.mx-xxl-n17{margin-right:-68px !important}.ml-xxl-n17,.mx-xxl-n17{margin-left:-68px !important}.mb-xxl-n17,.my-xxl-n17{margin-bottom:-68px !important}.ms-xxl-n17{margin-inline-start:-68px !important}.me-xxl-n17{margin-inline-end:-68px !important}.ma-xxl-n17{margin:-68px !important}.mt-xxl-n18,.my-xxl-n18{margin-top:-72px !important}.mr-xxl-n18,.mx-xxl-n18{margin-right:-72px !important}.ml-xxl-n18,.mx-xxl-n18{margin-left:-72px !important}.mb-xxl-n18,.my-xxl-n18{margin-bottom:-72px !important}.ms-xxl-n18{margin-inline-start:-72px !important}.me-xxl-n18{margin-inline-end:-72px !important}.ma-xxl-n18{margin:-72px !important}.mt-xxl-n19,.my-xxl-n19{margin-top:-76px !important}.mr-xxl-n19,.mx-xxl-n19{margin-right:-76px !important}.ml-xxl-n19,.mx-xxl-n19{margin-left:-76px !important}.mb-xxl-n19,.my-xxl-n19{margin-bottom:-76px !important}.ms-xxl-n19{margin-inline-start:-76px !important}.me-xxl-n19{margin-inline-end:-76px !important}.ma-xxl-n19{margin:-76px !important}.mt-xxl-n20,.my-xxl-n20{margin-top:-80px !important}.mr-xxl-n20,.mx-xxl-n20{margin-right:-80px !important}.ml-xxl-n20,.mx-xxl-n20{margin-left:-80px !important}.mb-xxl-n20,.my-xxl-n20{margin-bottom:-80px !important}.ms-xxl-n20{margin-inline-start:-80px !important}.me-xxl-n20{margin-inline-end:-80px !important}.ma-xxl-n20{margin:-80px !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, 0.2, 1) 0ms,width 225ms cubic-bezier(0, 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: 0px)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: 0px){.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: 0px){.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: 0px){.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: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: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, 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, 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, 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, 0.2, 1)}.mud-drawer.mud-drawer-mini{height:100%;transition:width 225ms cubic-bezier(0, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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% - (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% - (var(--mud-appbar-height) - var(--mud-appbar-height)/8))}}@media(min-width: 0px){.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: 0px)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: 0px)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: 0px){.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, 0.2, 1) 0ms}@media(min-width: 0px)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: 0px){.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)}.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)}.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)}.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)}.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)}.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)}.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}.mud-container--gutters{padding-left:16px;padding-right:16px}@media(min-width: 600px){.mud-container--gutters{padding-left:24px;padding-right:24px}}@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: 0px){.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}.scroll-locked-no-padding{overflow:hidden}@-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:rgba(0,0,0,0);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-gray{background-color:#607d8b}.blue-gray-text{color:#607d8b}.blue-gray.lighten-5{background-color:#eceff1}.blue-gray-text.text-lighten-5{color:#eceff1}.blue-gray.lighten-4{background-color:#cfd8dc}.blue-gray-text.text-lighten-4{color:#cfd8dc}.blue-gray.lighten-3{background-color:#b0bec5}.blue-gray-text.text-lighten-3{color:#b0bec5}.blue-gray.lighten-2{background-color:#90a4ae}.blue-gray-text.text-lighten-2{color:#90a4ae}.blue-gray.lighten-1{background-color:#78909c}.blue-gray-text.text-lighten-1{color:#78909c}.blue-gray.darken-1{background-color:#546e7a}.blue-gray-text.text-darken-1{color:#546e7a}.blue-gray.darken-2{background-color:#455a64}.blue-gray-text.text-darken-2{color:#455a64}.blue-gray.darken-3{background-color:#37474f}.blue-gray-text.text-darken-3{color:#37474f}.blue-gray.darken-4{background-color:#263238}.blue-gray-text.text-darken-4{color:#263238}.gray{background-color:#9e9e9e}.gray-text{color:#9e9e9e}.gray.lighten-5{background-color:#fafafa}.gray-text.text-lighten-5{color:#fafafa}.gray.lighten-4{background-color:#f5f5f5}.gray-text.text-lighten-4{color:#f5f5f5}.gray.lighten-3{background-color:#eee}.gray-text.text-lighten-3{color:#eee}.gray.lighten-2{background-color:#e0e0e0}.gray-text.text-lighten-2{color:#e0e0e0}.gray.lighten-1{background-color:#bdbdbd}.gray-text.text-lighten-1{color:#bdbdbd}.gray.darken-1{background-color:#757575}.gray-text.text-darken-1{color:#757575}.gray.darken-2{background-color:#616161}.gray-text.text-darken-2{color:#616161}.gray.darken-3{background-color:#424242}.gray-text.text-darken-3{color:#424242}.gray.darken-4{background-color:#212121}.gray-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:rgba(0,0,0,0)}.shades-text.text-transparent{color:rgba(0,0,0,0)}.mud-ripple{--mud-ripple-offset-x: 0;--mud-ripple-offset-y: 0;position:relative;overflow:hidden}.mud-ripple:after{content:"";display:block;position:absolute;width:100%;height:100%;top:var(--mud-ripple-offset-y);left:var(--mud-ripple-offset-x);pointer-events:none;background-image:radial-gradient(circle, var(--mud-ripple-color) 10%, transparent 10.01%);background-repeat:no-repeat;background-position:50%;transform:scale(20, 20);opacity:0;transition:transform .6s,opacity 1s}.mud-ripple:active:after{transform:scale(0, 0);opacity:var(--mud-ripple-opacity);transition:0s}.mud-ripple:has(.mud-ripple:active):after{opacity:0}.mud-ripple-icon:after,.mud-ripple-checkbox:after,.mud-ripple-switch:after,.mud-ripple-radio:after{transform:scale(14, 14)}.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)} diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css.br new file mode 100644 index 0000000000000000000000000000000000000000..9f193685ee1f8ba2bc35cd8feeb7c4e4f3dd328b GIT binary patch literal 40591 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 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css.gz new file mode 100644 index 0000000000000000000000000000000000000000..a370ab78c7e8610221247932def216016c22301a GIT binary patch literal 64530 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 literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js.br new file mode 100644 index 0000000000000000000000000000000000000000..77f784735ecaedf1152694cfe95090a6deb54d88 GIT binary patch literal 10451 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 J_q1VI>NX-WU$p=L literal 0 HcmV?d00001 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js.gz new file mode 100644 index 0000000000000000000000000000000000000000..dea7cb1eafae60db5cc8963f602d669f86c0a58b GIT binary patch literal 11710 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 UU~VmlsIN!=A2A)-9MabS06r?AivR!s literal 0 HcmV?d00001 From d8ac2f3d49c4893cd322db03f03b1f4695cbcf03 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Wed, 12 Mar 2025 20:09:29 +0100 Subject: [PATCH 074/110] Updated metadata for release v0.9.35 (#336) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 2 +- app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md | 2 +- metadata.txt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index d0fbaa83..59f0bffa 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,7 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ - new (210, "v0.9.35, build 210 (2025-03-12 18:22 UTC)", "v0.9.35.md"), + new (210, "v0.9.35, build 210 (2025-03-12 19:06 UTC)", "v0.9.35.md"), new (209, "v0.9.34, build 209 (2025-03-11 13:02 UTC)", "v0.9.34.md"), new (208, "v0.9.33, build 208 (2025-03-11 08:14 UTC)", "v0.9.33.md"), new (207, "v0.9.32, build 207 (2025-03-08 20:15 UTC)", "v0.9.32.md"), diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md index 6aa6a723..dc16298d 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md @@ -1,4 +1,4 @@ -# v0.9.35, build 210 (2025-03-12 18:22 UTC) +# v0.9.35, build 210 (2025-03-12 19:06 UTC) - A settings icon was added to all assistants and the assistants overview. The icon opens a dialog that displays all settings that can be changed. The settings aren't shown on the settings overview page anymore for a better overview. - Migrated to .NET 9.0.3 - Migrated to MudBlazor 8.3.0 diff --git a/metadata.txt b/metadata.txt index ea740553..87dead71 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ 0.9.35 -2025-03-12 18:22:04 UTC +2025-03-12 19:06:01 UTC 210 9.0.104 (commit 2750432faa) 9.0.3 (commit 831d23e561) 1.85.0 (commit 4d91de4e4) 8.3.0 1.8.1 -ce8d84a12a2, release +64a7c9ab535, release From 264b6dd7166f695f557d81ae769693e886e1accb Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Thu, 13 Mar 2025 08:20:14 +0100 Subject: [PATCH 075/110] Pipeline: add steps to delete previous artifacts to prevent caching issues (#337) --- .github/workflows/build-and-release.yml | 34 +++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index 2ebf8a82..693bbc3c 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -294,6 +294,35 @@ jobs: } else { Write-Output "Tauri is already installed" } + + - name: Delete previous artifact, which may exist due to caching (macOS) + if: startsWith(matrix.platform, 'macos') + run: | + rm -f runtime/target/${{ matrix.rust_target }}/release/bundle/dmg/MindWork AI Studio_*.dmg + rm -f runtime/target/${{ matrix.rust_target }}/release/bundle/macos/MindWork AI Studio.app.tar.gz* + + - name: Delete previous artifact, which may exist due to caching (Windows - MSI) + if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'msi') + run: | + rm -f runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio_*.msi + rm -f runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio*msi.zip* + + - name: Delete previous artifact, which may exist due to caching (Windows - NSIS) + if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'nsis') + run: | + rm -f runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio_*.exe + rm -f runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio*nsis.zip* + + - name: Delete previous artifact, which may exist due to caching (Linux - Debian Package) + if: startsWith(matrix.platform, 'ubuntu') && contains(matrix.tauri_bundle, 'deb') + run: | + rm -f runtime/target/${{ matrix.rust_target }}/release/bundle/deb/mind-work-ai-studio_*.deb + + - name: Delete previous artifact, which may exist due to caching (Linux - AppImage) + if: startsWith(matrix.platform, 'ubuntu') && contains(matrix.tauri_bundle, 'appimage') + run: | + rm -f runtime/target/${{ matrix.rust_target }}/release/bundle/appimage/mind-work-ai-studio_*.AppImage + rm -f runtime/target/${{ matrix.rust_target }}/release/bundle/appimage/mind-work-ai-studio*AppImage.tar.gz* - name: Build Tauri project (Unix) if: matrix.platform != 'windows-latest' @@ -509,6 +538,11 @@ jobs: if: ${{ steps.linux_arm_cache.outputs.cache-hit != 'true' && env.SKIP != 'true' }} run: | mv ${{ steps.build-linux-arm-runner.outputs.image }} ${{ runner.temp }}/linux_arm_qemu_cache.img + + - name: Delete previous artifact, which may exist due to caching (Linux - Debian Package) + if: ${{ env.SKIP != 'true' }} + run: | + rm -f result/target/aarch64-unknown-linux-gnu/release/bundle/deb/mind-work-ai-studio_*.deb - name: Build Tauri project if: ${{ env.SKIP != 'true' }} From e5ce3263bcb290abad19b593b4899824c8ab858a Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Thu, 13 Mar 2025 08:34:15 +0100 Subject: [PATCH 076/110] Pipeline: update artifact deletion commands to use PowerShell syntax (#338) --- .github/workflows/build-and-release.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index 693bbc3c..15fa0c8d 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -304,14 +304,14 @@ jobs: - name: Delete previous artifact, which may exist due to caching (Windows - MSI) if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'msi') run: | - rm -f runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio_*.msi - rm -f runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio*msi.zip* + rm -Force runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio_*.msi + rm -Force runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio*msi.zip* - name: Delete previous artifact, which may exist due to caching (Windows - NSIS) if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'nsis') run: | - rm -f runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio_*.exe - rm -f runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio*nsis.zip* + rm -Force runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio_*.exe + rm -Force runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio*nsis.zip* - name: Delete previous artifact, which may exist due to caching (Linux - Debian Package) if: startsWith(matrix.platform, 'ubuntu') && contains(matrix.tauri_bundle, 'deb') From 471536cc8f01f0af49ec3f22dedf1003ac9e4e54 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Thu, 13 Mar 2025 08:49:28 +0100 Subject: [PATCH 077/110] Pipeline: update artifact deletion commands to use PowerShell syntax (#339) --- .github/workflows/build-and-release.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index 15fa0c8d..debeb962 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -304,14 +304,14 @@ jobs: - name: Delete previous artifact, which may exist due to caching (Windows - MSI) if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'msi') run: | - rm -Force runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio_*.msi - rm -Force runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio*msi.zip* + rm -Force "runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio_*.msi" + rm -Force "runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio*msi.zip*" - name: Delete previous artifact, which may exist due to caching (Windows - NSIS) if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'nsis') run: | - rm -Force runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio_*.exe - rm -Force runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio*nsis.zip* + rm -Force "runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio_*.exe" + rm -Force "runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio*nsis.zip*" - name: Delete previous artifact, which may exist due to caching (Linux - Debian Package) if: startsWith(matrix.platform, 'ubuntu') && contains(matrix.tauri_bundle, 'deb') From 52c8052ce6ae9108b586e139a1568fbedf21cf17 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Thu, 13 Mar 2025 09:48:38 +0100 Subject: [PATCH 078/110] Updated metadata for v0.9.35 (#340) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 2 +- app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md | 2 +- metadata.txt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index 59f0bffa..a0b2efea 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,7 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ - new (210, "v0.9.35, build 210 (2025-03-12 19:06 UTC)", "v0.9.35.md"), + new (210, "v0.9.35, build 210 (2025-03-13 08:44 UTC)", "v0.9.35.md"), new (209, "v0.9.34, build 209 (2025-03-11 13:02 UTC)", "v0.9.34.md"), new (208, "v0.9.33, build 208 (2025-03-11 08:14 UTC)", "v0.9.33.md"), new (207, "v0.9.32, build 207 (2025-03-08 20:15 UTC)", "v0.9.32.md"), diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md index dc16298d..ea72c689 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.35.md @@ -1,4 +1,4 @@ -# v0.9.35, build 210 (2025-03-12 19:06 UTC) +# v0.9.35, build 210 (2025-03-13 08:44 UTC) - A settings icon was added to all assistants and the assistants overview. The icon opens a dialog that displays all settings that can be changed. The settings aren't shown on the settings overview page anymore for a better overview. - Migrated to .NET 9.0.3 - Migrated to MudBlazor 8.3.0 diff --git a/metadata.txt b/metadata.txt index 87dead71..03b10cfd 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ 0.9.35 -2025-03-12 19:06:01 UTC +2025-03-13 08:44:31 UTC 210 9.0.104 (commit 2750432faa) 9.0.3 (commit 831d23e561) 1.85.0 (commit 4d91de4e4) 8.3.0 1.8.1 -64a7c9ab535, release +471536cc8f0, release From 6af3cf4213f19f120576e471b0a0f0fe6c543765 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Thu, 13 Mar 2025 10:20:55 +0100 Subject: [PATCH 079/110] Updated workflow for pipeline (#341) --- .github/workflows/build-and-release.yml | 28 +++++++++++++++---------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index debeb962..dc2188ad 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -347,7 +347,7 @@ jobs: cargo tauri build --target ${{ matrix.rust_target }} --bundles ${{ matrix.tauri_bundle }} - name: Upload artifact (macOS) - if: startsWith(matrix.platform, 'macos') + if: startsWith(matrix.platform, 'macos') && startsWith(github.ref, 'refs/tags/v') uses: actions/upload-artifact@v4 with: name: MindWork AI Studio (macOS ${{ matrix.dotnet_runtime }}) @@ -358,7 +358,7 @@ jobs: retention-days: ${{ env.RETENTION_INTERMEDIATE_ASSETS }} - name: Upload artifact (Windows - MSI) - if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'msi') + if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'msi') && startsWith(github.ref, 'refs/tags/v') uses: actions/upload-artifact@v4 with: name: MindWork AI Studio (Windows - MSI ${{ matrix.dotnet_runtime }}) @@ -369,7 +369,7 @@ jobs: retention-days: ${{ env.RETENTION_INTERMEDIATE_ASSETS }} - name: Upload artifact (Windows - NSIS) - if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'nsis') + if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'nsis') && startsWith(github.ref, 'refs/tags/v') uses: actions/upload-artifact@v4 with: name: MindWork AI Studio (Windows - NSIS ${{ matrix.dotnet_runtime }}) @@ -380,7 +380,7 @@ jobs: retention-days: ${{ env.RETENTION_INTERMEDIATE_ASSETS }} - name: Upload artifact (Linux - Debian Package) - if: startsWith(matrix.platform, 'ubuntu') && contains(matrix.tauri_bundle, 'deb') + if: startsWith(matrix.platform, 'ubuntu') && contains(matrix.tauri_bundle, 'deb') && startsWith(github.ref, 'refs/tags/v') uses: actions/upload-artifact@v4 with: name: MindWork AI Studio (Linux - deb ${{ matrix.dotnet_runtime }}) @@ -390,7 +390,7 @@ jobs: retention-days: ${{ env.RETENTION_INTERMEDIATE_ASSETS }} - name: Upload artifact (Linux - AppImage) - if: startsWith(matrix.platform, 'ubuntu') && contains(matrix.tauri_bundle, 'appimage') + if: startsWith(matrix.platform, 'ubuntu') && contains(matrix.tauri_bundle, 'appimage') && startsWith(github.ref, 'refs/tags/v') uses: actions/upload-artifact@v4 with: name: MindWork AI Studio (Linux - AppImage ${{ matrix.dotnet_runtime }}) @@ -538,11 +538,14 @@ jobs: if: ${{ steps.linux_arm_cache.outputs.cache-hit != 'true' && env.SKIP != 'true' }} run: | mv ${{ steps.build-linux-arm-runner.outputs.image }} ${{ runner.temp }}/linux_arm_qemu_cache.img - - - name: Delete previous artifact, which may exist due to caching (Linux - Debian Package) - if: ${{ env.SKIP != 'true' }} - run: | - rm -f result/target/aarch64-unknown-linux-gnu/release/bundle/deb/mind-work-ai-studio_*.deb + + # + # This step does not work, because we start a VM with qemu to run the build. + # + #- name: Delete previous artifact, which may exist due to caching (Linux - Debian Package) + # if: ${{ env.SKIP != 'true' }} + # run: | + # rm -f result/target/aarch64-unknown-linux-gnu/release/bundle/deb/mind-work-ai-studio_*.deb - name: Build Tauri project if: ${{ env.SKIP != 'true' }} @@ -568,6 +571,9 @@ jobs: shell: /bin/bash commands: | + # Delete all previous artifacts, which may exist due to caching: + rm -f result/target/aarch64-unknown-linux-gnu/release/bundle/deb/mind-work-ai-studio_*.deb + export HOME=/root export CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse source "$HOME/.cargo/env" @@ -590,7 +596,7 @@ jobs: mv ${{ steps.build-linux-arm.outputs.image }} $RUNNER_TEMP/linux_arm_qemu_cache.img - name: Upload artifact (Linux - Debian Package) - if: ${{ env.SKIP != 'true' }} + if: ${{ env.SKIP != 'true' && startsWith(github.ref, 'refs/tags/v') }} uses: actions/upload-artifact@v4 with: name: MindWork AI Studio (Linux - deb linux-arm64) From c3ab0ebb38ab2459d557ae5fe3fb3333bb1c1506 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Thu, 13 Mar 2025 14:02:48 +0100 Subject: [PATCH 080/110] Enable devtools for debugging (#342) --- runtime/Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index d6835ac7..3d72d2b6 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -9,7 +9,7 @@ authors = ["Thorsten Sommer"] tauri-build = { version = "1.5", features = [] } [dependencies] -tauri = { version = "1.8", features = [ "http-all", "updater", "shell-sidecar", "shell-open", "dialog"] } +tauri = { version = "1.8", features = [ "http-all", "updater", "shell-sidecar", "shell-open", "dialog", "devtools"] } tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" } serde = { version = "1.0.218", features = ["derive"] } serde_json = "1.0.134" From 69d64f8b1fb8e5b04ec2f786ba966042800648a9 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Thu, 13 Mar 2025 14:08:55 +0100 Subject: [PATCH 081/110] Allow build artifacts for debugging (#343) --- .github/workflows/build-and-release.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index dc2188ad..ac14ca73 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -347,7 +347,7 @@ jobs: cargo tauri build --target ${{ matrix.rust_target }} --bundles ${{ matrix.tauri_bundle }} - name: Upload artifact (macOS) - if: startsWith(matrix.platform, 'macos') && startsWith(github.ref, 'refs/tags/v') + if: startsWith(matrix.platform, 'macos') uses: actions/upload-artifact@v4 with: name: MindWork AI Studio (macOS ${{ matrix.dotnet_runtime }}) @@ -369,7 +369,7 @@ jobs: retention-days: ${{ env.RETENTION_INTERMEDIATE_ASSETS }} - name: Upload artifact (Windows - NSIS) - if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'nsis') && startsWith(github.ref, 'refs/tags/v') + if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'nsis') uses: actions/upload-artifact@v4 with: name: MindWork AI Studio (Windows - NSIS ${{ matrix.dotnet_runtime }}) From 686bb2ccb3c465959cb6e6f2be34fad63d48111a Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Fri, 14 Mar 2025 17:29:22 +0100 Subject: [PATCH 082/110] Updated the run command in the build documentation (#347) --- documentation/Build.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/Build.md b/documentation/Build.md index 2f620eac..b25a27ef 100644 --- a/documentation/Build.md +++ b/documentation/Build.md @@ -42,6 +42,6 @@ Do you want to test your changes before creating a PR? Follow these steps: 2. At least once, you have to run the `nu build.nu publish` command (see above, "Build instructions"). This is necessary because the Tauri framework checks whether the .NET app as so-called "sidecar" is available. Although the sidecar is only necessary for the final release and shipping, Tauri requires it to be present during development. 3. Open a terminal (in this case, it doesn't have to be NuShell). 4. Navigate to the `runtime` directory within the repository, e.g. `cd repos/mindwork-ai-studio/runtime`. -5. Run `cargo run`. +5. Run `cargo tauri dev --no-watch`. Cargo will compile the Rust code and start the runtime. The runtime will then start the .NET compiler. When the .NET source code is compiled, the app will start. You can now test your changes. \ No newline at end of file From d6ead371022b22907a9e35144835236da6773ee0 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 15 Mar 2025 11:09:34 +0100 Subject: [PATCH 083/110] Fixed #346 (#348) --- app/MindWork AI Studio/wwwroot/app.css | 8 ++++++++ app/MindWork AI Studio/wwwroot/changelog/v0.9.36.md | 2 ++ 2 files changed, 10 insertions(+) create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.36.md diff --git a/app/MindWork AI Studio/wwwroot/app.css b/app/MindWork AI Studio/wwwroot/app.css index e62b4f83..60ec2d98 100644 --- a/app/MindWork AI Studio/wwwroot/app.css +++ b/app/MindWork AI Studio/wwwroot/app.css @@ -76,6 +76,14 @@ display: initial !important; } +/* Fix for MudBlazor, tooltips and selects inside of popover + See issue https://github.com/MudBlazor/MudBlazor/issues/11015 + and https://github.com/MindWorkAI/AI-Studio/issues/346 + */ +.mud-popover-provider > .mud-popover-open { + z-index: 1604; +} + /* Context div for inner scrolling component */ .inner-scrolling-context { display: flex; diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.36.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.36.md new file mode 100644 index 00000000..ab05d827 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.36.md @@ -0,0 +1,2 @@ +# v0.9.36, build 211 (2025-03-15 xx:xx UTC) +- Fixed a MudBlazor bug, where dropdown menus were not displayed correctly when used inside a dialog. \ No newline at end of file From dd23cfa1ff0506b196f6685406771dfa0d8efe00 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 15 Mar 2025 11:18:47 +0100 Subject: [PATCH 084/110] Raised the importance of the z-index (#349) --- app/MindWork AI Studio/wwwroot/app.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/MindWork AI Studio/wwwroot/app.css b/app/MindWork AI Studio/wwwroot/app.css index 60ec2d98..aa733a68 100644 --- a/app/MindWork AI Studio/wwwroot/app.css +++ b/app/MindWork AI Studio/wwwroot/app.css @@ -81,7 +81,7 @@ and https://github.com/MindWorkAI/AI-Studio/issues/346 */ .mud-popover-provider > .mud-popover-open { - z-index: 1604; + z-index: 1604 !important; } /* Context div for inner scrolling component */ From cf97fa888c6700bc3034f3b0496d24d432a524d4 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 15 Mar 2025 11:37:09 +0100 Subject: [PATCH 085/110] Undo debugging measures (#350) --- .github/workflows/build-and-release.yml | 4 ++-- runtime/Cargo.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index ac14ca73..dc2188ad 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -347,7 +347,7 @@ jobs: cargo tauri build --target ${{ matrix.rust_target }} --bundles ${{ matrix.tauri_bundle }} - name: Upload artifact (macOS) - if: startsWith(matrix.platform, 'macos') + if: startsWith(matrix.platform, 'macos') && startsWith(github.ref, 'refs/tags/v') uses: actions/upload-artifact@v4 with: name: MindWork AI Studio (macOS ${{ matrix.dotnet_runtime }}) @@ -369,7 +369,7 @@ jobs: retention-days: ${{ env.RETENTION_INTERMEDIATE_ASSETS }} - name: Upload artifact (Windows - NSIS) - if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'nsis') + if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'nsis') && startsWith(github.ref, 'refs/tags/v') uses: actions/upload-artifact@v4 with: name: MindWork AI Studio (Windows - NSIS ${{ matrix.dotnet_runtime }}) diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 3d72d2b6..d6835ac7 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -9,7 +9,7 @@ authors = ["Thorsten Sommer"] tauri-build = { version = "1.5", features = [] } [dependencies] -tauri = { version = "1.8", features = [ "http-all", "updater", "shell-sidecar", "shell-open", "dialog", "devtools"] } +tauri = { version = "1.8", features = [ "http-all", "updater", "shell-sidecar", "shell-open", "dialog"] } tauri-plugin-window-state = { git = "https://github.com/tauri-apps/plugins-workspace", branch = "v1" } serde = { version = "1.0.218", features = ["derive"] } serde_json = "1.0.134" From 3ab8e7324eca1186b38c58bfbbe576e7ee988f29 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 15 Mar 2025 11:52:52 +0100 Subject: [PATCH 086/110] Prepared release v0.9.36 (#351) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 1 + app/MindWork AI Studio/wwwroot/changelog/v0.9.36.md | 2 +- metadata.txt | 8 ++++---- runtime/Cargo.lock | 2 +- runtime/Cargo.toml | 2 +- runtime/tauri.conf.json | 2 +- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index a0b2efea..2a18c92b 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,6 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ + new (211, "v0.9.36, build 211 (2025-03-15 10:42 UTC)", "v0.9.36.md"), new (210, "v0.9.35, build 210 (2025-03-13 08:44 UTC)", "v0.9.35.md"), new (209, "v0.9.34, build 209 (2025-03-11 13:02 UTC)", "v0.9.34.md"), new (208, "v0.9.33, build 208 (2025-03-11 08:14 UTC)", "v0.9.33.md"), diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.36.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.36.md index ab05d827..73dd3481 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.36.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.36.md @@ -1,2 +1,2 @@ -# v0.9.36, build 211 (2025-03-15 xx:xx UTC) +# v0.9.36, build 211 (2025-03-15 10:42 UTC) - Fixed a MudBlazor bug, where dropdown menus were not displayed correctly when used inside a dialog. \ No newline at end of file diff --git a/metadata.txt b/metadata.txt index 03b10cfd..f421855a 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ -0.9.35 -2025-03-13 08:44:31 UTC -210 +0.9.36 +2025-03-15 10:42:37 UTC +211 9.0.104 (commit 2750432faa) 9.0.3 (commit 831d23e561) 1.85.0 (commit 4d91de4e4) 8.3.0 1.8.1 -471536cc8f0, release +cf97fa888c6, release diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index 025fa77b..9b2e58b7 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -2350,7 +2350,7 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mindwork-ai-studio" -version = "0.9.35" +version = "0.9.36" dependencies = [ "aes", "arboard", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index d6835ac7..b0553560 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindwork-ai-studio" -version = "0.9.35" +version = "0.9.36" edition = "2021" description = "MindWork AI Studio" authors = ["Thorsten Sommer"] diff --git a/runtime/tauri.conf.json b/runtime/tauri.conf.json index a0b3688a..b84a69ac 100644 --- a/runtime/tauri.conf.json +++ b/runtime/tauri.conf.json @@ -6,7 +6,7 @@ }, "package": { "productName": "MindWork AI Studio", - "version": "0.9.35" + "version": "0.9.36" }, "tauri": { "allowlist": { From 08c18cd38779b3cae59897e9549414acc9724fc6 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 15 Mar 2025 11:57:18 +0100 Subject: [PATCH 087/110] Remove Open Collective funding entry from FUNDING.yml (#352) --- .github/FUNDING.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 9706675a..e039df5a 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,2 +1 @@ -github: [MindWorkAI] -open_collective: mindwork-ai \ No newline at end of file +github: [MindWorkAI] \ No newline at end of file From 293b0ffdb0aa3f98ff7ede0b191d76711ea71bae Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 16 Mar 2025 14:03:43 +0100 Subject: [PATCH 088/110] Move data source settings (#353) --- .../Components/DataSourceSelection.razor | 12 +++-- .../Components/DataSourceSelection.razor.cs | 19 +++++++- .../Settings/SettingsDialogAgenda.razor | 2 +- .../SettingsDialogAssistantBias.razor | 2 +- .../Dialogs/Settings/SettingsDialogBase.cs | 21 ++++++-- .../Settings/SettingsDialogCoding.razor | 2 +- .../Settings/SettingsDialogDataSources.razor} | 19 +++++--- .../SettingsDialogDataSources.razor.cs} | 48 +++---------------- .../SettingsDialogGrammarSpelling.razor | 2 +- .../Settings/SettingsDialogIconFinder.razor | 2 +- .../Settings/SettingsDialogJobPostings.razor | 2 +- .../Settings/SettingsDialogLegalCheck.razor | 2 +- .../Settings/SettingsDialogMyTasks.razor | 2 +- .../Settings/SettingsDialogRewrite.razor | 2 +- .../Settings/SettingsDialogSynonyms.razor | 2 +- .../SettingsDialogTextSummarizer.razor | 2 +- .../Settings/SettingsDialogTranslation.razor | 2 +- .../SettingsDialogWritingEMails.razor | 2 +- app/MindWork AI Studio/Pages/Settings.razor | 2 +- .../Pages/Settings.razor.cs | 1 - .../wwwroot/changelog/v0.9.37.md | 2 + 21 files changed, 77 insertions(+), 73 deletions(-) rename app/MindWork AI Studio/{Components/Settings/SettingsPanelDataSources.razor => Dialogs/Settings/SettingsDialogDataSources.razor} (87%) rename app/MindWork AI Studio/{Components/Settings/SettingsPanelDataSources.razor.cs => Dialogs/Settings/SettingsDialogDataSources.razor.cs} (86%) create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md diff --git a/app/MindWork AI Studio/Components/DataSourceSelection.razor b/app/MindWork AI Studio/Components/DataSourceSelection.razor index 6b299796..145a3f6a 100644 --- a/app/MindWork AI Studio/Components/DataSourceSelection.razor +++ b/app/MindWork AI Studio/Components/DataSourceSelection.razor @@ -3,7 +3,7 @@ @if (this.SelectionMode is DataSourceSelectionMode.SELECTION_MODE) { <div class="d-flex"> - <MudTooltip Text="Select the data sources you want to use here." Placement="Placement.Top"> + <MudTooltip Text="Select the data you want to use here." Placement="Placement.Top"> @if (this.PopoverTriggerMode is PopoverTriggerMode.ICON) { <MudIconButton Icon="@Icons.Material.Filled.Source" Class="@this.PopoverButtonClasses" OnClick="@(() => this.ToggleDataSourceSelection())"/> @@ -11,7 +11,7 @@ else { <MudButton Variant="Variant.Filled" StartIcon="@Icons.Material.Filled.Source" Class="@this.PopoverButtonClasses" OnClick="@(() => this.ToggleDataSourceSelection())"> - Select data sources + Select data </MudButton> } </MudTooltip> @@ -21,7 +21,13 @@ <MudCardHeader> <CardHeaderContent> <PreviewPrototype/> - <MudText Typo="Typo.h5">Data Source Selection</MudText> + <MudStack Row="true" AlignItems="AlignItems.Center"> + <MudText Typo="Typo.h5">Data Source Selection</MudText> + <MudSpacer/> + <MudTooltip Text="Manage your data sources" Placement="Placement.Top"> + <MudIconButton Variant="Variant.Filled" Icon="@Icons.Material.Filled.Settings" OnClick="@this.OpenSettingsDialog"/> + </MudTooltip> + </MudStack> </CardHeaderContent> </MudCardHeader> <MudCardContent Style="min-width: 24em; max-height: 60vh; max-width: 45vw; overflow: auto;"> diff --git a/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs b/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs index 73796d6e..22d4b0cb 100644 --- a/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs +++ b/app/MindWork AI Studio/Components/DataSourceSelection.razor.cs @@ -1,9 +1,12 @@ +using AIStudio.Dialogs.Settings; using AIStudio.Settings; using AIStudio.Settings.DataModel; using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; +using DialogOptions = AIStudio.Dialogs.DialogOptions; + namespace AIStudio.Components; public partial class DataSourceSelection : ComponentBase, IMessageBusReceiver, IDisposable @@ -45,7 +48,7 @@ public partial class DataSourceSelection : ComponentBase, IMessageBusReceiver, I private DataSourceService DataSourceService { get; init; } = null!; [Inject] - private ILogger<DataSourceSelection> Logger { get; init; } = null!; + private IDialogService DialogService { get; init; } = null!; private bool internalChange; private bool showDataSourceSelection; @@ -131,6 +134,20 @@ public partial class DataSourceSelection : ComponentBase, IMessageBusReceiver, I } #endregion + + private async Task OpenSettingsDialog() + { + this.showDataSourceSelection = false; + this.StateHasChanged(); + + var dialogParameters = new DialogParameters(); + var dialogReference = await this.DialogService.ShowAsync<SettingsDialogDataSources>(null, dialogParameters, DialogOptions.FULLSCREEN); + await dialogReference.Result; + await this.LoadAndApplyFilters(); + + this.showDataSourceSelection = true; + this.StateHasChanged(); + } private SelectionMode GetListSelectionMode() => this.aiBasedSourceSelection ? MudBlazor.SelectionMode.SingleSelection : MudBlazor.SelectionMode.MultiSelection; diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor index dc510ef9..cfdbdd47 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAgenda.razor @@ -33,7 +33,7 @@ <ConfigurationText OptionDescription="Preselect another agenda language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Agenda.PreselectedOtherLanguage = updatedText)"/> } <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Agenda.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Agenda.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.AGENDA_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectedProvider = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.AGENDA_ASSISTANT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectedProvider = selectedValue)"/> <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Agenda.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Agenda.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Agenda.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> </MudPaper> </DialogContent> diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor index 9bce0888..1aef4b4e 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogAssistantBias.razor @@ -30,7 +30,7 @@ } <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.BiasOfTheDay.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.BIAS_DAY_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedProvider = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.BIAS_DAY_ASSISTANT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.BiasOfTheDay.PreselectedProvider = selectedValue)"/> </MudPaper> </MudField> </DialogContent> diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs index a4732c67..83fa07e4 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs @@ -1,6 +1,7 @@ using System.Diagnostics.CodeAnalysis; using AIStudio.Settings; +using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; @@ -11,9 +12,6 @@ public abstract class SettingsDialogBase : ComponentBase [CascadingParameter] protected IMudDialogInstance MudDialog { get; set; } = null!; - [Parameter] - public List<ConfigurationSelectData<string>> AvailableLLMProviders { get; set; } = new(); - [Inject] protected SettingsManager SettingsManager { get; init; } = null!; @@ -23,6 +21,11 @@ public abstract class SettingsDialogBase : ComponentBase [Inject] protected MessageBus MessageBus { get; init; } = null!; + [Inject] + protected RustService RustService { get; init; } = null!; + + protected readonly List<ConfigurationSelectData<string>> availableLLMProviders = new(); + protected readonly List<ConfigurationSelectData<string>> availableEmbeddingProviders = new(); #region Overrides of ComponentBase @@ -30,6 +33,7 @@ public abstract class SettingsDialogBase : ComponentBase protected override void OnInitialized() { this.UpdateProviders(); + this.UpdateEmbeddingProviders(); base.OnInitialized(); } @@ -40,8 +44,15 @@ public abstract class SettingsDialogBase : ComponentBase [SuppressMessage("Usage", "MWAIS0001:Direct access to `Providers` is not allowed")] private void UpdateProviders() { - this.AvailableLLMProviders.Clear(); + this.availableLLMProviders.Clear(); foreach (var provider in this.SettingsManager.ConfigurationData.Providers) - this.AvailableLLMProviders.Add(new (provider.InstanceName, provider.Id)); + this.availableLLMProviders.Add(new (provider.InstanceName, provider.Id)); + } + + private void UpdateEmbeddingProviders() + { + this.availableEmbeddingProviders.Clear(); + foreach (var provider in this.SettingsManager.ConfigurationData.EmbeddingProviders) + this.availableEmbeddingProviders.Add(new (provider.Name, provider.Id)); } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor index 668c3128..c5a09136 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogCoding.razor @@ -19,7 +19,7 @@ <ConfigurationText OptionDescription="Preselect another programming language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" Icon="@Icons.Material.Filled.Code" Text="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedOtherProgrammingLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Coding.PreselectedOtherProgrammingLanguage = updatedText)"/> } <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.CODING_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.PreselectedProvider = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.CODING_ASSISTANT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.PreselectedProvider = selectedValue)"/> <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.Coding.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Coding.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Coding.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> </MudPaper> </DialogContent> diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor similarity index 87% rename from app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor rename to app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor index 506c63b9..5ec517a7 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor @@ -1,13 +1,15 @@ @using AIStudio.Settings.DataModel -@inherits SettingsPanelBase +@inherits SettingsDialogBase -@if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) -{ - <ExpansionPanel HeaderIcon="@Icons.Material.Filled.IntegrationInstructions" HeaderText="Configure Data Sources"> +<MudDialog> + <TitleContent> <PreviewPrototype/> - <MudText Typo="Typo.h4" Class="mb-3"> + <MudText Typo="Typo.h6" Class="d-flex align-center"> + <MudIcon Icon="@Icons.Material.Filled.IntegrationInstructions" Class="mr-2"/> Configured Data Sources </MudText> + </TitleContent> + <DialogContent> <MudJustifiedText Typo="Typo.body1" Class="mb-3"> You might configure different data sources. A data source can include one file, all files in a directory, or data from your company. Later, you can incorporate these data sources @@ -57,5 +59,8 @@ <MudMenuItem OnClick="() => this.AddDataSource(DataSourceType.LOCAL_DIRECTORY)">Local Directory</MudMenuItem> <MudMenuItem OnClick="() => this.AddDataSource(DataSourceType.LOCAL_FILE)">Local File</MudMenuItem> </MudMenu> - </ExpansionPanel> -} \ No newline at end of file + </DialogContent> + <DialogActions> + <MudButton OnClick="@this.Close" Variant="Variant.Filled">Close</MudButton> + </DialogActions> +</MudDialog> \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor.cs similarity index 86% rename from app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor.cs rename to app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor.cs index 6f7e74b8..d2c6cef8 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelDataSources.razor.cs +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor.cs @@ -1,35 +1,11 @@ -using AIStudio.Dialogs; using AIStudio.Settings; using AIStudio.Settings.DataModel; using AIStudio.Tools.ERIClient.DataModel; -using Microsoft.AspNetCore.Components; +namespace AIStudio.Dialogs.Settings; -using DialogOptions = AIStudio.Dialogs.DialogOptions; - -namespace AIStudio.Components.Settings; - -public partial class SettingsPanelDataSources : SettingsPanelBase +public partial class SettingsDialogDataSources : SettingsDialogBase { - [Parameter] - public List<ConfigurationSelectData<string>> AvailableDataSources { get; set; } = new(); - - [Parameter] - public EventCallback<List<ConfigurationSelectData<string>>> AvailableDataSourcesChanged { get; set; } - - [Parameter] - public Func<IReadOnlyList<ConfigurationSelectData<string>>> AvailableEmbeddingsFunc { get; set; } = () => []; - - #region Overrides of ComponentBase - - protected override async Task OnInitializedAsync() - { - await this.UpdateDataSources(); - await base.OnInitializedAsync(); - } - - #endregion - private string GetEmbeddingName(IDataSource dataSource) { if(dataSource is IInternalDataSource internalDataSource) @@ -56,7 +32,7 @@ public partial class SettingsPanelDataSources : SettingsPanelBase var localFileDialogParameters = new DialogParameters<DataSourceLocalFileDialog> { { x => x.IsEditing, false }, - { x => x.AvailableEmbeddings, this.AvailableEmbeddingsFunc() } + { x => x.AvailableEmbeddings, this.availableEmbeddingProviders } }; var localFileDialogReference = await this.DialogService.ShowAsync<DataSourceLocalFileDialog>("Add Local File as Data Source", localFileDialogParameters, DialogOptions.FULLSCREEN); @@ -73,7 +49,7 @@ public partial class SettingsPanelDataSources : SettingsPanelBase var localDirectoryDialogParameters = new DialogParameters<DataSourceLocalDirectoryDialog> { { x => x.IsEditing, false }, - { x => x.AvailableEmbeddings, this.AvailableEmbeddingsFunc() } + { x => x.AvailableEmbeddings, this.availableEmbeddingProviders } }; var localDirectoryDialogReference = await this.DialogService.ShowAsync<DataSourceLocalDirectoryDialog>("Add Local Directory as Data Source", localDirectoryDialogParameters, DialogOptions.FULLSCREEN); @@ -107,7 +83,6 @@ public partial class SettingsPanelDataSources : SettingsPanelBase return; this.SettingsManager.ConfigurationData.DataSources.Add(addedDataSource); - await this.UpdateDataSources(); await this.SettingsManager.StoreSettings(); await this.MessageBus.SendMessage<bool>(this, Event.CONFIGURATION_CHANGED); } @@ -122,7 +97,7 @@ public partial class SettingsPanelDataSources : SettingsPanelBase { { x => x.IsEditing, true }, { x => x.DataSource, localFile }, - { x => x.AvailableEmbeddings, this.AvailableEmbeddingsFunc() } + { x => x.AvailableEmbeddings, this.availableEmbeddingProviders } }; var localFileDialogReference = await this.DialogService.ShowAsync<DataSourceLocalFileDialog>("Edit Local File Data Source", localFileDialogParameters, DialogOptions.FULLSCREEN); @@ -138,7 +113,7 @@ public partial class SettingsPanelDataSources : SettingsPanelBase { { x => x.IsEditing, true }, { x => x.DataSource, localDirectory }, - { x => x.AvailableEmbeddings, this.AvailableEmbeddingsFunc() } + { x => x.AvailableEmbeddings, this.availableEmbeddingProviders } }; var localDirectoryDialogReference = await this.DialogService.ShowAsync<DataSourceLocalDirectoryDialog>("Edit Local Directory Data Source", localDirectoryDialogParameters, DialogOptions.FULLSCREEN); @@ -170,7 +145,6 @@ public partial class SettingsPanelDataSources : SettingsPanelBase this.SettingsManager.ConfigurationData.DataSources[this.SettingsManager.ConfigurationData.DataSources.IndexOf(dataSource)] = editedDataSource; - await this.UpdateDataSources(); await this.SettingsManager.StoreSettings(); await this.MessageBus.SendMessage<bool>(this, Event.CONFIGURATION_CHANGED); } @@ -210,7 +184,6 @@ public partial class SettingsPanelDataSources : SettingsPanelBase { this.SettingsManager.ConfigurationData.DataSources.Remove(dataSource); await this.SettingsManager.StoreSettings(); - await this.UpdateDataSources(); await this.MessageBus.SendMessage<bool>(this, Event.CONFIGURATION_CHANGED); } } @@ -247,13 +220,4 @@ public partial class SettingsPanelDataSources : SettingsPanelBase break; } } - - private async Task UpdateDataSources() - { - this.AvailableDataSources.Clear(); - foreach (var dataSource in this.SettingsManager.ConfigurationData.DataSources) - this.AvailableDataSources.Add(new (dataSource.Name, dataSource.Id)); - - await this.AvailableDataSourcesChanged.InvokeAsync(this.AvailableDataSources); - } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor index fd1d0f51..c7ae29dd 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogGrammarSpelling.razor @@ -17,7 +17,7 @@ <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedOtherLanguage = updatedText)"/> } <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.GrammarSpelling.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.GrammarSpelling.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.GRAMMAR_SPELLING_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedProvider = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.GRAMMAR_SPELLING_ASSISTANT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.GrammarSpelling.PreselectedProvider = selectedValue)"/> </MudPaper> </DialogContent> <DialogActions> diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor index b452820e..0562b38e 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogIconFinder.razor @@ -13,7 +13,7 @@ <ConfigurationOption OptionDescription="Preselect icon options?" LabelOn="Icon options are preselected" LabelOff="No icon options are preselected" State="@(() => this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions = updatedState)" OptionHelp="When enabled, you can preselect the icon options. This is might be useful when you prefer a specific icon source or LLM model."/> <ConfigurationSelect OptionDescription="Preselect the icon source" Disabled="@(() => !this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.IconFinder.PreselectedSource)" Data="@ConfigurationSelectDataFactory.GetIconSourcesData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.IconFinder.PreselectedSource = selectedValue)" OptionHelp="Which icon source should be preselected?"/> <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.IconFinder.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.IconFinder.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.ICON_FINDER_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.IconFinder.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.IconFinder.PreselectedProvider = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.ICON_FINDER_ASSISTANT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.IconFinder.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.IconFinder.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.IconFinder.PreselectedProvider = selectedValue)"/> </MudPaper> </DialogContent> <DialogActions> diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor index 6d1fc3c8..505d5624 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogJobPostings.razor @@ -24,7 +24,7 @@ <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.JobPostings.PreselectOtherLanguage = updatedText)"/> } <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.JobPostings.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.JobPostings.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.JOB_POSTING_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.JobPostings.PreselectedProvider = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.JOB_POSTING_ASSISTANT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.JobPostings.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.JobPostings.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.JobPostings.PreselectedProvider = selectedValue)"/> </MudPaper> </DialogContent> <DialogActions> diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor index 0573e489..10b2c286 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogLegalCheck.razor @@ -14,7 +14,7 @@ <ConfigurationOption OptionDescription="Preselect the web content reader?" Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions || this.SettingsManager.ConfigurationData.LegalCheck.HideWebContentReader)" LabelOn="Web content reader is preselected" LabelOff="Web content reader is not preselected" State="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectWebContentReader)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.LegalCheck.PreselectWebContentReader = updatedState)" OptionHelp="When enabled, the web content reader is preselected. This is might be useful when you prefer to load legal content from the web very often."/> <ConfigurationOption OptionDescription="Preselect the content cleaner agent?" Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions || this.SettingsManager.ConfigurationData.LegalCheck.HideWebContentReader)" LabelOn="Content cleaner agent is preselected" LabelOff="Content cleaner agent is not preselected" State="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectContentCleanerAgent)" StateUpdate="@(updatedState => this.SettingsManager.ConfigurationData.LegalCheck.PreselectContentCleanerAgent = updatedState)" OptionHelp="When enabled, the content cleaner agent is preselected. This is might be useful when you prefer to clean up the legal content before translating it."/> <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.LegalCheck.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.LegalCheck.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.LEGAL_CHECK_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.LegalCheck.PreselectedProvider = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.LEGAL_CHECK_ASSISTANT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.LegalCheck.PreselectedProvider = selectedValue)"/> <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.LegalCheck.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.LegalCheck.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.LegalCheck.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> </MudPaper> </DialogContent> diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor index 7660612f..91d318af 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogMyTasks.razor @@ -18,7 +18,7 @@ } <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.MyTasks.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.MyTasks.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.MyTasks.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.MyTasks.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.MY_TASKS_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.MyTasks.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.MyTasks.PreselectedProvider = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.MY_TASKS_ASSISTANT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.MyTasks.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.MyTasks.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.MyTasks.PreselectedProvider = selectedValue)"/> </MudPaper> </DialogContent> <DialogActions> diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor index 79931580..e6bcf79f 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogRewrite.razor @@ -19,7 +19,7 @@ <ConfigurationSelect OptionDescription="Preselect a writing style" Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedWritingStyle)" Data="@ConfigurationSelectDataFactory.GetWritingStyles4RewriteData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedWritingStyle = selectedValue)" OptionHelp="Which writing style should be preselected?"/> <ConfigurationSelect OptionDescription="Preselect a sentence structure" Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedSentenceStructure)" Data="@ConfigurationSelectDataFactory.GetSentenceStructureData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedSentenceStructure = selectedValue)" OptionHelp="Which voice should be preselected for the sentence structure?"/> <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.REWRITE_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedProvider = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.REWRITE_ASSISTANT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.RewriteImprove.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.RewriteImprove.PreselectedProvider = selectedValue)"/> </MudPaper> </DialogContent> <DialogActions> diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor index d36328f5..2d7e29f4 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogSynonyms.razor @@ -17,7 +17,7 @@ <ConfigurationText OptionDescription="Preselect another language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.Synonyms.PreselectedOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Synonyms.PreselectedOtherLanguage = updatedText)"/> } <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Synonyms.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Synonyms.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.SYNONYMS_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Synonyms.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Synonyms.PreselectedProvider = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.SYNONYMS_ASSISTANT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Synonyms.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Synonyms.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Synonyms.PreselectedProvider = selectedValue)"/> </MudPaper> </DialogContent> <DialogActions> diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor index 6dcf4ee4..111fda45 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTextSummarizer.razor @@ -26,7 +26,7 @@ <ConfigurationText OptionDescription="Preselect your expertise" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" Icon="@Icons.Material.Filled.Person" Text="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedExpertInField)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedExpertInField = updatedText)"/> } <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.TextSummarizer.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.TEXT_SUMMARIZER_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedProvider = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.TEXT_SUMMARIZER_ASSISTANT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.TextSummarizer.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.TextSummarizer.PreselectedProvider = selectedValue)"/> </MudPaper> </DialogContent> <DialogActions> diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor index 4da35455..8cb87ac7 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogTranslation.razor @@ -21,7 +21,7 @@ <ConfigurationText OptionDescription="Preselect another target language" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" Icon="@Icons.Material.Filled.Translate" Text="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectOtherLanguage)" TextUpdate="@(updatedText => this.SettingsManager.ConfigurationData.Translation.PreselectOtherLanguage = updatedText)"/> } <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Translation.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Translation.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.TRANSLATION_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Translation.PreselectedProvider = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.TRANSLATION_ASSISTANT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.Translation.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.Translation.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.Translation.PreselectedProvider = selectedValue)"/> </MudPaper> </DialogContent> <DialogActions> diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor index 27ac9e7a..a6f4bca9 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogWritingEMails.razor @@ -20,7 +20,7 @@ } <ConfigurationSelect OptionDescription="Preselect a writing style" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectedWritingStyle)" Data="@ConfigurationSelectDataFactory.GetWritingStyles4EMailData()" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.PreselectedWritingStyle = selectedValue)" OptionHelp="Which writing style should be preselected?"/> <ConfigurationMinConfidenceSelection Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" RestrictToGlobalMinimumConfidence="@true" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.MinimumProviderConfidence)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.MinimumProviderConfidence = selectedValue)"/> - <ConfigurationProviderSelection Component="Components.EMAIL_ASSISTANT" Data="@this.AvailableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.PreselectedProvider = selectedValue)"/> + <ConfigurationProviderSelection Component="Components.EMAIL_ASSISTANT" Data="@this.availableLLMProviders" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectedProvider)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.PreselectedProvider = selectedValue)"/> <ConfigurationSelect OptionDescription="Preselect one of your profiles?" Disabled="@(() => !this.SettingsManager.ConfigurationData.EMail.PreselectOptions)" SelectedValue="@(() => this.SettingsManager.ConfigurationData.EMail.PreselectedProfile)" Data="@ConfigurationSelectDataFactory.GetProfilesData(this.SettingsManager.ConfigurationData.Profiles)" SelectionUpdate="@(selectedValue => this.SettingsManager.ConfigurationData.EMail.PreselectedProfile = selectedValue)" OptionHelp="Would you like to preselect one of your profiles?"/> </MudPaper> </DialogContent> diff --git a/app/MindWork AI Studio/Pages/Settings.razor b/app/MindWork AI Studio/Pages/Settings.razor index 3516096b..c048a542 100644 --- a/app/MindWork AI Studio/Pages/Settings.razor +++ b/app/MindWork AI Studio/Pages/Settings.razor @@ -12,8 +12,8 @@ @if (PreviewFeatures.PRE_RAG_2024.IsEnabled(this.SettingsManager)) { <SettingsPanelEmbeddings AvailableLLMProvidersFunc="() => this.availableLLMProviders" @bind-AvailableEmbeddingProviders="@this.availableEmbeddingProviders"/> - <SettingsPanelDataSources AvailableLLMProvidersFunc="() => this.availableLLMProviders" AvailableEmbeddingsFunc="() => this.availableEmbeddingProviders" @bind-AvailableDataSources="@this.availableDataSources"/> } + <SettingsPanelProfiles AvailableLLMProvidersFunc="() => this.availableLLMProviders"/> <SettingsPanelApp AvailableLLMProvidersFunc="() => this.availableLLMProviders"/> <SettingsPanelChat AvailableLLMProvidersFunc="() => this.availableLLMProviders"/> diff --git a/app/MindWork AI Studio/Pages/Settings.razor.cs b/app/MindWork AI Studio/Pages/Settings.razor.cs index aaf55c85..57c34c5a 100644 --- a/app/MindWork AI Studio/Pages/Settings.razor.cs +++ b/app/MindWork AI Studio/Pages/Settings.razor.cs @@ -14,7 +14,6 @@ public partial class Settings : ComponentBase, IMessageBusReceiver, IDisposable private List<ConfigurationSelectData<string>> availableLLMProviders = new(); private List<ConfigurationSelectData<string>> availableEmbeddingProviders = new(); - private List<ConfigurationSelectData<string>> availableDataSources = new(); #region Overrides of ComponentBase diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md new file mode 100644 index 00000000..51168ef8 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md @@ -0,0 +1,2 @@ +# v0.9.37, build 212 (2025-03-16 xx:xx UTC) +- Moved the data source settings into the data selection component. \ No newline at end of file From 75b3238e569a647a4f2d0868998c24cb61874aa4 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 16 Mar 2025 14:25:49 +0100 Subject: [PATCH 089/110] Improved the data selection component if no sources are configured (#354) --- .../Components/DataSourceSelection.razor | 20 +++++++++++++++++++ .../wwwroot/changelog/v0.9.37.md | 1 + 2 files changed, 21 insertions(+) diff --git a/app/MindWork AI Studio/Components/DataSourceSelection.razor b/app/MindWork AI Studio/Components/DataSourceSelection.razor index 145a3f6a..ac8acf6d 100644 --- a/app/MindWork AI Studio/Components/DataSourceSelection.razor +++ b/app/MindWork AI Studio/Components/DataSourceSelection.razor @@ -37,6 +37,26 @@ <MudSkeleton Width="80%"/> <MudSkeleton Width="100%"/> } + else if (this.SettingsManager.ConfigurationData.DataSources.Count == 0) + { + <MudJustifiedText Typo="Typo.body1" Class="mb-3"> + You haven't configured any data sources. To grant the AI access to your data, you need to + add such a source. However, if you wish to use data from your device, you first have to set up + a so-called embedding. This embedding is necessary so the AI can effectively search your data, + find and retrieve the correct information required for each task. In addition to local data, + you can also incorporate your company's data. To do so, your company must provide the data through + an ERI (External Retrieval Interface). + </MudJustifiedText> + + <MudStack StretchItems="StretchItems.None" AlignItems="AlignItems.Start"> + <MudButton Variant="Variant.Filled" OnClick="this.OpenSettingsDialog" StartIcon="@Icons.Material.Filled.Settings"> + Manage Data Sources + </MudButton> + <MudButton Variant="Variant.Filled" Href="https://mindworkai.org/#eri---external-retrieval-interface" Target="_blank" StartIcon="@Icons.Material.Filled.Settings"> + Read more about ERI + </MudButton> + </MudStack> + } else if (this.showDataSourceSelection) { <MudTextSwitch Label="Are data sources enabled?" Value="@this.areDataSourcesEnabled" LabelOn="Yes, I want to use data sources." LabelOff="No, I don't want to use data sources." ValueChanged="@this.EnabledChanged"/> diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md index 51168ef8..54de8040 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md @@ -1,2 +1,3 @@ # v0.9.37, build 212 (2025-03-16 xx:xx UTC) +- Improved the experience of the data selection component when no data sources are configured yet. - Moved the data source settings into the data selection component. \ No newline at end of file From dad709cccbe14690b5cd10522ca08d6c6f52d1ea Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 16 Mar 2025 14:59:07 +0100 Subject: [PATCH 090/110] Improved the data source selection behavior with no data sources selected (#355) --- .../Components/DataSourceSelection.razor | 94 +++++++++++-------- .../wwwroot/changelog/v0.9.37.md | 1 + 2 files changed, 58 insertions(+), 37 deletions(-) diff --git a/app/MindWork AI Studio/Components/DataSourceSelection.razor b/app/MindWork AI Studio/Components/DataSourceSelection.razor index ac8acf6d..f99aa6fa 100644 --- a/app/MindWork AI Studio/Components/DataSourceSelection.razor +++ b/app/MindWork AI Studio/Components/DataSourceSelection.razor @@ -69,24 +69,29 @@ <MudTextSwitch Label="AI-based data validation" Value="@this.aiBasedValidation" LabelOn="Yes, let the AI validate & filter the retrieved data." LabelOff="No, use all data retrieved from the data sources." ValueChanged="@this.ValidationModeChanged"/> } - @if (this.aiBasedSourceSelection is false || this.DataSourcesAISelected.Count == 0) + @switch (this.aiBasedSourceSelection) { - <MudField Label="Available Data Sources" Variant="Variant.Outlined" Class="mb-3" Disabled="@this.aiBasedSourceSelection"> - <MudList T="IDataSource" SelectionMode="@this.GetListSelectionMode()" @bind-SelectedValues:get="@this.selectedDataSources" @bind-SelectedValues:set="@(x => this.SelectionChanged(x))" Style="max-height: 14em;"> - @foreach (var source in this.availableDataSources) - { - <MudListItem Value="@source"> - @source.Name - </MudListItem> - } - </MudList> - </MudField> - } - else - { - <MudExpansionPanels MultiExpansion="@false" Class="mt-3" Style="max-height: 14em;"> - <ExpansionPanel HeaderIcon="@Icons.Material.Filled.TouchApp" HeaderText="Available Data Sources"> - <MudList T="IDataSource" SelectionMode="MudBlazor.SelectionMode.SingleSelection" SelectedValues="@this.selectedDataSources" Style="max-height: 14em;"> + case true when this.availableDataSources.Count == 0: + <MudText Typo="Typo.body1" Class="mb-3"> + Your data sources cannot be used with the LLM provider you selected due to data privacy, or they are currently unavailable. + </MudText> + break; + + case true when this.DataSourcesAISelected.Count == 0: + <MudText Typo="Typo.body1" Class="mb-3"> + The AI evaluates each of your inputs to determine whether and which data sources are necessary. Currently, the AI has not selected any source. + </MudText> + break; + + case false when this.availableDataSources.Count == 0: + <MudText Typo="Typo.body1" Class="mb-3"> + Your data sources cannot be used with the LLM provider you selected due to data privacy, or they are currently unavailable. + </MudText> + break; + + case false: + <MudField Label="Available Data Sources" Variant="Variant.Outlined" Class="mb-3" Disabled="@this.aiBasedSourceSelection"> + <MudList T="IDataSource" SelectionMode="@this.GetListSelectionMode()" @bind-SelectedValues:get="@this.selectedDataSources" @bind-SelectedValues:set="@(x => this.SelectionChanged(x))" Style="max-height: 14em;"> @foreach (var source in this.availableDataSources) { <MudListItem Value="@source"> @@ -94,27 +99,42 @@ </MudListItem> } </MudList> - </ExpansionPanel> - <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Filter" HeaderText="AI-Selected Data Sources"> - <MudList T="DataSourceAgentSelected" SelectionMode="MudBlazor.SelectionMode.MultiSelection" ReadOnly="@true" SelectedValues="@this.GetSelectedDataSourcesWithAI()" Style="max-height: 14em;"> - @foreach (var source in this.DataSourcesAISelected) - { - <MudListItem Value="@source"> - <ChildContent> - <MudText Typo="Typo.body1"> - @source.DataSource.Name - </MudText> + </MudField> + break; + + case true: + <MudExpansionPanels MultiExpansion="@false" Class="mt-3" Style="max-height: 14em;"> + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.TouchApp" HeaderText="Available Data Sources"> + <MudList T="IDataSource" SelectionMode="MudBlazor.SelectionMode.SingleSelection" SelectedValues="@this.selectedDataSources" Style="max-height: 14em;"> + @foreach (var source in this.availableDataSources) + { + <MudListItem Value="@source"> + @source.Name + </MudListItem> + } + </MudList> + </ExpansionPanel> + <ExpansionPanel HeaderIcon="@Icons.Material.Filled.Filter" HeaderText="AI-Selected Data Sources"> + <MudList T="DataSourceAgentSelected" SelectionMode="MudBlazor.SelectionMode.MultiSelection" ReadOnly="@true" SelectedValues="@this.GetSelectedDataSourcesWithAI()" Style="max-height: 14em;"> + @foreach (var source in this.DataSourcesAISelected) + { + <MudListItem Value="@source"> + <ChildContent> + <MudText Typo="Typo.body1"> + @source.DataSource.Name + </MudText> - <MudProgressLinear Color="Color.Info" Min="0" Max="1" Value="@source.AIDecision.Confidence"/> - <MudJustifiedText Typo="Typo.body2"> - @this.GetAIReasoning(source) - </MudJustifiedText> - </ChildContent> - </MudListItem> - } - </MudList> - </ExpansionPanel> - </MudExpansionPanels> + <MudProgressLinear Color="Color.Info" Min="0" Max="1" Value="@source.AIDecision.Confidence"/> + <MudJustifiedText Typo="Typo.body2"> + @(this.GetAIReasoning(source)) + </MudJustifiedText> + </ChildContent> + </MudListItem> + } + </MudList> + </ExpansionPanel> + </MudExpansionPanels> + break; } } } diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md index 54de8040..73263072 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md @@ -1,3 +1,4 @@ # v0.9.37, build 212 (2025-03-16 xx:xx UTC) - Improved the experience of the data selection component when no data sources are configured yet. +- Improved the data source selection behavior when no data source is available or selected, for whatever reason. - Moved the data source settings into the data selection component. \ No newline at end of file From 780e45911dfe54f38a4747d1c15c30c41d523ed1 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 16 Mar 2025 15:06:53 +0100 Subject: [PATCH 091/110] Fixed "send to" menu position after MudBlazor 8 upgrade (#356) --- app/MindWork AI Studio/Assistants/AssistantBase.razor | 4 ++-- app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor b/app/MindWork AI Studio/Assistants/AssistantBase.razor index 634b55e4..f5883156 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor @@ -73,7 +73,7 @@ { @if (this.ShowSendTo) { - <MudMenu StartIcon="@Icons.Material.Filled.Apps" EndIcon="@Icons.Material.Filled.KeyboardArrowDown" Label="Send to ..." Variant="Variant.Filled" Style="@this.GetSendToColor()" Class="rounded"> + <MudMenu AnchorOrigin="Origin.TopLeft" TransformOrigin="Origin.BottomLeft" StartIcon="@Icons.Material.Filled.Apps" EndIcon="@Icons.Material.Filled.KeyboardArrowDown" Label="Send to ..." Variant="Variant.Filled" Style="@this.GetSendToColor()" Class="rounded"> @foreach (var assistant in Enum.GetValues<Components>().Where(n => n.AllowSendTo()).OrderBy(n => n.Name().Length)) { <MudMenuItem OnClick="() => this.SendToAssistant(assistant, new())"> @@ -103,7 +103,7 @@ break; case SendToButton sendToButton: - <MudMenu StartIcon="@Icons.Material.Filled.Apps" EndIcon="@Icons.Material.Filled.KeyboardArrowDown" Label="Send to ..." Variant="Variant.Filled" Style="@this.GetSendToColor()" Class="rounded"> + <MudMenu AnchorOrigin="Origin.TopLeft" TransformOrigin="Origin.BottomLeft" StartIcon="@Icons.Material.Filled.Apps" EndIcon="@Icons.Material.Filled.KeyboardArrowDown" Label="Send to ..." Variant="Variant.Filled" Style="@this.GetSendToColor()" Class="rounded"> @foreach (var assistant in Enum.GetValues<Components>().Where(n => n.AllowSendTo()).OrderBy(n => n.Name().Length)) { <MudMenuItem OnClick="() => this.SendToAssistant(assistant, sendToButton)"> diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md index 73263072..d9286b98 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md @@ -1,4 +1,5 @@ # v0.9.37, build 212 (2025-03-16 xx:xx UTC) - Improved the experience of the data selection component when no data sources are configured yet. - Improved the data source selection behavior when no data source is available or selected, for whatever reason. -- Moved the data source settings into the data selection component. \ No newline at end of file +- Moved the data source settings into the data selection component. +- Fixed the "send to" menu position, which was offset due to the MudBlazor 8 upgrade. \ No newline at end of file From 81417daa78beab82c8dd41145dfb1f01f10bebd2 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 16 Mar 2025 15:19:17 +0100 Subject: [PATCH 092/110] Removed redundant settings title (#357) --- app/MindWork AI Studio/Assistants/AssistantBase.razor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs index 7c42e0a8..c1d5b8e8 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs @@ -314,7 +314,7 @@ public abstract partial class AssistantBase<TSettings> : AssistantLowerBase, IMe protected async Task OpenSettingsDialog() { var dialogParameters = new DialogParameters(); - await this.DialogService.ShowAsync<TSettings>("Open Settings", dialogParameters, DialogOptions.FULLSCREEN); + await this.DialogService.ShowAsync<TSettings>(null, dialogParameters, DialogOptions.FULLSCREEN); } protected Task SendToAssistant(Tools.Components destination, SendToButton sendToButton) From 0c81f90b84915ce70dde5a30b2861b49b8b1dbbe Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 16 Mar 2025 15:21:40 +0100 Subject: [PATCH 093/110] Removed unnecessary link to the ERI server assistant from its settings page (#358) --- .../Dialogs/Settings/SettingsDialogERIServer.razor | 7 ++----- app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md | 3 ++- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogERIServer.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogERIServer.razor index 071f1c81..7ce8cc3b 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogERIServer.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogERIServer.razor @@ -3,8 +3,9 @@ <MudDialog> <TitleContent> + <PreviewPrototype/> <MudText Typo="Typo.h6" Class="d-flex align-center"> - <MudIcon Icon="@Icons.Material.Filled.PrivateConnectivity" Class="mr-2" /> + <MudIcon Icon="@Icons.Material.Filled.PrivateConnectivity" Class="mr-2"/> Assistant: ERI Server Options </MudText> </TitleContent> @@ -18,10 +19,6 @@ Most ERI server options can be customized and saved directly in the ERI server assistant. For this, the ERI server assistant has an auto-save function. </MudText> - - <MudButton Size="Size.Large" Variant="Variant.Filled" StartIcon="@Icons.Material.Filled.PrivateConnectivity" Color="Color.Default" Href="@Routes.ASSISTANT_ERI"> - Switch to ERI server assistant - </MudButton> </MudPaper> </DialogContent> <DialogActions> diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md index d9286b98..a0615008 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md @@ -2,4 +2,5 @@ - Improved the experience of the data selection component when no data sources are configured yet. - Improved the data source selection behavior when no data source is available or selected, for whatever reason. - Moved the data source settings into the data selection component. -- Fixed the "send to" menu position, which was offset due to the MudBlazor 8 upgrade. \ No newline at end of file +- Fixed the "send to" menu position, which was offset due to the MudBlazor 8 upgrade. +- Removed the link to the ERI server assistant from its settings page, as it is no longer necessary. \ No newline at end of file From a5863a176c1f7fa0ad01aa0bd1dc0728b9cef9ba Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 16 Mar 2025 20:53:45 +0100 Subject: [PATCH 094/110] Fixed issue with enum selection component not updating for 'other' values (#359) --- app/MindWork AI Studio/Components/EnumSelection.razor | 2 +- app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/app/MindWork AI Studio/Components/EnumSelection.razor b/app/MindWork AI Studio/Components/EnumSelection.razor index 84fd6130..bd5bc08a 100644 --- a/app/MindWork AI Studio/Components/EnumSelection.razor +++ b/app/MindWork AI Studio/Components/EnumSelection.razor @@ -12,6 +12,6 @@ </MudSelect> @if (this.AllowOther && this.Value.Equals(this.OtherValue)) { - <MudTextField T="string" Text="@this.OtherInput" TextChanged="this.OtherInputChanged" Validation="@this.ValidateOther" Label="@this.LabelOther" Variant="Variant.Outlined" Margin="Margin.Dense" UserAttributes="@USER_INPUT_ATTRIBUTES" Immediate="@true"/> + <MudTextField T="string" Text="@this.OtherInput" TextChanged="this.OtherValueChanged" Validation="@this.ValidateOther" Label="@this.LabelOther" Variant="Variant.Outlined" Margin="Margin.Dense" UserAttributes="@USER_INPUT_ATTRIBUTES" Immediate="@true"/> } </MudStack> \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md index a0615008..b5234bf6 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md @@ -3,4 +3,5 @@ - Improved the data source selection behavior when no data source is available or selected, for whatever reason. - Moved the data source settings into the data selection component. - Fixed the "send to" menu position, which was offset due to the MudBlazor 8 upgrade. +- Fixed a rare issue with the enum selection component, where the `SelectionUpdated` function was not called for the special `other` enum values. - Removed the link to the ERI server assistant from its settings page, as it is no longer necessary. \ No newline at end of file From f5a49ff077446bf3b740d63e00b6e839cbf4fec9 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 16 Mar 2025 21:05:33 +0100 Subject: [PATCH 095/110] Settings dialogs must be updated when settings are changed (#360) --- .../Dialogs/Settings/SettingsDialogBase.cs | 42 +++++++++++++++++-- .../wwwroot/changelog/v0.9.37.md | 1 + 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs index 83fa07e4..b1568427 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBase.cs @@ -7,7 +7,7 @@ using Microsoft.AspNetCore.Components; namespace AIStudio.Dialogs.Settings; -public abstract class SettingsDialogBase : ComponentBase +public abstract class SettingsDialogBase : ComponentBase, IMessageBusReceiver, IDisposable { [CascadingParameter] protected IMudDialogInstance MudDialog { get; set; } = null!; @@ -30,11 +30,15 @@ public abstract class SettingsDialogBase : ComponentBase #region Overrides of ComponentBase /// <inheritdoc /> - protected override void OnInitialized() + protected override async Task OnInitializedAsync() { + // Register this component with the message bus: + this.MessageBus.RegisterComponent(this); + this.MessageBus.ApplyFilters(this, [], [ Event.CONFIGURATION_CHANGED ]); + this.UpdateProviders(); this.UpdateEmbeddingProviders(); - base.OnInitialized(); + await base.OnInitializedAsync(); } #endregion @@ -55,4 +59,36 @@ public abstract class SettingsDialogBase : ComponentBase foreach (var provider in this.SettingsManager.ConfigurationData.EmbeddingProviders) this.availableEmbeddingProviders.Add(new (provider.Name, provider.Id)); } + + #region Implementation of IMessageBusReceiver + + public string ComponentName => nameof(Settings); + + public Task ProcessMessage<TMsg>(ComponentBase? sendingComponent, Event triggeredEvent, TMsg? data) + { + switch (triggeredEvent) + { + case Event.CONFIGURATION_CHANGED: + this.StateHasChanged(); + break; + } + + return Task.CompletedTask; + } + + public Task<TResult?> ProcessMessageWithResult<TPayload, TResult>(ComponentBase? sendingComponent, Event triggeredEvent, TPayload? data) + { + return Task.FromResult<TResult?>(default); + } + + #endregion + + #region Implementation of IDisposable + + public void Dispose() + { + this.MessageBus.Unregister(this); + } + + #endregion } \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md index b5234bf6..a04fe72a 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md @@ -4,4 +4,5 @@ - Moved the data source settings into the data selection component. - Fixed the "send to" menu position, which was offset due to the MudBlazor 8 upgrade. - Fixed a rare issue with the enum selection component, where the `SelectionUpdated` function was not called for the special `other` enum values. +- Fixed the new setting dialogs, which were not updated appropriately when settings were changed. - Removed the link to the ERI server assistant from its settings page, as it is no longer necessary. \ No newline at end of file From aa0c2e7870bceb3cc053aa0b5a24ce1c90fca6ab Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 16 Mar 2025 21:17:06 +0100 Subject: [PATCH 096/110] Improved code quality (#361) --- app/MindWork AI Studio/Chat/ContentBlockComponent.razor.cs | 4 ++-- app/MindWork AI Studio/Components/ChatComponent.razor.cs | 4 ---- app/MindWork AI Studio/Components/Workspaces.razor.cs | 3 --- 3 files changed, 2 insertions(+), 9 deletions(-) diff --git a/app/MindWork AI Studio/Chat/ContentBlockComponent.razor.cs b/app/MindWork AI Studio/Chat/ContentBlockComponent.razor.cs index 49e102a5..815caa6e 100644 --- a/app/MindWork AI Studio/Chat/ContentBlockComponent.razor.cs +++ b/app/MindWork AI Studio/Chat/ContentBlockComponent.razor.cs @@ -41,10 +41,10 @@ public partial class ContentBlockComponent : ComponentBase public string Class { get; set; } = string.Empty; [Parameter] - public bool IsLastContentBlock { get; set; } = false; + public bool IsLastContentBlock { get; set; } [Parameter] - public bool IsSecondToLastBlock { get; set; } = false; + public bool IsSecondToLastBlock { get; set; } [Parameter] public Func<IContent, Task>? RemoveBlockFunc { get; set; } diff --git a/app/MindWork AI Studio/Components/ChatComponent.razor.cs b/app/MindWork AI Studio/Components/ChatComponent.razor.cs index f3b6b742..0759d5b4 100644 --- a/app/MindWork AI Studio/Components/ChatComponent.razor.cs +++ b/app/MindWork AI Studio/Components/ChatComponent.razor.cs @@ -3,7 +3,6 @@ using AIStudio.Dialogs; using AIStudio.Provider; using AIStudio.Settings; using AIStudio.Settings.DataModel; -using AIStudio.Tools.Services; using Microsoft.AspNetCore.Components; using Microsoft.AspNetCore.Components.Web; @@ -41,9 +40,6 @@ public partial class ChatComponent : MSGComponentBase, IAsyncDisposable [Inject] private IDialogService DialogService { get; init; } = null!; - [Inject] - private DataSourceService DataSourceService { get; init; } = null!; - private const Placement TOOLBAR_TOOLTIP_PLACEMENT = Placement.Top; private static readonly Dictionary<string, object?> USER_INPUT_ATTRIBUTES = new(); diff --git a/app/MindWork AI Studio/Components/Workspaces.razor.cs b/app/MindWork AI Studio/Components/Workspaces.razor.cs index 1ec3c0e1..9b6b0bb6 100644 --- a/app/MindWork AI Studio/Components/Workspaces.razor.cs +++ b/app/MindWork AI Studio/Components/Workspaces.razor.cs @@ -13,9 +13,6 @@ namespace AIStudio.Components; public partial class Workspaces : ComponentBase { - [Inject] - private SettingsManager SettingsManager { get; init; } = null!; - [Inject] private IDialogService DialogService { get; init; } = null!; From 1ac125b7f5edc8b4b7c1806a8476d2d7a2318f07 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 16 Mar 2025 21:29:48 +0100 Subject: [PATCH 097/110] Pipeline: fixed the path for previous artifacts (#362) --- .github/workflows/build-and-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index dc2188ad..f6d32eff 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -572,7 +572,7 @@ jobs: shell: /bin/bash commands: | # Delete all previous artifacts, which may exist due to caching: - rm -f result/target/aarch64-unknown-linux-gnu/release/bundle/deb/mind-work-ai-studio_*.deb + rm -f runtime/target/aarch64-unknown-linux-gnu/release/bundle/deb/mind-work-ai-studio_*.deb export HOME=/root export CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse From 3e66d543b949c378692b255d176d6ad14b36e1c0 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 16 Mar 2025 21:36:40 +0100 Subject: [PATCH 098/110] Prepared release v0.9.37 (#363) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 1 + app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md | 2 +- metadata.txt | 8 ++++---- runtime/Cargo.lock | 2 +- runtime/Cargo.toml | 2 +- runtime/tauri.conf.json | 2 +- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index 2a18c92b..3994aac6 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,6 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ + new (212, "v0.9.37, build 212 (2025-03-16 20:32 UTC)", "v0.9.37.md"), new (211, "v0.9.36, build 211 (2025-03-15 10:42 UTC)", "v0.9.36.md"), new (210, "v0.9.35, build 210 (2025-03-13 08:44 UTC)", "v0.9.35.md"), new (209, "v0.9.34, build 209 (2025-03-11 13:02 UTC)", "v0.9.34.md"), diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md index a04fe72a..8be60bac 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.37.md @@ -1,4 +1,4 @@ -# v0.9.37, build 212 (2025-03-16 xx:xx UTC) +# v0.9.37, build 212 (2025-03-16 20:32 UTC) - Improved the experience of the data selection component when no data sources are configured yet. - Improved the data source selection behavior when no data source is available or selected, for whatever reason. - Moved the data source settings into the data selection component. diff --git a/metadata.txt b/metadata.txt index f421855a..4b32c46b 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ -0.9.36 -2025-03-15 10:42:37 UTC -211 +0.9.37 +2025-03-16 20:32:10 UTC +212 9.0.104 (commit 2750432faa) 9.0.3 (commit 831d23e561) 1.85.0 (commit 4d91de4e4) 8.3.0 1.8.1 -cf97fa888c6, release +1ac125b7f5e, release diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index 9b2e58b7..c9d8af3a 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -2350,7 +2350,7 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mindwork-ai-studio" -version = "0.9.36" +version = "0.9.37" dependencies = [ "aes", "arboard", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index b0553560..3d607613 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindwork-ai-studio" -version = "0.9.36" +version = "0.9.37" edition = "2021" description = "MindWork AI Studio" authors = ["Thorsten Sommer"] diff --git a/runtime/tauri.conf.json b/runtime/tauri.conf.json index b84a69ac..b8c363bb 100644 --- a/runtime/tauri.conf.json +++ b/runtime/tauri.conf.json @@ -6,7 +6,7 @@ }, "package": { "productName": "MindWork AI Studio", - "version": "0.9.36" + "version": "0.9.37" }, "tauri": { "allowlist": { From b948909afaa283c82037c91cc030e0fdee443885 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 17 Mar 2025 17:10:03 +0100 Subject: [PATCH 099/110] Updated the ERI v1 specification & fixed spelling of the `UNKNOWN` role (#364) --- app/MindWork AI Studio/Chat/ChatThread.cs | 2 +- app/MindWork AI Studio/Tools/ERIClient/DataModel/Role.cs | 2 +- app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md | 2 ++ app/MindWork AI Studio/wwwroot/specs/eri/v1.json | 4 ++-- 4 files changed, 6 insertions(+), 4 deletions(-) create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md diff --git a/app/MindWork AI Studio/Chat/ChatThread.cs b/app/MindWork AI Studio/Chat/ChatThread.cs index d6c870aa..ceb3041a 100644 --- a/app/MindWork AI Studio/Chat/ChatThread.cs +++ b/app/MindWork AI Studio/Chat/ChatThread.cs @@ -210,7 +210,7 @@ public sealed record ChatThread ChatRole.SYSTEM => Role.SYSTEM, ChatRole.NONE => Role.NONE, - _ => Role.UNKNOW, + _ => Role.UNKNOWN, }, Content = contentData, diff --git a/app/MindWork AI Studio/Tools/ERIClient/DataModel/Role.cs b/app/MindWork AI Studio/Tools/ERIClient/DataModel/Role.cs index f19376f7..a8f3fdf8 100644 --- a/app/MindWork AI Studio/Tools/ERIClient/DataModel/Role.cs +++ b/app/MindWork AI Studio/Tools/ERIClient/DataModel/Role.cs @@ -6,7 +6,7 @@ namespace AIStudio.Tools.ERIClient.DataModel; public enum Role { NONE, - UNKNOW, + UNKNOWN, SYSTEM, USER, diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md new file mode 100644 index 00000000..86682570 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md @@ -0,0 +1,2 @@ +# v0.9.38, build 213 (2025-03-xx xx:xx UTC) +- Updated the ERI v1 specification for the ERI server assistant & fixed spelling of the `UNKNOWN` role. \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/specs/eri/v1.json b/app/MindWork AI Studio/wwwroot/specs/eri/v1.json index 4159bd79..dedc36f2 100644 --- a/app/MindWork AI Studio/wwwroot/specs/eri/v1.json +++ b/app/MindWork AI Studio/wwwroot/specs/eri/v1.json @@ -2,7 +2,7 @@ "openapi": "3.0.1", "info": { "title": "ERI - (E)xternal (R)etrieval (I)nterface", - "description": "This API serves as a contract between LLM tools like AI Studio and any external data sources for RAG\n(retrieval-augmented generation). The tool, e.g., AI Studio acts as the client (the augmentation and\ngeneration parts) and the data sources act as the server (the retrieval part). The data\nsources implement some form of data retrieval and return a suitable context to the LLM tool.\nThe LLM tool, in turn, handles the integration of appropriate LLMs (augmentation & generation).\nData sources can be document or graph databases, or even a file system, for example. They\nwill likely implement an appropriate retrieval process by using some kind of embedding.\nHowever, this API does not inherently require any embedding, as data processing is\nimplemented decentralized by the data sources.", + "description": "This API serves as a contract between LLM tools like AI Studio and any external data sources for RAG\n(retrieval-augmented generation). The tool, e.g., AI Studio acts as the client (the augmentation and\ngeneration parts) and the data sources act as the server (the retrieval part). The data\nsources implement some form of data retrieval and return a suitable context to the LLM tool.\nThe LLM tool, in turn, handles the integration of appropriate LLMs (augmentation & generation).\nData sources can be document or graph databases, or even a file system, for example. They\nwill likely implement an appropriate retrieval process by using some kind of embedding.\nHowever, this API does not inherently require any embedding, as data processing is\nimplemented decentralized by the data sources.\n\nThe client expects that all fields in the JSON responses from an ERI server are named according\nto camel case or Pascal case conventions. The client's JSON objects for requests use camel case\nfor the field names.", "version": "v1" }, "paths": { @@ -494,7 +494,7 @@ "Role": { "enum": [ "NONE", - "UNKNOW", + "UNKNOWN", "SYSTEM", "USER", "AI", From c67f17cf41e34f44762f43806f066373db911ad8 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 17 Mar 2025 18:00:26 +0100 Subject: [PATCH 100/110] Added a "stop generation" button to assistants (#365) --- .../Assistants/AssistantBase.razor | 15 ++++++++---- .../Assistants/AssistantBase.razor.cs | 24 ++++++++++++++----- .../wwwroot/changelog/v0.9.38.md | 1 + 3 files changed, 30 insertions(+), 10 deletions(-) diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor b/app/MindWork AI Studio/Assistants/AssistantBase.razor index f5883156..38d4b8b8 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor @@ -28,10 +28,17 @@ @this.Body </CascadingValue> - <MudButton Disabled="@this.SubmitDisabled" Variant="Variant.Filled" Class="mb-3" OnClick="() => this.SubmitAction()" Style="@this.SubmitButtonStyle"> - @this.SubmitText - </MudButton> - + <MudStack Row="true" AlignItems="AlignItems.Center" StretchItems="StretchItems.Start" Class="mb-3"> + <MudButton Disabled="@this.SubmitDisabled" Variant="Variant.Filled" OnClick="() => this.SubmitAction()" Style="@this.SubmitButtonStyle"> + @this.SubmitText + </MudButton> + @if (this.isProcessing && this.cancellationTokenSource is not null) + { + <MudTooltip Text="Stop generation"> + <MudIconButton Variant="Variant.Filled" Icon="@Icons.Material.Filled.Stop" Color="Color.Error" OnClick="() => this.CancelStreaming()"/> + </MudTooltip> + } + </MudStack> } </MudForm> <Issues IssuesData="@(this.inputIssues)"/> diff --git a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs index c1d5b8e8..1f0c7364 100644 --- a/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs +++ b/app/MindWork AI Studio/Assistants/AssistantBase.razor.cs @@ -100,6 +100,7 @@ public abstract partial class AssistantBase<TSettings> : AssistantLowerBase, IMe private readonly Timer formChangeTimer = new(TimeSpan.FromSeconds(1.6)); + private CancellationTokenSource? cancellationTokenSource; private ContentBlock? resultingContentBlock; private string[] inputIssues = []; private bool isProcessing; @@ -285,12 +286,16 @@ public abstract partial class AssistantBase<TSettings> : AssistantLowerBase, IMe this.isProcessing = true; this.StateHasChanged(); - - // Use the selected provider to get the AI response. - // By awaiting this line, we wait for the entire - // content to be streamed. - this.chatThread = await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.providerSettings.Model, this.lastUserPrompt, this.chatThread); - + + using (this.cancellationTokenSource = new()) + { + // Use the selected provider to get the AI response. + // By awaiting this line, we wait for the entire + // content to be streamed. + this.chatThread = await aiText.CreateFromProviderAsync(this.providerSettings.CreateProvider(this.Logger), this.providerSettings.Model, this.lastUserPrompt, this.chatThread, this.cancellationTokenSource.Token); + } + + this.cancellationTokenSource = null; this.isProcessing = false; this.StateHasChanged(); @@ -298,6 +303,13 @@ public abstract partial class AssistantBase<TSettings> : AssistantLowerBase, IMe return aiText.Text; } + private async Task CancelStreaming() + { + if (this.cancellationTokenSource is not null) + if(!this.cancellationTokenSource.IsCancellationRequested) + await this.cancellationTokenSource.CancelAsync(); + } + protected async Task CopyToClipboard() { await this.RustService.CopyText2Clipboard(this.Snackbar, this.Result2Copy()); diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md index 86682570..00144ef4 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md @@ -1,2 +1,3 @@ # v0.9.38, build 213 (2025-03-xx xx:xx UTC) +- Added the "stop generation" button to all assistants. - Updated the ERI v1 specification for the ERI server assistant & fixed spelling of the `UNKNOWN` role. \ No newline at end of file From dd40ca3e5b33b2c4a55d8095cd3ffbff31474f2e Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 17 Mar 2025 18:15:37 +0100 Subject: [PATCH 101/110] Prepared release v0.9.38 (#366) --- app/MindWork AI Studio/Components/Changelog.Logs.cs | 1 + app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md | 2 +- metadata.txt | 8 ++++---- runtime/Cargo.lock | 2 +- runtime/Cargo.toml | 2 +- runtime/tauri.conf.json | 2 +- 6 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index 3994aac6..2cc4064f 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,6 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ + new (213, "v0.9.38, build 213 (2025-03-17 17:07 UTC)", "v0.9.38.md"), new (212, "v0.9.37, build 212 (2025-03-16 20:32 UTC)", "v0.9.37.md"), new (211, "v0.9.36, build 211 (2025-03-15 10:42 UTC)", "v0.9.36.md"), new (210, "v0.9.35, build 210 (2025-03-13 08:44 UTC)", "v0.9.35.md"), diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md index 00144ef4..64463499 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md @@ -1,3 +1,3 @@ -# v0.9.38, build 213 (2025-03-xx xx:xx UTC) +# v0.9.38, build 213 (2025-03-17 17:07 UTC) - Added the "stop generation" button to all assistants. - Updated the ERI v1 specification for the ERI server assistant & fixed spelling of the `UNKNOWN` role. \ No newline at end of file diff --git a/metadata.txt b/metadata.txt index 4b32c46b..cd554b78 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ -0.9.37 -2025-03-16 20:32:10 UTC -212 +0.9.38 +2025-03-17 17:07:00 UTC +213 9.0.104 (commit 2750432faa) 9.0.3 (commit 831d23e561) 1.85.0 (commit 4d91de4e4) 8.3.0 1.8.1 -1ac125b7f5e, release +c67f17cf41e, release diff --git a/runtime/Cargo.lock b/runtime/Cargo.lock index c9d8af3a..8fa49cf5 100644 --- a/runtime/Cargo.lock +++ b/runtime/Cargo.lock @@ -2350,7 +2350,7 @@ checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mindwork-ai-studio" -version = "0.9.37" +version = "0.9.38" dependencies = [ "aes", "arboard", diff --git a/runtime/Cargo.toml b/runtime/Cargo.toml index 3d607613..940a60f4 100644 --- a/runtime/Cargo.toml +++ b/runtime/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mindwork-ai-studio" -version = "0.9.37" +version = "0.9.38" edition = "2021" description = "MindWork AI Studio" authors = ["Thorsten Sommer"] diff --git a/runtime/tauri.conf.json b/runtime/tauri.conf.json index b8c363bb..c8bb4299 100644 --- a/runtime/tauri.conf.json +++ b/runtime/tauri.conf.json @@ -6,7 +6,7 @@ }, "package": { "productName": "MindWork AI Studio", - "version": "0.9.37" + "version": "0.9.38" }, "tauri": { "allowlist": { From 820294c14db88f816cea8e00b62e8aa86a987d7f Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 17 Mar 2025 18:24:18 +0100 Subject: [PATCH 102/110] Upgraded MudBlazor to v8.4.0, which fixes some bugs we were experiencing (#367) --- .github/workflows/build-and-release.yml | 2 +- app/MindWork AI Studio/MindWork AI Studio.csproj | 2 +- app/MindWork AI Studio/packages.lock.json | 6 +++--- app/MindWork AI Studio/wwwroot/app.css | 8 -------- app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md | 1 + 5 files changed, 6 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index f6d32eff..a3791923 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -347,7 +347,7 @@ jobs: cargo tauri build --target ${{ matrix.rust_target }} --bundles ${{ matrix.tauri_bundle }} - name: Upload artifact (macOS) - if: startsWith(matrix.platform, 'macos') && startsWith(github.ref, 'refs/tags/v') + if: startsWith(matrix.platform, 'macos') uses: actions/upload-artifact@v4 with: name: MindWork AI Studio (macOS ${{ matrix.dotnet_runtime }}) diff --git a/app/MindWork AI Studio/MindWork AI Studio.csproj b/app/MindWork AI Studio/MindWork AI Studio.csproj index 0c0edf80..bdfe8287 100644 --- a/app/MindWork AI Studio/MindWork AI Studio.csproj +++ b/app/MindWork AI Studio/MindWork AI Studio.csproj @@ -49,7 +49,7 @@ <PackageReference Include="CodeBeam.MudBlazor.Extensions" Version="8.0.0" /> <PackageReference Include="HtmlAgilityPack" Version="1.12.0" /> <PackageReference Include="Microsoft.Extensions.FileProviders.Embedded" Version="9.0.3" /> - <PackageReference Include="MudBlazor" Version="8.3.0" /> + <PackageReference Include="MudBlazor" Version="8.4.0" /> <PackageReference Include="MudBlazor.Markdown" Version="8.0.0" /> <PackageReference Include="ReverseMarkdown" Version="4.6.0" /> </ItemGroup> diff --git a/app/MindWork AI Studio/packages.lock.json b/app/MindWork AI Studio/packages.lock.json index d9f4caab..37a21d8a 100644 --- a/app/MindWork AI Studio/packages.lock.json +++ b/app/MindWork AI Studio/packages.lock.json @@ -39,9 +39,9 @@ }, "MudBlazor": { "type": "Direct", - "requested": "[8.3.0, )", - "resolved": "8.3.0", - "contentHash": "DLc1aK8AgSas82AERWLLefWKadIF7HhYhvgO8Y7jYLZe5v1r4v3rX9pzrzTsQkuPGe6y65tob73kM6gael+WdQ==", + "requested": "[8.4.0, )", + "resolved": "8.4.0", + "contentHash": "JdpJXe13fhPElc4ajoDEr7tbzib+N1SVUaov21lZAVd0DgRWuVTJsfVyrEFCD/oSopRcvub5cpHSJM7MYUVCfQ==", "dependencies": { "Microsoft.AspNetCore.Components": "9.0.1", "Microsoft.AspNetCore.Components.Web": "9.0.1", diff --git a/app/MindWork AI Studio/wwwroot/app.css b/app/MindWork AI Studio/wwwroot/app.css index aa733a68..e62b4f83 100644 --- a/app/MindWork AI Studio/wwwroot/app.css +++ b/app/MindWork AI Studio/wwwroot/app.css @@ -76,14 +76,6 @@ display: initial !important; } -/* Fix for MudBlazor, tooltips and selects inside of popover - See issue https://github.com/MudBlazor/MudBlazor/issues/11015 - and https://github.com/MindWorkAI/AI-Studio/issues/346 - */ -.mud-popover-provider > .mud-popover-open { - z-index: 1604 !important; -} - /* Context div for inner scrolling component */ .inner-scrolling-context { display: flex; diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md index 64463499..c26ef9bd 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md @@ -1,3 +1,4 @@ # v0.9.38, build 213 (2025-03-17 17:07 UTC) - Added the "stop generation" button to all assistants. +- Upgraded MudBlazor to v8.4.0, which fixes some bugs we were experiencing. - Updated the ERI v1 specification for the ERI server assistant & fixed spelling of the `UNKNOWN` role. \ No newline at end of file From d25a47789e3dd3464ffac16714536e88bf97c4d4 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 17 Mar 2025 18:46:06 +0100 Subject: [PATCH 103/110] Upgraded web assets (#368) --- .../system/MudBlazor/MudBlazor.min.css | 2 +- .../system/MudBlazor/MudBlazor.min.css.br | Bin 40591 -> 40682 bytes .../system/MudBlazor/MudBlazor.min.css.gz | Bin 64530 -> 64614 bytes .../wwwroot/system/MudBlazor/MudBlazor.min.js | 426 ++++++++++-------- .../system/MudBlazor/MudBlazor.min.js.br | Bin 10451 -> 11117 bytes .../system/MudBlazor/MudBlazor.min.js.gz | Bin 11710 -> 12851 bytes metadata.txt | 4 +- 7 files changed, 231 insertions(+), 201 deletions(-) diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css index 0a44e4e3..13c10368 100755 --- a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css @@ -2,4 +2,4 @@ * 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-ripple-color: var(--mud-palette-primary) !important}.mud-primary-hover{background-color:var(--mud-palette-primary-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-primary-hover:hover{background-color:var(--mud-palette-primary-hover) !important}}.hover\:mud-primary-hover:focus-visible,.hover\:mud-primary-hover:active{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-ripple-color: var(--mud-palette-secondary) !important}.mud-secondary-hover{background-color:var(--mud-palette-secondary-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-secondary-hover:hover{background-color:var(--mud-palette-secondary-hover) !important}}.hover\:mud-secondary-hover:focus-visible,.hover\:mud-secondary-hover:active{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-ripple-color: var(--mud-palette-tertiary) !important}.mud-tertiary-hover{background-color:var(--mud-palette-tertiary-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-tertiary-hover:hover{background-color:var(--mud-palette-tertiary-hover) !important}}.hover\:mud-tertiary-hover:focus-visible,.hover\:mud-tertiary-hover:active{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-ripple-color: var(--mud-palette-info) !important}.mud-info-hover{background-color:var(--mud-palette-info-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-info-hover:hover{background-color:var(--mud-palette-info-hover) !important}}.hover\:mud-info-hover:focus-visible,.hover\:mud-info-hover:active{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-ripple-color: var(--mud-palette-success) !important}.mud-success-hover{background-color:var(--mud-palette-success-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-success-hover:hover{background-color:var(--mud-palette-success-hover) !important}}.hover\:mud-success-hover:focus-visible,.hover\:mud-success-hover:active{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-ripple-color: var(--mud-palette-warning) !important}.mud-warning-hover{background-color:var(--mud-palette-warning-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-warning-hover:hover{background-color:var(--mud-palette-warning-hover) !important}}.hover\:mud-warning-hover:focus-visible,.hover\:mud-warning-hover:active{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-ripple-color: var(--mud-palette-error) !important}.mud-error-hover{background-color:var(--mud-palette-error-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-error-hover:hover{background-color:var(--mud-palette-error-hover) !important}}.hover\:mud-error-hover:focus-visible,.hover\:mud-error-hover:active{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-ripple-color: var(--mud-palette-dark) !important}.mud-dark-hover{background-color:var(--mud-palette-dark-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-dark-hover:hover{background-color:var(--mud-palette-dark-hover) !important}}.hover\:mud-dark-hover:focus-visible,.hover\:mud-dark-hover:active{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-gray) !important}.mud-theme-transparent{color:inherit !important;background-color:rgba(0,0,0,0) !important}.mud-transparent{background-color:rgba(0,0,0,0) !important}.mud-transparent-text{color:rgba(0,0,0,0) !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;-webkit-tap-highlight-color:rgba(0,0,0,0)}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-color:var(--mud-palette-error);color:var(--mud-palette-error-text);bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.75rem .7rem 1.25rem;position:fixed;width:100%;z-index:9999}#blazor-error-ui .reload{color:inherit;text-decoration:underline}#blazor-error-ui .dismiss{color:inherit;cursor:pointer;position:absolute;right:.75rem;top:.5rem}#components-reconnect-modal{z-index:9999 !important;background-color:var(--mud-palette-background) !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(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 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}@media(hover: hover)and (pointer: fine){#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(0.5);transform:scale(0.5)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes mud-scale-up-center{0%{-webkit-transform:scale(0.5);transform:scale(0.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:0px}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 50%}50%{opacity:0;background-position:0 50%}100%{opacity:1;background-position:-200px 50%}}@-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:50% 0}50%{opacity:0;background-position:50% 0}100%{opacity:1;background-position:50% -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:rgba(0,0,0,0);-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}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%}.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:rgba(0,0,0,0);transition:box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-alert.mud-square{border-radius:0px}.mud-alert.mud-dense{padding:0px 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-normal .mud-alert-close .mud-button-root{color:currentColor}.mud-alert-filled-primary{color:var(--mud-palette-primary-text);font-weight:500;background-color:var(--mud-palette-primary)}.mud-alert-filled-primary .mud-button-root{color:currentColor}.mud-alert-filled-secondary{color:var(--mud-palette-secondary-text);font-weight:500;background-color:var(--mud-palette-secondary)}.mud-alert-filled-secondary .mud-button-root{color:currentColor}.mud-alert-filled-tertiary{color:var(--mud-palette-tertiary-text);font-weight:500;background-color:var(--mud-palette-tertiary)}.mud-alert-filled-tertiary .mud-button-root{color:currentColor}.mud-alert-filled-info{color:var(--mud-palette-info-text);font-weight:500;background-color:var(--mud-palette-info)}.mud-alert-filled-info .mud-button-root{color:currentColor}.mud-alert-filled-success{color:var(--mud-palette-success-text);font-weight:500;background-color:var(--mud-palette-success)}.mud-alert-filled-success .mud-button-root{color:currentColor}.mud-alert-filled-warning{color:var(--mud-palette-warning-text);font-weight:500;background-color:var(--mud-palette-warning)}.mud-alert-filled-warning .mud-button-root{color:currentColor}.mud-alert-filled-error{color:var(--mud-palette-error-text);font-weight:500;background-color:var(--mud-palette-error)}.mud-alert-filled-error .mud-button-root{color:currentColor}.mud-alert-filled-dark{color:var(--mud-palette-dark-text);font-weight:500;background-color:var(--mud-palette-dark)}.mud-alert-filled-dark .mud-button-root{color:currentColor}.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;align-items:start}.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(0.25, 0.8, 0.5, 1);white-space:nowrap}.mud-badge.mud-badge-default{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-gray-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-icon{width:20px;height:20px}.mud-badge.mud-badge-icon .mud-icon-badge{color:inherit;font-size:12px}.mud-badge.mud-badge-dot{border-radius:50%;height:9px;min-width:0;padding:0;width:9px}.mud-badge.mud-badge{display:flex;align-items:center;justify-content:center}.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;--mud-internal-toolbar-height: 56px;height:var(--mud-internal-toolbar-height)}.mud-toolbar-gutters{padding-left:16px;padding-right:16px}@media(min-width: 0px)and (orientation: landscape){.mud-toolbar{--mud-internal-toolbar-height: 48px}}@media(min-width: 600px){.mud-toolbar{--mud-internal-toolbar-height: 64px}.mud-toolbar-gutters{padding-left:24px;padding-right:24px}}.mud-toolbar-dense{--mud-internal-toolbar-height: 48px}.mud-toolbar.mud-toolbar-wrap-content{height:auto;min-height:var(--mud-internal-toolbar-height);flex-wrap:wrap}.mud-toolbar.mud-toolbar-wrap-content.mud-toolbar-appbar{min-height:min(var(--mud-appbar-height),var(--mud-internal-toolbar-height))}.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-gray-darker)}.mud-tooltip.mud-tooltip-default.mud-tooltip-arrow::after{border-color:var(--mud-palette-gray-darker) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.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:rgba(0,0,0,0);border-top-color:inherit}.mud-avatar{display:inline-flex;overflow:hidden;position:relative;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-gray-light)}.mud-avatar.mud-avatar-small{width:24px;height:24px;font-size:.75rem}.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.5rem}.mud-avatar-rounded{border-radius:var(--mud-default-borderradius)}.mud-avatar-square{border-radius:0}.mud-avatar>.mud-image{color:rgba(0,0,0,0);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-text-primary);background-color:var(--mud-palette-lines-inputs)}.mud-avatar-filled.mud-avatar-filled-primary{color:var(--mud-palette-primary-text);background-color:var(--mud-palette-primary)}.mud-avatar-filled.mud-avatar-filled-secondary{color:var(--mud-palette-secondary-text);background-color:var(--mud-palette-secondary)}.mud-avatar-filled.mud-avatar-filled-tertiary{color:var(--mud-palette-tertiary-text);background-color:var(--mud-palette-tertiary)}.mud-avatar-filled.mud-avatar-filled-info{color:var(--mud-palette-info-text);background-color:var(--mud-palette-info)}.mud-avatar-filled.mud-avatar-filled-success{color:var(--mud-palette-success-text);background-color:var(--mud-palette-success)}.mud-avatar-filled.mud-avatar-filled-warning{color:var(--mud-palette-warning-text);background-color:var(--mud-palette-warning)}.mud-avatar-filled.mud-avatar-filled-error{color:var(--mud-palette-error-text);background-color:var(--mud-palette-error)}.mud-avatar-filled.mud-avatar-filled-dark{color:var(--mud-palette-dark-text);background-color:var(--mud-palette-dark)}.mud-avatar-group{display:flex}.mud-avatar-group .mud-avatar:first-child{margin-inline-start:0px !important}.mud-avatar-group.mud-avatar-group-outlined.mud-avatar-group-outlined-transparent .mud-avatar:not(.mud-avatar-outlined){border-color:rgba(0,0,0,0)}.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:none;margin:0;padding:16px 12px}.mud-breadcrumb-separator{display:inline-flex;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}@media(hover: hover)and (pointer: fine){.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:rgba(0,0,0,0);-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.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(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:var(--mud-default-borderradius);color:var(--mud-palette-text-primary);--mud-ripple-color: var(--mud-palette-text-primary)}@media(hover: hover)and (pointer: fine){.mud-button:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-button:focus-visible,.mud-button:active{background-color:var(--mud-palette-action-default-hover)}.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-ripple-color: var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-primary:hover{background-color:var(--mud-palette-primary-hover)}}.mud-button-text.mud-button-text-primary:focus-visible,.mud-button-text.mud-button-text-primary:active{background-color:var(--mud-palette-primary-hover)}.mud-button-text.mud-button-text-secondary{color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-secondary:hover{background-color:var(--mud-palette-secondary-hover)}}.mud-button-text.mud-button-text-secondary:focus-visible,.mud-button-text.mud-button-text-secondary:active{background-color:var(--mud-palette-secondary-hover)}.mud-button-text.mud-button-text-tertiary{color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-tertiary:hover{background-color:var(--mud-palette-tertiary-hover)}}.mud-button-text.mud-button-text-tertiary:focus-visible,.mud-button-text.mud-button-text-tertiary:active{background-color:var(--mud-palette-tertiary-hover)}.mud-button-text.mud-button-text-info{color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-info:hover{background-color:var(--mud-palette-info-hover)}}.mud-button-text.mud-button-text-info:focus-visible,.mud-button-text.mud-button-text-info:active{background-color:var(--mud-palette-info-hover)}.mud-button-text.mud-button-text-success{color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-success:hover{background-color:var(--mud-palette-success-hover)}}.mud-button-text.mud-button-text-success:focus-visible,.mud-button-text.mud-button-text-success:active{background-color:var(--mud-palette-success-hover)}.mud-button-text.mud-button-text-warning{color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-warning:hover{background-color:var(--mud-palette-warning-hover)}}.mud-button-text.mud-button-text-warning:focus-visible,.mud-button-text.mud-button-text-warning:active{background-color:var(--mud-palette-warning-hover)}.mud-button-text.mud-button-text-error{color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-error:hover{background-color:var(--mud-palette-error-hover)}}.mud-button-text.mud-button-text-error:focus-visible,.mud-button-text.mud-button-text-error:active{background-color:var(--mud-palette-error-hover)}.mud-button-text.mud-button-text-dark{color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-dark:hover{background-color:var(--mud-palette-dark-hover)}}.mud-button-text.mud-button-text-dark:focus-visible,.mud-button-text.mud-button-text-dark:active{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}@media(hover: hover)and (pointer: fine){.mud-button-outlined:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-button-outlined:focus-visible,.mud-button-outlined:active{background-color:var(--mud-palette-action-default-hover)}.mud-button-outlined.mud-button-outlined-primary{color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary);border:1px solid var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-primary:hover{border:1px solid var(--mud-palette-primary);background-color:var(--mud-palette-primary-hover)}}.mud-button-outlined.mud-button-outlined-primary:focus-visible,.mud-button-outlined.mud-button-outlined-primary:active{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);--mud-ripple-color: var(--mud-palette-secondary);border:1px solid var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-secondary:hover{border:1px solid var(--mud-palette-secondary);background-color:var(--mud-palette-secondary-hover)}}.mud-button-outlined.mud-button-outlined-secondary:focus-visible,.mud-button-outlined.mud-button-outlined-secondary:active{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);--mud-ripple-color: var(--mud-palette-tertiary);border:1px solid var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-tertiary:hover{border:1px solid var(--mud-palette-tertiary);background-color:var(--mud-palette-tertiary-hover)}}.mud-button-outlined.mud-button-outlined-tertiary:focus-visible,.mud-button-outlined.mud-button-outlined-tertiary:active{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);--mud-ripple-color: var(--mud-palette-info);border:1px solid var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-info:hover{border:1px solid var(--mud-palette-info);background-color:var(--mud-palette-info-hover)}}.mud-button-outlined.mud-button-outlined-info:focus-visible,.mud-button-outlined.mud-button-outlined-info:active{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);--mud-ripple-color: var(--mud-palette-success);border:1px solid var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-success:hover{border:1px solid var(--mud-palette-success);background-color:var(--mud-palette-success-hover)}}.mud-button-outlined.mud-button-outlined-success:focus-visible,.mud-button-outlined.mud-button-outlined-success:active{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);--mud-ripple-color: var(--mud-palette-warning);border:1px solid var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-warning:hover{border:1px solid var(--mud-palette-warning);background-color:var(--mud-palette-warning-hover)}}.mud-button-outlined.mud-button-outlined-warning:focus-visible,.mud-button-outlined.mud-button-outlined-warning:active{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);--mud-ripple-color: var(--mud-palette-error);border:1px solid var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-error:hover{border:1px solid var(--mud-palette-error);background-color:var(--mud-palette-error-hover)}}.mud-button-outlined.mud-button-outlined-error:focus-visible,.mud-button-outlined.mud-button-outlined-error:active{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);--mud-ripple-color: var(--mud-palette-dark);border:1px solid var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-dark:hover{border:1px solid var(--mud-palette-dark);background-color:var(--mud-palette-dark-hover)}}.mud-button-outlined.mud-button-outlined-dark:focus-visible,.mud-button-outlined.mud-button-outlined-dark:active{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);--mud-ripple-color: var(--mud-palette-text-primary);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;box-shadow:0px 3px 1px -2px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 1px 5px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-default-hover)}.mud-button-filled.mud-icon-button{padding:6px}@media(hover: hover)and (pointer: fine){.mud-button-filled:hover{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}}.mud-button-filled:focus-visible{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}.mud-button-filled:active{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}.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);--mud-ripple-color: var(--mud-palette-primary-text);background-color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-primary:hover{background-color:var(--mud-palette-primary-darken)}}.mud-button-filled.mud-button-filled-primary:focus-visible,.mud-button-filled.mud-button-filled-primary:active{background-color:var(--mud-palette-primary-darken)}.mud-button-filled.mud-button-filled-secondary{color:var(--mud-palette-secondary-text);--mud-ripple-color: var(--mud-palette-secondary-text);background-color:var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-secondary:hover{background-color:var(--mud-palette-secondary-darken)}}.mud-button-filled.mud-button-filled-secondary:focus-visible,.mud-button-filled.mud-button-filled-secondary:active{background-color:var(--mud-palette-secondary-darken)}.mud-button-filled.mud-button-filled-tertiary{color:var(--mud-palette-tertiary-text);--mud-ripple-color: var(--mud-palette-tertiary-text);background-color:var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-tertiary:hover{background-color:var(--mud-palette-tertiary-darken)}}.mud-button-filled.mud-button-filled-tertiary:focus-visible,.mud-button-filled.mud-button-filled-tertiary:active{background-color:var(--mud-palette-tertiary-darken)}.mud-button-filled.mud-button-filled-info{color:var(--mud-palette-info-text);--mud-ripple-color: var(--mud-palette-info-text);background-color:var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-info:hover{background-color:var(--mud-palette-info-darken)}}.mud-button-filled.mud-button-filled-info:focus-visible,.mud-button-filled.mud-button-filled-info:active{background-color:var(--mud-palette-info-darken)}.mud-button-filled.mud-button-filled-success{color:var(--mud-palette-success-text);--mud-ripple-color: var(--mud-palette-success-text);background-color:var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-success:hover{background-color:var(--mud-palette-success-darken)}}.mud-button-filled.mud-button-filled-success:focus-visible,.mud-button-filled.mud-button-filled-success:active{background-color:var(--mud-palette-success-darken)}.mud-button-filled.mud-button-filled-warning{color:var(--mud-palette-warning-text);--mud-ripple-color: var(--mud-palette-warning-text);background-color:var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-warning:hover{background-color:var(--mud-palette-warning-darken)}}.mud-button-filled.mud-button-filled-warning:focus-visible,.mud-button-filled.mud-button-filled-warning:active{background-color:var(--mud-palette-warning-darken)}.mud-button-filled.mud-button-filled-error{color:var(--mud-palette-error-text);--mud-ripple-color: var(--mud-palette-error-text);background-color:var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-error:hover{background-color:var(--mud-palette-error-darken)}}.mud-button-filled.mud-button-filled-error:focus-visible,.mud-button-filled.mud-button-filled-error:active{background-color:var(--mud-palette-error-darken)}.mud-button-filled.mud-button-filled-dark{color:var(--mud-palette-dark-text);--mud-ripple-color: var(--mud-palette-dark-text);background-color:var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-dark:hover{background-color:var(--mud-palette-dark-darken)}}.mud-button-filled.mud-button-filled-dark:focus-visible,.mud-button-filled.mud-button-filled-dark:active{background-color:var(--mud-palette-dark-darken)}.mud-button-disable-elevation{box-shadow:none}@media(hover: hover)and (pointer: fine){.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{width:100%;display:inherit;align-items:inherit;justify-content:inherit}.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-ripple-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}@media(hover: hover)and (pointer: fine){.mud-button-group-root.mud-button-group-override-styles .mud-button-root:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-button-group-root.mud-button-group-override-styles .mud-button-root:focus-visible,.mud-button-group-root.mud-button-group-override-styles .mud-button-root:active{background-color:var(--mud-palette-action-default-hover)}.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-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-ripple-color: var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root:hover{background-color:var(--mud-palette-primary-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root:active{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-ripple-color: var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root:hover{background-color:var(--mud-palette-secondary-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root:active{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-ripple-color: var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root:hover{background-color:var(--mud-palette-tertiary-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root:active{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-ripple-color: var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root:hover{background-color:var(--mud-palette-info-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root:active{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-ripple-color: var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root:hover{background-color:var(--mud-palette-success-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root:active{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-ripple-color: var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root:hover{background-color:var(--mud-palette-warning-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root:active{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-ripple-color: var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root:hover{background-color:var(--mud-palette-error-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root:active{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-ripple-color: var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root:hover{background-color:var(--mud-palette-dark-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root:active{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-ripple-color: var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root:hover{background-color:var(--mud-palette-primary-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root:active{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-ripple-color: var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root:hover{background-color:var(--mud-palette-secondary-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root:active{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-ripple-color: var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root:hover{background-color:var(--mud-palette-tertiary-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root:active{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-ripple-color: var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root:hover{background-color:var(--mud-palette-info-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root:active{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-ripple-color: var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root:hover{background-color:var(--mud-palette-success-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root:active{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-ripple-color: var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root:hover{background-color:var(--mud-palette-warning-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root:active{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-ripple-color: var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root:hover{background-color:var(--mud-palette-error-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root:active{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-ripple-color: var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root:hover{background-color:var(--mud-palette-dark-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root:active{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}@media(hover: hover)and (pointer: fine){.mud-button-group-filled .mud-button-root:hover{box-shadow:var(--mud-elevation-4)}}.mud-button-group-filled .mud-button-root:focus-visible,.mud-button-group-filled .mud-button-root:active{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-ripple-color: var(--mud-palette-primary-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:hover{background-color:var(--mud-palette-primary-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:active{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-ripple-color: var(--mud-palette-secondary-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:hover{background-color:var(--mud-palette-secondary-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:active{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-ripple-color: var(--mud-palette-tertiary-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:hover{background-color:var(--mud-palette-tertiary-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:active{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-ripple-color: var(--mud-palette-info-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:hover{background-color:var(--mud-palette-info-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:active{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-ripple-color: var(--mud-palette-success-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:hover{background-color:var(--mud-palette-success-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:active{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-ripple-color: var(--mud-palette-warning-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:hover{background-color:var(--mud-palette-warning-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:active{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-ripple-color: var(--mud-palette-error-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:hover{background-color:var(--mud-palette-error-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:active{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-ripple-color: var(--mud-palette-dark-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:hover{background-color:var(--mud-palette-dark-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:active{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-icon-button{flex:0 0 auto;padding:12px;overflow:visible;font-size:1.5rem;text-align:center;transition:background-color 150ms cubic-bezier(0.4, 0, 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)}@media(hover: hover)and (pointer: fine){.mud-icon-button:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-icon-button:focus-visible,.mud-icon-button:active{background-color:var(--mud-palette-action-default-hover)}.mud-icon-button:disabled{color:var(--mud-palette-action-disabled);background-color:rgba(0,0,0,0)}.mud-icon-button.mud-readonly,.mud-icon-button .mud-readonly:hover{cursor:default}.mud-icon-button-color-inherit{color:inherit}@media(hover: hover)and (pointer: fine){.mud-icon-button-color-inherit:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-icon-button-color-inherit:focus-visible,.mud-icon-button-color-inherit:active{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{display:flex;flex-direction:column}.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:0px;border-top-right-radius:0px}.mud-card-content{flex-grow:1;padding:16px}.mud-card-actions{display:flex;padding:8px;align-items:center}.mud-carousel{display:flex !important;position:relative;margin:0px !important;clip-path:inset(0px 0px 0px 0px);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:0px;right:0px;top:0px;bottom:0px;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 0px;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-chart .mud-chart-legend .mud-chart-legend-item .mud-chart-legend-checkbox{display:flex;align-items:center}.mud-chart .mud-chart-legend .mud-chart-legend-item .mud-input-control{width:35px !important}.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:rgba(0,0,0,0);user-select:none;pointer-events:unset}.mud-chart-donut .mud-donut-ring{fill:rgba(0,0,0,0);stroke-width:5;stroke:#fff;pointer-events:unset}.mud-chart-donut .mud-donut-segment{stroke-width:5;fill:rgba(0,0,0,0);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-chart-cell text{fill:#000}.mud-chart-heatmap-legend line{stroke:var(--mud-palette-text-primary)}.mud-chart-heatmap-legend text{fill:var(--mud-palette-text-primary)}.mud-chat{display:grid;column-gap:.75rem;padding-top:.25rem;padding-bottom:.25rem;border-radius:var(--mud-default-borderradius)}.mud-chat.mud-dense .mud-chat-bubble{padding:.1875rem 1rem;min-height:.9166666667rem}.mud-chat.mud-dense .mud-chat-bubble+.mud-chat-bubble{margin-top:.1875rem}.mud-chat.mud-dense .mud-chat-header{line-height:.4166666667rem}.mud-chat.mud-square{border-radius:0px}.mud-chat.mud-square .mud-chat-bubble{border-radius:0px}.mud-chat.mud-chat-arrow-top .mud-chat-bubble:before{content:"";mask-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMycgaGVpZ2h0PSczJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGZpbGw9J2JsYWNrJyBkPSdtIDAgMCBMIDMgMCBMIDMgMyBDIDMgMiAxIDAgMCAwJy8+PC9zdmc+);bottom:auto;top:0}.mud-chat.mud-chat-arrow-top.mud-chat-start .mud-chat-bubble{border-top-left-radius:0}.mud-chat.mud-chat-arrow-top.mud-chat-end .mud-chat-bubble{border-top-right-radius:0}.mud-chat.mud-chat-arrow-bottom .mud-chat-bubble:before{content:"";mask-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMycgaGVpZ2h0PSczJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGZpbGw9J2JsYWNrJyBkPSdtIDAgMyBMIDMgMyBMIDMgMCBDIDMgMSAxIDMgMCAzJy8+PC9zdmc+);bottom:0}.mud-chat.mud-chat-arrow-bottom.mud-chat-start .mud-chat-bubble{border-bottom-left-radius:0}.mud-chat.mud-chat-arrow-bottom.mud-chat-end .mud-chat-bubble{border-bottom-right-radius:0}.mud-chat.mud-chat-arrow-middle .mud-chat-bubble:before{content:"";mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzIDMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4KICA8cG9seWdvbiBwb2ludHM9IjMsMCAzLDMgMS41LDEuNSIgZmlsbD0iYmxhY2siIC8+Cjwvc3ZnPg==);top:50%}.mud-chat.mud-chat-arrow-middle.mud-chat-start .mud-chat-bubble:before,.mud-chat.mud-chat-arrow-middle.mud-chat-end.mud-chat-rtl .mud-chat-bubble:before{transform:translateY(-50%)}.mud-chat.mud-chat-arrow-middle.mud-chat-end .mud-chat-bubble:before,.mud-chat.mud-chat-arrow-middle.mud-chat-start.mud-chat-rtl .mud-chat-bubble:before{transform:scaleX(-1) translateY(-50%)}.mud-chat-bubble{position:relative;text-align:start;align-content:center;width:fit-content;padding:.5rem 1rem;max-width:90%;border-radius:var(--mud-default-borderradius);min-width:2.75rem;min-height:2.75rem}.mud-chat-bubble.mud-chat-bubble-clickable{cursor:pointer;user-select:none;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;--mud-ripple-color: $default-foreground;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important}@media(hover: hover)and (pointer: fine){.mud-chat-bubble.mud-chat-bubble-clickable:hover{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}}.mud-chat-bubble.mud-chat-bubble-clickable:focus-visible{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}.mud-chat-bubble.mud-chat-bubble-clickable:active{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}.mud-chat-bubble:before{position:absolute;width:.75rem;height:.75rem;background-color:inherit;mask-size:contain;mask-repeat:no-repeat;mask-position:center}.mud-chat-bubble+.mud-chat-bubble{margin-top:.5rem}.mud-chat-bubble+.mud-chat-bubble:before{content:none !important}.mud-chat-header{grid-row-start:1;font-size:.875rem;line-height:1.25rem;margin-left:.25rem;margin-right:.25rem;min-height:.5rem}.mud-chat-header time{margin-left:.5rem;opacity:.5;font-size:.75rem;line-height:1rem}.mud-chat-footer{opacity:.5;font-size:.875rem;line-height:1rem;margin-left:.25rem;margin-right:.25rem;min-height:.5rem}.mud-chat .mud-avatar{align-self:center;grid-row-start:1}.mud-chat:has(.mud-chat-header) .mud-avatar{grid-row-start:2}.mud-chat-start{place-items:start;grid-template-columns:1fr 99fr}.mud-chat-start .mud-chat-header,.mud-chat-start .mud-chat-footer{grid-column-start:2}.mud-chat-start .mud-avatar{grid-column-start:1;margin-left:.25rem;margin-right:-0.35rem}.mud-chat-start .mud-chat-bubble{grid-column-start:2}.mud-chat-start .mud-chat-bubble:before{inset-inline-start:-0.749rem}.mud-chat-end{place-items:end;grid-template-columns:99fr 1fr}.mud-chat-end .mud-chat-header,.mud-chat-end .mud-chat-footer{grid-column-start:1}.mud-chat-end .mud-avatar{grid-column-start:2;margin-right:.25rem;margin-left:-0.35rem}.mud-chat-end .mud-chat-bubble{grid-column-start:1;text-align:end}.mud-chat-end .mud-chat-bubble:before{inset-inline-start:100%;transform:scaleX(-1)}.mud-chat-text-default{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-action-default-hover);--mud-ripple-color: $default-foreground}.mud-chat-text-primary{color:var(--mud-palette-primary-darken);background-color:var(--mud-palette-primary-hover);--mud-ripple-color: var(--mud-palette-primary-darken)}.mud-chat-text-secondary{color:var(--mud-palette-secondary-darken);background-color:var(--mud-palette-secondary-hover);--mud-ripple-color: var(--mud-palette-secondary-darken)}.mud-chat-text-tertiary{color:var(--mud-palette-tertiary-darken);background-color:var(--mud-palette-tertiary-hover);--mud-ripple-color: var(--mud-palette-tertiary-darken)}.mud-chat-text-info{color:var(--mud-palette-info-darken);background-color:var(--mud-palette-info-hover);--mud-ripple-color: var(--mud-palette-info-darken)}.mud-chat-text-success{color:var(--mud-palette-success-darken);background-color:var(--mud-palette-success-hover);--mud-ripple-color: var(--mud-palette-success-darken)}.mud-chat-text-warning{color:var(--mud-palette-warning-darken);background-color:var(--mud-palette-warning-hover);--mud-ripple-color: var(--mud-palette-warning-darken)}.mud-chat-text-error{color:var(--mud-palette-error-darken);background-color:var(--mud-palette-error-hover);--mud-ripple-color: var(--mud-palette-error-darken)}.mud-chat-text-dark{color:var(--mud-palette-dark-darken);background-color:var(--mud-palette-dark-hover);--mud-ripple-color: var(--mud-palette-dark-darken)}.mud-chat-outlined-default{color:var(--mud-palette-text-primary);border:1px solid var(--mud-palette-action-default-hover);--mud-ripple-color: $default-foreground}.mud-chat-outlined-default:before{background-color:var(--mud-palette-action-default-hover)}.mud-chat-outlined-default.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-default.mud-chat-arrow-bottom:before{bottom:-0.07rem !important}.mud-chat-outlined-primary{color:var(--mud-palette-primary-darken);border:1px solid var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary-darken)}.mud-chat-outlined-primary:before{background-color:var(--mud-palette-primary-darken)}.mud-chat-outlined-primary.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-primary.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-secondary{color:var(--mud-palette-secondary-darken);border:1px solid var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary-darken)}.mud-chat-outlined-secondary:before{background-color:var(--mud-palette-secondary-darken)}.mud-chat-outlined-secondary.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-secondary.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-tertiary{color:var(--mud-palette-tertiary-darken);border:1px solid var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary-darken)}.mud-chat-outlined-tertiary:before{background-color:var(--mud-palette-tertiary-darken)}.mud-chat-outlined-tertiary.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-tertiary.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-info{color:var(--mud-palette-info-darken);border:1px solid var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info-darken)}.mud-chat-outlined-info:before{background-color:var(--mud-palette-info-darken)}.mud-chat-outlined-info.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-info.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-success{color:var(--mud-palette-success-darken);border:1px solid var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success-darken)}.mud-chat-outlined-success:before{background-color:var(--mud-palette-success-darken)}.mud-chat-outlined-success.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-success.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-warning{color:var(--mud-palette-warning-darken);border:1px solid var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning-darken)}.mud-chat-outlined-warning:before{background-color:var(--mud-palette-warning-darken)}.mud-chat-outlined-warning.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-warning.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-error{color:var(--mud-palette-error-darken);border:1px solid var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error-darken)}.mud-chat-outlined-error:before{background-color:var(--mud-palette-error-darken)}.mud-chat-outlined-error.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-error.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-dark{color:var(--mud-palette-dark-darken);border:1px solid var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark-darken)}.mud-chat-outlined-dark:before{background-color:var(--mud-palette-dark-darken)}.mud-chat-outlined-dark.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-dark.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-filled-default{color:var(--mud-palette-text-primary);font-weight:500;background-color:var(--mud-palette-action-default-hover);--mud-ripple-color: $default-foreground}.mud-chat-filled-primary{color:var(--mud-palette-primary-text);font-weight:500;background-color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary-text)}.mud-chat-filled-secondary{color:var(--mud-palette-secondary-text);font-weight:500;background-color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary-text)}.mud-chat-filled-tertiary{color:var(--mud-palette-tertiary-text);font-weight:500;background-color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary-text)}.mud-chat-filled-info{color:var(--mud-palette-info-text);font-weight:500;background-color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info-text)}.mud-chat-filled-success{color:var(--mud-palette-success-text);font-weight:500;background-color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success-text)}.mud-chat-filled-warning{color:var(--mud-palette-warning-text);font-weight:500;background-color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning-text)}.mud-chat-filled-error{color:var(--mud-palette-error-text);font-weight:500;background-color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error-text)}.mud-chat-filled-dark{color:var(--mud-palette-dark-text);font-weight:500;background-color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark-text)}.mud-checkbox{cursor:pointer;display:inline-flex;align-items:center;vertical-align:middle;-webkit-tap-highlight-color:rgba(0,0,0,0)}@media(hover: hover)and (pointer: fine){.mud-checkbox .mud-disabled:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-checkbox .mud-disabled:hover *{cursor:default;color:var(--mud-palette-text-disabled)}}.mud-checkbox .mud-disabled:focus-visible,.mud-checkbox .mud-disabled:active{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-checkbox .mud-disabled:focus-visible *,.mud-checkbox .mud-disabled:active *{cursor:default;color:var(--mud-palette-text-disabled)}.mud-checkbox.mud-readonly,.mud-checkbox .mud-readonly:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.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-chart-legend-checkbox .mud-checkbox svg path:last-child{fill:var(--checkbox-color) !important}.mud-chip-container{display:contents}.mud-chip{border:none;display:inline-flex;max-width:100%;outline:0;padding:0 12px;position:relative;box-sizing:border-box;transition:background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 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;padding:0 8px}.mud-chip.mud-chip-size-small .mud-avatar{margin-left:-4px;margin-right:4px;margin-inline-start:-4px;margin-inline-end:4px;width:18px;height:18px;font-size:.625rem}.mud-chip.mud-chip-size-small .mud-icon-root{font-size:1.125rem}.mud-chip.mud-chip-size-small .mud-chip-close-button{margin-right:-4px;margin-left:4px;margin-inline-end:-4px;margin-inline-start:4px}.mud-chip.mud-chip-size-medium{height:32px;font-size:14px;border-radius:16px}.mud-chip.mud-chip-size-medium .mud-avatar{margin-left:-8px;margin-right:8px;margin-inline-start:-8px;margin-inline-end:8px;width:24px;height:24px;font-size:.75rem}.mud-chip.mud-chip-size-large{height:40px;font-size:16px;border-radius:20px;padding:0 16px}.mud-chip.mud-chip-size-large .mud-avatar{margin-left:-12px;margin-right:8px;margin-inline-start:-12px;margin-inline-end:8px;width:32px;height:32px;font-size:1rem}.mud-chip.mud-chip-size-large .mud-chip-icon{font-size:1.5rem;margin-left:-6px;margin-right:6px;margin-inline-start:-6px;margin-inline-end:6px}.mud-chip.mud-chip-label{border-radius:var(--mud-default-borderradius)}.mud-chip.mud-clickable{cursor:pointer;user-select:none}.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(0.25, 0.8, 0.5, 1),visibility 0s}.mud-chip .mud-chip-close-button .mud-icon-size-small{font-size:1.15rem}@media(hover: hover)and (pointer: fine){.mud-chip .mud-chip-close-button:hover:not(.mud-disabled){opacity:.7}}.mud-chip .mud-chip-close-button:focus-visible:not(.mud-disabled),.mud-chip .mud-chip-close-button:active:not(.mud-disabled){opacity:.7}.mud-chip>.mud-chip-content{align-items:center;display:inline-flex;height:100%;max-width:100%}.mud-chip-filled{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-action-disabled-background);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-action-disabled)}}.mud-chip-filled.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-action-disabled)}.mud-chip-filled.mud-chip-color-primary{color:var(--mud-palette-primary-text);--mud-ripple-color: var(--mud-palette-primary-text) !important;background-color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-primary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-primary-darken)}}.mud-chip-filled.mud-chip-color-primary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-primary.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-primary-darken)}.mud-chip-filled.mud-chip-color-secondary{color:var(--mud-palette-secondary-text);--mud-ripple-color: var(--mud-palette-secondary-text) !important;background-color:var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-secondary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-secondary-darken)}}.mud-chip-filled.mud-chip-color-secondary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-secondary.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-secondary-darken)}.mud-chip-filled.mud-chip-color-tertiary{color:var(--mud-palette-tertiary-text);--mud-ripple-color: var(--mud-palette-tertiary-text) !important;background-color:var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-tertiary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-tertiary-darken)}}.mud-chip-filled.mud-chip-color-tertiary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-tertiary.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-tertiary-darken)}.mud-chip-filled.mud-chip-color-info{color:var(--mud-palette-info-text);--mud-ripple-color: var(--mud-palette-info-text) !important;background-color:var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-info.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-info-darken)}}.mud-chip-filled.mud-chip-color-info.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-info.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-info-darken)}.mud-chip-filled.mud-chip-color-success{color:var(--mud-palette-success-text);--mud-ripple-color: var(--mud-palette-success-text) !important;background-color:var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-success.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-success-darken)}}.mud-chip-filled.mud-chip-color-success.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-success.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-success-darken)}.mud-chip-filled.mud-chip-color-warning{color:var(--mud-palette-warning-text);--mud-ripple-color: var(--mud-palette-warning-text) !important;background-color:var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-warning.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-warning-darken)}}.mud-chip-filled.mud-chip-color-warning.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-warning.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-warning-darken)}.mud-chip-filled.mud-chip-color-error{color:var(--mud-palette-error-text);--mud-ripple-color: var(--mud-palette-error-text) !important;background-color:var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-error.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-error-darken)}}.mud-chip-filled.mud-chip-color-error.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-error.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-error-darken)}.mud-chip-filled.mud-chip-color-dark{color:var(--mud-palette-dark-text);--mud-ripple-color: var(--mud-palette-dark-text) !important;background-color:var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-dark.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-dark-darken)}}.mud-chip-filled.mud-chip-color-dark.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-dark.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-action-default-hover)}}.mud-chip-outlined.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-action-default-hover)}.mud-chip-outlined.mud-chip-color-primary{color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary) !important;border:1px solid var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-primary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-primary-hover)}}.mud-chip-outlined.mud-chip-color-primary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-primary.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-secondary{color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary) !important;border:1px solid var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-secondary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-secondary-hover)}}.mud-chip-outlined.mud-chip-color-secondary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-secondary.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-tertiary{color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary) !important;border:1px solid var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-tertiary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-tertiary-hover)}}.mud-chip-outlined.mud-chip-color-tertiary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-tertiary.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-info{color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info) !important;border:1px solid var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-info.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-info-hover)}}.mud-chip-outlined.mud-chip-color-info.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-info.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-info.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-info.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-info.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-success{color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success) !important;border:1px solid var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-success.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-success-hover)}}.mud-chip-outlined.mud-chip-color-success.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-success.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-success.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-success.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-success.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-warning{color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning) !important;border:1px solid var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-warning.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-warning-hover)}}.mud-chip-outlined.mud-chip-color-warning.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-warning.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-error{color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error) !important;border:1px solid var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-error.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-error-hover)}}.mud-chip-outlined.mud-chip-color-error.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-error.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-error.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-error.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-error.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-dark{color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark) !important;border:1px solid var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-dark.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-dark-hover)}}.mud-chip-outlined.mud-chip-color-dark.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-dark.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}.mud-chip-text{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-action-default-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-action-disabled-background)}}.mud-chip-text.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-action-disabled-background)}.mud-chip-text.mud-chip-color-primary{color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary) !important;background-color:var(--mud-palette-primary-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-primary.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}}.mud-chip-text.mud-chip-color-primary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-primary.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}.mud-chip-text.mud-chip-color-secondary{color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary) !important;background-color:var(--mud-palette-secondary-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-secondary.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}}.mud-chip-text.mud-chip-color-secondary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-secondary.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}.mud-chip-text.mud-chip-color-tertiary{color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary) !important;background-color:var(--mud-palette-tertiary-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-tertiary.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}}.mud-chip-text.mud-chip-color-tertiary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-tertiary.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}.mud-chip-text.mud-chip-color-info{color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info) !important;background-color:var(--mud-palette-info-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-info.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}}.mud-chip-text.mud-chip-color-info.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-info.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}.mud-chip-text.mud-chip-color-success{color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success) !important;background-color:var(--mud-palette-success-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-success.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}}.mud-chip-text.mud-chip-color-success.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-success.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}.mud-chip-text.mud-chip-color-warning{color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning) !important;background-color:var(--mud-palette-warning-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-warning.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}}.mud-chip-text.mud-chip-color-warning.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-warning.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}.mud-chip-text.mud-chip-color-error{color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error) !important;background-color:var(--mud-palette-error-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-error.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}}.mud-chip-text.mud-chip-color-error.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-error.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}.mud-chip-text.mud-chip-color-dark{color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark) !important;background-color:var(--mud-palette-dark-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-dark.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}}.mud-chip-text.mud-chip-color-dark.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-dark.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}.mud-collapse-container{overflow:hidden;display:grid;grid-template-rows:minmax(0, 0fr);transition:grid-template-rows 300ms ease-in-out}.mud-collapse-entering{grid-template-rows:minmax(0, 1fr)}.mud-collapse-entered{overflow:initial;grid-template-rows:minmax(0, 1fr)}.mud-collapse-hidden{visibility:hidden}.mud-collapse-wrapper{overflow:hidden;display:flex}.mud-collapse-wrapper-inner{width:100%}.mud-dialog-container{display:flex;position:fixed;top:0;left: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(0.39, 0.575, 0.565, 1) both;animation:mud-open-dialog-center .1s cubic-bezier(0.39, 0.575, 0.565, 1) both;box-shadow:0px 11px 15px -7px rgba(0,0,0,.2),0px 24px 38px 3px rgba(0,0,0,.14),0px 9px 46px 8px rgba(0,0,0,.12);max-height:calc(100vh - var(--mud-appbar-height));max-height:calc(100dvh - var(--mud-appbar-height));overflow-y:auto}.mud-dialog.mud-dialog-rtl .mud-dialog-title .mud-button-close{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-close{top:8px;right:8px;position:absolute}.mud-dialog .mud-dialog-content{position:relative;flex:1 1 auto;overflow:auto;padding:0px 24px;margin:8px 0px;-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:0px;margin:12px 0px}.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;overflow-y:hidden}@-webkit-keyframes mud-open-dialog-center{0%{opacity:0}1%{-webkit-transform:scale(0.5);transform:scale(0.5);opacity:1}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes mud-open-dialog-center{0%{opacity:0}1%{-webkit-transform:scale(0.5);transform:scale(0.5);opacity:1}100%{-webkit-transform:scale(1);transform:scale(1)}}.mud-focus-trap{display:contents}.mud-focus-trap .mud-focus-trap-child-container{display:contents}.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:0px;padding-bottom:0px}.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-flex-break{flex-basis:100%;width:0}.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% + 4px);margin-left:-4px;margin-top:-4px}.mud-grid-spacing-xs-1>.mud-grid-item{padding-left:4px;padding-top:4px}.mud-grid-spacing-xs-2{width:calc(100% + 8px);margin-left:-8px;margin-top:-8px}.mud-grid-spacing-xs-2>.mud-grid-item{padding-left:8px;padding-top:8px}.mud-grid-spacing-xs-3{width:calc(100% + 12px);margin-left:-12px;margin-top:-12px}.mud-grid-spacing-xs-3>.mud-grid-item{padding-left:12px;padding-top:12px}.mud-grid-spacing-xs-4{width:calc(100% + 16px);margin-left:-16px;margin-top:-16px}.mud-grid-spacing-xs-4>.mud-grid-item{padding-left:16px;padding-top:16px}.mud-grid-spacing-xs-5{width:calc(100% + 20px);margin-left:-20px;margin-top:-20px}.mud-grid-spacing-xs-5>.mud-grid-item{padding-left:20px;padding-top:20px}.mud-grid-spacing-xs-6{width:calc(100% + 24px);margin-left:-24px;margin-top:-24px}.mud-grid-spacing-xs-6>.mud-grid-item{padding-left:24px;padding-top:24px}.mud-grid-spacing-xs-7{width:calc(100% + 28px);margin-left:-28px;margin-top:-28px}.mud-grid-spacing-xs-7>.mud-grid-item{padding-left:28px;padding-top:28px}.mud-grid-spacing-xs-8{width:calc(100% + 32px);margin-left:-32px;margin-top:-32px}.mud-grid-spacing-xs-8>.mud-grid-item{padding-left:32px;padding-top:32px}.mud-grid-spacing-xs-9{width:calc(100% + 36px);margin-left:-36px;margin-top:-36px}.mud-grid-spacing-xs-9>.mud-grid-item{padding-left:36px;padding-top:36px}.mud-grid-spacing-xs-10{width:calc(100% + 40px);margin-left:-40px;margin-top:-40px}.mud-grid-spacing-xs-10>.mud-grid-item{padding-left:40px;padding-top:40px}.mud-grid-spacing-xs-11{width:calc(100% + 44px);margin-left:-44px;margin-top:-44px}.mud-grid-spacing-xs-11>.mud-grid-item{padding-left:44px;padding-top:44px}.mud-grid-spacing-xs-12{width:calc(100% + 48px);margin-left:-48px;margin-top:-48px}.mud-grid-spacing-xs-12>.mud-grid-item{padding-left:48px;padding-top:48px}.mud-grid-spacing-xs-13{width:calc(100% + 52px);margin-left:-52px;margin-top:-52px}.mud-grid-spacing-xs-13>.mud-grid-item{padding-left:52px;padding-top:52px}.mud-grid-spacing-xs-14{width:calc(100% + 56px);margin-left:-56px;margin-top:-56px}.mud-grid-spacing-xs-14>.mud-grid-item{padding-left:56px;padding-top:56px}.mud-grid-spacing-xs-15{width:calc(100% + 60px);margin-left:-60px;margin-top:-60px}.mud-grid-spacing-xs-15>.mud-grid-item{padding-left:60px;padding-top:60px}.mud-grid-spacing-xs-16{width:calc(100% + 64px);margin-left:-64px;margin-top:-64px}.mud-grid-spacing-xs-16>.mud-grid-item{padding-left:64px;padding-top:64px}.mud-grid-spacing-xs-17{width:calc(100% + 68px);margin-left:-68px;margin-top:-68px}.mud-grid-spacing-xs-17>.mud-grid-item{padding-left:68px;padding-top:68px}.mud-grid-spacing-xs-18{width:calc(100% + 72px);margin-left:-72px;margin-top:-72px}.mud-grid-spacing-xs-18>.mud-grid-item{padding-left:72px;padding-top:72px}.mud-grid-spacing-xs-19{width:calc(100% + 76px);margin-left:-76px;margin-top:-76px}.mud-grid-spacing-xs-19>.mud-grid-item{padding-left:76px;padding-top:76px}.mud-grid-spacing-xs-20{width:calc(100% + 80px);margin-left:-80px;margin-top:-80px}.mud-grid-spacing-xs-20>.mud-grid-item{padding-left:80px;padding-top:80px}@media(min-width: 0px){.mud-grid-item-xs-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-xs-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-xs-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-xs-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-xs-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-xs-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-xs-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-xs-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-xs-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-xs-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-xs-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-xs-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 600px){.mud-grid-item-sm-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-sm-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-sm-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-sm-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-sm-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-sm-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-sm-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-sm-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-sm-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-sm-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-sm-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-sm-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 960px){.mud-grid-item-md-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-md-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-md-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-md-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-md-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-md-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-md-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-md-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-md-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-md-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-md-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-md-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 1280px){.mud-grid-item-lg-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-lg-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-lg-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-lg-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-lg-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-lg-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-lg-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-lg-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-lg-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-lg-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-lg-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-lg-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 1920px){.mud-grid-item-xl-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-xl-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-xl-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-xl-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-xl-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-xl-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-xl-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-xl-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-xl-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-xl-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-xl-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-xl-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 2560px){.mud-grid-item-xxl-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-xxl-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-xxl-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-xxl-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-xxl-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-xxl-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-xxl-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-xxl-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-xxl-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-xxl-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-xxl-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-xxl-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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-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(0.4, 0, 0.2, 1) 0ms}.mud-paper-square{border-radius:0px}.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(0.4, 0, 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{margin:0;flex-shrink:0;border-color:var(--mud-palette-divider);border-width:1px;border-style:solid none none none}.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{border-color:var(--mud-palette-divider-light)}.mud-divider-middle{margin-left:16px;margin-right:16px}.mud-divider-vertical{border-style:none solid none none;height:100%}.mud-divider-flexitem{height:auto;align-self:stretch}.mud-divider-fullwidth{flex-grow:1;width:100%}.mud-drop-zone{position:relative;transition:all 300ms cubic-bezier(0.4, 0, 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;user-select:none}.mud-drop-item .mud-ripple:after{display:none;transform:none}.mud-expansion-panels{flex:0 1 auto;position:relative;max-width:100%;transition:.3s cubic-bezier(0.25, 0.8, 0.5, 1);border-radius:var(--mud-default-borderradius)}.mud-expansion-panels.mud-expansion-panels-square{border-radius:0px}.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(0.25, 0.8, 0.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(0.25, 0.8, 0.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(0.25, 0.8, 0.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-bottom:16px;flex:1 1 auto;max-width:100%}.mud-expand-panel .mud-expand-panel-content.mud-expand-panel-gutters{padding-left:24px;padding-right:24px}.mud-expand-panel .mud-expand-panel-content.mud-expand-panel-dense{padding-top:0px;padding-bottom:0px}.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:0px 3px 5px -1px rgba(0,0,0,.2),0px 6px 10px 0px rgba(0,0,0,.14),0px 1px 18px 0px rgba(0,0,0,.12);box-sizing:border-box;min-height:36px;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:50%;color:var(--mud-palette-text-primary);--mud-ripple-color: var(--mud-palette-text-primary);background-color:var(--mud-palette-action-default-hover)}@media(hover: hover)and (pointer: fine){.mud-fab:hover{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);text-decoration:none;background-color:var(--mud-palette-action-disabled-background)}}.mud-fab:focus-visible{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);text-decoration:none;background-color:var(--mud-palette-action-disabled-background)}.mud-fab:active{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 12px 17px 2px rgba(0,0,0,.14),0px 5px 22px 4px rgba(0,0,0,.12);text-decoration:none;background-color:var(--mud-palette-action-disabled-background)}.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}@media(hover: hover)and (pointer: fine){.mud-fab:disabled:hover{background-color:var(--mud-palette-action-disabled-background)}}.mud-fab-disable-elevation{box-shadow:none}@media(hover: hover)and (pointer: fine){.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);--mud-ripple-color: var(--mud-palette-primary-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-fab-primary:hover{background-color:var(--mud-palette-primary-darken)}}.mud-fab-primary:focus-visible,.mud-fab-primary:active{background-color:var(--mud-palette-primary-darken)}.mud-fab-secondary{color:var(--mud-palette-secondary-text);--mud-ripple-color: var(--mud-palette-secondary-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-fab-secondary:hover{background-color:var(--mud-palette-secondary-darken)}}.mud-fab-secondary:focus-visible,.mud-fab-secondary:active{background-color:var(--mud-palette-secondary-darken)}.mud-fab-tertiary{color:var(--mud-palette-tertiary-text);--mud-ripple-color: var(--mud-palette-tertiary-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-fab-tertiary:hover{background-color:var(--mud-palette-tertiary-darken)}}.mud-fab-tertiary:focus-visible,.mud-fab-tertiary:active{background-color:var(--mud-palette-tertiary-darken)}.mud-fab-info{color:var(--mud-palette-info-text);--mud-ripple-color: var(--mud-palette-info-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-fab-info:hover{background-color:var(--mud-palette-info-darken)}}.mud-fab-info:focus-visible,.mud-fab-info:active{background-color:var(--mud-palette-info-darken)}.mud-fab-success{color:var(--mud-palette-success-text);--mud-ripple-color: var(--mud-palette-success-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-fab-success:hover{background-color:var(--mud-palette-success-darken)}}.mud-fab-success:focus-visible,.mud-fab-success:active{background-color:var(--mud-palette-success-darken)}.mud-fab-warning{color:var(--mud-palette-warning-text);--mud-ripple-color: var(--mud-palette-warning-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-fab-warning:hover{background-color:var(--mud-palette-warning-darken)}}.mud-fab-warning:focus-visible,.mud-fab-warning:active{background-color:var(--mud-palette-warning-darken)}.mud-fab-error{color:var(--mud-palette-error-text);--mud-ripple-color: var(--mud-palette-error-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-fab-error:hover{background-color:var(--mud-palette-error-darken)}}.mud-fab-error:focus-visible,.mud-fab-error:active{background-color:var(--mud-palette-error-darken)}.mud-fab-dark{color:var(--mud-palette-dark-text);--mud-ripple-color: var(--mud-palette-dark-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-fab-dark:hover{background-color:var(--mud-palette-dark-darken)}}.mud-fab-dark:focus-visible,.mud-fab-dark:active{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-form{display:flex;flex-direction:column}.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.mud-list-item-disabled .mud-list-item-secondary-text{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:rgba(0,0,0,0);-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.mud-list-item-clickable:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-list-item-clickable:focus:not(.mud-selected-item),.mud-list-item-clickable:active{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-list-item-secondary-text{font-weight:500;color:var(--mud-palette-text-secondary)}.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;user-select:none}.mud-menu-button-hidden{position:absolute}.mud-menu-list{padding:4px 0}.mud-menu-list>.mud-menu{width:100%}.mud-menu-list>.mud-divider{margin:4px 0}.mud-menu-item{width:100%;display:flex;position:relative;box-sizing:border-box;text-align:start;align-items:center;justify-content:flex-start;text-decoration:none;padding:8px 12px}.mud-menu-item>.mud-icon-root{color:var(--mud-palette-action-default)}.mud-menu-item .mud-menu-item-icon{display:inline-flex;flex-shrink:0;margin-inline-end:12px}.mud-menu-item .mud-menu-item-text{flex:1 1 auto;margin:4px 0}.mud-menu-item.mud-menu-item-dense{padding:2px 12px}.mud-menu-item.mud-disabled{color:var(--mud-palette-action-disabled) !important;cursor:default !important;pointer-events:none !important}.mud-menu-item.mud-disabled .mud-menu-item-icon{color:var(--mud-palette-action-disabled) !important}.mud-menu-list:has(.mud-menu-item-icon) .mud-menu-item:not(:has(.mud-menu-item-icon)) .mud-menu-item-text{margin-inline-start:36px}.mud-link.mud-link-underline-none{text-decoration:none}.mud-link.mud-link-underline-hover{text-decoration:none}@media(hover: hover)and (pointer: fine){.mud-link.mud-link-underline-hover:hover{text-decoration:underline}}.mud-link.mud-link-underline-hover:focus-visible,.mud-link.mud-link-underline-hover:active{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-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)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:var(--mud-palette-action-default-hover)}}.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled):active: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);--mud-ripple-color: var(--mud-palette-primary);background-color:var(--mud-palette-primary-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}}.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.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);--mud-ripple-color: var(--mud-palette-secondary);background-color:var(--mud-palette-secondary-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}}.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.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);--mud-ripple-color: var(--mud-palette-tertiary);background-color:var(--mud-palette-tertiary-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}}.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.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);--mud-ripple-color: var(--mud-palette-info);background-color:var(--mud-palette-info-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}}.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.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);--mud-ripple-color: var(--mud-palette-success);background-color:var(--mud-palette-success-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}}.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.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);--mud-ripple-color: var(--mud-palette-warning);background-color:var(--mud-palette-warning-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}}.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.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);--mud-ripple-color: var(--mud-palette-error);background-color:var(--mud-palette-error-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}}.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.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);--mud-ripple-color: var(--mud-palette-dark);background-color:var(--mud-palette-dark-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}}.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.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{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;justify-content:flex-start;text-transform:inherit;background-color:rgba(0,0,0,0);transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,padding 250ms cubic-bezier(0.4, 0, 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}@media(hover: hover)and (pointer: fine){.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(0.25, 0.8, 0.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-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-mini .mud-nav-link{line-height:1;display:flex;align-items:center}.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:rgba(0,0,0,0)}.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:rgba(0,0,0,0)}.page-content-navigation .page-content-navigation-navlink .mud-nav-link .mud-nav-link-text{margin-left:0px;margin-inline-start:0px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mud-pagination{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0;list-style:none}.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}.mud-picker-view.mud-picker-open{display:block}.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:0px;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:0px;visibility:visible}.mud-picker-pos-above.mud-picker-pos-left{left:50%;transform:translateX(-50%)}.mud-picker-pos-above.mud-picker-pos-right{right:0px}.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:0px}.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)}@media(hover: hover)and (pointer: fine){.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}@media(hover: hover)and (pointer: fine){.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(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.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;align-items:center;justify-content:center;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.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}@media(hover: hover)and (pointer: fine){.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)}@media(hover: hover)and (pointer: fine){.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)))}@media(hover: hover)and (pointer: fine){.mud-range-selection-primary:hover{color:var(--mud-palette-primary-text) !important;background-color:var(--mud-palette-primary) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-secondary:hover{color:var(--mud-palette-secondary-text) !important;background-color:var(--mud-palette-secondary) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-tertiary:hover{color:var(--mud-palette-tertiary-text) !important;background-color:var(--mud-palette-tertiary) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-info:hover{color:var(--mud-palette-info-text) !important;background-color:var(--mud-palette-info) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-success:hover{color:var(--mud-palette-success-text) !important;background-color:var(--mud-palette-success) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-warning:hover{color:var(--mud-palette-warning-text) !important;background-color:var(--mud-palette-warning) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-error:hover{color:var(--mud-palette-error-text) !important;background-color:var(--mud-palette-error) !important}}@media(hover: hover)and (pointer: fine){.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%}@media(hover: hover)and (pointer: fine){.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:hsla(0,0%,100%,.54)}@media(hover: hover)and (pointer: fine){.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:-0.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:0em}.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:0em}.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;touch-action:pinch-zoom;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;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 0px}.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 0px}.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 0px}.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 0px}.mud-picker-time-container .mud-picker-time-clock .mud-picker-time-clock-pointer.mud-picker-time-clock-pointer-animation{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,height 150ms cubic-bezier(0.4, 0, 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:rgba(0,0,0,0);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:rgba(0,0,0,0) !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(0.8, 0.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;touch-action:pinch-zoom}.mud-picker-color-picker .mud-picker-color-overlay{width:100%;height:100%;user-select:none}.mud-picker-color-picker .mud-picker-color-overlay.mud-picker-color-overlay-white{background:linear-gradient(to right, white 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%, black 100%)}.mud-picker-color-picker .mud-picker-color-selector{position:absolute;top:-13px;left:-13px;pointer-events:none}.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:0px;box-shadow:none}.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) 0px 1px 4px 0px}.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) 0px 1px 4px 0px}.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, #FF0000, #ff0 16.66%, #0f0 33.33%, #0ff 50%, #00f 66.66%, #f0f 83.33%, #FF0000)}.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(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-radius 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:var(--mud-default-borderradius);box-shadow:0 0 6px rgba(127,130,134,.18)}@media(hover: hover)and (pointer: fine){.mud-picker-color-dot:hover{cursor:pointer;box-shadow:0px 3px 1px -2px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 1px 5px 0px 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:0px 3px 1px -2px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 1px 5px 0px rgba(0,0,0,.12)}.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-popover .mud-list{max-height:inherit;overflow-y:auto}.mud-popover .mud-popover{z-index:auto}.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-select .mud-popover-cascading-value{z-index:calc(var(--mud-zindex-select) + 5)}.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 tbody tr:last-child td{border-bottom:none}.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.mud-table-dense * tr td,.mud-simple-table.mud-table-dense * tr th{padding:6px 16px}@media(hover: hover)and (pointer: fine){.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)}@media(hover: hover)and (pointer: fine){.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:var(--mud-palette-skeleton)}.mud-skeleton-text{height:auto;transform:scale(1, 0.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, 0.04), transparent)}.mud-slider{color:var(--mud-palette-text-primary);display:inline-block;width:100%;user-select:none;touch-action:pinch-zoom}.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:rgba(0,0,0,0);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(0.4, 0, 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(0.4, 0, 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 #fff !important;transform:scale(4, 4)}@media(hover: hover)and (pointer: fine){.mud-slider .mud-slider-input:disabled::-webkit-slider-thumb:hover{box-shadow:0 0 0 1px #fff !important}}.mud-slider .mud-slider-input:disabled::-moz-range-thumb{background-color:#000;color:#fff;box-shadow:0 0 0 1px #fff !important;transform:scale(4, 4)}@media(hover: hover)and (pointer: fine){.mud-slider .mud-slider-input:disabled::-moz-range-thumb:hover{box-shadow:0 0 0 1px #fff !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), 0.3)}.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-primary-rgb), 0.3)}.mud-slider.mud-slider-primary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-primary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3)}.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-primary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-primary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-primary-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-primary-rgb), 0.24)}}.mud-slider.mud-slider-primary .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-primary .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-primary-rgb), 0.24)}.mud-slider.mud-slider-primary .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-primary .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-primary-rgb), 0.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), 0.3)}.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-secondary-rgb), 0.3)}.mud-slider.mud-slider-secondary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-secondary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3)}.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-secondary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-secondary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-secondary-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-secondary-rgb), 0.24)}}.mud-slider.mud-slider-secondary .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-secondary .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-secondary-rgb), 0.24)}.mud-slider.mud-slider-secondary .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-secondary .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-secondary-rgb), 0.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), 0.3)}.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-tertiary-rgb), 0.3)}.mud-slider.mud-slider-tertiary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-tertiary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3)}.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-tertiary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-tertiary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-tertiary-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-tertiary-rgb), 0.24)}}.mud-slider.mud-slider-tertiary .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-tertiary .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-tertiary-rgb), 0.24)}.mud-slider.mud-slider-tertiary .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-tertiary .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-tertiary-rgb), 0.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), 0.3)}.mud-slider.mud-slider-info .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-info-rgb), 0.3)}.mud-slider.mud-slider-info .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-info);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3)}.mud-slider.mud-slider-info .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-info);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-info .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-info-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-info .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-info-rgb), 0.24)}}.mud-slider.mud-slider-info .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-info .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-info-rgb), 0.24)}.mud-slider.mud-slider-info .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-info .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-info-rgb), 0.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), 0.3)}.mud-slider.mud-slider-success .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-success-rgb), 0.3)}.mud-slider.mud-slider-success .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-success);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3)}.mud-slider.mud-slider-success .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-success);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-success .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-success-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-success .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-success-rgb), 0.24)}}.mud-slider.mud-slider-success .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-success .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-success-rgb), 0.24)}.mud-slider.mud-slider-success .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-success .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-success-rgb), 0.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), 0.3)}.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-warning-rgb), 0.3)}.mud-slider.mud-slider-warning .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-warning);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3)}.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-warning);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-warning .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-warning-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-warning-rgb), 0.24)}}.mud-slider.mud-slider-warning .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-warning .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-warning-rgb), 0.24)}.mud-slider.mud-slider-warning .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-warning .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-warning-rgb), 0.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), 0.3)}.mud-slider.mud-slider-error .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-error-rgb), 0.3)}.mud-slider.mud-slider-error .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-error);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3)}.mud-slider.mud-slider-error .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-error);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-error .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-error-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-error .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-error-rgb), 0.24)}}.mud-slider.mud-slider-error .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-error .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-error-rgb), 0.24)}.mud-slider.mud-slider-error .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-error .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-error-rgb), 0.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), 0.3)}.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-dark-rgb), 0.3)}.mud-slider.mud-slider-dark .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-dark);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3)}.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-dark);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-dark .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-dark-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-dark-rgb), 0.24)}}.mud-slider.mud-slider-dark .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-dark .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-dark-rgb), 0.24)}.mud-slider.mud-slider-dark .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-dark .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-dark-rgb), 0.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:50%}.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(0.4, 0, 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:0px}.mud-progress-circular-circle.mud-progress-static{transition:stroke-dashoffset 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-progress-circular-circle.mud-progress-circular-circle-rounded{stroke-linecap:round}.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(0.65, 0.815, 0.735, 0.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(0.65, 0.815, 0.735, 0.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(0.165, 0.84, 0.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(0.165, 0.84, 0.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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(0.65, 0.815, 0.735, 0.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(0.165, 0.84, 0.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(0.65, 0.815, 0.735, 0.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(0.165, 0.84, 0.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, hsla(0, 0%, 100%, 0.25) 25%, transparent 0, transparent 50%, hsla(0, 0%, 100%, 0.25) 0, hsla(0, 0%, 100%, 0.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-progress-linear.mud-progress-linear-rounded::before{border-radius:var(--mud-default-borderradius)}.mud-radio{cursor:pointer;display:inline-flex;align-items:center;vertical-align:middle;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mud-radio>.mud-radio-content{color:var(--mud-palette-text-primary)}@media(hover: hover)and (pointer: fine){.mud-radio .mud-disabled:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-radio .mud-disabled:hover>.mud-radio-content{color:var(--mud-palette-text-disabled)}.mud-radio .mud-disabled:hover *{cursor:default;color:var(--mud-palette-text-disabled)}}.mud-radio.mud-disabled,.mud-radio .mud-disabled:focus-visible,.mud-radio .mud-disabled:active{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-radio.mud-disabled>.mud-radio-content,.mud-radio .mud-disabled:focus-visible>.mud-radio-content,.mud-radio .mud-disabled:active>.mud-radio-content{color:var(--mud-palette-text-disabled)}.mud-radio.mud-disabled *,.mud-radio .mud-disabled:focus-visible *,.mud-radio .mud-disabled:active *{cursor:default;color:var(--mud-palette-text-disabled)}.mud-radio.mud-readonly,.mud-radio .mud-readonly:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-radio .mud-radio-dense{padding:4px}.mud-radio.mud-checked{color:var(--mud-palette-action-default)}@media(hover: hover)and (pointer: fine){.mud-radio.mud-checked:hover{background-color:var(--mud-palette-action-default-hover)}}.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-icons{display:flex;position:relative}.mud-radio-icons.mud-checked .mud-radio-icon-checked{transform:scale(1);transition:transform 150ms cubic-bezier(0, 0, 0.2, 1) 0ms}.mud-radio-icon-checked{left:0;position:absolute;transform:scale(0);transition:transform 150ms cubic-bezier(0.4, 0, 1, 1) 0ms}.mud-rating-root{display:inline-flex;color:#ffb400}.mud-rating-root:focus-visible,.mud-rating-root:active{outline:none}.mud-rating-root:focus-visible:not(.mud-disabled),.mud-rating-root:active:not(.mud-disabled){background-color:var(--mud-palette-action-default-hover)}.mud-rating-item{cursor:pointer;transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-rating-item.mud-rating-item-active{transform:scale(1.2)}.mud-rating-item.mud-disabled{cursor:default;pointer-events:none}.mud-rating-item.mud-disabled *{cursor:default;color:var(--mud-palette-text-disabled)}@media(hover: hover)and (pointer: fine){.mud-rating-item .mud-disabled:hover{cursor:default;pointer-events:none}.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:0px 3px 5px -1px rgba(0,0,0,.2),0px 6px 10px 0px rgba(0,0,0,.14),0px 1px 18px 0px rgba(0,0,0,.12);touch-action:pinch-zoom}.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;overflow-wrap:anywhere}.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;vertical-align:middle;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mud-switch.mud-disabled{color:var(--mud-palette-text-disabled) !important;cursor:default}.mud-switch.mud-readonly{cursor:default;background-color:rgba(0,0,0,0) !important}@media(hover: hover)and (pointer: fine){.mud-switch .mud-readonly:hover{cursor:default;background-color:rgba(0,0,0,0) !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(0.4, 0, 0.2, 1) 0ms,background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:9px;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(0.4, 0, 0.2, 1) 0ms,transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-switch-base.mud-checked{transform:translateX(20px)}.mud-switch-base.mud-checked+.mud-switch-track{opacity:.5}@media(hover: hover)and (pointer: fine){.mud-switch-base:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-switch-base.mud-switch-disabled{color:var(--mud-palette-gray-default) !important}.mud-switch-base.mud-switch-disabled+.mud-switch-track{opacity:.12 !important}@media(hover: hover)and (pointer: fine){.mud-switch-base.mud-switch-disabled:hover{cursor:default;background-color:rgba(0,0,0,0) !important}}.mud-switch-base.mud-switch-disabled:focus-visible,.mud-switch-base.mud-switch-disabled:active{cursor:default;background-color:rgba(0,0,0,0) !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-small{width:14px;height:14px;box-shadow:0px 2px 1px -1px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 1px 3px 0px rgba(0,0,0,.12);border-radius:50%;background-color:currentColor}.mud-switch-button .mud-switch-thumb-medium{width:20px;height:20px;box-shadow:0px 2px 1px -1px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 1px 3px 0px rgba(0,0,0,.12);border-radius:50%;background-color:currentColor}.mud-switch-button .mud-switch-thumb-large{width:26px;height:26px;box-shadow:0px 2px 1px -1px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 1px 3px 0px rgba(0,0,0,.12);border-radius:50%;background-color:currentColor}.mud-switch-base-small.mud-switch-base{padding:5px}.mud-switch-base-medium.mud-switch-base{padding:9px}.mud-switch-base-large.mud-switch-base{padding:13px}.mud-switch-span-small.mud-switch-span{padding:7px;width:44px;height:24px}.mud-switch-span-medium.mud-switch-span{padding:12px;width:58px;height:38px}.mud-switch-span-large.mud-switch-span{padding:17px;width:72px;height:52px}.mud-switch-label-small{font-size:.8125rem !important}.mud-switch-label-medium{font-size:1rem !important}.mud-switch-label-large{font-size:1.1875rem !important}.mud-timeline{position:relative;display:flex}.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{padding-top:24px;flex-direction:column}.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-vertical::before{top:0;bottom:0;content:"";height:100%;position:absolute;width:2px;background:var(--mud-palette-divider)}.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{flex-direction:row}.mud-timeline-horizontal .mud-timeline-item{padding:0 24px;width:100%;min-width:0}.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-horizontal::before{top:0;bottom:0;content:"";height:2px;position:absolute;width:100%;background:var(--mud-palette-divider)}.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-gray-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{content:"";position:absolute;border-top:16px solid rgba(0,0,0,0);border-bottom:16px solid rgba(0,0,0,0);border-right:16px solid rgba(0,0,0,.1);top:calc(50% - 14px)}.mud-timeline-modifiers .mud-timeline-item-content .mud-card::after{content:"";position:absolute;border-top:16px solid rgba(0,0,0,0);border-bottom:16px solid rgba(0,0,0,0);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-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-typography{margin:0}.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-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-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-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-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-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(0.4, 0, 0.2, 1) 0ms}.mud-table.mud-table-square{border-radius:0px}.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}.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}@media(hover: hover)and (pointer: fine){.mud-table-root .mud-table-head .mud-table-cell .mud-button-root:hover{color:var(--mud-palette-action-default)}.mud-table-root .mud-table-head .mud-table-cell .mud-button-root:hover .mud-table-sort-label-icon{opacity:.8}}.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,.mud-table-root>.mud-table-foot:last-child>.mud-table-row:last-child>.mud-table-cell{border-bottom:none}.mud-table-sort-label{user-select:auto;display:inline-flex;align-items:center;flex-direction:inherit;justify-content:flex-start}.mud-table-sort-label .mud-table-sort-label-icon{font-size:18px;transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 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{left:0;position:sticky;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:-4px}.mud-table-cell .mud-checkbox>.mud-icon-button{padding:4px}.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-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-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell:first-child{border-right:none;border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell:last-child{border-right:1px solid var(--mud-palette-table-lines);border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-head.table-head-bordered .mud-table-row .mud-table-cell:last-child{border-right:1px solid var(--mud-palette-table-lines);border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-head.table-head-bordered .mud-table-row .mud-table-cell:only-child{border-right:none;border-top-right-radius:var(--mud-default-borderradius)}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-head .mud-table-row th.mud-table-cell:first-child{border-right:none;border-top-right-radius:var(--mud-default-borderradius)}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-foot.table-foot-bordered .mud-table-row .mud-table-cell:last-child{border-right:1px solid var(--mud-palette-table-lines);border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-foot .mud-table-row .mud-table-cell:first-child{border-right:none}.mud-table-sticky-header .mud-table-container{overflow-x:auto}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell:first-child{border-radius:var(--mud-default-borderradius) 0px 0px 0px}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell:last-child{border-radius:0px var(--mud-default-borderradius) 0px 0px}.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-header * .mud-table-root .mud-table-head * .mud-table-loading{background-color:var(--mud-palette-surface);position:sticky;z-index:2;top:59px}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-filter-panel-cell{top:59px}table:has(.mud-table-loading) .mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-filter-panel-cell{top:63px}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell.sticky-left,.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell.sticky-right{z-index:3;background-color:var(--mud-palette-background-gray)}.mud-table-sticky-header.mud-table-dense * .mud-table-root .mud-table-head * .mud-table-loading{top:39px}.mud-table-sticky-header.mud-table-dense * .mud-table-root .mud-table-head * .mud-filter-panel-cell{top:39px}table:has(.mud-table-loading) .mud-table-sticky-header.mud-table-dense * .mud-table-root .mud-table-head * .mud-filter-panel-cell{top:43px}.mud-table-sticky-footer .mud-table-container{overflow-x:auto}.mud-table-sticky-footer * .mud-table-root .mud-table-foot{position:sticky;z-index:2;bottom:0}.mud-table-sticky-footer * .mud-table-root .mud-table-foot * .mud-table-cell{background-color:var(--mud-palette-surface)}.mud-table-row{color:inherit;display:table-row;outline:0;vertical-align:middle}@media(hover: hover)and (pointer: fine){.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)}@media(hover: hover)and (pointer: fine){.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-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;position:sticky;left:0}.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;flex-wrap:nowrap}.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:0px !important;min-width:52px}.mud-table-pagination-select .mud-select-input{margin-top:0px !important;padding:0 7px !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{width:100%}.mud-table-empty-row{background-color:var(--mud-palette-surface);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-top:-12px;margin-bottom:-12px;margin-inline-start:-12px;margin-inline-end:-2px}@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:revert}.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}.mud-xs-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-xs-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-sm-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-sm-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-md-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-md-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-lg-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-lg-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-xl-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-xl-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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-xxl-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-xxl-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}.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 .mud-tooltip-root{width:auto}.mud-tabs.mud-tabs-vertical-reverse{flex-direction:row-reverse}.mud-tabs.mud-tabs-rounded{border-radius:var(--mud-default-borderradius);overflow:hidden}.mud-tabs.mud-tabs-rounded .mud-tabs-tabbar{border-radius:var(--mud-default-borderradius)}.mud-tabs.mud-tabs-rounded .mud-tabs-panels{border-radius:var(--mud-default-borderradius)}.mud-tabs-tabbar{position:relative;background-color:var(--mud-palette-surface)}.mud-tabs-tabbar.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-tabbar.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-tabbar.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-tabbar.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-tabbar.mud-tabs-rounded{border-radius:var(--mud-default-borderradius)}.mud-tabs-tabbar.mud-tabs-vertical .mud-tabs-tabbar-inner{flex-direction:column}.mud-tabs-tabbar.mud-tabs-vertical .mud-tabs-tabbar-inner .mud-tabs-scroll-button .mud-button-root{width:100%;border-radius:0px;height:32px}.mud-tabs-tabbar.mud-tabs-vertical .mud-tabs-tabbar-inner .mud-tabs-scroll-button .mud-button-root .mud-icon-button-label .mud-icon-root{transform:rotate(90deg)}.mud-tabs-tabbar .mud-tabs-tabbar-inner{display:flex;min-height:48px}.mud-tabs-tabbar-content{width:100%;flex:1 1 auto;display:inline-block;position:relative;white-space:nowrap;overflow:hidden}.mud-tabs-tabbar-content .mud-tabs-tabbar-wrapper{width:max-content;position:inherit;display:flex;transition:.3s cubic-bezier(0.25, 0.8, 0.5, 1)}.mud-tabs-tabbar-content .mud-tabs-tabbar-wrapper.mud-tabs-centered{margin:auto}.mud-tabs-tabbar-content .mud-tabs-tabbar-wrapper.mud-tabs-vertical{flex-direction:column}.mud-tabs-panels{position:relative;transition:.3s cubic-bezier(0.25, 0.8, 0.5, 1)}.mud-tabs-panels.mud-tabs-vertical{display:flex;flex-grow:1}.mud-tab{width:100%;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(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.mud-tab:hover{cursor:pointer;background-color:var(--mud-palette-action-default-hover)}}.mud-tab.mud-tab-active{color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.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.mud-tab-panel-hidden{display:none}.mud-tab-slider{position:absolute;background:var(--mud-palette-primary)}.mud-tab-slider.mud-tab-slider-horizontal{height:2px;bottom:0;transition:left .3s cubic-bezier(0.64, 0.09, 0.08, 1);will-change:left}.mud-tab-slider.mud-tab-slider-horizontal.mud-tab-slider-horizontal-reverse{top:0;bottom:unset}.mud-tab-slider.mud-tab-slider-vertical{width:2px;right:0;transition:top .3s cubic-bezier(0.64, 0.09, 0.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-tabbar-primary{background-color:var(--mud-palette-primary);color:var(--mud-palette-primary-text)}.mud-tabs-tabbar-primary .mud-tab-slider{background:var(--mud-palette-primary-text)}.mud-tabs-tabbar-primary .mud-tab.mud-tab-active{color:var(--mud-palette-primary-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-primary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-primary-lighten)}}.mud-tabs-tabbar-secondary{background-color:var(--mud-palette-secondary);color:var(--mud-palette-secondary-text)}.mud-tabs-tabbar-secondary .mud-tab-slider{background:var(--mud-palette-secondary-text)}.mud-tabs-tabbar-secondary .mud-tab.mud-tab-active{color:var(--mud-palette-secondary-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-secondary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-secondary-lighten)}}.mud-tabs-tabbar-tertiary{background-color:var(--mud-palette-tertiary);color:var(--mud-palette-tertiary-text)}.mud-tabs-tabbar-tertiary .mud-tab-slider{background:var(--mud-palette-tertiary-text)}.mud-tabs-tabbar-tertiary .mud-tab.mud-tab-active{color:var(--mud-palette-tertiary-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-tertiary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-tertiary-lighten)}}.mud-tabs-tabbar-info{background-color:var(--mud-palette-info);color:var(--mud-palette-info-text)}.mud-tabs-tabbar-info .mud-tab-slider{background:var(--mud-palette-info-text)}.mud-tabs-tabbar-info .mud-tab.mud-tab-active{color:var(--mud-palette-info-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-info .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-info-lighten)}}.mud-tabs-tabbar-success{background-color:var(--mud-palette-success);color:var(--mud-palette-success-text)}.mud-tabs-tabbar-success .mud-tab-slider{background:var(--mud-palette-success-text)}.mud-tabs-tabbar-success .mud-tab.mud-tab-active{color:var(--mud-palette-success-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-success .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-success-lighten)}}.mud-tabs-tabbar-warning{background-color:var(--mud-palette-warning);color:var(--mud-palette-warning-text)}.mud-tabs-tabbar-warning .mud-tab-slider{background:var(--mud-palette-warning-text)}.mud-tabs-tabbar-warning .mud-tab.mud-tab-active{color:var(--mud-palette-warning-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-warning .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-warning-lighten)}}.mud-tabs-tabbar-error{background-color:var(--mud-palette-error);color:var(--mud-palette-error-text)}.mud-tabs-tabbar-error .mud-tab-slider{background:var(--mud-palette-error-text)}.mud-tabs-tabbar-error .mud-tab.mud-tab-active{color:var(--mud-palette-error-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-error .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-error-lighten)}}.mud-tabs-tabbar-dark{background-color:var(--mud-palette-dark);color:var(--mud-palette-dark-text)}.mud-tabs-tabbar-dark .mud-tab-slider{background:var(--mud-palette-dark-text)}.mud-tabs-tabbar-dark .mud-tab.mud-tab-active{color:var(--mud-palette-dark-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-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-tabbar .mud-tab{padding:6px 14px}.mud-dynamic-tabs .mud-tabs-tabbar .mud-tab .mud-icon-button{padding:4px;margin-right:-4px;margin-inline-end:-4px;margin-inline-start:unset}.mud-dynamic-tabs .mud-tabs-tabbar .mud-tab .mud-tabs-panel-header-before{padding-right:8px;padding-inline-end:8px;padding-inline-start:unset}.mud-dynamic-tabs .mud-tabs-tabbar .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-autocomplete--with-progress .mud-select-input input{padding-right:3.5rem !important}.mud-select.mud-autocomplete--with-progress .mud-input-adorned-end input{padding-right:4.5rem !important}.mud-select.mud-autocomplete--with-progress .mud-select-input .mud-icon-button{display:none !important}.mud-select.mud-autocomplete--with-progress .progress-indicator-circular{position:absolute;width:100%;top:0;bottom:0;display:flex;align-items:center;justify-content:flex-end;padding-top:.25rem;padding-bottom:.25rem;padding-right:1rem}.mud-select.mud-autocomplete--with-progress .mud-progress-linear{position:absolute;bottom:-1px;height:2px}.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-rtl-provider .mud-select .progress-indicator-circular--with-adornment{padding-right:1rem}.mud-rtl-provider.mud-application-layout-rtl .mud-select .progress-indicator-circular--with-adornment{padding-right:0rem !important;padding-left:1rem !important}.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;box-sizing:border-box;align-items:center;color-scheme:var(--mud-native-html-color-scheme);line-height:1.1876em}.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}@media(hover: hover)and (pointer: fine){.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, 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, 0.2, 1) 0ms;background-color:rgba(0,0,0,.09);border-top-left-radius:4px;border-top-right-radius:4px}@media(hover: hover)and (pointer: fine){.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(0.4, 0, 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, 0.2, 1) 0ms;border-bottom:2px solid var(--mud-palette-primary);pointer-events:none}@media(hover: hover)and (pointer: fine){.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:0px}.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%;min-width:0%;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(0.4, 0, 0.2, 1) 0ms}.mud-input.mud-input-outlined>.mud-input-outlined-border legend{float:none;visibility:hidden;font-size:.75rem;font-weight:inherit;width:0;height:0;margin:0 11px 0 11px;padding:0;position:relative}@media(hover: hover)and (pointer: fine){.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.mud-shrink>.mud-input-outlined-border legend{width:auto;padding:0 5px}.mud-input.mud-input-outlined:focus-within>.mud-input-outlined-border,.mud-input.mud-input-outlined:focus-within .mud-shrink>.mud-input-outlined-border{border-width:2px;border-color:var(--mud-palette-primary)}.mud-input.mud-input-outlined:focus-within>.mud-input-outlined-border legend,.mud-input.mud-input-outlined:focus-within .mud-shrink>.mud-input-outlined-border legend{width:auto;padding:0 5px}.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:1lh;margin:0;display:block;padding:6px 0 7px;min-width:0;background:none;position:relative;box-sizing:content-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mud-input>input.mud-input-root::placeholder,div.mud-input-slot.mud-input-root::placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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,.mud-input>input.mud-input-root:active,div.mud-input-slot.mud-input-root:focus,div.mud-input-slot.mud-input-root:active{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:rgba(0,0,0,0);resize:none;cursor:auto}.mud-input>textarea.mud-input-root::placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root::-webkit-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root:-moz-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root::-moz-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root:-ms-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root::-ms-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 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,.mud-input>textarea.mud-input-root:active{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{box-sizing:border-box;margin-top:0;margin-bottom:0;padding:27px 12px 10px;mask-image:linear-gradient(to bottom, transparent 27px, black 27px)}.mud-input>textarea.mud-input-root.mud-input-root-filled.mud-input-root-margin-dense{padding-top:23px;padding-bottom:6px;mask-image:linear-gradient(to bottom, transparent 23px, black 23px)}.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{padding-top:18px;padding-bottom:19px;mask-image:linear-gradient(to bottom, transparent 18px, black 18px)}.mud-input>textarea.mud-input-root.mud-input-root-filled.mud-input-root-hidden-label.mud-input-root-margin-dense{padding-top:10px;padding-bottom:11px;mask-image:linear-gradient(to bottom, transparent 10px, black 10px)}.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:rgba(0,0,0,0)}.mud-input>textarea.mud-input-root-outlined{box-sizing:border-box;margin-top:0;margin-bottom:0;padding:18.5px 14px;mask-image:linear-gradient(to bottom, transparent 18.5px, black 18.5px)}.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{padding-top:10.5px;padding-bottom:10.5px;mask-image:linear-gradient(to bottom, transparent 10.5px, black 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{margin-right:8px;margin-inline-end:8px;margin-inline-start:unset}.mud-input-adornment-start.mud-input-root-filled-shrink{margin-top:16px}.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}.mud-input-control.mud-input-control-full-width{width:100%}.mud-input-control.mud-input-control-boolean-input{flex:none;margin:0}.mud-input-control.mud-input-control-boolean-input .mud-radio-group{display:inherit;flex-direction:row;align-items:center;flex-wrap:wrap}.mud-input-control.mud-input-outlined-with-label{margin-top:8px;margin-bottom:4px}.mud-input-control.mud-input-control-margin-dense{margin:4px 0px}.mud-input-control.mud-input-control-margin-dense.mud-input-outlined-with-label{margin-top:8px;margin-bottom:4px}.mud-input-control.mud-input-control-margin-normal{margin:8px 0px}.mud-input-control.mud-input-control-margin-normal.mud-input-outlined-with-label{margin-top:16px;margin-bottom:8px}.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.mud-input-text-with-label{margin-top:16px}.mud-input-control>.mud-input-control-input-container>.mud-input-label-outlined.mud-input-label-inputcontrol{line-height:1.15rem}.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.15rem;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 0;min-width:unset;min-height:unset}.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-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, 0.2, 1) 0ms,transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms}.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;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.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(0.75);transform-origin:top left}.mud-input-label-animated{transition:color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,max-width 200ms cubic-bezier(0, 0, 0.2, 1) 0ms}.mud-input-label-filled{z-index:1;transform:translate(12px, 20px) scale(1);max-width:calc(100% - 12px);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);max-width:calc(100% - 14px);pointer-events:none;background-color:rgba(0,0,0,0);padding:0px 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(0.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(0.75);max-width:calc((100% - 12px)/.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(0.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(0.75);max-width:calc((100% - 14px)/.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(0.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(0.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(0.75)}.mud-input-content-placement-start{flex-direction:row-reverse}.mud-input-content-placement-start.mud-input-with-content{margin-left:16px;margin-inline-start:16px}.mud-input-content-placement-end{flex-direction:row}.mud-input-content-placement-end.mud-input-with-content{margin-right:16px;margin-inline-end:16px}.mud-input-content-placement-top{margin-inline-end:unset;flex-direction:column-reverse}.mud-input-content-placement-top.mud-input-with-content{margin-left:16px;margin-inline-start:16px}.mud-input-content-placement-bottom{margin-inline-end:unset;flex-direction:column}.mud-input-content-placement-bottom.mud-input-with-content{margin-left:16px;margin-inline-start:16px}.mud-file-upload{flex-grow:0}.mud-file-upload>.mud-input-control-input-container{display:initial !important}.mud-file-upload.mud-input-control{margin-top:0}.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(0.25, 0.8, 0.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:rgba(0,0,0,0);background-color:rgba(0,0,0,0);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:0px;padding:0px;list-style:none;overflow:auto}.mud-treeview.mud-treeview-selected-primary .mud-treeview-item-content.mud-treeview-item-selected{color:var(--mud-palette-primary);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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:0px;padding:0px;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:rgba(0,0,0,0)}.mud-treeview-item .mud-treeview-item-arrow .mud-icon-button,.mud-treeview-item .mud-treeview-item-checkbox .mud-icon-button{padding:4px}.mud-treeview-item.mud-treeview-item-disabled{color:var(--mud-palette-action-disabled) !important;cursor:default !important;pointer-events:none !important}.mud-treeview-item-content{width:100%;display:flex;padding:4px 8px;align-items:center;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.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(0.25, 0.8, 0.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}.mud-treeview-select-none{user-select:none}@keyframes rotation{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.mud-application-layout-rtl .mud-treeview-item-arrow{transform:scaleX(-1)}.mud-data-grid th{position:relative}.mud-data-grid .drop-allowed{color:var(--mud-palette-success)}.mud-data-grid .drop-not-allowed{color:var(--mud-palette-error)}.mud-data-grid .drag-icon-options{transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;opacity:0;cursor:grab}.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.filter-header-cell{padding:6px 24px 6px 16px;padding-inline-start:16px;padding-inline-end:24px}.mud-data-grid .mud-table-cell.sticky-left,.mud-data-grid .mud-table-cell.sticky-right{position:sticky;background-color:var(--mud-palette-background-gray);z-index:1}.mud-data-grid .mud-table-cell.sticky-left{left:0px}.mud-data-grid .mud-table-cell.sticky-right{right:0px}.mud-data-grid .mud-table-cell:not(.mud-table-child-content) .mud-input-text{margin-top:0 !important}.mud-data-grid .mud-table-cell .column-header{display:flex;align-items:center;justify-content:space-between}.mud-data-grid .mud-table-cell .column-header .sortable-column-header{width:100%}@media(hover: hover)and (pointer: fine){.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,.mud-data-grid .mud-table-cell .column-header:hover .column-options .drag-icon-options{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{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-inline-start:4px;margin-inline-end:unset;user-select:none;transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 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 .mud-sort-index{transform:scale(0.9) translate(-2px, -2px)}.mud-data-grid .mud-table-cell .column-header .column-options .mud-menu .mud-icon-button-label{user-select:none;transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;opacity:0}.mud-data-grid .mud-table-cell .mud-resizer{position:absolute;top:0;right:0;width:8px;cursor:col-resize;user-select:none}.mud-application-layout-rtl .mud-data-grid .mud-table-cell .mud-resizer{right:auto;left:0}@media(hover: hover)and (pointer: fine){.mud-data-grid .mud-table-cell .mud-resizer:hover{border-right:2px solid var(--mud-palette-primary)}}.mud-data-grid .mud-table-cell .mud-resizing{border-right:2px solid var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-data-grid-columns-panel:hover .column-options .sort-direction-icon,.mud-data-grid-columns-panel:hover .column-options .column-options-icon,.mud-data-grid-columns-panel:hover .column-options .drag-icon-options{opacity:.8;color:var(--mud-palette-action-default)}.mud-data-grid-columns-panel:hover .column-options .mud-menu .mud-icon-button-label{opacity:1;color:var(--mud-palette-action-default)}}.mud-data-grid-columns-panel .sort-direction-icon{font-size:18px;margin-left:4px;margin-inline-start:4px;margin-inline-end:unset;user-select:none;transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-data-grid-columns-panel .sort-direction-icon.mud-direction-desc{opacity:1;transform:rotate(180deg)}.mud-data-grid-columns-panel .sort-direction-icon.mud-direction-asc{opacity:1;transform:rotate(0deg)}.mud-data-grid-columns-panel .mud-sort-index{transform:scale(0.9) translate(-2px, -2px)}.mud-data-grid-columns-panel .drag-icon-options{transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;opacity:1;cursor:grab}.mud-data-grid-columns-panel .mud-drop-item-preview-start{z-index:0}.mud-toggle-group{display:grid;overflow:hidden;box-sizing:border-box;border-width:0;border-radius:var(--mud-default-borderradius)}.mud-toggle-group>.mud-toggle-item{box-shadow:none;border-width:inherit;border-style:none;border-color:inherit;border-radius:0}.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>.mud-toggle-item:not(:first-child),.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>:not(:first-child) .mud-toggle-item{margin-left:-1px}.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>.mud-toggle-item:not(:first-child).mud-toggle-item-delimiter,.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>:not(:first-child) .mud-toggle-item.mud-toggle-item-delimiter{border-left-style:solid !important}.mud-toggle-group-horizontal.mud-toggle-group-rtl>.mud-toggle-item:not(:last-child),.mud-toggle-group-horizontal.mud-toggle-group-rtl>:not(:last-child) .mud-toggle-item{margin-left:-1px}.mud-toggle-group-horizontal.mud-toggle-group-rtl>.mud-toggle-item:not(:last-child).mud-toggle-item-delimiter,.mud-toggle-group-horizontal.mud-toggle-group-rtl>:not(:last-child) .mud-toggle-item.mud-toggle-item-delimiter{border-left-style:solid !important}.mud-toggle-group-vertical>.mud-toggle-item:not(:first-child),.mud-toggle-group-vertical>:not(:first-child) .mud-toggle-item{margin-top:-1px}.mud-toggle-group-vertical>.mud-toggle-item:not(:first-child).mud-toggle-item-delimiter,.mud-toggle-group-vertical>:not(:first-child) .mud-toggle-item.mud-toggle-item-delimiter{border-top-style:solid !important}.mud-toggle-item{padding:6px;min-width:auto;border-style:none !important}.mud-toggle-item>.mud-button-label{min-height:20px}.mud-toggle-item .mud-toggle-item-check-icon{margin:0 6px;font-size:20px}.mud-toggle-item-size-small{padding:4px}.mud-toggle-item-size-small .mud-toggle-item-check-icon{margin:0 4px;font-size:18px}.mud-toggle-item-size-large{padding:8px}.mud-toggle-item-size-large .mud-toggle-item-check-icon{margin:0 8px;font-size:22px}.mud-toggle-item-fixed>.mud-button-label:has(>.mud-toggle-item-check-icon){display:grid;grid-template-columns:1fr auto 1fr}.mud-toggle-item-check-icon{justify-self:end}.mud-toggle-item-content{display:contents}.mud-stepper .mud-stepper-nav .mud-step{padding:24px;position:relative;cursor:default;pointer-events:none;user-select:text}.mud-stepper .mud-stepper-nav .mud-step.mud-clickable{cursor:pointer;pointer-events:auto;user-select:none;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.mud-stepper .mud-stepper-nav .mud-step.mud-clickable:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-stepper .mud-stepper-nav .mud-step.mud-clickable:focus-visible,.mud-stepper .mud-stepper-nav .mud-step.mud-clickable:active{background-color:var(--mud-palette-action-default-hover)}.mud-stepper .mud-stepper-nav .mud-step:disabled .mud-step-label-icon{background-color:var(--mud-palette-lines-default) !important;color:var(--mud-palette-text-disabled) !important}.mud-stepper .mud-stepper-nav .mud-step:disabled .mud-step-label-content{color:var(--mud-palette-text-disabled) !important}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label{display:flex;align-items:center;flex-direction:row;height:100%;gap:8px}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-icon{display:flex;flex-shrink:0;color:var(--mud-palette-white);border-radius:50%;background-color:var(--mud-palette-text-disabled);height:24px;width:24px;align-items:center;justify-content:center;font-size:12px;letter-spacing:0;text-indent:0;white-space:nowrap}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-icon .mud-typography{line-height:1}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-content{width:100%;color:var(--mud-palette-text-secondary);--mud-ripple-color: var(--mud-palette-text-secondary);text-align:start}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-content-title{line-height:var(--mud-typography-body2-lineheight)}.mud-stepper .mud-stepper-nav .mud-step.active .mud-step-label-content{color:var(--mud-palette-text-primary);--mud-ripple-color: var(--mud-palette-text-primary)}.mud-stepper .mud-stepper-nav.mud-stepper-nav-scrollable{overflow:auto}.mud-stepper .mud-stepper-nav.mud-stepper-nav-scrollable .mud-step{min-width:fit-content}.mud-stepper .mud-stepper-nav.mud-stepper-nav-scrollable .mud-stepper-nav-connector{min-width:32px}.mud-stepper .mud-stepper-content{padding:0 24px}.mud-stepper .mud-stepper-nav-connector{flex:1 1 auto}.mud-stepper .mud-stepper-nav-connector .mud-stepper-nav-connector-line{display:block;border-color:var(--mud-palette-lines-inputs)}.mud-stepper.mud-stepper__horizontal .mud-stepper-nav{display:flex}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step{flex-basis:175px}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step-label{flex-direction:column;justify-content:flex-start;align-items:center}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step-label .mud-step-label-icon{margin-inline-end:0px !important}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step-label .mud-step-label-content{margin-top:12px;text-align:center}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-stepper-nav-connector{margin:35px -67px 0;align-self:flex-start}.mud-stepper.mud-stepper__horizontal .mud-stepper-nav-connector{align-self:center;margin:0 -16px}.mud-stepper.mud-stepper__horizontal .mud-stepper-nav-connector .mud-stepper-nav-connector-line{border-top-style:solid;border-top-width:1px}.mud-stepper.mud-stepper__vertical .mud-stepper-nav{padding:8px 0px}.mud-stepper.mud-stepper__vertical .mud-step{padding:0 16px}.mud-stepper.mud-stepper__vertical .mud-step .mud-step-label{padding:8px 0px}.mud-stepper.mud-stepper__vertical .mud-stepper-nav-connector{margin-inline-start:28px;margin-inline-end:0}.mud-stepper.mud-stepper__vertical .mud-stepper-nav-connector .mud-stepper-nav-connector-line{border-inline-start:1px solid #bdbdbd;min-height:24px}.mud-stepper.mud-stepper__vertical .mud-stepper-content{margin-inline-start:28px;margin-inline-end:0;padding-inline-start:20px;padding-inline-end:0;border-inline-start:1px solid var(--mud-palette-lines-inputs)}.mud-stepper-step-button{display:inline-flex;-moz-box-align:center;align-items:center;-moz-box-pack:center;justify-content:center;position:relative;background-color:rgba(0,0,0,0);outline:0px;border:0px;border-radius:0px;cursor:pointer;user-select:none;vertical-align:middle;appearance:none;text-decoration:none;color:inherit;width:100%;padding:24px 16px;margin:-24px -16px;box-sizing:content-box}.mud-swipearea{touch-action:none}.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:0px !important}.border-t-0{border-top-width:0px !important}.border-r-0{border-right-width:0px !important}.border-b-0{border-bottom-width:0px !important}.border-l-0{border-left-width:0px !important}.border-x-0{border-left-width:0px !important;border-right-width:0px !important}.border-y-0{border-top-width:0px !important;border-bottom-width:0px !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-grow-start>*:first-child{flex-grow:1 !important}.flex-grow-end>*:last-child{flex-grow:1 !important}.flex-grow-start-and-end>:first-child,.flex-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-grow-all>*{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:0px}.gap-x-0{column-gap:0px}.gap-y-0{row-gap:0px}.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}.gap-17{gap:68px}.gap-x-17{column-gap:68px}.gap-y-17{row-gap:68px}.gap-18{gap:72px}.gap-x-18{column-gap:72px}.gap-y-18{row-gap:72px}.gap-19{gap:76px}.gap-x-19{column-gap:76px}.gap-y-19{row-gap:76px}.gap-20{gap:80px}.gap-x-20{column-gap:80px}.gap-y-20{row-gap:80px}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-sm-grow-end>*:last-child{flex-grow:1 !important}.flex-sm-grow-start-and-end>:first-child,.flex-sm-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-sm-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-sm-grow-all>*{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:0px}.gap-x-sm-0{column-gap:0px}.gap-y-sm-0{row-gap:0px}.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}.gap-sm-17{gap:68px}.gap-x-sm-17{column-gap:68px}.gap-y-sm-17{row-gap:68px}.gap-sm-18{gap:72px}.gap-x-sm-18{column-gap:72px}.gap-y-sm-18{row-gap:72px}.gap-sm-19{gap:76px}.gap-x-sm-19{column-gap:76px}.gap-y-sm-19{row-gap:76px}.gap-sm-20{gap:80px}.gap-x-sm-20{column-gap:80px}.gap-y-sm-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-md-grow-end>*:last-child{flex-grow:1 !important}.flex-md-grow-start-and-end>:first-child,.flex-md-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-md-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-md-grow-all>*{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:0px}.gap-x-md-0{column-gap:0px}.gap-y-md-0{row-gap:0px}.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}.gap-md-17{gap:68px}.gap-x-md-17{column-gap:68px}.gap-y-md-17{row-gap:68px}.gap-md-18{gap:72px}.gap-x-md-18{column-gap:72px}.gap-y-md-18{row-gap:72px}.gap-md-19{gap:76px}.gap-x-md-19{column-gap:76px}.gap-y-md-19{row-gap:76px}.gap-md-20{gap:80px}.gap-x-md-20{column-gap:80px}.gap-y-md-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-lg-grow-end>*:last-child{flex-grow:1 !important}.flex-lg-grow-start-and-end>:first-child,.flex-lg-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-lg-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-lg-grow-all>*{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:0px}.gap-x-lg-0{column-gap:0px}.gap-y-lg-0{row-gap:0px}.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}.gap-lg-17{gap:68px}.gap-x-lg-17{column-gap:68px}.gap-y-lg-17{row-gap:68px}.gap-lg-18{gap:72px}.gap-x-lg-18{column-gap:72px}.gap-y-lg-18{row-gap:72px}.gap-lg-19{gap:76px}.gap-x-lg-19{column-gap:76px}.gap-y-lg-19{row-gap:76px}.gap-lg-20{gap:80px}.gap-x-lg-20{column-gap:80px}.gap-y-lg-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-xl-grow-end>*:last-child{flex-grow:1 !important}.flex-xl-grow-start-and-end>:first-child,.flex-xl-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-xl-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-xl-grow-all>*{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:0px}.gap-x-xl-0{column-gap:0px}.gap-y-xl-0{row-gap:0px}.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}.gap-xl-17{gap:68px}.gap-x-xl-17{column-gap:68px}.gap-y-xl-17{row-gap:68px}.gap-xl-18{gap:72px}.gap-x-xl-18{column-gap:72px}.gap-y-xl-18{row-gap:72px}.gap-xl-19{gap:76px}.gap-x-xl-19{column-gap:76px}.gap-y-xl-19{row-gap:76px}.gap-xl-20{gap:80px}.gap-x-xl-20{column-gap:80px}.gap-y-xl-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-xxl-grow-end>*:last-child{flex-grow:1 !important}.flex-xxl-grow-start-and-end>:first-child,.flex-xxl-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-xxl-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-xxl-grow-all>*{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:0px}.gap-x-xxl-0{column-gap:0px}.gap-y-xxl-0{row-gap:0px}.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}.gap-xxl-17{gap:68px}.gap-x-xxl-17{column-gap:68px}.gap-y-xxl-17{row-gap:68px}.gap-xxl-18{gap:72px}.gap-x-xxl-18{column-gap:72px}.gap-y-xxl-18{row-gap:72px}.gap-xxl-19{gap:76px}.gap-x-xxl-19{column-gap:76px}.gap-y-xxl-19{row-gap:76px}.gap-xxl-20{gap:80px}.gap-x-xxl-20{column-gap:80px}.gap-y-xxl-20{row-gap:80px}}.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 !important}.object-cover{object-fit:cover !important}.object-contain{object-fit:contain !important}.object-fill{object-fit:fill !important}.object-scale-down{object-fit:scale-down !important}.object-center{object-position:center !important}.object-top{object-position:top !important}.object-bottom{object-position:bottom !important}.object-left{object-position:left !important}.object-left-top{object-position:left top !important}.object-left-bottom{object-position:left bottom !important}.object-right{object-position:right !important}.object-right-top{object-position:right top !important}.object-right-bottom{object-position:right bottom !important}.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 !important}.fixed{position:fixed !important}.relative{position:relative !important}.static{position:static !important}.sticky{position:sticky !important}.visible{visibility:visible}.invisible{visibility:hidden}[hidden]{display:none !important}.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-17,.my-17{margin-top:68px !important}.mr-17,.mx-17{margin-right:68px !important}.ml-17,.mx-17{margin-left:68px !important}.mb-17,.my-17{margin-bottom:68px !important}.ms-17{margin-inline-start:68px !important}.me-17{margin-inline-end:68px !important}.ma-17{margin:68px !important}.mt-18,.my-18{margin-top:72px !important}.mr-18,.mx-18{margin-right:72px !important}.ml-18,.mx-18{margin-left:72px !important}.mb-18,.my-18{margin-bottom:72px !important}.ms-18{margin-inline-start:72px !important}.me-18{margin-inline-end:72px !important}.ma-18{margin:72px !important}.mt-19,.my-19{margin-top:76px !important}.mr-19,.mx-19{margin-right:76px !important}.ml-19,.mx-19{margin-left:76px !important}.mb-19,.my-19{margin-bottom:76px !important}.ms-19{margin-inline-start:76px !important}.me-19{margin-inline-end:76px !important}.ma-19{margin:76px !important}.mt-20,.my-20{margin-top:80px !important}.mr-20,.mx-20{margin-right:80px !important}.ml-20,.mx-20{margin-left:80px !important}.mb-20,.my-20{margin-bottom:80px !important}.ms-20{margin-inline-start:80px !important}.me-20{margin-inline-end:80px !important}.ma-20{margin:80px !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-17,.py-17{padding-top:68px !important}.pr-17,.px-17{padding-right:68px !important}.pl-17,.px-17{padding-left:68px !important}.pb-17,.py-17{padding-bottom:68px !important}.ps-17{padding-inline-start:68px !important}.pe-17{padding-inline-end:68px !important}.pa-17{padding:68px !important}.pt-18,.py-18{padding-top:72px !important}.pr-18,.px-18{padding-right:72px !important}.pl-18,.px-18{padding-left:72px !important}.pb-18,.py-18{padding-bottom:72px !important}.ps-18{padding-inline-start:72px !important}.pe-18{padding-inline-end:72px !important}.pa-18{padding:72px !important}.pt-19,.py-19{padding-top:76px !important}.pr-19,.px-19{padding-right:76px !important}.pl-19,.px-19{padding-left:76px !important}.pb-19,.py-19{padding-bottom:76px !important}.ps-19{padding-inline-start:76px !important}.pe-19{padding-inline-end:76px !important}.pa-19{padding:76px !important}.pt-20,.py-20{padding-top:80px !important}.pr-20,.px-20{padding-right:80px !important}.pl-20,.px-20{padding-left:80px !important}.pb-20,.py-20{padding-bottom:80px !important}.ps-20{padding-inline-start:80px !important}.pe-20{padding-inline-end:80px !important}.pa-20{padding:80px !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}.mt-n17,.my-n17{margin-top:-68px !important}.mr-n17,.mx-n17{margin-right:-68px !important}.ml-n17,.mx-n17{margin-left:-68px !important}.mb-n17,.my-n17{margin-bottom:-68px !important}.ms-n17{margin-inline-start:-68px !important}.me-n17{margin-inline-end:-68px !important}.ma-n17{margin:-68px !important}.mt-n18,.my-n18{margin-top:-72px !important}.mr-n18,.mx-n18{margin-right:-72px !important}.ml-n18,.mx-n18{margin-left:-72px !important}.mb-n18,.my-n18{margin-bottom:-72px !important}.ms-n18{margin-inline-start:-72px !important}.me-n18{margin-inline-end:-72px !important}.ma-n18{margin:-72px !important}.mt-n19,.my-n19{margin-top:-76px !important}.mr-n19,.mx-n19{margin-right:-76px !important}.ml-n19,.mx-n19{margin-left:-76px !important}.mb-n19,.my-n19{margin-bottom:-76px !important}.ms-n19{margin-inline-start:-76px !important}.me-n19{margin-inline-end:-76px !important}.ma-n19{margin:-76px !important}.mt-n20,.my-n20{margin-top:-80px !important}.mr-n20,.mx-n20{margin-right:-80px !important}.ml-n20,.mx-n20{margin-left:-80px !important}.mb-n20,.my-n20{margin-bottom:-80px !important}.ms-n20{margin-inline-start:-80px !important}.me-n20{margin-inline-end:-80px !important}.ma-n20{margin:-80px !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-17,.my-sm-17{margin-top:68px !important}.mr-sm-17,.mx-sm-17{margin-right:68px !important}.ml-sm-17,.mx-sm-17{margin-left:68px !important}.mb-sm-17,.my-sm-17{margin-bottom:68px !important}.ms-sm-17{margin-inline-start:68px !important}.me-sm-17{margin-inline-end:68px !important}.ma-sm-17{margin:68px !important}.mt-sm-18,.my-sm-18{margin-top:72px !important}.mr-sm-18,.mx-sm-18{margin-right:72px !important}.ml-sm-18,.mx-sm-18{margin-left:72px !important}.mb-sm-18,.my-sm-18{margin-bottom:72px !important}.ms-sm-18{margin-inline-start:72px !important}.me-sm-18{margin-inline-end:72px !important}.ma-sm-18{margin:72px !important}.mt-sm-19,.my-sm-19{margin-top:76px !important}.mr-sm-19,.mx-sm-19{margin-right:76px !important}.ml-sm-19,.mx-sm-19{margin-left:76px !important}.mb-sm-19,.my-sm-19{margin-bottom:76px !important}.ms-sm-19{margin-inline-start:76px !important}.me-sm-19{margin-inline-end:76px !important}.ma-sm-19{margin:76px !important}.mt-sm-20,.my-sm-20{margin-top:80px !important}.mr-sm-20,.mx-sm-20{margin-right:80px !important}.ml-sm-20,.mx-sm-20{margin-left:80px !important}.mb-sm-20,.my-sm-20{margin-bottom:80px !important}.ms-sm-20{margin-inline-start:80px !important}.me-sm-20{margin-inline-end:80px !important}.ma-sm-20{margin:80px !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-17,.py-sm-17{padding-top:68px !important}.pr-sm-17,.px-sm-17{padding-right:68px !important}.pl-sm-17,.px-sm-17{padding-left:68px !important}.pb-sm-17,.py-sm-17{padding-bottom:68px !important}.ps-sm-17{padding-inline-start:68px !important}.pe-sm-17{padding-inline-end:68px !important}.pa-sm-17{padding:68px !important}.pt-sm-18,.py-sm-18{padding-top:72px !important}.pr-sm-18,.px-sm-18{padding-right:72px !important}.pl-sm-18,.px-sm-18{padding-left:72px !important}.pb-sm-18,.py-sm-18{padding-bottom:72px !important}.ps-sm-18{padding-inline-start:72px !important}.pe-sm-18{padding-inline-end:72px !important}.pa-sm-18{padding:72px !important}.pt-sm-19,.py-sm-19{padding-top:76px !important}.pr-sm-19,.px-sm-19{padding-right:76px !important}.pl-sm-19,.px-sm-19{padding-left:76px !important}.pb-sm-19,.py-sm-19{padding-bottom:76px !important}.ps-sm-19{padding-inline-start:76px !important}.pe-sm-19{padding-inline-end:76px !important}.pa-sm-19{padding:76px !important}.pt-sm-20,.py-sm-20{padding-top:80px !important}.pr-sm-20,.px-sm-20{padding-right:80px !important}.pl-sm-20,.px-sm-20{padding-left:80px !important}.pb-sm-20,.py-sm-20{padding-bottom:80px !important}.ps-sm-20{padding-inline-start:80px !important}.pe-sm-20{padding-inline-end:80px !important}.pa-sm-20{padding:80px !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}.mt-sm-n17,.my-sm-n17{margin-top:-68px !important}.mr-sm-n17,.mx-sm-n17{margin-right:-68px !important}.ml-sm-n17,.mx-sm-n17{margin-left:-68px !important}.mb-sm-n17,.my-sm-n17{margin-bottom:-68px !important}.ms-sm-n17{margin-inline-start:-68px !important}.me-sm-n17{margin-inline-end:-68px !important}.ma-sm-n17{margin:-68px !important}.mt-sm-n18,.my-sm-n18{margin-top:-72px !important}.mr-sm-n18,.mx-sm-n18{margin-right:-72px !important}.ml-sm-n18,.mx-sm-n18{margin-left:-72px !important}.mb-sm-n18,.my-sm-n18{margin-bottom:-72px !important}.ms-sm-n18{margin-inline-start:-72px !important}.me-sm-n18{margin-inline-end:-72px !important}.ma-sm-n18{margin:-72px !important}.mt-sm-n19,.my-sm-n19{margin-top:-76px !important}.mr-sm-n19,.mx-sm-n19{margin-right:-76px !important}.ml-sm-n19,.mx-sm-n19{margin-left:-76px !important}.mb-sm-n19,.my-sm-n19{margin-bottom:-76px !important}.ms-sm-n19{margin-inline-start:-76px !important}.me-sm-n19{margin-inline-end:-76px !important}.ma-sm-n19{margin:-76px !important}.mt-sm-n20,.my-sm-n20{margin-top:-80px !important}.mr-sm-n20,.mx-sm-n20{margin-right:-80px !important}.ml-sm-n20,.mx-sm-n20{margin-left:-80px !important}.mb-sm-n20,.my-sm-n20{margin-bottom:-80px !important}.ms-sm-n20{margin-inline-start:-80px !important}.me-sm-n20{margin-inline-end:-80px !important}.ma-sm-n20{margin:-80px !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-17,.my-md-17{margin-top:68px !important}.mr-md-17,.mx-md-17{margin-right:68px !important}.ml-md-17,.mx-md-17{margin-left:68px !important}.mb-md-17,.my-md-17{margin-bottom:68px !important}.ms-md-17{margin-inline-start:68px !important}.me-md-17{margin-inline-end:68px !important}.ma-md-17{margin:68px !important}.mt-md-18,.my-md-18{margin-top:72px !important}.mr-md-18,.mx-md-18{margin-right:72px !important}.ml-md-18,.mx-md-18{margin-left:72px !important}.mb-md-18,.my-md-18{margin-bottom:72px !important}.ms-md-18{margin-inline-start:72px !important}.me-md-18{margin-inline-end:72px !important}.ma-md-18{margin:72px !important}.mt-md-19,.my-md-19{margin-top:76px !important}.mr-md-19,.mx-md-19{margin-right:76px !important}.ml-md-19,.mx-md-19{margin-left:76px !important}.mb-md-19,.my-md-19{margin-bottom:76px !important}.ms-md-19{margin-inline-start:76px !important}.me-md-19{margin-inline-end:76px !important}.ma-md-19{margin:76px !important}.mt-md-20,.my-md-20{margin-top:80px !important}.mr-md-20,.mx-md-20{margin-right:80px !important}.ml-md-20,.mx-md-20{margin-left:80px !important}.mb-md-20,.my-md-20{margin-bottom:80px !important}.ms-md-20{margin-inline-start:80px !important}.me-md-20{margin-inline-end:80px !important}.ma-md-20{margin:80px !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-17,.py-md-17{padding-top:68px !important}.pr-md-17,.px-md-17{padding-right:68px !important}.pl-md-17,.px-md-17{padding-left:68px !important}.pb-md-17,.py-md-17{padding-bottom:68px !important}.ps-md-17{padding-inline-start:68px !important}.pe-md-17{padding-inline-end:68px !important}.pa-md-17{padding:68px !important}.pt-md-18,.py-md-18{padding-top:72px !important}.pr-md-18,.px-md-18{padding-right:72px !important}.pl-md-18,.px-md-18{padding-left:72px !important}.pb-md-18,.py-md-18{padding-bottom:72px !important}.ps-md-18{padding-inline-start:72px !important}.pe-md-18{padding-inline-end:72px !important}.pa-md-18{padding:72px !important}.pt-md-19,.py-md-19{padding-top:76px !important}.pr-md-19,.px-md-19{padding-right:76px !important}.pl-md-19,.px-md-19{padding-left:76px !important}.pb-md-19,.py-md-19{padding-bottom:76px !important}.ps-md-19{padding-inline-start:76px !important}.pe-md-19{padding-inline-end:76px !important}.pa-md-19{padding:76px !important}.pt-md-20,.py-md-20{padding-top:80px !important}.pr-md-20,.px-md-20{padding-right:80px !important}.pl-md-20,.px-md-20{padding-left:80px !important}.pb-md-20,.py-md-20{padding-bottom:80px !important}.ps-md-20{padding-inline-start:80px !important}.pe-md-20{padding-inline-end:80px !important}.pa-md-20{padding:80px !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}.mt-md-n17,.my-md-n17{margin-top:-68px !important}.mr-md-n17,.mx-md-n17{margin-right:-68px !important}.ml-md-n17,.mx-md-n17{margin-left:-68px !important}.mb-md-n17,.my-md-n17{margin-bottom:-68px !important}.ms-md-n17{margin-inline-start:-68px !important}.me-md-n17{margin-inline-end:-68px !important}.ma-md-n17{margin:-68px !important}.mt-md-n18,.my-md-n18{margin-top:-72px !important}.mr-md-n18,.mx-md-n18{margin-right:-72px !important}.ml-md-n18,.mx-md-n18{margin-left:-72px !important}.mb-md-n18,.my-md-n18{margin-bottom:-72px !important}.ms-md-n18{margin-inline-start:-72px !important}.me-md-n18{margin-inline-end:-72px !important}.ma-md-n18{margin:-72px !important}.mt-md-n19,.my-md-n19{margin-top:-76px !important}.mr-md-n19,.mx-md-n19{margin-right:-76px !important}.ml-md-n19,.mx-md-n19{margin-left:-76px !important}.mb-md-n19,.my-md-n19{margin-bottom:-76px !important}.ms-md-n19{margin-inline-start:-76px !important}.me-md-n19{margin-inline-end:-76px !important}.ma-md-n19{margin:-76px !important}.mt-md-n20,.my-md-n20{margin-top:-80px !important}.mr-md-n20,.mx-md-n20{margin-right:-80px !important}.ml-md-n20,.mx-md-n20{margin-left:-80px !important}.mb-md-n20,.my-md-n20{margin-bottom:-80px !important}.ms-md-n20{margin-inline-start:-80px !important}.me-md-n20{margin-inline-end:-80px !important}.ma-md-n20{margin:-80px !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-17,.my-lg-17{margin-top:68px !important}.mr-lg-17,.mx-lg-17{margin-right:68px !important}.ml-lg-17,.mx-lg-17{margin-left:68px !important}.mb-lg-17,.my-lg-17{margin-bottom:68px !important}.ms-lg-17{margin-inline-start:68px !important}.me-lg-17{margin-inline-end:68px !important}.ma-lg-17{margin:68px !important}.mt-lg-18,.my-lg-18{margin-top:72px !important}.mr-lg-18,.mx-lg-18{margin-right:72px !important}.ml-lg-18,.mx-lg-18{margin-left:72px !important}.mb-lg-18,.my-lg-18{margin-bottom:72px !important}.ms-lg-18{margin-inline-start:72px !important}.me-lg-18{margin-inline-end:72px !important}.ma-lg-18{margin:72px !important}.mt-lg-19,.my-lg-19{margin-top:76px !important}.mr-lg-19,.mx-lg-19{margin-right:76px !important}.ml-lg-19,.mx-lg-19{margin-left:76px !important}.mb-lg-19,.my-lg-19{margin-bottom:76px !important}.ms-lg-19{margin-inline-start:76px !important}.me-lg-19{margin-inline-end:76px !important}.ma-lg-19{margin:76px !important}.mt-lg-20,.my-lg-20{margin-top:80px !important}.mr-lg-20,.mx-lg-20{margin-right:80px !important}.ml-lg-20,.mx-lg-20{margin-left:80px !important}.mb-lg-20,.my-lg-20{margin-bottom:80px !important}.ms-lg-20{margin-inline-start:80px !important}.me-lg-20{margin-inline-end:80px !important}.ma-lg-20{margin:80px !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-17,.py-lg-17{padding-top:68px !important}.pr-lg-17,.px-lg-17{padding-right:68px !important}.pl-lg-17,.px-lg-17{padding-left:68px !important}.pb-lg-17,.py-lg-17{padding-bottom:68px !important}.ps-lg-17{padding-inline-start:68px !important}.pe-lg-17{padding-inline-end:68px !important}.pa-lg-17{padding:68px !important}.pt-lg-18,.py-lg-18{padding-top:72px !important}.pr-lg-18,.px-lg-18{padding-right:72px !important}.pl-lg-18,.px-lg-18{padding-left:72px !important}.pb-lg-18,.py-lg-18{padding-bottom:72px !important}.ps-lg-18{padding-inline-start:72px !important}.pe-lg-18{padding-inline-end:72px !important}.pa-lg-18{padding:72px !important}.pt-lg-19,.py-lg-19{padding-top:76px !important}.pr-lg-19,.px-lg-19{padding-right:76px !important}.pl-lg-19,.px-lg-19{padding-left:76px !important}.pb-lg-19,.py-lg-19{padding-bottom:76px !important}.ps-lg-19{padding-inline-start:76px !important}.pe-lg-19{padding-inline-end:76px !important}.pa-lg-19{padding:76px !important}.pt-lg-20,.py-lg-20{padding-top:80px !important}.pr-lg-20,.px-lg-20{padding-right:80px !important}.pl-lg-20,.px-lg-20{padding-left:80px !important}.pb-lg-20,.py-lg-20{padding-bottom:80px !important}.ps-lg-20{padding-inline-start:80px !important}.pe-lg-20{padding-inline-end:80px !important}.pa-lg-20{padding:80px !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}.mt-lg-n17,.my-lg-n17{margin-top:-68px !important}.mr-lg-n17,.mx-lg-n17{margin-right:-68px !important}.ml-lg-n17,.mx-lg-n17{margin-left:-68px !important}.mb-lg-n17,.my-lg-n17{margin-bottom:-68px !important}.ms-lg-n17{margin-inline-start:-68px !important}.me-lg-n17{margin-inline-end:-68px !important}.ma-lg-n17{margin:-68px !important}.mt-lg-n18,.my-lg-n18{margin-top:-72px !important}.mr-lg-n18,.mx-lg-n18{margin-right:-72px !important}.ml-lg-n18,.mx-lg-n18{margin-left:-72px !important}.mb-lg-n18,.my-lg-n18{margin-bottom:-72px !important}.ms-lg-n18{margin-inline-start:-72px !important}.me-lg-n18{margin-inline-end:-72px !important}.ma-lg-n18{margin:-72px !important}.mt-lg-n19,.my-lg-n19{margin-top:-76px !important}.mr-lg-n19,.mx-lg-n19{margin-right:-76px !important}.ml-lg-n19,.mx-lg-n19{margin-left:-76px !important}.mb-lg-n19,.my-lg-n19{margin-bottom:-76px !important}.ms-lg-n19{margin-inline-start:-76px !important}.me-lg-n19{margin-inline-end:-76px !important}.ma-lg-n19{margin:-76px !important}.mt-lg-n20,.my-lg-n20{margin-top:-80px !important}.mr-lg-n20,.mx-lg-n20{margin-right:-80px !important}.ml-lg-n20,.mx-lg-n20{margin-left:-80px !important}.mb-lg-n20,.my-lg-n20{margin-bottom:-80px !important}.ms-lg-n20{margin-inline-start:-80px !important}.me-lg-n20{margin-inline-end:-80px !important}.ma-lg-n20{margin:-80px !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-17,.my-xl-17{margin-top:68px !important}.mr-xl-17,.mx-xl-17{margin-right:68px !important}.ml-xl-17,.mx-xl-17{margin-left:68px !important}.mb-xl-17,.my-xl-17{margin-bottom:68px !important}.ms-xl-17{margin-inline-start:68px !important}.me-xl-17{margin-inline-end:68px !important}.ma-xl-17{margin:68px !important}.mt-xl-18,.my-xl-18{margin-top:72px !important}.mr-xl-18,.mx-xl-18{margin-right:72px !important}.ml-xl-18,.mx-xl-18{margin-left:72px !important}.mb-xl-18,.my-xl-18{margin-bottom:72px !important}.ms-xl-18{margin-inline-start:72px !important}.me-xl-18{margin-inline-end:72px !important}.ma-xl-18{margin:72px !important}.mt-xl-19,.my-xl-19{margin-top:76px !important}.mr-xl-19,.mx-xl-19{margin-right:76px !important}.ml-xl-19,.mx-xl-19{margin-left:76px !important}.mb-xl-19,.my-xl-19{margin-bottom:76px !important}.ms-xl-19{margin-inline-start:76px !important}.me-xl-19{margin-inline-end:76px !important}.ma-xl-19{margin:76px !important}.mt-xl-20,.my-xl-20{margin-top:80px !important}.mr-xl-20,.mx-xl-20{margin-right:80px !important}.ml-xl-20,.mx-xl-20{margin-left:80px !important}.mb-xl-20,.my-xl-20{margin-bottom:80px !important}.ms-xl-20{margin-inline-start:80px !important}.me-xl-20{margin-inline-end:80px !important}.ma-xl-20{margin:80px !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-17,.py-xl-17{padding-top:68px !important}.pr-xl-17,.px-xl-17{padding-right:68px !important}.pl-xl-17,.px-xl-17{padding-left:68px !important}.pb-xl-17,.py-xl-17{padding-bottom:68px !important}.ps-xl-17{padding-inline-start:68px !important}.pe-xl-17{padding-inline-end:68px !important}.pa-xl-17{padding:68px !important}.pt-xl-18,.py-xl-18{padding-top:72px !important}.pr-xl-18,.px-xl-18{padding-right:72px !important}.pl-xl-18,.px-xl-18{padding-left:72px !important}.pb-xl-18,.py-xl-18{padding-bottom:72px !important}.ps-xl-18{padding-inline-start:72px !important}.pe-xl-18{padding-inline-end:72px !important}.pa-xl-18{padding:72px !important}.pt-xl-19,.py-xl-19{padding-top:76px !important}.pr-xl-19,.px-xl-19{padding-right:76px !important}.pl-xl-19,.px-xl-19{padding-left:76px !important}.pb-xl-19,.py-xl-19{padding-bottom:76px !important}.ps-xl-19{padding-inline-start:76px !important}.pe-xl-19{padding-inline-end:76px !important}.pa-xl-19{padding:76px !important}.pt-xl-20,.py-xl-20{padding-top:80px !important}.pr-xl-20,.px-xl-20{padding-right:80px !important}.pl-xl-20,.px-xl-20{padding-left:80px !important}.pb-xl-20,.py-xl-20{padding-bottom:80px !important}.ps-xl-20{padding-inline-start:80px !important}.pe-xl-20{padding-inline-end:80px !important}.pa-xl-20{padding:80px !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}.mt-xl-n17,.my-xl-n17{margin-top:-68px !important}.mr-xl-n17,.mx-xl-n17{margin-right:-68px !important}.ml-xl-n17,.mx-xl-n17{margin-left:-68px !important}.mb-xl-n17,.my-xl-n17{margin-bottom:-68px !important}.ms-xl-n17{margin-inline-start:-68px !important}.me-xl-n17{margin-inline-end:-68px !important}.ma-xl-n17{margin:-68px !important}.mt-xl-n18,.my-xl-n18{margin-top:-72px !important}.mr-xl-n18,.mx-xl-n18{margin-right:-72px !important}.ml-xl-n18,.mx-xl-n18{margin-left:-72px !important}.mb-xl-n18,.my-xl-n18{margin-bottom:-72px !important}.ms-xl-n18{margin-inline-start:-72px !important}.me-xl-n18{margin-inline-end:-72px !important}.ma-xl-n18{margin:-72px !important}.mt-xl-n19,.my-xl-n19{margin-top:-76px !important}.mr-xl-n19,.mx-xl-n19{margin-right:-76px !important}.ml-xl-n19,.mx-xl-n19{margin-left:-76px !important}.mb-xl-n19,.my-xl-n19{margin-bottom:-76px !important}.ms-xl-n19{margin-inline-start:-76px !important}.me-xl-n19{margin-inline-end:-76px !important}.ma-xl-n19{margin:-76px !important}.mt-xl-n20,.my-xl-n20{margin-top:-80px !important}.mr-xl-n20,.mx-xl-n20{margin-right:-80px !important}.ml-xl-n20,.mx-xl-n20{margin-left:-80px !important}.mb-xl-n20,.my-xl-n20{margin-bottom:-80px !important}.ms-xl-n20{margin-inline-start:-80px !important}.me-xl-n20{margin-inline-end:-80px !important}.ma-xl-n20{margin:-80px !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-17,.my-xxl-17{margin-top:68px !important}.mr-xxl-17,.mx-xxl-17{margin-right:68px !important}.ml-xxl-17,.mx-xxl-17{margin-left:68px !important}.mb-xxl-17,.my-xxl-17{margin-bottom:68px !important}.ms-xxl-17{margin-inline-start:68px !important}.me-xxl-17{margin-inline-end:68px !important}.ma-xxl-17{margin:68px !important}.mt-xxl-18,.my-xxl-18{margin-top:72px !important}.mr-xxl-18,.mx-xxl-18{margin-right:72px !important}.ml-xxl-18,.mx-xxl-18{margin-left:72px !important}.mb-xxl-18,.my-xxl-18{margin-bottom:72px !important}.ms-xxl-18{margin-inline-start:72px !important}.me-xxl-18{margin-inline-end:72px !important}.ma-xxl-18{margin:72px !important}.mt-xxl-19,.my-xxl-19{margin-top:76px !important}.mr-xxl-19,.mx-xxl-19{margin-right:76px !important}.ml-xxl-19,.mx-xxl-19{margin-left:76px !important}.mb-xxl-19,.my-xxl-19{margin-bottom:76px !important}.ms-xxl-19{margin-inline-start:76px !important}.me-xxl-19{margin-inline-end:76px !important}.ma-xxl-19{margin:76px !important}.mt-xxl-20,.my-xxl-20{margin-top:80px !important}.mr-xxl-20,.mx-xxl-20{margin-right:80px !important}.ml-xxl-20,.mx-xxl-20{margin-left:80px !important}.mb-xxl-20,.my-xxl-20{margin-bottom:80px !important}.ms-xxl-20{margin-inline-start:80px !important}.me-xxl-20{margin-inline-end:80px !important}.ma-xxl-20{margin:80px !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-17,.py-xxl-17{padding-top:68px !important}.pr-xxl-17,.px-xxl-17{padding-right:68px !important}.pl-xxl-17,.px-xxl-17{padding-left:68px !important}.pb-xxl-17,.py-xxl-17{padding-bottom:68px !important}.ps-xxl-17{padding-inline-start:68px !important}.pe-xxl-17{padding-inline-end:68px !important}.pa-xxl-17{padding:68px !important}.pt-xxl-18,.py-xxl-18{padding-top:72px !important}.pr-xxl-18,.px-xxl-18{padding-right:72px !important}.pl-xxl-18,.px-xxl-18{padding-left:72px !important}.pb-xxl-18,.py-xxl-18{padding-bottom:72px !important}.ps-xxl-18{padding-inline-start:72px !important}.pe-xxl-18{padding-inline-end:72px !important}.pa-xxl-18{padding:72px !important}.pt-xxl-19,.py-xxl-19{padding-top:76px !important}.pr-xxl-19,.px-xxl-19{padding-right:76px !important}.pl-xxl-19,.px-xxl-19{padding-left:76px !important}.pb-xxl-19,.py-xxl-19{padding-bottom:76px !important}.ps-xxl-19{padding-inline-start:76px !important}.pe-xxl-19{padding-inline-end:76px !important}.pa-xxl-19{padding:76px !important}.pt-xxl-20,.py-xxl-20{padding-top:80px !important}.pr-xxl-20,.px-xxl-20{padding-right:80px !important}.pl-xxl-20,.px-xxl-20{padding-left:80px !important}.pb-xxl-20,.py-xxl-20{padding-bottom:80px !important}.ps-xxl-20{padding-inline-start:80px !important}.pe-xxl-20{padding-inline-end:80px !important}.pa-xxl-20{padding:80px !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}.mt-xxl-n17,.my-xxl-n17{margin-top:-68px !important}.mr-xxl-n17,.mx-xxl-n17{margin-right:-68px !important}.ml-xxl-n17,.mx-xxl-n17{margin-left:-68px !important}.mb-xxl-n17,.my-xxl-n17{margin-bottom:-68px !important}.ms-xxl-n17{margin-inline-start:-68px !important}.me-xxl-n17{margin-inline-end:-68px !important}.ma-xxl-n17{margin:-68px !important}.mt-xxl-n18,.my-xxl-n18{margin-top:-72px !important}.mr-xxl-n18,.mx-xxl-n18{margin-right:-72px !important}.ml-xxl-n18,.mx-xxl-n18{margin-left:-72px !important}.mb-xxl-n18,.my-xxl-n18{margin-bottom:-72px !important}.ms-xxl-n18{margin-inline-start:-72px !important}.me-xxl-n18{margin-inline-end:-72px !important}.ma-xxl-n18{margin:-72px !important}.mt-xxl-n19,.my-xxl-n19{margin-top:-76px !important}.mr-xxl-n19,.mx-xxl-n19{margin-right:-76px !important}.ml-xxl-n19,.mx-xxl-n19{margin-left:-76px !important}.mb-xxl-n19,.my-xxl-n19{margin-bottom:-76px !important}.ms-xxl-n19{margin-inline-start:-76px !important}.me-xxl-n19{margin-inline-end:-76px !important}.ma-xxl-n19{margin:-76px !important}.mt-xxl-n20,.my-xxl-n20{margin-top:-80px !important}.mr-xxl-n20,.mx-xxl-n20{margin-right:-80px !important}.ml-xxl-n20,.mx-xxl-n20{margin-left:-80px !important}.mb-xxl-n20,.my-xxl-n20{margin-bottom:-80px !important}.ms-xxl-n20{margin-inline-start:-80px !important}.me-xxl-n20{margin-inline-end:-80px !important}.ma-xxl-n20{margin:-80px !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, 0.2, 1) 0ms,width 225ms cubic-bezier(0, 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: 0px)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: 0px){.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: 0px){.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: 0px){.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: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: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, 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, 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, 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, 0.2, 1)}.mud-drawer.mud-drawer-mini{height:100%;transition:width 225ms cubic-bezier(0, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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% - (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% - (var(--mud-appbar-height) - var(--mud-appbar-height)/8))}}@media(min-width: 0px){.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: 0px)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: 0px)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: 0px){.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, 0.2, 1) 0ms}@media(min-width: 0px)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: 0px){.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)}.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)}.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)}.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)}.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)}.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)}.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}.mud-container--gutters{padding-left:16px;padding-right:16px}@media(min-width: 600px){.mud-container--gutters{padding-left:24px;padding-right:24px}}@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: 0px){.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}.scroll-locked-no-padding{overflow:hidden}@-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:rgba(0,0,0,0);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-gray{background-color:#607d8b}.blue-gray-text{color:#607d8b}.blue-gray.lighten-5{background-color:#eceff1}.blue-gray-text.text-lighten-5{color:#eceff1}.blue-gray.lighten-4{background-color:#cfd8dc}.blue-gray-text.text-lighten-4{color:#cfd8dc}.blue-gray.lighten-3{background-color:#b0bec5}.blue-gray-text.text-lighten-3{color:#b0bec5}.blue-gray.lighten-2{background-color:#90a4ae}.blue-gray-text.text-lighten-2{color:#90a4ae}.blue-gray.lighten-1{background-color:#78909c}.blue-gray-text.text-lighten-1{color:#78909c}.blue-gray.darken-1{background-color:#546e7a}.blue-gray-text.text-darken-1{color:#546e7a}.blue-gray.darken-2{background-color:#455a64}.blue-gray-text.text-darken-2{color:#455a64}.blue-gray.darken-3{background-color:#37474f}.blue-gray-text.text-darken-3{color:#37474f}.blue-gray.darken-4{background-color:#263238}.blue-gray-text.text-darken-4{color:#263238}.gray{background-color:#9e9e9e}.gray-text{color:#9e9e9e}.gray.lighten-5{background-color:#fafafa}.gray-text.text-lighten-5{color:#fafafa}.gray.lighten-4{background-color:#f5f5f5}.gray-text.text-lighten-4{color:#f5f5f5}.gray.lighten-3{background-color:#eee}.gray-text.text-lighten-3{color:#eee}.gray.lighten-2{background-color:#e0e0e0}.gray-text.text-lighten-2{color:#e0e0e0}.gray.lighten-1{background-color:#bdbdbd}.gray-text.text-lighten-1{color:#bdbdbd}.gray.darken-1{background-color:#757575}.gray-text.text-darken-1{color:#757575}.gray.darken-2{background-color:#616161}.gray-text.text-darken-2{color:#616161}.gray.darken-3{background-color:#424242}.gray-text.text-darken-3{color:#424242}.gray.darken-4{background-color:#212121}.gray-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:rgba(0,0,0,0)}.shades-text.text-transparent{color:rgba(0,0,0,0)}.mud-ripple{--mud-ripple-offset-x: 0;--mud-ripple-offset-y: 0;position:relative;overflow:hidden}.mud-ripple:after{content:"";display:block;position:absolute;width:100%;height:100%;top:var(--mud-ripple-offset-y);left:var(--mud-ripple-offset-x);pointer-events:none;background-image:radial-gradient(circle, var(--mud-ripple-color) 10%, transparent 10.01%);background-repeat:no-repeat;background-position:50%;transform:scale(20, 20);opacity:0;transition:transform .6s,opacity 1s}.mud-ripple:active:after{transform:scale(0, 0);opacity:var(--mud-ripple-opacity);transition:0s}.mud-ripple:has(.mud-ripple:active):after{opacity:0}.mud-ripple-icon:after,.mud-ripple-checkbox:after,.mud-ripple-switch:after,.mud-ripple-radio:after{transform:scale(14, 14)}.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)} + */.mud-primary{background-color:var(--mud-palette-primary) !important}.mud-primary-text{color:var(--mud-palette-primary) !important;--mud-ripple-color: var(--mud-palette-primary) !important}.mud-primary-hover{background-color:var(--mud-palette-primary-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-primary-hover:hover{background-color:var(--mud-palette-primary-hover) !important}}.hover\:mud-primary-hover:focus-visible,.hover\:mud-primary-hover:active{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-ripple-color: var(--mud-palette-secondary) !important}.mud-secondary-hover{background-color:var(--mud-palette-secondary-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-secondary-hover:hover{background-color:var(--mud-palette-secondary-hover) !important}}.hover\:mud-secondary-hover:focus-visible,.hover\:mud-secondary-hover:active{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-ripple-color: var(--mud-palette-tertiary) !important}.mud-tertiary-hover{background-color:var(--mud-palette-tertiary-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-tertiary-hover:hover{background-color:var(--mud-palette-tertiary-hover) !important}}.hover\:mud-tertiary-hover:focus-visible,.hover\:mud-tertiary-hover:active{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-ripple-color: var(--mud-palette-info) !important}.mud-info-hover{background-color:var(--mud-palette-info-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-info-hover:hover{background-color:var(--mud-palette-info-hover) !important}}.hover\:mud-info-hover:focus-visible,.hover\:mud-info-hover:active{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-ripple-color: var(--mud-palette-success) !important}.mud-success-hover{background-color:var(--mud-palette-success-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-success-hover:hover{background-color:var(--mud-palette-success-hover) !important}}.hover\:mud-success-hover:focus-visible,.hover\:mud-success-hover:active{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-ripple-color: var(--mud-palette-warning) !important}.mud-warning-hover{background-color:var(--mud-palette-warning-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-warning-hover:hover{background-color:var(--mud-palette-warning-hover) !important}}.hover\:mud-warning-hover:focus-visible,.hover\:mud-warning-hover:active{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-ripple-color: var(--mud-palette-error) !important}.mud-error-hover{background-color:var(--mud-palette-error-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-error-hover:hover{background-color:var(--mud-palette-error-hover) !important}}.hover\:mud-error-hover:focus-visible,.hover\:mud-error-hover:active{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-ripple-color: var(--mud-palette-dark) !important}.mud-dark-hover{background-color:var(--mud-palette-dark-hover) !important}@media(hover: hover)and (pointer: fine){.hover\:mud-dark-hover:hover{background-color:var(--mud-palette-dark-hover) !important}}.hover\:mud-dark-hover:focus-visible,.hover\:mud-dark-hover:active{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-gray) !important}.mud-theme-transparent{color:inherit !important;background-color:rgba(0,0,0,0) !important}.mud-transparent{background-color:rgba(0,0,0,0) !important}.mud-transparent-text{color:rgba(0,0,0,0) !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;-webkit-tap-highlight-color:rgba(0,0,0,0)}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-color:var(--mud-palette-error);color:var(--mud-palette-error-text);bottom:0;box-shadow:0 -1px 2px rgba(0,0,0,.2);display:none;left:0;padding:.6rem 1.75rem .7rem 1.25rem;position:fixed;width:100%;z-index:9999}#blazor-error-ui .reload{color:inherit;text-decoration:underline}#blazor-error-ui .dismiss{color:inherit;cursor:pointer;position:absolute;right:.75rem;top:.5rem}#components-reconnect-modal{z-index:9999 !important;background-color:var(--mud-palette-background) !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(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 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}@media(hover: hover)and (pointer: fine){#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(0.5);transform:scale(0.5)}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes mud-scale-up-center{0%{-webkit-transform:scale(0.5);transform:scale(0.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:0px}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 50%}50%{opacity:0;background-position:0 50%}100%{opacity:1;background-position:-200px 50%}}@-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:50% 0}50%{opacity:0;background-position:50% 0}100%{opacity:1;background-position:50% -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:rgba(0,0,0,0);-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}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%}.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:rgba(0,0,0,0);transition:box-shadow 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-alert.mud-square{border-radius:0px}.mud-alert.mud-dense{padding:0px 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-normal .mud-alert-close .mud-button-root{color:currentColor}.mud-alert-filled-primary{color:var(--mud-palette-primary-text);font-weight:500;background-color:var(--mud-palette-primary)}.mud-alert-filled-primary .mud-button-root{color:currentColor}.mud-alert-filled-secondary{color:var(--mud-palette-secondary-text);font-weight:500;background-color:var(--mud-palette-secondary)}.mud-alert-filled-secondary .mud-button-root{color:currentColor}.mud-alert-filled-tertiary{color:var(--mud-palette-tertiary-text);font-weight:500;background-color:var(--mud-palette-tertiary)}.mud-alert-filled-tertiary .mud-button-root{color:currentColor}.mud-alert-filled-info{color:var(--mud-palette-info-text);font-weight:500;background-color:var(--mud-palette-info)}.mud-alert-filled-info .mud-button-root{color:currentColor}.mud-alert-filled-success{color:var(--mud-palette-success-text);font-weight:500;background-color:var(--mud-palette-success)}.mud-alert-filled-success .mud-button-root{color:currentColor}.mud-alert-filled-warning{color:var(--mud-palette-warning-text);font-weight:500;background-color:var(--mud-palette-warning)}.mud-alert-filled-warning .mud-button-root{color:currentColor}.mud-alert-filled-error{color:var(--mud-palette-error-text);font-weight:500;background-color:var(--mud-palette-error)}.mud-alert-filled-error .mud-button-root{color:currentColor}.mud-alert-filled-dark{color:var(--mud-palette-dark-text);font-weight:500;background-color:var(--mud-palette-dark)}.mud-alert-filled-dark .mud-button-root{color:currentColor}.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;align-items:start}.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(0.25, 0.8, 0.5, 1);white-space:nowrap}.mud-badge.mud-badge-default{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-gray-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-icon{width:20px;height:20px}.mud-badge.mud-badge-icon .mud-icon-badge{color:inherit;font-size:12px}.mud-badge.mud-badge-dot{border-radius:50%;height:9px;min-width:0;padding:0;width:9px}.mud-badge.mud-badge{display:flex;align-items:center;justify-content:center}.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;--mud-internal-toolbar-height: 56px;height:var(--mud-internal-toolbar-height)}.mud-toolbar-gutters{padding-left:16px;padding-right:16px}@media(min-width: 0px)and (orientation: landscape){.mud-toolbar{--mud-internal-toolbar-height: 48px}}@media(min-width: 600px){.mud-toolbar{--mud-internal-toolbar-height: 64px}.mud-toolbar-gutters{padding-left:24px;padding-right:24px}}.mud-toolbar-dense{--mud-internal-toolbar-height: 48px}.mud-toolbar.mud-toolbar-wrap-content{height:auto;min-height:var(--mud-internal-toolbar-height);flex-wrap:wrap}.mud-toolbar.mud-toolbar-wrap-content.mud-toolbar-appbar{min-height:min(var(--mud-appbar-height),var(--mud-internal-toolbar-height))}.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-gray-darker)}.mud-tooltip.mud-tooltip-default.mud-tooltip-arrow::after{border-color:var(--mud-palette-gray-darker) rgba(0,0,0,0) rgba(0,0,0,0) rgba(0,0,0,0)}.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:rgba(0,0,0,0);border-top-color:inherit}.mud-avatar{display:inline-flex;overflow:hidden;position:relative;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-gray-light)}.mud-avatar.mud-avatar-small{width:24px;height:24px;font-size:.75rem}.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.5rem}.mud-avatar-rounded{border-radius:var(--mud-default-borderradius)}.mud-avatar-square{border-radius:0}.mud-avatar>.mud-image{color:rgba(0,0,0,0);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-text-primary);background-color:var(--mud-palette-lines-inputs)}.mud-avatar-filled.mud-avatar-filled-primary{color:var(--mud-palette-primary-text);background-color:var(--mud-palette-primary)}.mud-avatar-filled.mud-avatar-filled-secondary{color:var(--mud-palette-secondary-text);background-color:var(--mud-palette-secondary)}.mud-avatar-filled.mud-avatar-filled-tertiary{color:var(--mud-palette-tertiary-text);background-color:var(--mud-palette-tertiary)}.mud-avatar-filled.mud-avatar-filled-info{color:var(--mud-palette-info-text);background-color:var(--mud-palette-info)}.mud-avatar-filled.mud-avatar-filled-success{color:var(--mud-palette-success-text);background-color:var(--mud-palette-success)}.mud-avatar-filled.mud-avatar-filled-warning{color:var(--mud-palette-warning-text);background-color:var(--mud-palette-warning)}.mud-avatar-filled.mud-avatar-filled-error{color:var(--mud-palette-error-text);background-color:var(--mud-palette-error)}.mud-avatar-filled.mud-avatar-filled-dark{color:var(--mud-palette-dark-text);background-color:var(--mud-palette-dark)}.mud-avatar-group{display:flex}.mud-avatar-group .mud-avatar:first-child{margin-inline-start:0px !important}.mud-avatar-group.mud-avatar-group-outlined.mud-avatar-group-outlined-transparent .mud-avatar:not(.mud-avatar-outlined){border-color:rgba(0,0,0,0)}.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:none;margin:0;padding:16px 12px}.mud-breadcrumb-separator{display:inline-flex;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}@media(hover: hover)and (pointer: fine){.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:rgba(0,0,0,0);-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.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(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:var(--mud-default-borderradius);color:var(--mud-palette-text-primary);--mud-ripple-color: var(--mud-palette-text-primary)}@media(hover: hover)and (pointer: fine){.mud-button:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-button:focus-visible,.mud-button:active{background-color:var(--mud-palette-action-default-hover)}.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-ripple-color: var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-primary:hover{background-color:var(--mud-palette-primary-hover)}}.mud-button-text.mud-button-text-primary:focus-visible,.mud-button-text.mud-button-text-primary:active{background-color:var(--mud-palette-primary-hover)}.mud-button-text.mud-button-text-secondary{color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-secondary:hover{background-color:var(--mud-palette-secondary-hover)}}.mud-button-text.mud-button-text-secondary:focus-visible,.mud-button-text.mud-button-text-secondary:active{background-color:var(--mud-palette-secondary-hover)}.mud-button-text.mud-button-text-tertiary{color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-tertiary:hover{background-color:var(--mud-palette-tertiary-hover)}}.mud-button-text.mud-button-text-tertiary:focus-visible,.mud-button-text.mud-button-text-tertiary:active{background-color:var(--mud-palette-tertiary-hover)}.mud-button-text.mud-button-text-info{color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-info:hover{background-color:var(--mud-palette-info-hover)}}.mud-button-text.mud-button-text-info:focus-visible,.mud-button-text.mud-button-text-info:active{background-color:var(--mud-palette-info-hover)}.mud-button-text.mud-button-text-success{color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-success:hover{background-color:var(--mud-palette-success-hover)}}.mud-button-text.mud-button-text-success:focus-visible,.mud-button-text.mud-button-text-success:active{background-color:var(--mud-palette-success-hover)}.mud-button-text.mud-button-text-warning{color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-warning:hover{background-color:var(--mud-palette-warning-hover)}}.mud-button-text.mud-button-text-warning:focus-visible,.mud-button-text.mud-button-text-warning:active{background-color:var(--mud-palette-warning-hover)}.mud-button-text.mud-button-text-error{color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-error:hover{background-color:var(--mud-palette-error-hover)}}.mud-button-text.mud-button-text-error:focus-visible,.mud-button-text.mud-button-text-error:active{background-color:var(--mud-palette-error-hover)}.mud-button-text.mud-button-text-dark{color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-text.mud-button-text-dark:hover{background-color:var(--mud-palette-dark-hover)}}.mud-button-text.mud-button-text-dark:focus-visible,.mud-button-text.mud-button-text-dark:active{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}@media(hover: hover)and (pointer: fine){.mud-button-outlined:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-button-outlined:focus-visible,.mud-button-outlined:active{background-color:var(--mud-palette-action-default-hover)}.mud-button-outlined.mud-button-outlined-primary{color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary);border:1px solid var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-primary:hover{border:1px solid var(--mud-palette-primary);background-color:var(--mud-palette-primary-hover)}}.mud-button-outlined.mud-button-outlined-primary:focus-visible,.mud-button-outlined.mud-button-outlined-primary:active{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);--mud-ripple-color: var(--mud-palette-secondary);border:1px solid var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-secondary:hover{border:1px solid var(--mud-palette-secondary);background-color:var(--mud-palette-secondary-hover)}}.mud-button-outlined.mud-button-outlined-secondary:focus-visible,.mud-button-outlined.mud-button-outlined-secondary:active{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);--mud-ripple-color: var(--mud-palette-tertiary);border:1px solid var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-tertiary:hover{border:1px solid var(--mud-palette-tertiary);background-color:var(--mud-palette-tertiary-hover)}}.mud-button-outlined.mud-button-outlined-tertiary:focus-visible,.mud-button-outlined.mud-button-outlined-tertiary:active{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);--mud-ripple-color: var(--mud-palette-info);border:1px solid var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-info:hover{border:1px solid var(--mud-palette-info);background-color:var(--mud-palette-info-hover)}}.mud-button-outlined.mud-button-outlined-info:focus-visible,.mud-button-outlined.mud-button-outlined-info:active{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);--mud-ripple-color: var(--mud-palette-success);border:1px solid var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-success:hover{border:1px solid var(--mud-palette-success);background-color:var(--mud-palette-success-hover)}}.mud-button-outlined.mud-button-outlined-success:focus-visible,.mud-button-outlined.mud-button-outlined-success:active{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);--mud-ripple-color: var(--mud-palette-warning);border:1px solid var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-warning:hover{border:1px solid var(--mud-palette-warning);background-color:var(--mud-palette-warning-hover)}}.mud-button-outlined.mud-button-outlined-warning:focus-visible,.mud-button-outlined.mud-button-outlined-warning:active{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);--mud-ripple-color: var(--mud-palette-error);border:1px solid var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-error:hover{border:1px solid var(--mud-palette-error);background-color:var(--mud-palette-error-hover)}}.mud-button-outlined.mud-button-outlined-error:focus-visible,.mud-button-outlined.mud-button-outlined-error:active{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);--mud-ripple-color: var(--mud-palette-dark);border:1px solid var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-outlined.mud-button-outlined-dark:hover{border:1px solid var(--mud-palette-dark);background-color:var(--mud-palette-dark-hover)}}.mud-button-outlined.mud-button-outlined-dark:focus-visible,.mud-button-outlined.mud-button-outlined-dark:active{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);--mud-ripple-color: var(--mud-palette-text-primary);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;box-shadow:0px 3px 1px -2px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 1px 5px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-default-hover)}.mud-button-filled.mud-icon-button{padding:6px}@media(hover: hover)and (pointer: fine){.mud-button-filled:hover{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}}.mud-button-filled:focus-visible{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}.mud-button-filled:active{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}.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);--mud-ripple-color: var(--mud-palette-primary-text);background-color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-primary:hover{background-color:var(--mud-palette-primary-darken)}}.mud-button-filled.mud-button-filled-primary:focus-visible,.mud-button-filled.mud-button-filled-primary:active{background-color:var(--mud-palette-primary-darken)}.mud-button-filled.mud-button-filled-secondary{color:var(--mud-palette-secondary-text);--mud-ripple-color: var(--mud-palette-secondary-text);background-color:var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-secondary:hover{background-color:var(--mud-palette-secondary-darken)}}.mud-button-filled.mud-button-filled-secondary:focus-visible,.mud-button-filled.mud-button-filled-secondary:active{background-color:var(--mud-palette-secondary-darken)}.mud-button-filled.mud-button-filled-tertiary{color:var(--mud-palette-tertiary-text);--mud-ripple-color: var(--mud-palette-tertiary-text);background-color:var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-tertiary:hover{background-color:var(--mud-palette-tertiary-darken)}}.mud-button-filled.mud-button-filled-tertiary:focus-visible,.mud-button-filled.mud-button-filled-tertiary:active{background-color:var(--mud-palette-tertiary-darken)}.mud-button-filled.mud-button-filled-info{color:var(--mud-palette-info-text);--mud-ripple-color: var(--mud-palette-info-text);background-color:var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-info:hover{background-color:var(--mud-palette-info-darken)}}.mud-button-filled.mud-button-filled-info:focus-visible,.mud-button-filled.mud-button-filled-info:active{background-color:var(--mud-palette-info-darken)}.mud-button-filled.mud-button-filled-success{color:var(--mud-palette-success-text);--mud-ripple-color: var(--mud-palette-success-text);background-color:var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-success:hover{background-color:var(--mud-palette-success-darken)}}.mud-button-filled.mud-button-filled-success:focus-visible,.mud-button-filled.mud-button-filled-success:active{background-color:var(--mud-palette-success-darken)}.mud-button-filled.mud-button-filled-warning{color:var(--mud-palette-warning-text);--mud-ripple-color: var(--mud-palette-warning-text);background-color:var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-warning:hover{background-color:var(--mud-palette-warning-darken)}}.mud-button-filled.mud-button-filled-warning:focus-visible,.mud-button-filled.mud-button-filled-warning:active{background-color:var(--mud-palette-warning-darken)}.mud-button-filled.mud-button-filled-error{color:var(--mud-palette-error-text);--mud-ripple-color: var(--mud-palette-error-text);background-color:var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-error:hover{background-color:var(--mud-palette-error-darken)}}.mud-button-filled.mud-button-filled-error:focus-visible,.mud-button-filled.mud-button-filled-error:active{background-color:var(--mud-palette-error-darken)}.mud-button-filled.mud-button-filled-dark{color:var(--mud-palette-dark-text);--mud-ripple-color: var(--mud-palette-dark-text);background-color:var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-filled.mud-button-filled-dark:hover{background-color:var(--mud-palette-dark-darken)}}.mud-button-filled.mud-button-filled-dark:focus-visible,.mud-button-filled.mud-button-filled-dark:active{background-color:var(--mud-palette-dark-darken)}.mud-button-disable-elevation{box-shadow:none}@media(hover: hover)and (pointer: fine){.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{width:100%;display:inherit;align-items:inherit;justify-content:inherit}.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-ripple-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}@media(hover: hover)and (pointer: fine){.mud-button-group-root.mud-button-group-override-styles .mud-button-root:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-button-group-root.mud-button-group-override-styles .mud-button-root:focus-visible,.mud-button-group-root.mud-button-group-override-styles .mud-button-root:active{background-color:var(--mud-palette-action-default-hover)}.mud-button-group-root.mud-button-group-override-styles .mud-button-root:disabled{border-color:var(--mud-palette-action-disabled-background) !important}.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-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-ripple-color: var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root:hover{background-color:var(--mud-palette-primary-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-primary .mud-button-root:active{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-ripple-color: var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root:hover{background-color:var(--mud-palette-secondary-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-secondary .mud-button-root:active{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-ripple-color: var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root:hover{background-color:var(--mud-palette-tertiary-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-tertiary .mud-button-root:active{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-ripple-color: var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root:hover{background-color:var(--mud-palette-info-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-info .mud-button-root:active{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-ripple-color: var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root:hover{background-color:var(--mud-palette-success-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-success .mud-button-root:active{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-ripple-color: var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root:hover{background-color:var(--mud-palette-warning-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-warning .mud-button-root:active{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-ripple-color: var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root:hover{background-color:var(--mud-palette-error-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-error .mud-button-root:active{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-ripple-color: var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root:hover{background-color:var(--mud-palette-dark-hover)}}.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root:focus-visible,.mud-button-group-text.mud-button-group-override-styles.mud-button-group-text-dark .mud-button-root:active{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-ripple-color: var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root:hover{background-color:var(--mud-palette-primary-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-primary .mud-button-root:active{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-ripple-color: var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root:hover{background-color:var(--mud-palette-secondary-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-secondary .mud-button-root:active{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-ripple-color: var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root:hover{background-color:var(--mud-palette-tertiary-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-tertiary .mud-button-root:active{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-ripple-color: var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root:hover{background-color:var(--mud-palette-info-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-info .mud-button-root:active{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-ripple-color: var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root:hover{background-color:var(--mud-palette-success-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-success .mud-button-root:active{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-ripple-color: var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root:hover{background-color:var(--mud-palette-warning-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-warning .mud-button-root:active{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-ripple-color: var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root:hover{background-color:var(--mud-palette-error-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-error .mud-button-root:active{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-ripple-color: var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root:hover{background-color:var(--mud-palette-dark-hover)}}.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root:focus-visible,.mud-button-group-outlined.mud-button-group-override-styles.mud-button-group-outlined-dark .mud-button-root:active{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}@media(hover: hover)and (pointer: fine){.mud-button-group-filled .mud-button-root:hover{box-shadow:var(--mud-elevation-4)}}.mud-button-group-filled .mud-button-root:focus-visible,.mud-button-group-filled .mud-button-root:active{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-ripple-color: var(--mud-palette-primary-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:hover{background-color:var(--mud-palette-primary-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:active{background-color:var(--mud-palette-primary-darken)}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-primary .mud-button-root:disabled{background-color:var(--mud-palette-action-disabled-background)}.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-ripple-color: var(--mud-palette-secondary-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:hover{background-color:var(--mud-palette-secondary-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:active{background-color:var(--mud-palette-secondary-darken)}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-secondary .mud-button-root:disabled{background-color:var(--mud-palette-action-disabled-background)}.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-ripple-color: var(--mud-palette-tertiary-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:hover{background-color:var(--mud-palette-tertiary-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:active{background-color:var(--mud-palette-tertiary-darken)}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-tertiary .mud-button-root:disabled{background-color:var(--mud-palette-action-disabled-background)}.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-ripple-color: var(--mud-palette-info-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:hover{background-color:var(--mud-palette-info-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:active{background-color:var(--mud-palette-info-darken)}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-info .mud-button-root:disabled{background-color:var(--mud-palette-action-disabled-background)}.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-ripple-color: var(--mud-palette-success-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:hover{background-color:var(--mud-palette-success-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:active{background-color:var(--mud-palette-success-darken)}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-success .mud-button-root:disabled{background-color:var(--mud-palette-action-disabled-background)}.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-ripple-color: var(--mud-palette-warning-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:hover{background-color:var(--mud-palette-warning-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:active{background-color:var(--mud-palette-warning-darken)}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-warning .mud-button-root:disabled{background-color:var(--mud-palette-action-disabled-background)}.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-ripple-color: var(--mud-palette-error-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:hover{background-color:var(--mud-palette-error-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:active{background-color:var(--mud-palette-error-darken)}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-error .mud-button-root:disabled{background-color:var(--mud-palette-action-disabled-background)}.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-ripple-color: var(--mud-palette-dark-text);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:hover{background-color:var(--mud-palette-dark-darken)}}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:focus-visible,.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:active{background-color:var(--mud-palette-dark-darken)}.mud-button-group-filled.mud-button-group-override-styles.mud-button-group-filled-dark .mud-button-root:disabled{background-color:var(--mud-palette-action-disabled-background)}.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-icon-button{flex:0 0 auto;padding:12px;overflow:visible;font-size:1.5rem;text-align:center;transition:background-color 150ms cubic-bezier(0.4, 0, 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)}@media(hover: hover)and (pointer: fine){.mud-icon-button:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-icon-button:focus-visible,.mud-icon-button:active{background-color:var(--mud-palette-action-default-hover)}.mud-icon-button:disabled{color:var(--mud-palette-action-disabled);background-color:rgba(0,0,0,0)}.mud-icon-button.mud-readonly,.mud-icon-button .mud-readonly:hover{cursor:default}.mud-icon-button-color-inherit{color:inherit}@media(hover: hover)and (pointer: fine){.mud-icon-button-color-inherit:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-icon-button-color-inherit:focus-visible,.mud-icon-button-color-inherit:active{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{display:flex;flex-direction:column}.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:0px;border-top-right-radius:0px}.mud-card-content{flex-grow:1;padding:16px}.mud-card-actions{display:flex;padding:8px;align-items:center}.mud-carousel{display:flex !important;position:relative;margin:0px !important;clip-path:inset(0px 0px 0px 0px);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:0px;right:0px;top:0px;bottom:0px;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;min-height:fit-content;min-width:fit-content}.mud-chart svg{order:2}.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%;order:3}.mud-chart.mud-chart-legend-top{flex-direction:column}.mud-chart.mud-chart-legend-top .mud-chart-legend{justify-content:center;width:100%;order:1}.mud-chart.mud-chart-legend-right{flex-direction:row}.mud-chart.mud-chart-legend-right .mud-chart-legend{flex-direction:column;order:3;min-width:fit-content}.mud-chart.mud-chart-legend-left{flex-direction:row}.mud-chart.mud-chart-legend-left .mud-chart-legend{flex-direction:column;order:1;min-width:fit-content}.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 0px;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-chart .mud-chart-legend .mud-chart-legend-item .mud-chart-legend-checkbox{display:flex;align-items:center}.mud-chart .mud-chart-legend .mud-chart-legend-item .mud-input-control{width:35px !important}.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:rgba(0,0,0,0);user-select:none;pointer-events:unset}.mud-chart-donut .mud-donut-ring{fill:rgba(0,0,0,0);stroke:#fff;pointer-events:unset}.mud-chart-donut .mud-donut-segment{fill:rgba(0,0,0,0);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-chart-cell text{fill:#000}.mud-chart-heatmap-legend line{stroke:var(--mud-palette-text-primary)}.mud-chart-heatmap-legend text{fill:var(--mud-palette-text-primary)}.mud-chat{display:grid;column-gap:.75rem;padding-top:.25rem;padding-bottom:.25rem;border-radius:var(--mud-default-borderradius)}.mud-chat.mud-dense .mud-chat-bubble{padding:.1875rem 1rem;min-height:.9166666667rem}.mud-chat.mud-dense .mud-chat-bubble+.mud-chat-bubble{margin-top:.1875rem}.mud-chat.mud-dense .mud-chat-header{line-height:.4166666667rem}.mud-chat.mud-square{border-radius:0px}.mud-chat.mud-square .mud-chat-bubble{border-radius:0px}.mud-chat.mud-chat-arrow-top .mud-chat-bubble:before{content:"";mask-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMycgaGVpZ2h0PSczJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGZpbGw9J2JsYWNrJyBkPSdtIDAgMCBMIDMgMCBMIDMgMyBDIDMgMiAxIDAgMCAwJy8+PC9zdmc+);bottom:auto;top:0}.mud-chat.mud-chat-arrow-top.mud-chat-start .mud-chat-bubble{border-top-left-radius:0}.mud-chat.mud-chat-arrow-top.mud-chat-end .mud-chat-bubble{border-top-right-radius:0}.mud-chat.mud-chat-arrow-bottom .mud-chat-bubble:before{content:"";mask-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0nMycgaGVpZ2h0PSczJyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnPjxwYXRoIGZpbGw9J2JsYWNrJyBkPSdtIDAgMyBMIDMgMyBMIDMgMCBDIDMgMSAxIDMgMCAzJy8+PC9zdmc+);bottom:0}.mud-chat.mud-chat-arrow-bottom.mud-chat-start .mud-chat-bubble{border-bottom-left-radius:0}.mud-chat.mud-chat-arrow-bottom.mud-chat-end .mud-chat-bubble{border-bottom-right-radius:0}.mud-chat.mud-chat-arrow-middle .mud-chat-bubble:before{content:"";mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAzIDMiIHdpZHRoPSIzMDAiIGhlaWdodD0iMzAwIj4KICA8cG9seWdvbiBwb2ludHM9IjMsMCAzLDMgMS41LDEuNSIgZmlsbD0iYmxhY2siIC8+Cjwvc3ZnPg==);top:50%}.mud-chat.mud-chat-arrow-middle.mud-chat-start .mud-chat-bubble:before,.mud-chat.mud-chat-arrow-middle.mud-chat-end.mud-chat-rtl .mud-chat-bubble:before{transform:translateY(-50%)}.mud-chat.mud-chat-arrow-middle.mud-chat-end .mud-chat-bubble:before,.mud-chat.mud-chat-arrow-middle.mud-chat-start.mud-chat-rtl .mud-chat-bubble:before{transform:scaleX(-1) translateY(-50%)}.mud-chat-bubble{position:relative;text-align:start;align-content:center;width:fit-content;padding:.5rem 1rem;max-width:90%;border-radius:var(--mud-default-borderradius);min-width:2.75rem;min-height:2.75rem}.mud-chat-bubble.mud-chat-bubble-clickable{cursor:pointer;user-select:none;-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;--mud-ripple-color: $default-foreground;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important}@media(hover: hover)and (pointer: fine){.mud-chat-bubble.mud-chat-bubble-clickable:hover{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}}.mud-chat-bubble.mud-chat-bubble-clickable:focus-visible{box-shadow:0px 2px 4px -1px rgba(0,0,0,.2),0px 4px 5px 0px rgba(0,0,0,.14),0px 1px 10px 0px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}.mud-chat-bubble.mud-chat-bubble-clickable:active{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);background-color:var(--mud-palette-action-disabled-background)}.mud-chat-bubble:before{position:absolute;width:.75rem;height:.75rem;background-color:inherit;mask-size:contain;mask-repeat:no-repeat;mask-position:center}.mud-chat-bubble+.mud-chat-bubble{margin-top:.5rem}.mud-chat-bubble+.mud-chat-bubble:before{content:none !important}.mud-chat-header{grid-row-start:1;font-size:.875rem;line-height:1.25rem;margin-left:.25rem;margin-right:.25rem;min-height:.5rem}.mud-chat-header time{margin-left:.5rem;opacity:.5;font-size:.75rem;line-height:1rem}.mud-chat-footer{opacity:.5;font-size:.875rem;line-height:1rem;margin-left:.25rem;margin-right:.25rem;min-height:.5rem}.mud-chat .mud-avatar{align-self:center;grid-row-start:1}.mud-chat:has(.mud-chat-header) .mud-avatar{grid-row-start:2}.mud-chat-start{place-items:start;grid-template-columns:1fr 99fr}.mud-chat-start .mud-chat-header,.mud-chat-start .mud-chat-footer{grid-column-start:2}.mud-chat-start .mud-avatar{grid-column-start:1;margin-left:.25rem;margin-right:-0.35rem}.mud-chat-start .mud-chat-bubble{grid-column-start:2}.mud-chat-start .mud-chat-bubble:before{inset-inline-start:-0.749rem}.mud-chat-end{place-items:end;grid-template-columns:99fr 1fr}.mud-chat-end .mud-chat-header,.mud-chat-end .mud-chat-footer{grid-column-start:1}.mud-chat-end .mud-avatar{grid-column-start:2;margin-right:.25rem;margin-left:-0.35rem}.mud-chat-end .mud-chat-bubble{grid-column-start:1;text-align:end}.mud-chat-end .mud-chat-bubble:before{inset-inline-start:100%;transform:scaleX(-1)}.mud-chat-text-default{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-action-default-hover);--mud-ripple-color: $default-foreground}.mud-chat-text-primary{color:var(--mud-palette-primary-darken);background-color:var(--mud-palette-primary-hover);--mud-ripple-color: var(--mud-palette-primary-darken)}.mud-chat-text-secondary{color:var(--mud-palette-secondary-darken);background-color:var(--mud-palette-secondary-hover);--mud-ripple-color: var(--mud-palette-secondary-darken)}.mud-chat-text-tertiary{color:var(--mud-palette-tertiary-darken);background-color:var(--mud-palette-tertiary-hover);--mud-ripple-color: var(--mud-palette-tertiary-darken)}.mud-chat-text-info{color:var(--mud-palette-info-darken);background-color:var(--mud-palette-info-hover);--mud-ripple-color: var(--mud-palette-info-darken)}.mud-chat-text-success{color:var(--mud-palette-success-darken);background-color:var(--mud-palette-success-hover);--mud-ripple-color: var(--mud-palette-success-darken)}.mud-chat-text-warning{color:var(--mud-palette-warning-darken);background-color:var(--mud-palette-warning-hover);--mud-ripple-color: var(--mud-palette-warning-darken)}.mud-chat-text-error{color:var(--mud-palette-error-darken);background-color:var(--mud-palette-error-hover);--mud-ripple-color: var(--mud-palette-error-darken)}.mud-chat-text-dark{color:var(--mud-palette-dark-darken);background-color:var(--mud-palette-dark-hover);--mud-ripple-color: var(--mud-palette-dark-darken)}.mud-chat-outlined-default{color:var(--mud-palette-text-primary);border:1px solid var(--mud-palette-action-default-hover);--mud-ripple-color: $default-foreground}.mud-chat-outlined-default:before{background-color:var(--mud-palette-action-default-hover)}.mud-chat-outlined-default.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-default.mud-chat-arrow-bottom:before{bottom:-0.07rem !important}.mud-chat-outlined-primary{color:var(--mud-palette-primary-darken);border:1px solid var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary-darken)}.mud-chat-outlined-primary:before{background-color:var(--mud-palette-primary-darken)}.mud-chat-outlined-primary.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-primary.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-secondary{color:var(--mud-palette-secondary-darken);border:1px solid var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary-darken)}.mud-chat-outlined-secondary:before{background-color:var(--mud-palette-secondary-darken)}.mud-chat-outlined-secondary.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-secondary.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-tertiary{color:var(--mud-palette-tertiary-darken);border:1px solid var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary-darken)}.mud-chat-outlined-tertiary:before{background-color:var(--mud-palette-tertiary-darken)}.mud-chat-outlined-tertiary.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-tertiary.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-info{color:var(--mud-palette-info-darken);border:1px solid var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info-darken)}.mud-chat-outlined-info:before{background-color:var(--mud-palette-info-darken)}.mud-chat-outlined-info.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-info.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-success{color:var(--mud-palette-success-darken);border:1px solid var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success-darken)}.mud-chat-outlined-success:before{background-color:var(--mud-palette-success-darken)}.mud-chat-outlined-success.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-success.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-warning{color:var(--mud-palette-warning-darken);border:1px solid var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning-darken)}.mud-chat-outlined-warning:before{background-color:var(--mud-palette-warning-darken)}.mud-chat-outlined-warning.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-warning.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-error{color:var(--mud-palette-error-darken);border:1px solid var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error-darken)}.mud-chat-outlined-error:before{background-color:var(--mud-palette-error-darken)}.mud-chat-outlined-error.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-error.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-outlined-dark{color:var(--mud-palette-dark-darken);border:1px solid var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark-darken)}.mud-chat-outlined-dark:before{background-color:var(--mud-palette-dark-darken)}.mud-chat-outlined-dark.mud-chat-arrow-top:before{top:-0.05rem !important}.mud-chat-outlined-dark.mud-chat-arrow-bottom:before{bottom:-0.02rem !important}.mud-chat-filled-default{color:var(--mud-palette-text-primary);font-weight:500;background-color:var(--mud-palette-action-default-hover);--mud-ripple-color: $default-foreground}.mud-chat-filled-primary{color:var(--mud-palette-primary-text);font-weight:500;background-color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary-text)}.mud-chat-filled-secondary{color:var(--mud-palette-secondary-text);font-weight:500;background-color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary-text)}.mud-chat-filled-tertiary{color:var(--mud-palette-tertiary-text);font-weight:500;background-color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary-text)}.mud-chat-filled-info{color:var(--mud-palette-info-text);font-weight:500;background-color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info-text)}.mud-chat-filled-success{color:var(--mud-palette-success-text);font-weight:500;background-color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success-text)}.mud-chat-filled-warning{color:var(--mud-palette-warning-text);font-weight:500;background-color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning-text)}.mud-chat-filled-error{color:var(--mud-palette-error-text);font-weight:500;background-color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error-text)}.mud-chat-filled-dark{color:var(--mud-palette-dark-text);font-weight:500;background-color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark-text)}.mud-checkbox{cursor:pointer;display:inline-flex;align-items:center;vertical-align:middle;-webkit-tap-highlight-color:rgba(0,0,0,0)}@media(hover: hover)and (pointer: fine){.mud-checkbox .mud-disabled:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-checkbox .mud-disabled:hover *{cursor:default;color:var(--mud-palette-text-disabled)}}.mud-checkbox .mud-disabled:focus-visible,.mud-checkbox .mud-disabled:active{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-checkbox .mud-disabled:focus-visible *,.mud-checkbox .mud-disabled:active *{cursor:default;color:var(--mud-palette-text-disabled)}.mud-checkbox.mud-readonly,.mud-checkbox .mud-readonly:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.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-chart-legend-checkbox .mud-checkbox svg path:last-child{fill:var(--checkbox-color) !important}.mud-chip-container{display:contents}.mud-chip{border:none;display:inline-flex;max-width:100%;outline:0;padding:0 12px;position:relative;box-sizing:border-box;transition:background-color 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 300ms cubic-bezier(0.4, 0, 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;padding:0 8px}.mud-chip.mud-chip-size-small .mud-avatar{margin-left:-4px;margin-right:4px;margin-inline-start:-4px;margin-inline-end:4px;width:18px;height:18px;font-size:.625rem}.mud-chip.mud-chip-size-small .mud-icon-root{font-size:1.125rem}.mud-chip.mud-chip-size-small .mud-chip-close-button{margin-right:-4px;margin-left:4px;margin-inline-end:-4px;margin-inline-start:4px}.mud-chip.mud-chip-size-medium{height:32px;font-size:14px;border-radius:16px}.mud-chip.mud-chip-size-medium .mud-avatar{margin-left:-8px;margin-right:8px;margin-inline-start:-8px;margin-inline-end:8px;width:24px;height:24px;font-size:.75rem}.mud-chip.mud-chip-size-large{height:40px;font-size:16px;border-radius:20px;padding:0 16px}.mud-chip.mud-chip-size-large .mud-avatar{margin-left:-12px;margin-right:8px;margin-inline-start:-12px;margin-inline-end:8px;width:32px;height:32px;font-size:1rem}.mud-chip.mud-chip-size-large .mud-chip-icon{font-size:1.5rem;margin-left:-6px;margin-right:6px;margin-inline-start:-6px;margin-inline-end:6px}.mud-chip.mud-chip-label{border-radius:var(--mud-default-borderradius)}.mud-chip.mud-clickable{cursor:pointer;user-select:none}.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(0.25, 0.8, 0.5, 1),visibility 0s}.mud-chip .mud-chip-close-button .mud-icon-size-small{font-size:1.15rem}@media(hover: hover)and (pointer: fine){.mud-chip .mud-chip-close-button:hover:not(.mud-disabled){opacity:.7}}.mud-chip .mud-chip-close-button:focus-visible:not(.mud-disabled),.mud-chip .mud-chip-close-button:active:not(.mud-disabled){opacity:.7}.mud-chip>.mud-chip-content{align-items:center;display:inline-flex;height:100%;max-width:100%}.mud-chip-filled{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-action-disabled-background);--mud-ripple-opacity: var(--mud-ripple-opacity-secondary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-action-disabled)}}.mud-chip-filled.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-action-disabled)}.mud-chip-filled.mud-chip-color-primary{color:var(--mud-palette-primary-text);--mud-ripple-color: var(--mud-palette-primary-text) !important;background-color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-primary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-primary-darken)}}.mud-chip-filled.mud-chip-color-primary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-primary.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-primary-darken)}.mud-chip-filled.mud-chip-color-secondary{color:var(--mud-palette-secondary-text);--mud-ripple-color: var(--mud-palette-secondary-text) !important;background-color:var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-secondary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-secondary-darken)}}.mud-chip-filled.mud-chip-color-secondary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-secondary.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-secondary-darken)}.mud-chip-filled.mud-chip-color-tertiary{color:var(--mud-palette-tertiary-text);--mud-ripple-color: var(--mud-palette-tertiary-text) !important;background-color:var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-tertiary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-tertiary-darken)}}.mud-chip-filled.mud-chip-color-tertiary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-tertiary.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-tertiary-darken)}.mud-chip-filled.mud-chip-color-info{color:var(--mud-palette-info-text);--mud-ripple-color: var(--mud-palette-info-text) !important;background-color:var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-info.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-info-darken)}}.mud-chip-filled.mud-chip-color-info.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-info.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-info-darken)}.mud-chip-filled.mud-chip-color-success{color:var(--mud-palette-success-text);--mud-ripple-color: var(--mud-palette-success-text) !important;background-color:var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-success.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-success-darken)}}.mud-chip-filled.mud-chip-color-success.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-success.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-success-darken)}.mud-chip-filled.mud-chip-color-warning{color:var(--mud-palette-warning-text);--mud-ripple-color: var(--mud-palette-warning-text) !important;background-color:var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-warning.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-warning-darken)}}.mud-chip-filled.mud-chip-color-warning.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-warning.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-warning-darken)}.mud-chip-filled.mud-chip-color-error{color:var(--mud-palette-error-text);--mud-ripple-color: var(--mud-palette-error-text) !important;background-color:var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-error.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-error-darken)}}.mud-chip-filled.mud-chip-color-error.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-error.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-error-darken)}.mud-chip-filled.mud-chip-color-dark{color:var(--mud-palette-dark-text);--mud-ripple-color: var(--mud-palette-dark-text) !important;background-color:var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-chip-filled.mud-chip-color-dark.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-dark-darken)}}.mud-chip-filled.mud-chip-color-dark.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-filled.mud-chip-color-dark.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-action-default-hover)}}.mud-chip-outlined.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-action-default-hover)}.mud-chip-outlined.mud-chip-color-primary{color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary) !important;border:1px solid var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-primary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-primary-hover)}}.mud-chip-outlined.mud-chip-color-primary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-primary.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-primary.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-secondary{color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary) !important;border:1px solid var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-secondary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-secondary-hover)}}.mud-chip-outlined.mud-chip-color-secondary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-secondary.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-secondary.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-tertiary{color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary) !important;border:1px solid var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-tertiary.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-tertiary-hover)}}.mud-chip-outlined.mud-chip-color-tertiary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-tertiary.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-tertiary.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-info{color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info) !important;border:1px solid var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-info.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-info-hover)}}.mud-chip-outlined.mud-chip-color-info.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-info.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-info.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-info.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-info.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-success{color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success) !important;border:1px solid var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-success.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-success-hover)}}.mud-chip-outlined.mud-chip-color-success.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-success.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-success.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-success.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-success.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-warning{color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning) !important;border:1px solid var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-warning.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-warning-hover)}}.mud-chip-outlined.mud-chip-color-warning.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-warning.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-warning.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-error{color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error) !important;border:1px solid var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-error.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-error-hover)}}.mud-chip-outlined.mud-chip-color-error.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-error.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-error.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-error.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-error.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}.mud-chip-outlined.mud-chip-color-dark{color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark) !important;border:1px solid var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-dark.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-dark-hover)}}.mud-chip-outlined.mud-chip-color-dark.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-dark.mud-clickable:active: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)}@media(hover: hover)and (pointer: fine){.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}}.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected:focus-visible:not(.mud-disabled),.mud-chip-outlined.mud-chip-color-dark.mud-chip-selected:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}.mud-chip-text{color:var(--mud-palette-text-primary);background-color:var(--mud-palette-action-default-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-clickable:hover:not(.mud-disabled){background-color:var(--mud-palette-action-disabled-background)}}.mud-chip-text.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-clickable:active:not(.mud-disabled){background-color:var(--mud-palette-action-disabled-background)}.mud-chip-text.mud-chip-color-primary{color:var(--mud-palette-primary);--mud-ripple-color: var(--mud-palette-primary) !important;background-color:var(--mud-palette-primary-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-primary.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}}.mud-chip-text.mud-chip-color-primary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-primary.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}.mud-chip-text.mud-chip-color-secondary{color:var(--mud-palette-secondary);--mud-ripple-color: var(--mud-palette-secondary) !important;background-color:var(--mud-palette-secondary-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-secondary.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}}.mud-chip-text.mud-chip-color-secondary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-secondary.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}.mud-chip-text.mud-chip-color-tertiary{color:var(--mud-palette-tertiary);--mud-ripple-color: var(--mud-palette-tertiary) !important;background-color:var(--mud-palette-tertiary-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-tertiary.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}}.mud-chip-text.mud-chip-color-tertiary.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-tertiary.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}.mud-chip-text.mud-chip-color-info{color:var(--mud-palette-info);--mud-ripple-color: var(--mud-palette-info) !important;background-color:var(--mud-palette-info-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-info.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}}.mud-chip-text.mud-chip-color-info.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-info.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}.mud-chip-text.mud-chip-color-success{color:var(--mud-palette-success);--mud-ripple-color: var(--mud-palette-success) !important;background-color:var(--mud-palette-success-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-success.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}}.mud-chip-text.mud-chip-color-success.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-success.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}.mud-chip-text.mud-chip-color-warning{color:var(--mud-palette-warning);--mud-ripple-color: var(--mud-palette-warning) !important;background-color:var(--mud-palette-warning-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-warning.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}}.mud-chip-text.mud-chip-color-warning.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-warning.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}.mud-chip-text.mud-chip-color-error{color:var(--mud-palette-error);--mud-ripple-color: var(--mud-palette-error) !important;background-color:var(--mud-palette-error-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-error.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}}.mud-chip-text.mud-chip-color-error.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-error.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}.mud-chip-text.mud-chip-color-dark{color:var(--mud-palette-dark);--mud-ripple-color: var(--mud-palette-dark) !important;background-color:var(--mud-palette-dark-hover)}@media(hover: hover)and (pointer: fine){.mud-chip-text.mud-chip-color-dark.mud-clickable:hover:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}}.mud-chip-text.mud-chip-color-dark.mud-clickable:focus-visible:not(.mud-disabled),.mud-chip-text.mud-chip-color-dark.mud-clickable:active:not(.mud-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}.mud-collapse-container{overflow:hidden;display:grid;grid-template-rows:minmax(0, 0fr);transition:grid-template-rows 300ms ease-in-out}.mud-collapse-entering{grid-template-rows:minmax(0, 1fr)}.mud-collapse-entered{overflow:initial;grid-template-rows:minmax(0, 1fr)}.mud-collapse-entered .mud-collapse-wrapper{overflow-y:auto}.mud-collapse-hidden{visibility:hidden}.mud-collapse-wrapper{overflow:hidden;display:flex}.mud-collapse-wrapper-inner{width:100%}.mud-dialog-container{display:flex;position:fixed;top:0;left: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(0.39, 0.575, 0.565, 1) both;animation:mud-open-dialog-center .1s cubic-bezier(0.39, 0.575, 0.565, 1) both;box-shadow:0px 11px 15px -7px rgba(0,0,0,.2),0px 24px 38px 3px rgba(0,0,0,.14),0px 9px 46px 8px rgba(0,0,0,.12);max-height:calc(100vh - var(--mud-appbar-height));max-height:calc(100dvh - var(--mud-appbar-height));overflow-y:auto}.mud-dialog.mud-dialog-rtl .mud-dialog-title .mud-button-close{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-close{top:8px;right:8px;position:absolute}.mud-dialog .mud-dialog-content{position:relative;flex:1 1 auto;overflow:auto;padding:0px 24px;margin:8px 0px;-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:0px;margin:12px 0px}.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;overflow-y:hidden}@-webkit-keyframes mud-open-dialog-center{0%{opacity:0}1%{-webkit-transform:scale(0.5);transform:scale(0.5);opacity:1}100%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes mud-open-dialog-center{0%{opacity:0}1%{-webkit-transform:scale(0.5);transform:scale(0.5);opacity:1}100%{-webkit-transform:scale(1);transform:scale(1)}}.mud-focus-trap{display:contents}.mud-focus-trap .mud-focus-trap-child-container{display:contents}.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:0px;padding-bottom:0px}.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-flex-break{flex-basis:100%;width:0}.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% + 4px);margin-left:-4px;margin-top:-4px}.mud-grid-spacing-xs-1>.mud-grid-item{padding-left:4px;padding-top:4px}.mud-grid-spacing-xs-2{width:calc(100% + 8px);margin-left:-8px;margin-top:-8px}.mud-grid-spacing-xs-2>.mud-grid-item{padding-left:8px;padding-top:8px}.mud-grid-spacing-xs-3{width:calc(100% + 12px);margin-left:-12px;margin-top:-12px}.mud-grid-spacing-xs-3>.mud-grid-item{padding-left:12px;padding-top:12px}.mud-grid-spacing-xs-4{width:calc(100% + 16px);margin-left:-16px;margin-top:-16px}.mud-grid-spacing-xs-4>.mud-grid-item{padding-left:16px;padding-top:16px}.mud-grid-spacing-xs-5{width:calc(100% + 20px);margin-left:-20px;margin-top:-20px}.mud-grid-spacing-xs-5>.mud-grid-item{padding-left:20px;padding-top:20px}.mud-grid-spacing-xs-6{width:calc(100% + 24px);margin-left:-24px;margin-top:-24px}.mud-grid-spacing-xs-6>.mud-grid-item{padding-left:24px;padding-top:24px}.mud-grid-spacing-xs-7{width:calc(100% + 28px);margin-left:-28px;margin-top:-28px}.mud-grid-spacing-xs-7>.mud-grid-item{padding-left:28px;padding-top:28px}.mud-grid-spacing-xs-8{width:calc(100% + 32px);margin-left:-32px;margin-top:-32px}.mud-grid-spacing-xs-8>.mud-grid-item{padding-left:32px;padding-top:32px}.mud-grid-spacing-xs-9{width:calc(100% + 36px);margin-left:-36px;margin-top:-36px}.mud-grid-spacing-xs-9>.mud-grid-item{padding-left:36px;padding-top:36px}.mud-grid-spacing-xs-10{width:calc(100% + 40px);margin-left:-40px;margin-top:-40px}.mud-grid-spacing-xs-10>.mud-grid-item{padding-left:40px;padding-top:40px}.mud-grid-spacing-xs-11{width:calc(100% + 44px);margin-left:-44px;margin-top:-44px}.mud-grid-spacing-xs-11>.mud-grid-item{padding-left:44px;padding-top:44px}.mud-grid-spacing-xs-12{width:calc(100% + 48px);margin-left:-48px;margin-top:-48px}.mud-grid-spacing-xs-12>.mud-grid-item{padding-left:48px;padding-top:48px}.mud-grid-spacing-xs-13{width:calc(100% + 52px);margin-left:-52px;margin-top:-52px}.mud-grid-spacing-xs-13>.mud-grid-item{padding-left:52px;padding-top:52px}.mud-grid-spacing-xs-14{width:calc(100% + 56px);margin-left:-56px;margin-top:-56px}.mud-grid-spacing-xs-14>.mud-grid-item{padding-left:56px;padding-top:56px}.mud-grid-spacing-xs-15{width:calc(100% + 60px);margin-left:-60px;margin-top:-60px}.mud-grid-spacing-xs-15>.mud-grid-item{padding-left:60px;padding-top:60px}.mud-grid-spacing-xs-16{width:calc(100% + 64px);margin-left:-64px;margin-top:-64px}.mud-grid-spacing-xs-16>.mud-grid-item{padding-left:64px;padding-top:64px}.mud-grid-spacing-xs-17{width:calc(100% + 68px);margin-left:-68px;margin-top:-68px}.mud-grid-spacing-xs-17>.mud-grid-item{padding-left:68px;padding-top:68px}.mud-grid-spacing-xs-18{width:calc(100% + 72px);margin-left:-72px;margin-top:-72px}.mud-grid-spacing-xs-18>.mud-grid-item{padding-left:72px;padding-top:72px}.mud-grid-spacing-xs-19{width:calc(100% + 76px);margin-left:-76px;margin-top:-76px}.mud-grid-spacing-xs-19>.mud-grid-item{padding-left:76px;padding-top:76px}.mud-grid-spacing-xs-20{width:calc(100% + 80px);margin-left:-80px;margin-top:-80px}.mud-grid-spacing-xs-20>.mud-grid-item{padding-left:80px;padding-top:80px}@media(min-width: 0px){.mud-grid-item-xs-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-xs-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-xs-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-xs-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-xs-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-xs-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-xs-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-xs-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-xs-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-xs-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-xs-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-xs-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 600px){.mud-grid-item-sm-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-sm-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-sm-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-sm-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-sm-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-sm-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-sm-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-sm-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-sm-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-sm-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-sm-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-sm-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 960px){.mud-grid-item-md-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-md-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-md-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-md-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-md-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-md-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-md-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-md-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-md-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-md-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-md-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-md-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 1280px){.mud-grid-item-lg-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-lg-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-lg-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-lg-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-lg-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-lg-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-lg-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-lg-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-lg-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-lg-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-lg-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-lg-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 1920px){.mud-grid-item-xl-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-xl-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-xl-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-xl-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-xl-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-xl-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-xl-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-xl-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-xl-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-xl-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-xl-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-xl-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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}}@media(min-width: 2560px){.mud-grid-item-xxl-1{flex-grow:0;max-width:calc(100%/12*1);flex-basis:calc(100%/12*1)}.mud-grid-item-xxl-2{flex-grow:0;max-width:calc(100%/12*2);flex-basis:calc(100%/12*2)}.mud-grid-item-xxl-3{flex-grow:0;max-width:calc(100%/12*3);flex-basis:calc(100%/12*3)}.mud-grid-item-xxl-4{flex-grow:0;max-width:calc(100%/12*4);flex-basis:calc(100%/12*4)}.mud-grid-item-xxl-5{flex-grow:0;max-width:calc(100%/12*5);flex-basis:calc(100%/12*5)}.mud-grid-item-xxl-6{flex-grow:0;max-width:calc(100%/12*6);flex-basis:calc(100%/12*6)}.mud-grid-item-xxl-7{flex-grow:0;max-width:calc(100%/12*7);flex-basis:calc(100%/12*7)}.mud-grid-item-xxl-8{flex-grow:0;max-width:calc(100%/12*8);flex-basis:calc(100%/12*8)}.mud-grid-item-xxl-9{flex-grow:0;max-width:calc(100%/12*9);flex-basis:calc(100%/12*9)}.mud-grid-item-xxl-10{flex-grow:0;max-width:calc(100%/12*10);flex-basis:calc(100%/12*10)}.mud-grid-item-xxl-11{flex-grow:0;max-width:calc(100%/12*11);flex-basis:calc(100%/12*11)}.mud-grid-item-xxl-12{flex-grow:0;max-width:calc(100%/12*12);flex-basis:calc(100%/12*12)}.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-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(0.4, 0, 0.2, 1) 0ms}.mud-paper-square{border-radius:0px}.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(0.4, 0, 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{margin:0;flex-shrink:0;border-color:var(--mud-palette-divider);border-width:1px;border-style:solid none none none}.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{border-color:var(--mud-palette-divider-light)}.mud-divider-middle{margin-left:16px;margin-right:16px}.mud-divider-vertical{border-style:none solid none none;height:100%}.mud-divider-flexitem{height:auto;align-self:stretch}.mud-divider-fullwidth{flex-grow:1;width:100%}.mud-drop-zone{position:relative;transition:all 300ms cubic-bezier(0.4, 0, 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;user-select:none}.mud-drop-item .mud-ripple:after{display:none;transform:none}.mud-expansion-panels{flex:0 1 auto;position:relative;max-width:100%;transition:.3s cubic-bezier(0.25, 0.8, 0.5, 1);border-radius:var(--mud-default-borderradius)}.mud-expansion-panels.mud-expansion-panels-square{border-radius:0px}.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(0.25, 0.8, 0.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(0.25, 0.8, 0.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(0.25, 0.8, 0.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-bottom:16px;flex:1 1 auto;max-width:100%}.mud-expand-panel .mud-expand-panel-content.mud-expand-panel-gutters{padding-left:24px;padding-right:24px}.mud-expand-panel .mud-expand-panel-content.mud-expand-panel-dense{padding-top:0px;padding-bottom:0px}.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:0px 3px 5px -1px rgba(0,0,0,.2),0px 6px 10px 0px rgba(0,0,0,.14),0px 1px 18px 0px rgba(0,0,0,.12);box-sizing:border-box;min-height:36px;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:50%;color:var(--mud-palette-text-primary);--mud-ripple-color: var(--mud-palette-text-primary);background-color:var(--mud-palette-action-default-hover)}@media(hover: hover)and (pointer: fine){.mud-fab:hover{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);text-decoration:none;background-color:var(--mud-palette-action-disabled-background)}}.mud-fab:focus-visible{box-shadow:0px 5px 5px -3px rgba(0,0,0,.2),0px 8px 10px 1px rgba(0,0,0,.14),0px 3px 14px 2px rgba(0,0,0,.12);text-decoration:none;background-color:var(--mud-palette-action-disabled-background)}.mud-fab:active{box-shadow:0px 7px 8px -4px rgba(0,0,0,.2),0px 12px 17px 2px rgba(0,0,0,.14),0px 5px 22px 4px rgba(0,0,0,.12);text-decoration:none;background-color:var(--mud-palette-action-disabled-background)}.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}@media(hover: hover)and (pointer: fine){.mud-fab:disabled:hover{background-color:var(--mud-palette-action-disabled-background)}}.mud-fab-disable-elevation{box-shadow:none}@media(hover: hover)and (pointer: fine){.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);--mud-ripple-color: var(--mud-palette-primary-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-fab-primary:hover{background-color:var(--mud-palette-primary-darken)}}.mud-fab-primary:focus-visible,.mud-fab-primary:active{background-color:var(--mud-palette-primary-darken)}.mud-fab-secondary{color:var(--mud-palette-secondary-text);--mud-ripple-color: var(--mud-palette-secondary-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-secondary)}@media(hover: hover)and (pointer: fine){.mud-fab-secondary:hover{background-color:var(--mud-palette-secondary-darken)}}.mud-fab-secondary:focus-visible,.mud-fab-secondary:active{background-color:var(--mud-palette-secondary-darken)}.mud-fab-tertiary{color:var(--mud-palette-tertiary-text);--mud-ripple-color: var(--mud-palette-tertiary-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-tertiary)}@media(hover: hover)and (pointer: fine){.mud-fab-tertiary:hover{background-color:var(--mud-palette-tertiary-darken)}}.mud-fab-tertiary:focus-visible,.mud-fab-tertiary:active{background-color:var(--mud-palette-tertiary-darken)}.mud-fab-info{color:var(--mud-palette-info-text);--mud-ripple-color: var(--mud-palette-info-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-info)}@media(hover: hover)and (pointer: fine){.mud-fab-info:hover{background-color:var(--mud-palette-info-darken)}}.mud-fab-info:focus-visible,.mud-fab-info:active{background-color:var(--mud-palette-info-darken)}.mud-fab-success{color:var(--mud-palette-success-text);--mud-ripple-color: var(--mud-palette-success-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-success)}@media(hover: hover)and (pointer: fine){.mud-fab-success:hover{background-color:var(--mud-palette-success-darken)}}.mud-fab-success:focus-visible,.mud-fab-success:active{background-color:var(--mud-palette-success-darken)}.mud-fab-warning{color:var(--mud-palette-warning-text);--mud-ripple-color: var(--mud-palette-warning-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-warning)}@media(hover: hover)and (pointer: fine){.mud-fab-warning:hover{background-color:var(--mud-palette-warning-darken)}}.mud-fab-warning:focus-visible,.mud-fab-warning:active{background-color:var(--mud-palette-warning-darken)}.mud-fab-error{color:var(--mud-palette-error-text);--mud-ripple-color: var(--mud-palette-error-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-error)}@media(hover: hover)and (pointer: fine){.mud-fab-error:hover{background-color:var(--mud-palette-error-darken)}}.mud-fab-error:focus-visible,.mud-fab-error:active{background-color:var(--mud-palette-error-darken)}.mud-fab-dark{color:var(--mud-palette-dark-text);--mud-ripple-color: var(--mud-palette-dark-text) !important;--mud-ripple-opacity: var(--mud-ripple-opacity-secondary) !important;background-color:var(--mud-palette-dark)}@media(hover: hover)and (pointer: fine){.mud-fab-dark:hover{background-color:var(--mud-palette-dark-darken)}}.mud-fab-dark:focus-visible,.mud-fab-dark:active{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-form{display:flex;flex-direction:column}.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.mud-list-item-disabled .mud-list-item-secondary-text{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:rgba(0,0,0,0);-webkit-appearance:none;-webkit-tap-highlight-color:rgba(0,0,0,0);transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.mud-list-item-clickable:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-list-item-clickable:focus:not(.mud-selected-item),.mud-list-item-clickable:active{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-list-item-secondary-text{font-weight:500;color:var(--mud-palette-text-secondary)}.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;user-select:none}.mud-menu-button-hidden{position:absolute}.mud-menu-list{padding:4px 0}.mud-menu-list>.mud-menu{width:100%}.mud-menu-list>.mud-divider{margin:4px 0}.mud-menu-item{width:100%;display:flex;position:relative;box-sizing:border-box;text-align:start;align-items:center;justify-content:flex-start;text-decoration:none;padding:8px 12px}.mud-menu-item>.mud-icon-root{color:var(--mud-palette-action-default)}.mud-menu-item .mud-menu-item-icon{display:inline-flex;flex-shrink:0;margin-inline-end:12px}.mud-menu-item .mud-menu-item-text{flex:1 1 auto;margin:4px 0}.mud-menu-item.mud-menu-item-dense{padding:2px 12px}.mud-menu-item.mud-disabled{color:var(--mud-palette-action-disabled) !important;cursor:default !important;pointer-events:none !important}.mud-menu-item.mud-disabled .mud-menu-item-icon{color:var(--mud-palette-action-disabled) !important}.mud-menu-list:has(.mud-menu-item-icon) .mud-menu-item:not(:has(.mud-menu-item-icon)) .mud-menu-item-text{margin-inline-start:36px}.mud-link.mud-link-underline-none{text-decoration:none}.mud-link.mud-link-underline-hover{text-decoration:none}@media(hover: hover)and (pointer: fine){.mud-link.mud-link-underline-hover:hover{text-decoration:underline}}.mud-link.mud-link-underline-hover:focus-visible,.mud-link.mud-link-underline-hover:active{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-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)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:var(--mud-palette-action-default-hover)}}.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-default .mud-nav-link.active:not(.mud-nav-link-disabled):active: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);--mud-ripple-color: var(--mud-palette-primary);background-color:var(--mud-palette-primary-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.12)}}.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-primary .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-primary-rgb), 0.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);--mud-ripple-color: var(--mud-palette-secondary);background-color:var(--mud-palette-secondary-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.12)}}.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-secondary .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-secondary-rgb), 0.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);--mud-ripple-color: var(--mud-palette-tertiary);background-color:var(--mud-palette-tertiary-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.12)}}.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-tertiary .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-tertiary-rgb), 0.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);--mud-ripple-color: var(--mud-palette-info);background-color:var(--mud-palette-info-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.12)}}.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-info .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-info-rgb), 0.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);--mud-ripple-color: var(--mud-palette-success);background-color:var(--mud-palette-success-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.12)}}.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-success .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-success-rgb), 0.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);--mud-ripple-color: var(--mud-palette-warning);background-color:var(--mud-palette-warning-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.12)}}.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-warning .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-warning-rgb), 0.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);--mud-ripple-color: var(--mud-palette-error);background-color:var(--mud-palette-error-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.12)}}.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-error .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-error-rgb), 0.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);--mud-ripple-color: var(--mud-palette-dark);background-color:var(--mud-palette-dark-hover)}@media(hover: hover)and (pointer: fine){.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled):hover:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.12)}}.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled):focus-visible:not(.mud-nav-link-disabled),.mud-navmenu.mud-navmenu-dark .mud-nav-link.active:not(.mud-nav-link-disabled):active:not(.mud-nav-link-disabled){background-color:rgba(var(--mud-palette-dark-rgb), 0.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{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;justify-content:flex-start;text-transform:inherit;background-color:rgba(0,0,0,0);transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,padding 250ms cubic-bezier(0.4, 0, 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}@media(hover: hover)and (pointer: fine){.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(0.25, 0.8, 0.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-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-mini .mud-nav-link{line-height:1;display:flex;align-items:center}.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:rgba(0,0,0,0)}.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:rgba(0,0,0,0)}.page-content-navigation .page-content-navigation-navlink .mud-nav-link .mud-nav-link-text{margin-left:0px;margin-inline-start:0px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mud-pagination{display:inline-flex;flex-wrap:wrap;gap:6px;align-items:center;margin:0;list-style:none}.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}.mud-picker-view.mud-picker-open{display:block}.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:0px;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:0px;visibility:visible}.mud-picker-pos-above.mud-picker-pos-left{left:50%;transform:translateX(-50%)}.mud-picker-pos-above.mud-picker-pos-right{right:0px}.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:0px}.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)}@media(hover: hover)and (pointer: fine){.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}@media(hover: hover)and (pointer: fine){.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(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.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;align-items:center;justify-content:center;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.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}@media(hover: hover)and (pointer: fine){.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)}@media(hover: hover)and (pointer: fine){.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)))}@media(hover: hover)and (pointer: fine){.mud-range-selection-primary:hover{color:var(--mud-palette-primary-text) !important;background-color:var(--mud-palette-primary) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-secondary:hover{color:var(--mud-palette-secondary-text) !important;background-color:var(--mud-palette-secondary) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-tertiary:hover{color:var(--mud-palette-tertiary-text) !important;background-color:var(--mud-palette-tertiary) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-info:hover{color:var(--mud-palette-info-text) !important;background-color:var(--mud-palette-info) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-success:hover{color:var(--mud-palette-success-text) !important;background-color:var(--mud-palette-success) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-warning:hover{color:var(--mud-palette-warning-text) !important;background-color:var(--mud-palette-warning) !important}}@media(hover: hover)and (pointer: fine){.mud-range-selection-error:hover{color:var(--mud-palette-error-text) !important;background-color:var(--mud-palette-error) !important}}@media(hover: hover)and (pointer: fine){.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%}@media(hover: hover)and (pointer: fine){.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:hsla(0,0%,100%,.54)}@media(hover: hover)and (pointer: fine){.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:-0.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:0em}.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:0em}.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;touch-action:pinch-zoom;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;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 0px}.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 0px}.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 0px}.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 0px}.mud-picker-time-container .mud-picker-time-clock .mud-picker-time-clock-pointer.mud-picker-time-clock-pointer-animation{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,height 150ms cubic-bezier(0.4, 0, 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:rgba(0,0,0,0);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:rgba(0,0,0,0) !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(0.8, 0.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;touch-action:pinch-zoom}.mud-picker-color-picker .mud-picker-color-overlay{width:100%;height:100%;user-select:none}.mud-picker-color-picker .mud-picker-color-overlay.mud-picker-color-overlay-white{background:linear-gradient(to right, white 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%, black 100%)}.mud-picker-color-picker .mud-picker-color-selector{position:absolute;top:-13px;left:-13px;pointer-events:none}.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:0px;box-shadow:none}.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) 0px 1px 4px 0px}.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) 0px 1px 4px 0px}.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, #FF0000, #ff0 16.66%, #0f0 33.33%, #0ff 50%, #00f 66.66%, #f0f 83.33%, #FF0000)}.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(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border-radius 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:var(--mud-default-borderradius);box-shadow:0 0 6px rgba(127,130,134,.18)}@media(hover: hover)and (pointer: fine){.mud-picker-color-dot:hover{cursor:pointer;box-shadow:0px 3px 1px -2px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 1px 5px 0px 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:0px 3px 1px -2px rgba(0,0,0,.2),0px 2px 2px 0px rgba(0,0,0,.14),0px 1px 5px 0px rgba(0,0,0,.12)}.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-popover .mud-list{max-height:inherit;overflow-y:auto}.mud-popover .mud-popover{z-index:auto}.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-select .mud-popover-cascading-value{z-index:calc(var(--mud-zindex-select) + 5)}.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 tbody tr:last-child td{border-bottom:none}.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.mud-table-dense * tr td,.mud-simple-table.mud-table-dense * tr th{padding:6px 16px}@media(hover: hover)and (pointer: fine){.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)}@media(hover: hover)and (pointer: fine){.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:var(--mud-palette-skeleton)}.mud-skeleton-text{height:auto;transform:scale(1, 0.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, 0.04), transparent)}.mud-slider{color:var(--mud-palette-text-primary);display:inline-block;width:100%;user-select:none;touch-action:pinch-zoom}.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:rgba(0,0,0,0);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(0.4, 0, 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(0.4, 0, 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 #fff !important;transform:scale(4, 4)}@media(hover: hover)and (pointer: fine){.mud-slider .mud-slider-input:disabled::-webkit-slider-thumb:hover{box-shadow:0 0 0 1px #fff !important}}.mud-slider .mud-slider-input:disabled::-moz-range-thumb{background-color:#000;color:#fff;box-shadow:0 0 0 1px #fff !important;transform:scale(4, 4)}@media(hover: hover)and (pointer: fine){.mud-slider .mud-slider-input:disabled::-moz-range-thumb:hover{box-shadow:0 0 0 1px #fff !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), 0.3)}.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-primary-rgb), 0.3)}.mud-slider.mud-slider-primary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-primary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3)}.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-primary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-primary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-primary-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-primary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-primary-rgb), 0.24)}}.mud-slider.mud-slider-primary .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-primary .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-primary-rgb), 0.24)}.mud-slider.mud-slider-primary .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-primary .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-primary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-primary-rgb), 0.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), 0.3)}.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-secondary-rgb), 0.3)}.mud-slider.mud-slider-secondary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-secondary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3)}.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-secondary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-secondary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-secondary-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-secondary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-secondary-rgb), 0.24)}}.mud-slider.mud-slider-secondary .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-secondary .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-secondary-rgb), 0.24)}.mud-slider.mud-slider-secondary .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-secondary .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-secondary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-secondary-rgb), 0.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), 0.3)}.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-tertiary-rgb), 0.3)}.mud-slider.mud-slider-tertiary .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-tertiary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3)}.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-tertiary);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-tertiary .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-tertiary-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-tertiary .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-tertiary-rgb), 0.24)}}.mud-slider.mud-slider-tertiary .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-tertiary .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-tertiary-rgb), 0.24)}.mud-slider.mud-slider-tertiary .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-tertiary .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-tertiary-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-tertiary-rgb), 0.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), 0.3)}.mud-slider.mud-slider-info .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-info-rgb), 0.3)}.mud-slider.mud-slider-info .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-info);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3)}.mud-slider.mud-slider-info .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-info);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-info .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-info-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-info .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-info-rgb), 0.24)}}.mud-slider.mud-slider-info .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-info .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-info-rgb), 0.24)}.mud-slider.mud-slider-info .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-info .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-info-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-info-rgb), 0.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), 0.3)}.mud-slider.mud-slider-success .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-success-rgb), 0.3)}.mud-slider.mud-slider-success .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-success);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3)}.mud-slider.mud-slider-success .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-success);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-success .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-success-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-success .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-success-rgb), 0.24)}}.mud-slider.mud-slider-success .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-success .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-success-rgb), 0.24)}.mud-slider.mud-slider-success .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-success .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-success-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-success-rgb), 0.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), 0.3)}.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-warning-rgb), 0.3)}.mud-slider.mud-slider-warning .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-warning);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3)}.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-warning);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-warning .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-warning-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-warning .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-warning-rgb), 0.24)}}.mud-slider.mud-slider-warning .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-warning .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-warning-rgb), 0.24)}.mud-slider.mud-slider-warning .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-warning .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-warning-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-warning-rgb), 0.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), 0.3)}.mud-slider.mud-slider-error .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-error-rgb), 0.3)}.mud-slider.mud-slider-error .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-error);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3)}.mud-slider.mud-slider-error .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-error);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-error .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-error-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-error .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-error-rgb), 0.24)}}.mud-slider.mud-slider-error .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-error .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-error-rgb), 0.24)}.mud-slider.mud-slider-error .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-error .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-error-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-error-rgb), 0.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), 0.3)}.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-track{background-color:rgba(var(--mud-palette-dark-rgb), 0.3)}.mud-slider.mud-slider-dark .mud-slider-input::-webkit-slider-thumb{background-color:var(--mud-palette-dark);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3)}.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-thumb{background-color:var(--mud-palette-dark);box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3)}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-dark .mud-slider-input::-webkit-slider-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-dark-rgb), 0.24)}}@media(hover: hover)and (pointer: fine){.mud-slider.mud-slider-dark .mud-slider-input::-moz-range-thumb:hover{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 1px rgba(var(--mud-palette-dark-rgb), 0.24)}}.mud-slider.mud-slider-dark .mud-slider-input:focus-visible::-webkit-slider-thumb,.mud-slider.mud-slider-dark .mud-slider-input:active::-webkit-slider-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-dark-rgb), 0.24)}.mud-slider.mud-slider-dark .mud-slider-input:focus-visible::-moz-range-thumb,.mud-slider.mud-slider-dark .mud-slider-input:active::-moz-range-thumb{box-shadow:0px 1px 2px -1px rgba(var(--mud-palette-dark-rgb), 0.3),0 0 0 2px rgba(var(--mud-palette-dark-rgb), 0.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:50%}.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(0.4, 0, 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:0px}.mud-progress-circular-circle.mud-progress-static{transition:stroke-dashoffset 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-progress-circular-circle.mud-progress-circular-circle-rounded{stroke-linecap:round}.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(0.65, 0.815, 0.735, 0.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(0.65, 0.815, 0.735, 0.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(0.165, 0.84, 0.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(0.165, 0.84, 0.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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 50%}.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(0.65, 0.815, 0.735, 0.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(0.165, 0.84, 0.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(0.65, 0.815, 0.735, 0.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(0.165, 0.84, 0.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, hsla(0, 0%, 100%, 0.25) 25%, transparent 0, transparent 50%, hsla(0, 0%, 100%, 0.25) 0, hsla(0, 0%, 100%, 0.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-progress-linear.mud-progress-linear-rounded::before{border-radius:var(--mud-default-borderradius)}.mud-radio{cursor:pointer;display:inline-flex;align-items:center;vertical-align:middle;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mud-radio>.mud-radio-content{color:var(--mud-palette-text-primary)}@media(hover: hover)and (pointer: fine){.mud-radio .mud-disabled:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-radio .mud-disabled:hover>.mud-radio-content{color:var(--mud-palette-text-disabled)}.mud-radio .mud-disabled:hover *{cursor:default;color:var(--mud-palette-text-disabled)}}.mud-radio.mud-disabled,.mud-radio .mud-disabled:focus-visible,.mud-radio .mud-disabled:active{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-radio.mud-disabled>.mud-radio-content,.mud-radio .mud-disabled:focus-visible>.mud-radio-content,.mud-radio .mud-disabled:active>.mud-radio-content{color:var(--mud-palette-text-disabled)}.mud-radio.mud-disabled *,.mud-radio .mud-disabled:focus-visible *,.mud-radio .mud-disabled:active *{cursor:default;color:var(--mud-palette-text-disabled)}.mud-radio.mud-readonly,.mud-radio .mud-readonly:hover{cursor:default;background-color:rgba(0,0,0,0) !important}.mud-radio .mud-radio-dense{padding:4px}.mud-radio.mud-checked{color:var(--mud-palette-action-default)}@media(hover: hover)and (pointer: fine){.mud-radio.mud-checked:hover{background-color:var(--mud-palette-action-default-hover)}}.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-icons{display:flex;position:relative}.mud-radio-icons.mud-checked .mud-radio-icon-checked{transform:scale(1);transition:transform 150ms cubic-bezier(0, 0, 0.2, 1) 0ms}.mud-radio-icon-checked{left:0;position:absolute;transform:scale(0);transition:transform 150ms cubic-bezier(0.4, 0, 1, 1) 0ms}.mud-rating-root{display:inline-flex;color:#ffb400}.mud-rating-root:focus-visible,.mud-rating-root:active{outline:none}.mud-rating-root:focus-visible:not(.mud-disabled),.mud-rating-root:active:not(.mud-disabled){background-color:var(--mud-palette-action-default-hover)}.mud-rating-item{cursor:pointer;transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-rating-item.mud-rating-item-active{transform:scale(1.2)}.mud-rating-item.mud-disabled{cursor:default;pointer-events:none}.mud-rating-item.mud-disabled *{cursor:default;color:var(--mud-palette-text-disabled)}@media(hover: hover)and (pointer: fine){.mud-rating-item .mud-disabled:hover{cursor:default;pointer-events:none}.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:0px 3px 5px -1px rgba(0,0,0,.2),0px 6px 10px 0px rgba(0,0,0,.14),0px 1px 18px 0px rgba(0,0,0,.12);touch-action:pinch-zoom}.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;overflow-wrap:anywhere}.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;vertical-align:middle;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mud-switch.mud-disabled{color:var(--mud-palette-text-disabled) !important;cursor:default}.mud-switch.mud-readonly{cursor:default;background-color:rgba(0,0,0,0) !important}@media(hover: hover)and (pointer: fine){.mud-switch .mud-readonly:hover{cursor:default;background-color:rgba(0,0,0,0) !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(0.4, 0, 0.2, 1) 0ms,background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;border-radius:9px;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(0.4, 0, 0.2, 1) 0ms,transform 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-switch-base.mud-checked{transform:translateX(20px)}.mud-switch-base.mud-checked+.mud-switch-track{opacity:.5}@media(hover: hover)and (pointer: fine){.mud-switch-base:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-switch-base.mud-switch-disabled{color:var(--mud-palette-gray-default) !important}.mud-switch-base.mud-switch-disabled+.mud-switch-track{opacity:.12 !important}@media(hover: hover)and (pointer: fine){.mud-switch-base.mud-switch-disabled:hover{cursor:default;background-color:rgba(0,0,0,0) !important}}.mud-switch-base.mud-switch-disabled:focus-visible,.mud-switch-base.mud-switch-disabled:active{cursor:default;background-color:rgba(0,0,0,0) !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-small{width:14px;height:14px;box-shadow:0px 2px 1px -1px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 1px 3px 0px rgba(0,0,0,.12);border-radius:50%;background-color:currentColor}.mud-switch-button .mud-switch-thumb-medium{width:20px;height:20px;box-shadow:0px 2px 1px -1px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 1px 3px 0px rgba(0,0,0,.12);border-radius:50%;background-color:currentColor}.mud-switch-button .mud-switch-thumb-large{width:26px;height:26px;box-shadow:0px 2px 1px -1px rgba(0,0,0,.2),0px 1px 1px 0px rgba(0,0,0,.14),0px 1px 3px 0px rgba(0,0,0,.12);border-radius:50%;background-color:currentColor}.mud-switch-base-small.mud-switch-base{padding:5px}.mud-switch-base-medium.mud-switch-base{padding:9px}.mud-switch-base-large.mud-switch-base{padding:13px}.mud-switch-span-small.mud-switch-span{padding:7px;width:44px;height:24px}.mud-switch-span-medium.mud-switch-span{padding:12px;width:58px;height:38px}.mud-switch-span-large.mud-switch-span{padding:17px;width:72px;height:52px}.mud-switch-label-small{font-size:.8125rem !important}.mud-switch-label-medium{font-size:1rem !important}.mud-switch-label-large{font-size:1.1875rem !important}.mud-timeline{position:relative;display:flex}.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{padding-top:24px;flex-direction:column}.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-vertical::before{top:0;bottom:0;content:"";height:100%;position:absolute;width:2px;background:var(--mud-palette-divider)}.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{flex-direction:row}.mud-timeline-horizontal .mud-timeline-item{padding:0 24px;width:100%;min-width:0}.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-horizontal::before{top:0;bottom:0;content:"";height:2px;position:absolute;width:100%;background:var(--mud-palette-divider)}.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-gray-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{content:"";position:absolute;border-top:16px solid rgba(0,0,0,0);border-bottom:16px solid rgba(0,0,0,0);border-right:16px solid rgba(0,0,0,.1);top:calc(50% - 14px)}.mud-timeline-modifiers .mud-timeline-item-content .mud-card::after{content:"";position:absolute;border-top:16px solid rgba(0,0,0,0);border-bottom:16px solid rgba(0,0,0,0);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-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-typography{margin:0}.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-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-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-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-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-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(0.4, 0, 0.2, 1) 0ms}.mud-table.mud-table-square{border-radius:0px}.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}.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}@media(hover: hover)and (pointer: fine){.mud-table-root .mud-table-head .mud-table-cell .mud-button-root:hover{color:var(--mud-palette-action-default)}.mud-table-root .mud-table-head .mud-table-cell .mud-button-root:hover .mud-table-sort-label-icon{opacity:.8}}.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,.mud-table-root>.mud-table-foot:last-child>.mud-table-row:last-child>.mud-table-cell{border-bottom:none}.mud-table-sort-label{user-select:auto;display:inline-flex;align-items:center;flex-direction:inherit;justify-content:flex-start}.mud-table-sort-label .mud-table-sort-label-icon{font-size:18px;transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 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{left:0;position:sticky;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:-4px}.mud-table-cell .mud-checkbox>.mud-icon-button{padding:4px}.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-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-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell:first-child{border-right:none;border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell:last-child{border-right:1px solid var(--mud-palette-table-lines);border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-head.table-head-bordered .mud-table-row .mud-table-cell:last-child{border-right:1px solid var(--mud-palette-table-lines);border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-head.table-head-bordered .mud-table-row .mud-table-cell:only-child{border-right:none;border-top-right-radius:var(--mud-default-borderradius)}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-head .mud-table-row th.mud-table-cell:first-child{border-right:none;border-top-right-radius:var(--mud-default-borderradius)}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-foot.table-foot-bordered .mud-table-row .mud-table-cell:last-child{border-right:1px solid var(--mud-palette-table-lines);border-top-right-radius:0px}.mud-application-layout-rtl .mud-table-bordered .mud-table-container .mud-table-root .mud-table-foot .mud-table-row .mud-table-cell:first-child{border-right:none}.mud-table-sticky-header .mud-table-container{overflow-x:auto}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell:first-child{border-radius:var(--mud-default-borderradius) 0px 0px 0px}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell:last-child{border-radius:0px var(--mud-default-borderradius) 0px 0px}.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-header * .mud-table-root .mud-table-head * .mud-table-loading{background-color:var(--mud-palette-surface);position:sticky;z-index:2;top:59px}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-filter-panel-cell{top:59px}table:has(.mud-table-loading) .mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-filter-panel-cell{top:63px}.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell.sticky-left,.mud-table-sticky-header * .mud-table-root .mud-table-head * .mud-table-cell.sticky-right{z-index:3;background-color:var(--mud-palette-background-gray)}.mud-table-sticky-header.mud-table-dense * .mud-table-root .mud-table-head * .mud-table-loading{top:39px}.mud-table-sticky-header.mud-table-dense * .mud-table-root .mud-table-head * .mud-filter-panel-cell{top:39px}table:has(.mud-table-loading) .mud-table-sticky-header.mud-table-dense * .mud-table-root .mud-table-head * .mud-filter-panel-cell{top:43px}.mud-table-sticky-footer .mud-table-container{overflow-x:auto}.mud-table-sticky-footer * .mud-table-root .mud-table-foot{position:sticky;z-index:2;bottom:0}.mud-table-sticky-footer * .mud-table-root .mud-table-foot * .mud-table-cell{background-color:var(--mud-palette-surface)}.mud-table-row{color:inherit;display:table-row;outline:0;vertical-align:middle}@media(hover: hover)and (pointer: fine){.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)}@media(hover: hover)and (pointer: fine){.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-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;position:sticky;left:0}.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;flex-wrap:nowrap}.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:0px !important;min-width:52px}.mud-table-pagination-select .mud-select-input{margin-top:0px !important;padding:0 7px !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{width:100%}.mud-table-empty-row{background-color:var(--mud-palette-surface);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-top:-12px;margin-bottom:-12px;margin-inline-start:-12px;margin-inline-end:-2px}@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:revert}.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}.mud-xs-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-xs-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-sm-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-sm-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-md-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-md-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-lg-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-lg-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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}.mud-xl-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-xl-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}@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:revert}.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-xxl-table.mud-table-bordered .mud-table-container .mud-table-root colgroup~.mud-table-body .mud-table-row .mud-table-cell{border-right:1px solid var(--mud-palette-table-lines) !important}.mud-xxl-table.mud-table-bordered .mud-table-container .mud-table-root .mud-table-body .mud-table-row .mud-table-cell{border-right:none !important}}.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 .mud-tooltip-root{width:auto}.mud-tabs.mud-tabs-vertical-reverse{flex-direction:row-reverse}.mud-tabs.mud-tabs-rounded{border-radius:var(--mud-default-borderradius);overflow:hidden}.mud-tabs.mud-tabs-rounded .mud-tabs-tabbar{border-radius:var(--mud-default-borderradius)}.mud-tabs.mud-tabs-rounded .mud-tabs-panels{border-radius:var(--mud-default-borderradius)}.mud-tabs-tabbar{position:relative;background-color:var(--mud-palette-surface)}.mud-tabs-tabbar.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-tabbar.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-tabbar.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-tabbar.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-tabbar.mud-tabs-rounded{border-radius:var(--mud-default-borderradius)}.mud-tabs-tabbar.mud-tabs-vertical .mud-tabs-tabbar-inner{flex-direction:column}.mud-tabs-tabbar.mud-tabs-vertical .mud-tabs-tabbar-inner .mud-tabs-scroll-button .mud-button-root{width:100%;border-radius:0px;height:32px}.mud-tabs-tabbar.mud-tabs-vertical .mud-tabs-tabbar-inner .mud-tabs-scroll-button .mud-button-root .mud-icon-button-label .mud-icon-root{transform:rotate(90deg)}.mud-tabs-tabbar .mud-tabs-tabbar-inner{display:flex;min-height:48px}.mud-tabs-tabbar-content{width:100%;flex:1 1 auto;display:inline-block;position:relative;white-space:nowrap;overflow:hidden}.mud-tabs-tabbar-content .mud-tabs-tabbar-wrapper{width:max-content;position:inherit;display:flex;transition:.3s cubic-bezier(0.25, 0.8, 0.5, 1)}.mud-tabs-tabbar-content .mud-tabs-tabbar-wrapper.mud-tabs-centered{margin:auto}.mud-tabs-tabbar-content .mud-tabs-tabbar-wrapper.mud-tabs-vertical{flex-direction:column}.mud-tabs-panels{position:relative;transition:.3s cubic-bezier(0.25, 0.8, 0.5, 1)}.mud-tabs-panels.mud-tabs-vertical{display:flex;flex-grow:1}.mud-tab{width:100%;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(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.mud-tab:hover{cursor:pointer;background-color:var(--mud-palette-action-default-hover)}}.mud-tab.mud-tab-active{color:var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.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.mud-tab-panel-hidden{display:none}.mud-tab-slider{position:absolute;background:var(--mud-palette-primary)}.mud-tab-slider.mud-tab-slider-horizontal{height:2px;bottom:0;transition:left .3s cubic-bezier(0.64, 0.09, 0.08, 1);will-change:left}.mud-tab-slider.mud-tab-slider-horizontal.mud-tab-slider-horizontal-reverse{top:0;bottom:unset}.mud-tab-slider.mud-tab-slider-vertical{width:2px;right:0;transition:top .3s cubic-bezier(0.64, 0.09, 0.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-tabbar-primary{background-color:var(--mud-palette-primary);color:var(--mud-palette-primary-text)}.mud-tabs-tabbar-primary .mud-tab-slider{background:var(--mud-palette-primary-text)}.mud-tabs-tabbar-primary .mud-tab.mud-tab-active{color:var(--mud-palette-primary-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-primary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-primary-lighten)}}.mud-tabs-tabbar-secondary{background-color:var(--mud-palette-secondary);color:var(--mud-palette-secondary-text)}.mud-tabs-tabbar-secondary .mud-tab-slider{background:var(--mud-palette-secondary-text)}.mud-tabs-tabbar-secondary .mud-tab.mud-tab-active{color:var(--mud-palette-secondary-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-secondary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-secondary-lighten)}}.mud-tabs-tabbar-tertiary{background-color:var(--mud-palette-tertiary);color:var(--mud-palette-tertiary-text)}.mud-tabs-tabbar-tertiary .mud-tab-slider{background:var(--mud-palette-tertiary-text)}.mud-tabs-tabbar-tertiary .mud-tab.mud-tab-active{color:var(--mud-palette-tertiary-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-tertiary .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-tertiary-lighten)}}.mud-tabs-tabbar-info{background-color:var(--mud-palette-info);color:var(--mud-palette-info-text)}.mud-tabs-tabbar-info .mud-tab-slider{background:var(--mud-palette-info-text)}.mud-tabs-tabbar-info .mud-tab.mud-tab-active{color:var(--mud-palette-info-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-info .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-info-lighten)}}.mud-tabs-tabbar-success{background-color:var(--mud-palette-success);color:var(--mud-palette-success-text)}.mud-tabs-tabbar-success .mud-tab-slider{background:var(--mud-palette-success-text)}.mud-tabs-tabbar-success .mud-tab.mud-tab-active{color:var(--mud-palette-success-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-success .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-success-lighten)}}.mud-tabs-tabbar-warning{background-color:var(--mud-palette-warning);color:var(--mud-palette-warning-text)}.mud-tabs-tabbar-warning .mud-tab-slider{background:var(--mud-palette-warning-text)}.mud-tabs-tabbar-warning .mud-tab.mud-tab-active{color:var(--mud-palette-warning-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-warning .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-warning-lighten)}}.mud-tabs-tabbar-error{background-color:var(--mud-palette-error);color:var(--mud-palette-error-text)}.mud-tabs-tabbar-error .mud-tab-slider{background:var(--mud-palette-error-text)}.mud-tabs-tabbar-error .mud-tab.mud-tab-active{color:var(--mud-palette-error-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-error .mud-tab.mud-tab-active:hover{background-color:var(--mud-palette-error-lighten)}}.mud-tabs-tabbar-dark{background-color:var(--mud-palette-dark);color:var(--mud-palette-dark-text)}.mud-tabs-tabbar-dark .mud-tab-slider{background:var(--mud-palette-dark-text)}.mud-tabs-tabbar-dark .mud-tab.mud-tab-active{color:var(--mud-palette-dark-text)}@media(hover: hover)and (pointer: fine){.mud-tabs-tabbar-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-tabbar .mud-tab{padding:6px 14px}.mud-dynamic-tabs .mud-tabs-tabbar .mud-tab .mud-icon-button{padding:4px;margin-right:-4px;margin-inline-end:-4px;margin-inline-start:unset}.mud-dynamic-tabs .mud-tabs-tabbar .mud-tab .mud-tabs-panel-header-before{padding-right:8px;padding-inline-end:8px;padding-inline-start:unset}.mud-dynamic-tabs .mud-tabs-tabbar .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-autocomplete--with-progress .mud-select-input input{padding-right:3.5rem !important}.mud-select.mud-autocomplete--with-progress .mud-input-adorned-end input{padding-right:4.5rem !important}.mud-select.mud-autocomplete--with-progress .mud-select-input .mud-icon-button{display:none !important}.mud-select.mud-autocomplete--with-progress .progress-indicator-circular{position:absolute;width:100%;top:0;bottom:0;display:flex;align-items:center;justify-content:flex-end;padding-top:.25rem;padding-bottom:.25rem;padding-right:1rem}.mud-select.mud-autocomplete--with-progress .mud-progress-linear{position:absolute;bottom:-1px;height:2px}.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-rtl-provider .mud-select .progress-indicator-circular--with-adornment{padding-right:1rem}.mud-rtl-provider.mud-application-layout-rtl .mud-select .progress-indicator-circular--with-adornment{padding-right:0rem !important;padding-left:1rem !important}.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;box-sizing:border-box;align-items:center;color-scheme:var(--mud-native-html-color-scheme);line-height:1.1876em}.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}@media(hover: hover)and (pointer: fine){.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, 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, 0.2, 1) 0ms;background-color:rgba(0,0,0,.09);border-top-left-radius:4px;border-top-right-radius:4px}@media(hover: hover)and (pointer: fine){.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(0.4, 0, 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, 0.2, 1) 0ms;border-bottom:2px solid var(--mud-palette-primary);pointer-events:none}@media(hover: hover)and (pointer: fine){.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:0px}.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%;min-width:0%;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(0.4, 0, 0.2, 1) 0ms}.mud-input.mud-input-outlined>.mud-input-outlined-border legend{float:none;visibility:hidden;font-size:.75rem;font-weight:inherit;width:0;height:0;margin:0 11px 0 11px;padding:0;position:relative}@media(hover: hover)and (pointer: fine){.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.mud-shrink>.mud-input-outlined-border legend{width:auto;padding:0 5px}.mud-input.mud-input-outlined:focus-within>.mud-input-outlined-border,.mud-input.mud-input-outlined:focus-within .mud-shrink>.mud-input-outlined-border{border-width:2px;border-color:var(--mud-palette-primary)}.mud-input.mud-input-outlined:focus-within>.mud-input-outlined-border legend,.mud-input.mud-input-outlined:focus-within .mud-shrink>.mud-input-outlined-border legend{width:auto;padding:0 5px}.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:1lh;margin:0;display:block;padding:6px 0 7px;min-width:0;background:none;position:relative;box-sizing:content-box;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mud-input>input.mud-input-root::placeholder,div.mud-input-slot.mud-input-root::placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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(0.4, 0, 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,.mud-input>input.mud-input-root:active,div.mud-input-slot.mud-input-root:focus,div.mud-input-slot.mud-input-root:active{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:rgba(0,0,0,0);resize:none;cursor:auto}.mud-input>textarea.mud-input-root::placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root::-webkit-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root:-moz-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root::-moz-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root:-ms-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-input>textarea.mud-input-root::-ms-input-placeholder{color:currentColor;opacity:.42;transition:opacity 200ms cubic-bezier(0.4, 0, 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,.mud-input>textarea.mud-input-root:active{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{box-sizing:border-box;margin-top:0;margin-bottom:0;padding:27px 12px 10px;mask-image:linear-gradient(to bottom, transparent 27px, black 27px)}.mud-input>textarea.mud-input-root.mud-input-root-filled.mud-input-root-margin-dense{padding-top:23px;padding-bottom:6px;mask-image:linear-gradient(to bottom, transparent 23px, black 23px)}.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{padding-top:18px;padding-bottom:19px;mask-image:linear-gradient(to bottom, transparent 18px, black 18px)}.mud-input>textarea.mud-input-root.mud-input-root-filled.mud-input-root-hidden-label.mud-input-root-margin-dense{padding-top:10px;padding-bottom:11px;mask-image:linear-gradient(to bottom, transparent 10px, black 10px)}.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:rgba(0,0,0,0)}.mud-input>textarea.mud-input-root-outlined{box-sizing:border-box;margin-top:0;margin-bottom:0;padding:18.5px 14px;mask-image:linear-gradient(to bottom, transparent 18.5px, black 18.5px)}.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{padding-top:10.5px;padding-bottom:10.5px;mask-image:linear-gradient(to bottom, transparent 10.5px, black 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{margin-right:8px;margin-inline-end:8px;margin-inline-start:unset}.mud-input-adornment-start.mud-input-root-filled-shrink{margin-top:16px}.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}.mud-input-control.mud-input-control-full-width{width:100%}.mud-input-control.mud-input-control-boolean-input{flex:none;margin:0}.mud-input-control.mud-input-control-boolean-input .mud-radio-group{display:inherit;flex-direction:row;align-items:center;flex-wrap:wrap}.mud-input-control.mud-input-outlined-with-label{margin-top:8px;margin-bottom:4px}.mud-input-control.mud-input-control-margin-dense{margin:4px 0px}.mud-input-control.mud-input-control-margin-dense.mud-input-outlined-with-label{margin-top:8px;margin-bottom:4px}.mud-input-control.mud-input-control-margin-normal{margin:8px 0px}.mud-input-control.mud-input-control-margin-normal.mud-input-outlined-with-label{margin-top:16px;margin-bottom:8px}.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.mud-input-text-with-label{margin-top:16px}.mud-input-control>.mud-input-control-input-container>.mud-input-label-outlined.mud-input-label-inputcontrol{line-height:1.15rem}.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.15rem;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 0;min-width:unset;min-height:unset}.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-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, 0.2, 1) 0ms,transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms}.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;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}.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(0.75);transform-origin:top left}.mud-input-label-animated{transition:color 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0, 0, 0.2, 1) 0ms,max-width 200ms cubic-bezier(0, 0, 0.2, 1) 0ms}.mud-input-label-filled{z-index:1;transform:translate(12px, 20px) scale(1);max-width:calc(100% - 12px);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);max-width:calc(100% - 14px);pointer-events:none;background-color:rgba(0,0,0,0);padding:0px 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(0.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(0.75);max-width:calc((100% - 12px)/.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(0.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(0.75);max-width:calc((100% - 14px)/.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(0.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(0.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(0.75)}.mud-input-content-placement-start{flex-direction:row-reverse}.mud-input-content-placement-start.mud-input-with-content{margin-left:16px;margin-inline-start:16px}.mud-input-content-placement-end{flex-direction:row}.mud-input-content-placement-end.mud-input-with-content{margin-right:16px;margin-inline-end:16px}.mud-input-content-placement-top{margin-inline-end:unset;flex-direction:column-reverse}.mud-input-content-placement-top.mud-input-with-content{margin-left:16px;margin-inline-start:16px}.mud-input-content-placement-bottom{margin-inline-end:unset;flex-direction:column}.mud-input-content-placement-bottom.mud-input-with-content{margin-left:16px;margin-inline-start:16px}.mud-file-upload{flex-grow:0}.mud-file-upload>.mud-input-control-input-container{display:initial !important}.mud-file-upload.mud-input-control{margin-top:0}.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(0.25, 0.8, 0.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:rgba(0,0,0,0);background-color:rgba(0,0,0,0);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:0px;padding:0px;list-style:none;overflow:auto}.mud-treeview.mud-treeview-selected-primary .mud-treeview-item-content.mud-treeview-item-selected{color:var(--mud-palette-primary);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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);--mud-ripple-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:0px;padding:0px;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:rgba(0,0,0,0)}.mud-treeview-item .mud-treeview-item-arrow .mud-icon-button,.mud-treeview-item .mud-treeview-item-checkbox .mud-icon-button{padding:4px}.mud-treeview-item.mud-treeview-item-disabled{color:var(--mud-palette-action-disabled) !important;cursor:default !important;pointer-events:none !important}.mud-treeview-item-content{width:100%;display:flex;padding:4px 8px;align-items:center;transition:background-color 150ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.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(0.25, 0.8, 0.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}.mud-treeview-select-none{user-select:none}@keyframes rotation{from{transform:rotate(0deg)}to{transform:rotate(359deg)}}.mud-application-layout-rtl .mud-treeview-item-arrow{transform:scaleX(-1)}.mud-data-grid th{position:relative}.mud-data-grid .drop-allowed{color:var(--mud-palette-success)}.mud-data-grid .drop-not-allowed{color:var(--mud-palette-error)}.mud-data-grid .drag-icon-options{transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;opacity:0;cursor:grab}.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.filter-header-cell{padding:6px 24px 6px 16px;padding-inline-start:16px;padding-inline-end:24px}.mud-data-grid .mud-table-cell.sticky-left,.mud-data-grid .mud-table-cell.sticky-right{position:sticky;background-color:var(--mud-palette-background-gray);z-index:1}.mud-data-grid .mud-table-cell.sticky-left{left:0px}.mud-data-grid .mud-table-cell.sticky-right{right:0px}.mud-data-grid .mud-table-cell:not(.mud-table-child-content) .mud-input-text{margin-top:0 !important}.mud-data-grid .mud-table-cell .column-header{display:flex;align-items:center;justify-content:space-between}.mud-data-grid .mud-table-cell .column-header .sortable-column-header{width:100%}@media(hover: hover)and (pointer: fine){.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,.mud-data-grid .mud-table-cell .column-header:hover .column-options .drag-icon-options{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{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-inline-start:4px;margin-inline-end:unset;user-select:none;transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 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 .mud-sort-index{transform:scale(0.9) translate(-2px, -2px)}.mud-data-grid .mud-table-cell .column-header .column-options .mud-menu .mud-icon-button-label{user-select:none;transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;opacity:0}.mud-data-grid .mud-table-cell .mud-resizer{position:absolute;top:0;right:0;width:8px;cursor:col-resize;user-select:none}.mud-application-layout-rtl .mud-data-grid .mud-table-cell .mud-resizer{right:auto;left:0}@media(hover: hover)and (pointer: fine){.mud-data-grid .mud-table-cell .mud-resizer:hover{border-right:2px solid var(--mud-palette-primary)}}.mud-data-grid .mud-table-cell .mud-resizing{border-right:2px solid var(--mud-palette-primary)}@media(hover: hover)and (pointer: fine){.mud-data-grid-columns-panel:hover .column-options .sort-direction-icon,.mud-data-grid-columns-panel:hover .column-options .column-options-icon,.mud-data-grid-columns-panel:hover .column-options .drag-icon-options{opacity:.8;color:var(--mud-palette-action-default)}.mud-data-grid-columns-panel:hover .column-options .mud-menu .mud-icon-button-label{opacity:1;color:var(--mud-palette-action-default)}}.mud-data-grid-columns-panel .sort-direction-icon{font-size:18px;margin-left:4px;margin-inline-start:4px;margin-inline-end:unset;user-select:none;transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}.mud-data-grid-columns-panel .sort-direction-icon.mud-direction-desc{opacity:1;transform:rotate(180deg)}.mud-data-grid-columns-panel .sort-direction-icon.mud-direction-asc{opacity:1;transform:rotate(0deg)}.mud-data-grid-columns-panel .mud-sort-index{transform:scale(0.9) translate(-2px, -2px)}.mud-data-grid-columns-panel .drag-icon-options{transition:opacity 300ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,transform 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;opacity:1;cursor:grab}.mud-data-grid-columns-panel .mud-drop-item-preview-start{z-index:0}.mud-toggle-group{display:grid;overflow:hidden;box-sizing:border-box;border-width:0;border-radius:var(--mud-default-borderradius)}.mud-toggle-group>.mud-toggle-item{box-shadow:none;border-width:inherit;border-style:none;border-color:inherit;border-radius:0}.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>.mud-toggle-item:not(:first-child),.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>:not(:first-child) .mud-toggle-item{margin-left:-1px}.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>.mud-toggle-item:not(:first-child).mud-toggle-item-delimiter,.mud-toggle-group-horizontal:not(.mud-toggle-group-rtl)>:not(:first-child) .mud-toggle-item.mud-toggle-item-delimiter{border-left-style:solid !important}.mud-toggle-group-horizontal.mud-toggle-group-rtl>.mud-toggle-item:not(:last-child),.mud-toggle-group-horizontal.mud-toggle-group-rtl>:not(:last-child) .mud-toggle-item{margin-left:-1px}.mud-toggle-group-horizontal.mud-toggle-group-rtl>.mud-toggle-item:not(:last-child).mud-toggle-item-delimiter,.mud-toggle-group-horizontal.mud-toggle-group-rtl>:not(:last-child) .mud-toggle-item.mud-toggle-item-delimiter{border-left-style:solid !important}.mud-toggle-group-vertical>.mud-toggle-item:not(:first-child),.mud-toggle-group-vertical>:not(:first-child) .mud-toggle-item{margin-top:-1px}.mud-toggle-group-vertical>.mud-toggle-item:not(:first-child).mud-toggle-item-delimiter,.mud-toggle-group-vertical>:not(:first-child) .mud-toggle-item.mud-toggle-item-delimiter{border-top-style:solid !important}.mud-toggle-item{padding:6px;min-width:auto;border-style:none !important}.mud-toggle-item>.mud-button-label{min-height:20px}.mud-toggle-item .mud-toggle-item-check-icon{margin:0 6px;font-size:20px}.mud-toggle-item-size-small{padding:4px}.mud-toggle-item-size-small .mud-toggle-item-check-icon{margin:0 4px;font-size:18px}.mud-toggle-item-size-large{padding:8px}.mud-toggle-item-size-large .mud-toggle-item-check-icon{margin:0 8px;font-size:22px}.mud-toggle-item-fixed>.mud-button-label:has(>.mud-toggle-item-check-icon){display:grid;grid-template-columns:1fr auto 1fr}.mud-toggle-item-check-icon{justify-self:end}.mud-toggle-item-content{display:contents}.mud-stepper .mud-stepper-nav .mud-step{padding:24px;position:relative;cursor:default;pointer-events:none;user-select:text}.mud-stepper .mud-stepper-nav .mud-step.mud-clickable{cursor:pointer;pointer-events:auto;user-select:none;transition:background-color 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms,border 250ms cubic-bezier(0.4, 0, 0.2, 1) 0ms}@media(hover: hover)and (pointer: fine){.mud-stepper .mud-stepper-nav .mud-step.mud-clickable:hover{background-color:var(--mud-palette-action-default-hover)}}.mud-stepper .mud-stepper-nav .mud-step.mud-clickable:focus-visible,.mud-stepper .mud-stepper-nav .mud-step.mud-clickable:active{background-color:var(--mud-palette-action-default-hover)}.mud-stepper .mud-stepper-nav .mud-step:disabled .mud-step-label-icon{background-color:var(--mud-palette-lines-default) !important;color:var(--mud-palette-text-disabled) !important}.mud-stepper .mud-stepper-nav .mud-step:disabled .mud-step-label-content{color:var(--mud-palette-text-disabled) !important}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label{display:flex;align-items:center;flex-direction:row;height:100%;gap:8px}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-icon{display:flex;flex-shrink:0;color:var(--mud-palette-white);border-radius:50%;background-color:var(--mud-palette-text-disabled);height:24px;width:24px;align-items:center;justify-content:center;font-size:12px;letter-spacing:0;text-indent:0;white-space:nowrap}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-icon .mud-typography{line-height:1}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-content{width:100%;color:var(--mud-palette-text-secondary);--mud-ripple-color: var(--mud-palette-text-secondary);text-align:start}.mud-stepper .mud-stepper-nav .mud-step .mud-step-label .mud-step-label-content-title{line-height:var(--mud-typography-body2-lineheight)}.mud-stepper .mud-stepper-nav .mud-step.active .mud-step-label-content{color:var(--mud-palette-text-primary);--mud-ripple-color: var(--mud-palette-text-primary)}.mud-stepper .mud-stepper-nav.mud-stepper-nav-scrollable{overflow:auto}.mud-stepper .mud-stepper-nav.mud-stepper-nav-scrollable .mud-step{min-width:fit-content}.mud-stepper .mud-stepper-nav.mud-stepper-nav-scrollable .mud-stepper-nav-connector{min-width:32px}.mud-stepper .mud-stepper-content{padding:0 24px}.mud-stepper .mud-stepper-nav-connector{flex:1 1 auto}.mud-stepper .mud-stepper-nav-connector .mud-stepper-nav-connector-line{display:block;border-color:var(--mud-palette-lines-inputs)}.mud-stepper.mud-stepper__horizontal .mud-stepper-nav{display:flex}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step{flex-basis:175px}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step-label{flex-direction:column;justify-content:flex-start;align-items:center}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step-label .mud-step-label-icon{margin-inline-end:0px !important}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-step-label .mud-step-label-content{margin-top:12px;text-align:center}.mud-stepper.mud-stepper__horizontal.mud-stepper__center-labels .mud-stepper-nav-connector{margin:35px -67px 0;align-self:flex-start}.mud-stepper.mud-stepper__horizontal .mud-stepper-nav-connector{align-self:center;margin:0 -16px}.mud-stepper.mud-stepper__horizontal .mud-stepper-nav-connector .mud-stepper-nav-connector-line{border-top-style:solid;border-top-width:1px}.mud-stepper.mud-stepper__vertical .mud-stepper-nav{padding:8px 0px}.mud-stepper.mud-stepper__vertical .mud-step{padding:0 16px}.mud-stepper.mud-stepper__vertical .mud-step .mud-step-label{padding:8px 0px}.mud-stepper.mud-stepper__vertical .mud-stepper-nav-connector{margin-inline-start:28px;margin-inline-end:0}.mud-stepper.mud-stepper__vertical .mud-stepper-nav-connector .mud-stepper-nav-connector-line{border-inline-start:1px solid #bdbdbd;min-height:24px}.mud-stepper.mud-stepper__vertical .mud-stepper-content{margin-inline-start:28px;margin-inline-end:0;padding-inline-start:20px;padding-inline-end:0;border-inline-start:1px solid var(--mud-palette-lines-inputs)}.mud-stepper-step-button{display:inline-flex;-moz-box-align:center;align-items:center;-moz-box-pack:center;justify-content:center;position:relative;background-color:rgba(0,0,0,0);outline:0px;border:0px;border-radius:0px;cursor:pointer;user-select:none;vertical-align:middle;appearance:none;text-decoration:none;color:inherit;width:100%;padding:24px 16px;margin:-24px -16px;box-sizing:content-box}.mud-swipearea{touch-action:none}.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:0px !important}.border-t-0{border-top-width:0px !important}.border-r-0{border-right-width:0px !important}.border-b-0{border-bottom-width:0px !important}.border-l-0{border-left-width:0px !important}.border-x-0{border-left-width:0px !important;border-right-width:0px !important}.border-y-0{border-top-width:0px !important;border-bottom-width:0px !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-grow-start>*:first-child{flex-grow:1 !important}.flex-grow-end>*:last-child{flex-grow:1 !important}.flex-grow-start-and-end>:first-child,.flex-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-grow-all>*{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:0px}.gap-x-0{column-gap:0px}.gap-y-0{row-gap:0px}.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}.gap-17{gap:68px}.gap-x-17{column-gap:68px}.gap-y-17{row-gap:68px}.gap-18{gap:72px}.gap-x-18{column-gap:72px}.gap-y-18{row-gap:72px}.gap-19{gap:76px}.gap-x-19{column-gap:76px}.gap-y-19{row-gap:76px}.gap-20{gap:80px}.gap-x-20{column-gap:80px}.gap-y-20{row-gap:80px}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-sm-grow-end>*:last-child{flex-grow:1 !important}.flex-sm-grow-start-and-end>:first-child,.flex-sm-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-sm-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-sm-grow-all>*{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:0px}.gap-x-sm-0{column-gap:0px}.gap-y-sm-0{row-gap:0px}.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}.gap-sm-17{gap:68px}.gap-x-sm-17{column-gap:68px}.gap-y-sm-17{row-gap:68px}.gap-sm-18{gap:72px}.gap-x-sm-18{column-gap:72px}.gap-y-sm-18{row-gap:72px}.gap-sm-19{gap:76px}.gap-x-sm-19{column-gap:76px}.gap-y-sm-19{row-gap:76px}.gap-sm-20{gap:80px}.gap-x-sm-20{column-gap:80px}.gap-y-sm-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-md-grow-end>*:last-child{flex-grow:1 !important}.flex-md-grow-start-and-end>:first-child,.flex-md-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-md-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-md-grow-all>*{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:0px}.gap-x-md-0{column-gap:0px}.gap-y-md-0{row-gap:0px}.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}.gap-md-17{gap:68px}.gap-x-md-17{column-gap:68px}.gap-y-md-17{row-gap:68px}.gap-md-18{gap:72px}.gap-x-md-18{column-gap:72px}.gap-y-md-18{row-gap:72px}.gap-md-19{gap:76px}.gap-x-md-19{column-gap:76px}.gap-y-md-19{row-gap:76px}.gap-md-20{gap:80px}.gap-x-md-20{column-gap:80px}.gap-y-md-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-lg-grow-end>*:last-child{flex-grow:1 !important}.flex-lg-grow-start-and-end>:first-child,.flex-lg-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-lg-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-lg-grow-all>*{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:0px}.gap-x-lg-0{column-gap:0px}.gap-y-lg-0{row-gap:0px}.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}.gap-lg-17{gap:68px}.gap-x-lg-17{column-gap:68px}.gap-y-lg-17{row-gap:68px}.gap-lg-18{gap:72px}.gap-x-lg-18{column-gap:72px}.gap-y-lg-18{row-gap:72px}.gap-lg-19{gap:76px}.gap-x-lg-19{column-gap:76px}.gap-y-lg-19{row-gap:76px}.gap-lg-20{gap:80px}.gap-x-lg-20{column-gap:80px}.gap-y-lg-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-xl-grow-end>*:last-child{flex-grow:1 !important}.flex-xl-grow-start-and-end>:first-child,.flex-xl-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-xl-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-xl-grow-all>*{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:0px}.gap-x-xl-0{column-gap:0px}.gap-y-xl-0{row-gap:0px}.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}.gap-xl-17{gap:68px}.gap-x-xl-17{column-gap:68px}.gap-y-xl-17{row-gap:68px}.gap-xl-18{gap:72px}.gap-x-xl-18{column-gap:72px}.gap-y-xl-18{row-gap:72px}.gap-xl-19{gap:76px}.gap-x-xl-19{column-gap:76px}.gap-y-xl-19{row-gap:76px}.gap-xl-20{gap:80px}.gap-x-xl-20{column-gap:80px}.gap-y-xl-20{row-gap:80px}}@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-grow-start>*:first-child{flex-grow:1 !important}.flex-xxl-grow-end>*:last-child{flex-grow:1 !important}.flex-xxl-grow-start-and-end>:first-child,.flex-xxl-grow-start-and-end>:last-child{flex-grow:1 !important}.flex-xxl-grow-middle>*:not(:first-child):not(:last-child){flex-grow:1 !important}.flex-xxl-grow-all>*{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:0px}.gap-x-xxl-0{column-gap:0px}.gap-y-xxl-0{row-gap:0px}.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}.gap-xxl-17{gap:68px}.gap-x-xxl-17{column-gap:68px}.gap-y-xxl-17{row-gap:68px}.gap-xxl-18{gap:72px}.gap-x-xxl-18{column-gap:72px}.gap-y-xxl-18{row-gap:72px}.gap-xxl-19{gap:76px}.gap-x-xxl-19{column-gap:76px}.gap-y-xxl-19{row-gap:76px}.gap-xxl-20{gap:80px}.gap-x-xxl-20{column-gap:80px}.gap-y-xxl-20{row-gap:80px}}.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 !important}.object-cover{object-fit:cover !important}.object-contain{object-fit:contain !important}.object-fill{object-fit:fill !important}.object-scale-down{object-fit:scale-down !important}.object-center{object-position:center !important}.object-top{object-position:top !important}.object-bottom{object-position:bottom !important}.object-left{object-position:left !important}.object-left-top{object-position:left top !important}.object-left-bottom{object-position:left bottom !important}.object-right{object-position:right !important}.object-right-top{object-position:right top !important}.object-right-bottom{object-position:right bottom !important}.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 !important}.fixed{position:fixed !important}.relative{position:relative !important}.static{position:static !important}.sticky{position:sticky !important}.visible{visibility:visible}.invisible{visibility:hidden}[hidden]{display:none !important}.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-17,.my-17{margin-top:68px !important}.mr-17,.mx-17{margin-right:68px !important}.ml-17,.mx-17{margin-left:68px !important}.mb-17,.my-17{margin-bottom:68px !important}.ms-17{margin-inline-start:68px !important}.me-17{margin-inline-end:68px !important}.ma-17{margin:68px !important}.mt-18,.my-18{margin-top:72px !important}.mr-18,.mx-18{margin-right:72px !important}.ml-18,.mx-18{margin-left:72px !important}.mb-18,.my-18{margin-bottom:72px !important}.ms-18{margin-inline-start:72px !important}.me-18{margin-inline-end:72px !important}.ma-18{margin:72px !important}.mt-19,.my-19{margin-top:76px !important}.mr-19,.mx-19{margin-right:76px !important}.ml-19,.mx-19{margin-left:76px !important}.mb-19,.my-19{margin-bottom:76px !important}.ms-19{margin-inline-start:76px !important}.me-19{margin-inline-end:76px !important}.ma-19{margin:76px !important}.mt-20,.my-20{margin-top:80px !important}.mr-20,.mx-20{margin-right:80px !important}.ml-20,.mx-20{margin-left:80px !important}.mb-20,.my-20{margin-bottom:80px !important}.ms-20{margin-inline-start:80px !important}.me-20{margin-inline-end:80px !important}.ma-20{margin:80px !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-17,.py-17{padding-top:68px !important}.pr-17,.px-17{padding-right:68px !important}.pl-17,.px-17{padding-left:68px !important}.pb-17,.py-17{padding-bottom:68px !important}.ps-17{padding-inline-start:68px !important}.pe-17{padding-inline-end:68px !important}.pa-17{padding:68px !important}.pt-18,.py-18{padding-top:72px !important}.pr-18,.px-18{padding-right:72px !important}.pl-18,.px-18{padding-left:72px !important}.pb-18,.py-18{padding-bottom:72px !important}.ps-18{padding-inline-start:72px !important}.pe-18{padding-inline-end:72px !important}.pa-18{padding:72px !important}.pt-19,.py-19{padding-top:76px !important}.pr-19,.px-19{padding-right:76px !important}.pl-19,.px-19{padding-left:76px !important}.pb-19,.py-19{padding-bottom:76px !important}.ps-19{padding-inline-start:76px !important}.pe-19{padding-inline-end:76px !important}.pa-19{padding:76px !important}.pt-20,.py-20{padding-top:80px !important}.pr-20,.px-20{padding-right:80px !important}.pl-20,.px-20{padding-left:80px !important}.pb-20,.py-20{padding-bottom:80px !important}.ps-20{padding-inline-start:80px !important}.pe-20{padding-inline-end:80px !important}.pa-20{padding:80px !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}.mt-n17,.my-n17{margin-top:-68px !important}.mr-n17,.mx-n17{margin-right:-68px !important}.ml-n17,.mx-n17{margin-left:-68px !important}.mb-n17,.my-n17{margin-bottom:-68px !important}.ms-n17{margin-inline-start:-68px !important}.me-n17{margin-inline-end:-68px !important}.ma-n17{margin:-68px !important}.mt-n18,.my-n18{margin-top:-72px !important}.mr-n18,.mx-n18{margin-right:-72px !important}.ml-n18,.mx-n18{margin-left:-72px !important}.mb-n18,.my-n18{margin-bottom:-72px !important}.ms-n18{margin-inline-start:-72px !important}.me-n18{margin-inline-end:-72px !important}.ma-n18{margin:-72px !important}.mt-n19,.my-n19{margin-top:-76px !important}.mr-n19,.mx-n19{margin-right:-76px !important}.ml-n19,.mx-n19{margin-left:-76px !important}.mb-n19,.my-n19{margin-bottom:-76px !important}.ms-n19{margin-inline-start:-76px !important}.me-n19{margin-inline-end:-76px !important}.ma-n19{margin:-76px !important}.mt-n20,.my-n20{margin-top:-80px !important}.mr-n20,.mx-n20{margin-right:-80px !important}.ml-n20,.mx-n20{margin-left:-80px !important}.mb-n20,.my-n20{margin-bottom:-80px !important}.ms-n20{margin-inline-start:-80px !important}.me-n20{margin-inline-end:-80px !important}.ma-n20{margin:-80px !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-17,.my-sm-17{margin-top:68px !important}.mr-sm-17,.mx-sm-17{margin-right:68px !important}.ml-sm-17,.mx-sm-17{margin-left:68px !important}.mb-sm-17,.my-sm-17{margin-bottom:68px !important}.ms-sm-17{margin-inline-start:68px !important}.me-sm-17{margin-inline-end:68px !important}.ma-sm-17{margin:68px !important}.mt-sm-18,.my-sm-18{margin-top:72px !important}.mr-sm-18,.mx-sm-18{margin-right:72px !important}.ml-sm-18,.mx-sm-18{margin-left:72px !important}.mb-sm-18,.my-sm-18{margin-bottom:72px !important}.ms-sm-18{margin-inline-start:72px !important}.me-sm-18{margin-inline-end:72px !important}.ma-sm-18{margin:72px !important}.mt-sm-19,.my-sm-19{margin-top:76px !important}.mr-sm-19,.mx-sm-19{margin-right:76px !important}.ml-sm-19,.mx-sm-19{margin-left:76px !important}.mb-sm-19,.my-sm-19{margin-bottom:76px !important}.ms-sm-19{margin-inline-start:76px !important}.me-sm-19{margin-inline-end:76px !important}.ma-sm-19{margin:76px !important}.mt-sm-20,.my-sm-20{margin-top:80px !important}.mr-sm-20,.mx-sm-20{margin-right:80px !important}.ml-sm-20,.mx-sm-20{margin-left:80px !important}.mb-sm-20,.my-sm-20{margin-bottom:80px !important}.ms-sm-20{margin-inline-start:80px !important}.me-sm-20{margin-inline-end:80px !important}.ma-sm-20{margin:80px !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-17,.py-sm-17{padding-top:68px !important}.pr-sm-17,.px-sm-17{padding-right:68px !important}.pl-sm-17,.px-sm-17{padding-left:68px !important}.pb-sm-17,.py-sm-17{padding-bottom:68px !important}.ps-sm-17{padding-inline-start:68px !important}.pe-sm-17{padding-inline-end:68px !important}.pa-sm-17{padding:68px !important}.pt-sm-18,.py-sm-18{padding-top:72px !important}.pr-sm-18,.px-sm-18{padding-right:72px !important}.pl-sm-18,.px-sm-18{padding-left:72px !important}.pb-sm-18,.py-sm-18{padding-bottom:72px !important}.ps-sm-18{padding-inline-start:72px !important}.pe-sm-18{padding-inline-end:72px !important}.pa-sm-18{padding:72px !important}.pt-sm-19,.py-sm-19{padding-top:76px !important}.pr-sm-19,.px-sm-19{padding-right:76px !important}.pl-sm-19,.px-sm-19{padding-left:76px !important}.pb-sm-19,.py-sm-19{padding-bottom:76px !important}.ps-sm-19{padding-inline-start:76px !important}.pe-sm-19{padding-inline-end:76px !important}.pa-sm-19{padding:76px !important}.pt-sm-20,.py-sm-20{padding-top:80px !important}.pr-sm-20,.px-sm-20{padding-right:80px !important}.pl-sm-20,.px-sm-20{padding-left:80px !important}.pb-sm-20,.py-sm-20{padding-bottom:80px !important}.ps-sm-20{padding-inline-start:80px !important}.pe-sm-20{padding-inline-end:80px !important}.pa-sm-20{padding:80px !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}.mt-sm-n17,.my-sm-n17{margin-top:-68px !important}.mr-sm-n17,.mx-sm-n17{margin-right:-68px !important}.ml-sm-n17,.mx-sm-n17{margin-left:-68px !important}.mb-sm-n17,.my-sm-n17{margin-bottom:-68px !important}.ms-sm-n17{margin-inline-start:-68px !important}.me-sm-n17{margin-inline-end:-68px !important}.ma-sm-n17{margin:-68px !important}.mt-sm-n18,.my-sm-n18{margin-top:-72px !important}.mr-sm-n18,.mx-sm-n18{margin-right:-72px !important}.ml-sm-n18,.mx-sm-n18{margin-left:-72px !important}.mb-sm-n18,.my-sm-n18{margin-bottom:-72px !important}.ms-sm-n18{margin-inline-start:-72px !important}.me-sm-n18{margin-inline-end:-72px !important}.ma-sm-n18{margin:-72px !important}.mt-sm-n19,.my-sm-n19{margin-top:-76px !important}.mr-sm-n19,.mx-sm-n19{margin-right:-76px !important}.ml-sm-n19,.mx-sm-n19{margin-left:-76px !important}.mb-sm-n19,.my-sm-n19{margin-bottom:-76px !important}.ms-sm-n19{margin-inline-start:-76px !important}.me-sm-n19{margin-inline-end:-76px !important}.ma-sm-n19{margin:-76px !important}.mt-sm-n20,.my-sm-n20{margin-top:-80px !important}.mr-sm-n20,.mx-sm-n20{margin-right:-80px !important}.ml-sm-n20,.mx-sm-n20{margin-left:-80px !important}.mb-sm-n20,.my-sm-n20{margin-bottom:-80px !important}.ms-sm-n20{margin-inline-start:-80px !important}.me-sm-n20{margin-inline-end:-80px !important}.ma-sm-n20{margin:-80px !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-17,.my-md-17{margin-top:68px !important}.mr-md-17,.mx-md-17{margin-right:68px !important}.ml-md-17,.mx-md-17{margin-left:68px !important}.mb-md-17,.my-md-17{margin-bottom:68px !important}.ms-md-17{margin-inline-start:68px !important}.me-md-17{margin-inline-end:68px !important}.ma-md-17{margin:68px !important}.mt-md-18,.my-md-18{margin-top:72px !important}.mr-md-18,.mx-md-18{margin-right:72px !important}.ml-md-18,.mx-md-18{margin-left:72px !important}.mb-md-18,.my-md-18{margin-bottom:72px !important}.ms-md-18{margin-inline-start:72px !important}.me-md-18{margin-inline-end:72px !important}.ma-md-18{margin:72px !important}.mt-md-19,.my-md-19{margin-top:76px !important}.mr-md-19,.mx-md-19{margin-right:76px !important}.ml-md-19,.mx-md-19{margin-left:76px !important}.mb-md-19,.my-md-19{margin-bottom:76px !important}.ms-md-19{margin-inline-start:76px !important}.me-md-19{margin-inline-end:76px !important}.ma-md-19{margin:76px !important}.mt-md-20,.my-md-20{margin-top:80px !important}.mr-md-20,.mx-md-20{margin-right:80px !important}.ml-md-20,.mx-md-20{margin-left:80px !important}.mb-md-20,.my-md-20{margin-bottom:80px !important}.ms-md-20{margin-inline-start:80px !important}.me-md-20{margin-inline-end:80px !important}.ma-md-20{margin:80px !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-17,.py-md-17{padding-top:68px !important}.pr-md-17,.px-md-17{padding-right:68px !important}.pl-md-17,.px-md-17{padding-left:68px !important}.pb-md-17,.py-md-17{padding-bottom:68px !important}.ps-md-17{padding-inline-start:68px !important}.pe-md-17{padding-inline-end:68px !important}.pa-md-17{padding:68px !important}.pt-md-18,.py-md-18{padding-top:72px !important}.pr-md-18,.px-md-18{padding-right:72px !important}.pl-md-18,.px-md-18{padding-left:72px !important}.pb-md-18,.py-md-18{padding-bottom:72px !important}.ps-md-18{padding-inline-start:72px !important}.pe-md-18{padding-inline-end:72px !important}.pa-md-18{padding:72px !important}.pt-md-19,.py-md-19{padding-top:76px !important}.pr-md-19,.px-md-19{padding-right:76px !important}.pl-md-19,.px-md-19{padding-left:76px !important}.pb-md-19,.py-md-19{padding-bottom:76px !important}.ps-md-19{padding-inline-start:76px !important}.pe-md-19{padding-inline-end:76px !important}.pa-md-19{padding:76px !important}.pt-md-20,.py-md-20{padding-top:80px !important}.pr-md-20,.px-md-20{padding-right:80px !important}.pl-md-20,.px-md-20{padding-left:80px !important}.pb-md-20,.py-md-20{padding-bottom:80px !important}.ps-md-20{padding-inline-start:80px !important}.pe-md-20{padding-inline-end:80px !important}.pa-md-20{padding:80px !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}.mt-md-n17,.my-md-n17{margin-top:-68px !important}.mr-md-n17,.mx-md-n17{margin-right:-68px !important}.ml-md-n17,.mx-md-n17{margin-left:-68px !important}.mb-md-n17,.my-md-n17{margin-bottom:-68px !important}.ms-md-n17{margin-inline-start:-68px !important}.me-md-n17{margin-inline-end:-68px !important}.ma-md-n17{margin:-68px !important}.mt-md-n18,.my-md-n18{margin-top:-72px !important}.mr-md-n18,.mx-md-n18{margin-right:-72px !important}.ml-md-n18,.mx-md-n18{margin-left:-72px !important}.mb-md-n18,.my-md-n18{margin-bottom:-72px !important}.ms-md-n18{margin-inline-start:-72px !important}.me-md-n18{margin-inline-end:-72px !important}.ma-md-n18{margin:-72px !important}.mt-md-n19,.my-md-n19{margin-top:-76px !important}.mr-md-n19,.mx-md-n19{margin-right:-76px !important}.ml-md-n19,.mx-md-n19{margin-left:-76px !important}.mb-md-n19,.my-md-n19{margin-bottom:-76px !important}.ms-md-n19{margin-inline-start:-76px !important}.me-md-n19{margin-inline-end:-76px !important}.ma-md-n19{margin:-76px !important}.mt-md-n20,.my-md-n20{margin-top:-80px !important}.mr-md-n20,.mx-md-n20{margin-right:-80px !important}.ml-md-n20,.mx-md-n20{margin-left:-80px !important}.mb-md-n20,.my-md-n20{margin-bottom:-80px !important}.ms-md-n20{margin-inline-start:-80px !important}.me-md-n20{margin-inline-end:-80px !important}.ma-md-n20{margin:-80px !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-17,.my-lg-17{margin-top:68px !important}.mr-lg-17,.mx-lg-17{margin-right:68px !important}.ml-lg-17,.mx-lg-17{margin-left:68px !important}.mb-lg-17,.my-lg-17{margin-bottom:68px !important}.ms-lg-17{margin-inline-start:68px !important}.me-lg-17{margin-inline-end:68px !important}.ma-lg-17{margin:68px !important}.mt-lg-18,.my-lg-18{margin-top:72px !important}.mr-lg-18,.mx-lg-18{margin-right:72px !important}.ml-lg-18,.mx-lg-18{margin-left:72px !important}.mb-lg-18,.my-lg-18{margin-bottom:72px !important}.ms-lg-18{margin-inline-start:72px !important}.me-lg-18{margin-inline-end:72px !important}.ma-lg-18{margin:72px !important}.mt-lg-19,.my-lg-19{margin-top:76px !important}.mr-lg-19,.mx-lg-19{margin-right:76px !important}.ml-lg-19,.mx-lg-19{margin-left:76px !important}.mb-lg-19,.my-lg-19{margin-bottom:76px !important}.ms-lg-19{margin-inline-start:76px !important}.me-lg-19{margin-inline-end:76px !important}.ma-lg-19{margin:76px !important}.mt-lg-20,.my-lg-20{margin-top:80px !important}.mr-lg-20,.mx-lg-20{margin-right:80px !important}.ml-lg-20,.mx-lg-20{margin-left:80px !important}.mb-lg-20,.my-lg-20{margin-bottom:80px !important}.ms-lg-20{margin-inline-start:80px !important}.me-lg-20{margin-inline-end:80px !important}.ma-lg-20{margin:80px !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-17,.py-lg-17{padding-top:68px !important}.pr-lg-17,.px-lg-17{padding-right:68px !important}.pl-lg-17,.px-lg-17{padding-left:68px !important}.pb-lg-17,.py-lg-17{padding-bottom:68px !important}.ps-lg-17{padding-inline-start:68px !important}.pe-lg-17{padding-inline-end:68px !important}.pa-lg-17{padding:68px !important}.pt-lg-18,.py-lg-18{padding-top:72px !important}.pr-lg-18,.px-lg-18{padding-right:72px !important}.pl-lg-18,.px-lg-18{padding-left:72px !important}.pb-lg-18,.py-lg-18{padding-bottom:72px !important}.ps-lg-18{padding-inline-start:72px !important}.pe-lg-18{padding-inline-end:72px !important}.pa-lg-18{padding:72px !important}.pt-lg-19,.py-lg-19{padding-top:76px !important}.pr-lg-19,.px-lg-19{padding-right:76px !important}.pl-lg-19,.px-lg-19{padding-left:76px !important}.pb-lg-19,.py-lg-19{padding-bottom:76px !important}.ps-lg-19{padding-inline-start:76px !important}.pe-lg-19{padding-inline-end:76px !important}.pa-lg-19{padding:76px !important}.pt-lg-20,.py-lg-20{padding-top:80px !important}.pr-lg-20,.px-lg-20{padding-right:80px !important}.pl-lg-20,.px-lg-20{padding-left:80px !important}.pb-lg-20,.py-lg-20{padding-bottom:80px !important}.ps-lg-20{padding-inline-start:80px !important}.pe-lg-20{padding-inline-end:80px !important}.pa-lg-20{padding:80px !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}.mt-lg-n17,.my-lg-n17{margin-top:-68px !important}.mr-lg-n17,.mx-lg-n17{margin-right:-68px !important}.ml-lg-n17,.mx-lg-n17{margin-left:-68px !important}.mb-lg-n17,.my-lg-n17{margin-bottom:-68px !important}.ms-lg-n17{margin-inline-start:-68px !important}.me-lg-n17{margin-inline-end:-68px !important}.ma-lg-n17{margin:-68px !important}.mt-lg-n18,.my-lg-n18{margin-top:-72px !important}.mr-lg-n18,.mx-lg-n18{margin-right:-72px !important}.ml-lg-n18,.mx-lg-n18{margin-left:-72px !important}.mb-lg-n18,.my-lg-n18{margin-bottom:-72px !important}.ms-lg-n18{margin-inline-start:-72px !important}.me-lg-n18{margin-inline-end:-72px !important}.ma-lg-n18{margin:-72px !important}.mt-lg-n19,.my-lg-n19{margin-top:-76px !important}.mr-lg-n19,.mx-lg-n19{margin-right:-76px !important}.ml-lg-n19,.mx-lg-n19{margin-left:-76px !important}.mb-lg-n19,.my-lg-n19{margin-bottom:-76px !important}.ms-lg-n19{margin-inline-start:-76px !important}.me-lg-n19{margin-inline-end:-76px !important}.ma-lg-n19{margin:-76px !important}.mt-lg-n20,.my-lg-n20{margin-top:-80px !important}.mr-lg-n20,.mx-lg-n20{margin-right:-80px !important}.ml-lg-n20,.mx-lg-n20{margin-left:-80px !important}.mb-lg-n20,.my-lg-n20{margin-bottom:-80px !important}.ms-lg-n20{margin-inline-start:-80px !important}.me-lg-n20{margin-inline-end:-80px !important}.ma-lg-n20{margin:-80px !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-17,.my-xl-17{margin-top:68px !important}.mr-xl-17,.mx-xl-17{margin-right:68px !important}.ml-xl-17,.mx-xl-17{margin-left:68px !important}.mb-xl-17,.my-xl-17{margin-bottom:68px !important}.ms-xl-17{margin-inline-start:68px !important}.me-xl-17{margin-inline-end:68px !important}.ma-xl-17{margin:68px !important}.mt-xl-18,.my-xl-18{margin-top:72px !important}.mr-xl-18,.mx-xl-18{margin-right:72px !important}.ml-xl-18,.mx-xl-18{margin-left:72px !important}.mb-xl-18,.my-xl-18{margin-bottom:72px !important}.ms-xl-18{margin-inline-start:72px !important}.me-xl-18{margin-inline-end:72px !important}.ma-xl-18{margin:72px !important}.mt-xl-19,.my-xl-19{margin-top:76px !important}.mr-xl-19,.mx-xl-19{margin-right:76px !important}.ml-xl-19,.mx-xl-19{margin-left:76px !important}.mb-xl-19,.my-xl-19{margin-bottom:76px !important}.ms-xl-19{margin-inline-start:76px !important}.me-xl-19{margin-inline-end:76px !important}.ma-xl-19{margin:76px !important}.mt-xl-20,.my-xl-20{margin-top:80px !important}.mr-xl-20,.mx-xl-20{margin-right:80px !important}.ml-xl-20,.mx-xl-20{margin-left:80px !important}.mb-xl-20,.my-xl-20{margin-bottom:80px !important}.ms-xl-20{margin-inline-start:80px !important}.me-xl-20{margin-inline-end:80px !important}.ma-xl-20{margin:80px !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-17,.py-xl-17{padding-top:68px !important}.pr-xl-17,.px-xl-17{padding-right:68px !important}.pl-xl-17,.px-xl-17{padding-left:68px !important}.pb-xl-17,.py-xl-17{padding-bottom:68px !important}.ps-xl-17{padding-inline-start:68px !important}.pe-xl-17{padding-inline-end:68px !important}.pa-xl-17{padding:68px !important}.pt-xl-18,.py-xl-18{padding-top:72px !important}.pr-xl-18,.px-xl-18{padding-right:72px !important}.pl-xl-18,.px-xl-18{padding-left:72px !important}.pb-xl-18,.py-xl-18{padding-bottom:72px !important}.ps-xl-18{padding-inline-start:72px !important}.pe-xl-18{padding-inline-end:72px !important}.pa-xl-18{padding:72px !important}.pt-xl-19,.py-xl-19{padding-top:76px !important}.pr-xl-19,.px-xl-19{padding-right:76px !important}.pl-xl-19,.px-xl-19{padding-left:76px !important}.pb-xl-19,.py-xl-19{padding-bottom:76px !important}.ps-xl-19{padding-inline-start:76px !important}.pe-xl-19{padding-inline-end:76px !important}.pa-xl-19{padding:76px !important}.pt-xl-20,.py-xl-20{padding-top:80px !important}.pr-xl-20,.px-xl-20{padding-right:80px !important}.pl-xl-20,.px-xl-20{padding-left:80px !important}.pb-xl-20,.py-xl-20{padding-bottom:80px !important}.ps-xl-20{padding-inline-start:80px !important}.pe-xl-20{padding-inline-end:80px !important}.pa-xl-20{padding:80px !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}.mt-xl-n17,.my-xl-n17{margin-top:-68px !important}.mr-xl-n17,.mx-xl-n17{margin-right:-68px !important}.ml-xl-n17,.mx-xl-n17{margin-left:-68px !important}.mb-xl-n17,.my-xl-n17{margin-bottom:-68px !important}.ms-xl-n17{margin-inline-start:-68px !important}.me-xl-n17{margin-inline-end:-68px !important}.ma-xl-n17{margin:-68px !important}.mt-xl-n18,.my-xl-n18{margin-top:-72px !important}.mr-xl-n18,.mx-xl-n18{margin-right:-72px !important}.ml-xl-n18,.mx-xl-n18{margin-left:-72px !important}.mb-xl-n18,.my-xl-n18{margin-bottom:-72px !important}.ms-xl-n18{margin-inline-start:-72px !important}.me-xl-n18{margin-inline-end:-72px !important}.ma-xl-n18{margin:-72px !important}.mt-xl-n19,.my-xl-n19{margin-top:-76px !important}.mr-xl-n19,.mx-xl-n19{margin-right:-76px !important}.ml-xl-n19,.mx-xl-n19{margin-left:-76px !important}.mb-xl-n19,.my-xl-n19{margin-bottom:-76px !important}.ms-xl-n19{margin-inline-start:-76px !important}.me-xl-n19{margin-inline-end:-76px !important}.ma-xl-n19{margin:-76px !important}.mt-xl-n20,.my-xl-n20{margin-top:-80px !important}.mr-xl-n20,.mx-xl-n20{margin-right:-80px !important}.ml-xl-n20,.mx-xl-n20{margin-left:-80px !important}.mb-xl-n20,.my-xl-n20{margin-bottom:-80px !important}.ms-xl-n20{margin-inline-start:-80px !important}.me-xl-n20{margin-inline-end:-80px !important}.ma-xl-n20{margin:-80px !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-17,.my-xxl-17{margin-top:68px !important}.mr-xxl-17,.mx-xxl-17{margin-right:68px !important}.ml-xxl-17,.mx-xxl-17{margin-left:68px !important}.mb-xxl-17,.my-xxl-17{margin-bottom:68px !important}.ms-xxl-17{margin-inline-start:68px !important}.me-xxl-17{margin-inline-end:68px !important}.ma-xxl-17{margin:68px !important}.mt-xxl-18,.my-xxl-18{margin-top:72px !important}.mr-xxl-18,.mx-xxl-18{margin-right:72px !important}.ml-xxl-18,.mx-xxl-18{margin-left:72px !important}.mb-xxl-18,.my-xxl-18{margin-bottom:72px !important}.ms-xxl-18{margin-inline-start:72px !important}.me-xxl-18{margin-inline-end:72px !important}.ma-xxl-18{margin:72px !important}.mt-xxl-19,.my-xxl-19{margin-top:76px !important}.mr-xxl-19,.mx-xxl-19{margin-right:76px !important}.ml-xxl-19,.mx-xxl-19{margin-left:76px !important}.mb-xxl-19,.my-xxl-19{margin-bottom:76px !important}.ms-xxl-19{margin-inline-start:76px !important}.me-xxl-19{margin-inline-end:76px !important}.ma-xxl-19{margin:76px !important}.mt-xxl-20,.my-xxl-20{margin-top:80px !important}.mr-xxl-20,.mx-xxl-20{margin-right:80px !important}.ml-xxl-20,.mx-xxl-20{margin-left:80px !important}.mb-xxl-20,.my-xxl-20{margin-bottom:80px !important}.ms-xxl-20{margin-inline-start:80px !important}.me-xxl-20{margin-inline-end:80px !important}.ma-xxl-20{margin:80px !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-17,.py-xxl-17{padding-top:68px !important}.pr-xxl-17,.px-xxl-17{padding-right:68px !important}.pl-xxl-17,.px-xxl-17{padding-left:68px !important}.pb-xxl-17,.py-xxl-17{padding-bottom:68px !important}.ps-xxl-17{padding-inline-start:68px !important}.pe-xxl-17{padding-inline-end:68px !important}.pa-xxl-17{padding:68px !important}.pt-xxl-18,.py-xxl-18{padding-top:72px !important}.pr-xxl-18,.px-xxl-18{padding-right:72px !important}.pl-xxl-18,.px-xxl-18{padding-left:72px !important}.pb-xxl-18,.py-xxl-18{padding-bottom:72px !important}.ps-xxl-18{padding-inline-start:72px !important}.pe-xxl-18{padding-inline-end:72px !important}.pa-xxl-18{padding:72px !important}.pt-xxl-19,.py-xxl-19{padding-top:76px !important}.pr-xxl-19,.px-xxl-19{padding-right:76px !important}.pl-xxl-19,.px-xxl-19{padding-left:76px !important}.pb-xxl-19,.py-xxl-19{padding-bottom:76px !important}.ps-xxl-19{padding-inline-start:76px !important}.pe-xxl-19{padding-inline-end:76px !important}.pa-xxl-19{padding:76px !important}.pt-xxl-20,.py-xxl-20{padding-top:80px !important}.pr-xxl-20,.px-xxl-20{padding-right:80px !important}.pl-xxl-20,.px-xxl-20{padding-left:80px !important}.pb-xxl-20,.py-xxl-20{padding-bottom:80px !important}.ps-xxl-20{padding-inline-start:80px !important}.pe-xxl-20{padding-inline-end:80px !important}.pa-xxl-20{padding:80px !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}.mt-xxl-n17,.my-xxl-n17{margin-top:-68px !important}.mr-xxl-n17,.mx-xxl-n17{margin-right:-68px !important}.ml-xxl-n17,.mx-xxl-n17{margin-left:-68px !important}.mb-xxl-n17,.my-xxl-n17{margin-bottom:-68px !important}.ms-xxl-n17{margin-inline-start:-68px !important}.me-xxl-n17{margin-inline-end:-68px !important}.ma-xxl-n17{margin:-68px !important}.mt-xxl-n18,.my-xxl-n18{margin-top:-72px !important}.mr-xxl-n18,.mx-xxl-n18{margin-right:-72px !important}.ml-xxl-n18,.mx-xxl-n18{margin-left:-72px !important}.mb-xxl-n18,.my-xxl-n18{margin-bottom:-72px !important}.ms-xxl-n18{margin-inline-start:-72px !important}.me-xxl-n18{margin-inline-end:-72px !important}.ma-xxl-n18{margin:-72px !important}.mt-xxl-n19,.my-xxl-n19{margin-top:-76px !important}.mr-xxl-n19,.mx-xxl-n19{margin-right:-76px !important}.ml-xxl-n19,.mx-xxl-n19{margin-left:-76px !important}.mb-xxl-n19,.my-xxl-n19{margin-bottom:-76px !important}.ms-xxl-n19{margin-inline-start:-76px !important}.me-xxl-n19{margin-inline-end:-76px !important}.ma-xxl-n19{margin:-76px !important}.mt-xxl-n20,.my-xxl-n20{margin-top:-80px !important}.mr-xxl-n20,.mx-xxl-n20{margin-right:-80px !important}.ml-xxl-n20,.mx-xxl-n20{margin-left:-80px !important}.mb-xxl-n20,.my-xxl-n20{margin-bottom:-80px !important}.ms-xxl-n20{margin-inline-start:-80px !important}.me-xxl-n20{margin-inline-end:-80px !important}.ma-xxl-n20{margin:-80px !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, 0.2, 1) 0ms,width 225ms cubic-bezier(0, 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: 0px)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: 0px){.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: 0px){.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: 0px){.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: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: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, 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, 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, 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, 0.2, 1)}.mud-drawer.mud-drawer-mini{height:100%;transition:width 225ms cubic-bezier(0, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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, 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% - (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% - (var(--mud-appbar-height) - var(--mud-appbar-height)/8))}}@media(min-width: 0px){.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: 0px)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: 0px)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: 0px){.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, 0.2, 1) 0ms}@media(min-width: 0px)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: 0px){.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)}.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)}.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)}.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)}.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)}.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)}.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}.mud-container--gutters{padding-left:16px;padding-right:16px}@media(min-width: 600px){.mud-container--gutters{padding-left:24px;padding-right:24px}}@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: 0px){.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}.scroll-locked-no-padding{overflow:hidden}@-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:rgba(0,0,0,0);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-gray{background-color:#607d8b}.blue-gray-text{color:#607d8b}.blue-gray.lighten-5{background-color:#eceff1}.blue-gray-text.text-lighten-5{color:#eceff1}.blue-gray.lighten-4{background-color:#cfd8dc}.blue-gray-text.text-lighten-4{color:#cfd8dc}.blue-gray.lighten-3{background-color:#b0bec5}.blue-gray-text.text-lighten-3{color:#b0bec5}.blue-gray.lighten-2{background-color:#90a4ae}.blue-gray-text.text-lighten-2{color:#90a4ae}.blue-gray.lighten-1{background-color:#78909c}.blue-gray-text.text-lighten-1{color:#78909c}.blue-gray.darken-1{background-color:#546e7a}.blue-gray-text.text-darken-1{color:#546e7a}.blue-gray.darken-2{background-color:#455a64}.blue-gray-text.text-darken-2{color:#455a64}.blue-gray.darken-3{background-color:#37474f}.blue-gray-text.text-darken-3{color:#37474f}.blue-gray.darken-4{background-color:#263238}.blue-gray-text.text-darken-4{color:#263238}.gray{background-color:#9e9e9e}.gray-text{color:#9e9e9e}.gray.lighten-5{background-color:#fafafa}.gray-text.text-lighten-5{color:#fafafa}.gray.lighten-4{background-color:#f5f5f5}.gray-text.text-lighten-4{color:#f5f5f5}.gray.lighten-3{background-color:#eee}.gray-text.text-lighten-3{color:#eee}.gray.lighten-2{background-color:#e0e0e0}.gray-text.text-lighten-2{color:#e0e0e0}.gray.lighten-1{background-color:#bdbdbd}.gray-text.text-lighten-1{color:#bdbdbd}.gray.darken-1{background-color:#757575}.gray-text.text-darken-1{color:#757575}.gray.darken-2{background-color:#616161}.gray-text.text-darken-2{color:#616161}.gray.darken-3{background-color:#424242}.gray-text.text-darken-3{color:#424242}.gray.darken-4{background-color:#212121}.gray-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:rgba(0,0,0,0)}.shades-text.text-transparent{color:rgba(0,0,0,0)}.mud-ripple{--mud-ripple-offset-x: 0;--mud-ripple-offset-y: 0;position:relative;overflow:hidden}.mud-ripple:after{content:"";display:block;position:absolute;width:100%;height:100%;top:var(--mud-ripple-offset-y);left:var(--mud-ripple-offset-x);pointer-events:none;background-image:radial-gradient(circle, var(--mud-ripple-color) 10%, transparent 10.01%);background-repeat:no-repeat;background-position:50%;transform:scale(20, 20);opacity:0;transition:transform .6s,opacity 1s}.mud-ripple:active:after{transform:scale(0, 0);opacity:var(--mud-ripple-opacity);transition:0s}.mud-ripple:has(.mud-ripple:active):after{opacity:0}.mud-ripple-icon:after,.mud-ripple-checkbox:after,.mud-ripple-switch:after,.mud-ripple-radio:after{transform:scale(14, 14)}.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)} diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css.br index 9f193685ee1f8ba2bc35cd8feeb7c4e4f3dd328b..3ee69a6f0daa35090e91fbca68fc55915d4923b9 100644 GIT binary patch literal 40682 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 XZ@F%{xnB7toMa{$l}cCr1?7JMAmP!f literal 40591 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 diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.css.gz index a370ab78c7e8610221247932def216016c22301a..d41cb93bdc997bbcc4779ed0ebc307ada92ef9d6 100644 GIT binary patch delta 51583 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�l9CqX@dfLRnw<`1d{U&-{rMMjPh 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 delta 51707 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 Bxq<)y diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js index 423a3370..29cea591 100755 --- a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js +++ b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js @@ -1,51 +1,91 @@ -window.mudpopoverHelper={calculatePopoverPosition:function(list,boundingRect,selfRect){let top=0;let left=0;if(list.indexOf('mud-popover-anchor-top-left')>=0){left=boundingRect.left;top=boundingRect.top;}else if(list.indexOf('mud-popover-anchor-top-center')>=0){left=boundingRect.left+boundingRect.width/2;top=boundingRect.top;}else if(list.indexOf('mud-popover-anchor-top-right')>=0){left=boundingRect.left+boundingRect.width;top=boundingRect.top;}else if(list.indexOf('mud-popover-anchor-center-left')>=0){left=boundingRect.left;top=boundingRect.top+boundingRect.height/2;}else if(list.indexOf('mud-popover-anchor-center-center')>=0){left=boundingRect.left+boundingRect.width/2;top=boundingRect.top+boundingRect.height/2;}else if(list.indexOf('mud-popover-anchor-center-right')>=0){left=boundingRect.left+boundingRect.width;top=boundingRect.top+boundingRect.height/2;}else if(list.indexOf('mud-popover-anchor-bottom-left')>=0){left=boundingRect.left;top=boundingRect.top+boundingRect.height;}else if(list.indexOf('mud-popover-anchor-bottom-center')>=0){left=boundingRect.left+boundingRect.width/2;top=boundingRect.top+boundingRect.height;}else if(list.indexOf('mud-popover-anchor-bottom-right')>=0){left=boundingRect.left+boundingRect.width;top=boundingRect.top+boundingRect.height;} -let offsetX=0;let offsetY=0;if(list.indexOf('mud-popover-top-left')>=0){offsetX=0;offsetY=0;}else if(list.indexOf('mud-popover-top-center')>=0){offsetX=-selfRect.width/2;offsetY=0;}else if(list.indexOf('mud-popover-top-right')>=0){offsetX=-selfRect.width;offsetY=0;} -else if(list.indexOf('mud-popover-center-left')>=0){offsetX=0;offsetY=-selfRect.height/2;}else if(list.indexOf('mud-popover-center-center')>=0){offsetX=-selfRect.width/2;offsetY=-selfRect.height/2;}else if(list.indexOf('mud-popover-center-right')>=0){offsetX=-selfRect.width;offsetY=-selfRect.height/2;} -else if(list.indexOf('mud-popover-bottom-left')>=0){offsetX=0;offsetY=-selfRect.height;}else if(list.indexOf('mud-popover-bottom-center')>=0){offsetX=-selfRect.width/2;offsetY=-selfRect.height;}else if(list.indexOf('mud-popover-bottom-right')>=0){offsetX=-selfRect.width;offsetY=-selfRect.height;} -return{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;i<inputArray.length;i++){const item=inputArray[i];const replacments=window.mudpopoverHelper.flipClassReplacements[selector][item];if(replacments){classList.push(replacments);} -else{classList.push(item);}} -return window.mudpopoverHelper.calculatePopoverPosition(classList,boundingRect,selfRect);},placePopover:function(popoverNode,classSelector){if(popoverNode&&popoverNode.parentNode){const id=popoverNode.id.substr(8);const popoverContentNode=document.getElementById('popovercontent-'+id);if(!popoverContentNode){return;} -if(popoverContentNode.classList.contains('mud-popover-open')==false){return;} -if(classSelector){if(popoverContentNode.classList.contains(classSelector)==false){return;}} -const boundingRect=popoverNode.parentNode.getBoundingClientRect();if(popoverContentNode.classList.contains('mud-popover-relative-width')){popoverContentNode.style['max-width']=(boundingRect.width)+'px';} -const selfRect=popoverContentNode.getBoundingClientRect();const classList=popoverContentNode.classList;const classListArray=Array.from(popoverContentNode.classList);const postion=window.mudpopoverHelper.calculatePopoverPosition(classListArray,boundingRect,selfRect);let left=postion.left;let top=postion.top;let offsetX=postion.offsetX;let offsetY=postion.offsetY;if(classList.contains('mud-popover-overflow-flip-onopen')||classList.contains('mud-popover-overflow-flip-always')){const appBarElements=document.getElementsByClassName("mud-appbar mud-appbar-fixed-top");let appBarOffset=0;if(appBarElements.length>0){appBarOffset=appBarElements[0].getBoundingClientRect().height;} -const graceMargin=window.mudpopoverHelper.flipMargin;const deltaToLeft=left+offsetX;const deltaToRight=window.innerWidth-left-selfRect.width;const deltaTop=top-selfRect.height-appBarOffset;const spaceToTop=top-appBarOffset;const deltaBottom=window.innerHeight-top-selfRect.height;let selector=popoverContentNode.mudPopoverFliped;if(!selector){if(classList.contains('mud-popover-top-left')){if(deltaBottom<graceMargin&&deltaToRight<graceMargin&&spaceToTop>=selfRect.height&&deltaToLeft>=selfRect.width){selector='top-and-left';}else if(deltaBottom<graceMargin&&spaceToTop>=selfRect.height){selector='top';}else if(deltaToRight<graceMargin&&deltaToLeft>=selfRect.width){selector='left';}}else if(classList.contains('mud-popover-top-center')){if(deltaBottom<graceMargin&&spaceToTop>=selfRect.height){selector='top';}}else if(classList.contains('mud-popover-top-right')){if(deltaBottom<graceMargin&&deltaToLeft<graceMargin&&spaceToTop>=selfRect.height&&deltaToRight>=selfRect.width){selector='top-and-right';}else if(deltaBottom<graceMargin&&spaceToTop>=selfRect.height){selector='top';}else if(deltaToLeft<graceMargin&&deltaToRight>=selfRect.width){selector='right';}} -else if(classList.contains('mud-popover-center-left')){if(deltaToRight<graceMargin&&deltaToLeft>=selfRect.width){selector='left';}} -else if(classList.contains('mud-popover-center-right')){if(deltaToLeft<graceMargin&&deltaToRight>=selfRect.width){selector='right';}} -else if(classList.contains('mud-popover-bottom-left')){if(deltaTop<graceMargin&&deltaToRight<graceMargin&&deltaBottom>=0&&deltaToLeft>=selfRect.width){selector='bottom-and-left';}else if(deltaTop<graceMargin&&deltaBottom>=0){selector='bottom';}else if(deltaToRight<graceMargin&&deltaToLeft>=selfRect.width){selector='left';}}else if(classList.contains('mud-popover-bottom-center')){if(deltaTop<graceMargin&&deltaBottom>=0){selector='bottom';}}else if(classList.contains('mud-popover-bottom-right')){if(deltaTop<graceMargin&&deltaToLeft<graceMargin&&deltaBottom>=0&&deltaToRight>=selfRect.width){selector='bottom-and-right';}else if(deltaTop<graceMargin&&deltaBottom>=0){selector='bottom';}else if(deltaToLeft<graceMargin&&deltaToRight>=selfRect.width){selector='right';}}} -if(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{if(left+offsetX<0){left=Math.max(0,left+offsetX);offsetX=0;} -if(top+offsetY<appBarOffset){top=Math.max(appBarOffset,top+offsetY);offsetY=0;} -popoverContentNode.removeAttribute('data-mudpopover-flip');} -if(classList.contains('mud-popover-overflow-flip-onopen')){if(!popoverContentNode.mudPopoverFliped){popoverContentNode.mudPopoverFliped=selector||'none';}}} -if(popoverContentNode.classList.contains('mud-popover-fixed')){} -else if(window.getComputedStyle(popoverNode).position=='fixed'){popoverContentNode.style['position']='fixed';} -else{offsetX+=window.scrollX;offsetY+=window.scrollY} -popoverContentNode.style['left']=(left+offsetX)+'px';popoverContentNode.style['top']=(top+offsetY)+'px';if(window.getComputedStyle(popoverNode).getPropertyValue('z-index')!='auto'){popoverContentNode.style['z-index']=window.getComputedStyle(popoverNode).getPropertyValue('z-index');popoverContentNode.skipZIndex=true;}}},placePopoverByClassSelector:function(classSelector=null){var items=window.mudPopover.getAllObservedContainers();for(let i=0;i<items.length;i++){const popoverNode=document.getElementById('popover-'+items[i]);window.mudpopoverHelper.placePopover(popoverNode,classSelector);}},placePopoverByNode:function(target){const id=target.id.substr(15);const popoverNode=document.getElementById('popover-'+id);window.mudpopoverHelper.placePopover(popoverNode);},countProviders:function(){return document.querySelectorAll(".mud-popover-provider").length;}} -class MudPopover{constructor(){this.map={};this.contentObserver=null;this.mainContainerClass=null;} -callback(id,mutationsList,observer){for(const mutation of mutationsList){if(mutation.type==='attributes'){const target=mutation.target -if(mutation.attributeName=='class'){if(target.classList.contains('mud-popover-overflow-flip-onopen')&&target.classList.contains('mud-popover-open')==false){target.mudPopoverFliped=null;target.removeAttribute('data-mudpopover-flip');} -window.mudpopoverHelper.placePopoverByNode(target);} -else if(mutation.attributeName=='data-ticks'){const tickAttribute=target.getAttribute('data-ticks');const parent=target.parentElement;const tickValues=[];let max=-1;if(parent){for(let i=0;i<parent.children.length;i++){const childNode=parent.children[i];const tickValue=parseInt(childNode.getAttribute('data-ticks'));if(tickValue==0){continue;} -if(tickValues.indexOf(tickValue)>=0){continue;} -tickValues.push(tickValue);if(tickValue>max){max=tickValue;}}} -if(tickValues.length==0){continue;} -const sortedTickValues=tickValues.sort((x,y)=>x-y);for(let i=0;i<parent.children.length;i++){const childNode=parent.children[i];const tickValue=parseInt(childNode.getAttribute('data-ticks'));if(tickValue==0){continue;} -if(childNode.skipZIndex==true){continue;} -childNode.style['z-index']='calc(var(--mud-zindex-popover) + '+(sortedTickValues.indexOf(tickValue)+3).toString()+')';}}}}} -initialize(containerClass,flipMargin){const mainContent=document.getElementsByClassName(containerClass);if(mainContent.length==0){return;} -if(flipMargin){window.mudpopoverHelper.flipMargin=flipMargin;} -this.mainContainerClass=containerClass;if(!mainContent[0].mudPopoverMark){mainContent[0].mudPopoverMark="mudded";if(this.contentObserver!=null){this.contentObserver.disconnect();this.contentObserver=null;} -this.contentObserver=new ResizeObserver(entries=>{window.mudpopoverHelper.placePopoverByClassSelector();});this.contentObserver.observe(mainContent[0]);}} -connect(id){this.initialize(this.mainContainerClass);const popoverNode=document.getElementById('popover-'+id);const popoverContentNode=document.getElementById('popovercontent-'+id);if(popoverNode&&popoverNode.parentNode&&popoverContentNode){window.mudpopoverHelper.placePopover(popoverNode);const config={attributeFilter:['class','data-ticks']};const observer=new MutationObserver(this.callback.bind(this,id));observer.observe(popoverContentNode,config);const resizeObserver=new ResizeObserver(entries=>{for(let entry of entries){const target=entry.target;for(var i=0;i<target.childNodes.length;i++){const childNode=target.childNodes[i];if(childNode.id&&childNode.id.startsWith('popover-')){window.mudpopoverHelper.placePopover(childNode);}}}});resizeObserver.observe(popoverNode.parentNode);const contentNodeObserver=new ResizeObserver(entries=>{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 MudJsEventFactory{connect(dotNetRef,elementId,options){if(!elementId) +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,false);let projector=null;if(projection){const parts=projection.split('.');let functionPointer=window;let functionReferenceFound=true;if(parts.length==0||parts.length==1){functionPointer=functionPointer[projection];} +else{for(let i=0;i<parts.length;i++){functionPointer=functionPointer[parts[i]];if(!functionPointer){functionReferenceFound=false;break;}}} +if(functionReferenceFound===true){projector=functionPointer;}} +this.mapper[key]={eventName:eventName,handler:handlerRef,delay:throotleInterval,timerId:-1,reference:dotnetReference,elementId:elementId,properties:properties,projection:projector,};}} +subscribeGlobal(eventName,throotleInterval,key,properties,dotnetReference){let handlerRef=throotleInterval>0?this.throttleEventHandler.bind(this,key):this.eventHandler.bind(this,key);document.addEventListener(eventName,handlerRef,false);this.mapper[key]={eventName:eventName,handler:handlerRef,delay:throotleInterval,timerId:-1,reference:dotnetReference,elementId:document,properties:properties,projection:null,};} +throttleEventHandler(key,event){const entry=this.mapper[key];if(!entry){return;} +clearTimeout(entry.timerId);entry.timerId=window.setTimeout(this.eventHandler.bind(this,key,event),entry.delay);} +eventHandler(key,event){const entry=this.mapper[key];if(!entry){return;} +var elem=document.getElementById(entry.elementId);if(elem!=event.srcElement&&entry.elementId!=document){return;} +const eventEntry={};for(var i=0;i<entry.properties.length;i++){const propertyName=entry.properties[i];const propertyValue=event[entry.properties[i]];if(propertyValue==null){eventEntry[propertyName]=propertyValue;} +else if(["touchstart","touchmove","touchend","touchcancel"].includes(event.type)&&["touches","changedTouches","targetTouches"].includes(propertyName)){eventEntry[propertyName]=Array.from(propertyValue,touchPoint=>({identifier:touchPoint.identifier,screenX:touchPoint.screenX,screenY:touchPoint.screenY,clientX:touchPoint.clientX,clientY:touchPoint.clientY,pageX:touchPoint.pageX,pageY:touchPoint.pageY,}));} +else{eventEntry[propertyName]=propertyValue;}} +if(entry.projection){if(typeof entry.projection==="function"){entry.projection.apply(null,[eventEntry,event]);}} +entry.reference.invokeMethodAsync('OnEventOccur',key,JSON.stringify(eventEntry));} +unsubscribe(key){const entry=this.mapper[key];if(!entry){return;} +entry.reference=null;if(document==entry.elementId){document.removeEventListener(entry.eventName,entry.handler,false);}else{const elem=document.getElementById(entry.elementId);if(elem){elem.removeEventListener(entry.eventName,entry.handler,false);}} +delete this.mapper[key];}};window.mudThrottledEventManager=new MudThrottledEventManager();window.mudEventProjections={correctOffset:function(eventEntry,event){var target=event.target.getBoundingClientRect();eventEntry.offsetX=event.clientX-target.x;eventEntry.offsetY=event.clientY-target.y;}};class MudElementReference{constructor(){this.listenerId=0;this.eventListeners={};} +focus(element){if(element) +{element.focus();}} +blur(element){if(element){element.blur();}} +focusFirst(element,skip=0,min=0){if(element) +{let tabbables=getTabbableElements(element);if(tabbables.length<=min) +element.focus();else +tabbables[skip].focus();}} +focusLast(element,skip=0,min=0){if(element) +{let tabbables=getTabbableElements(element);if(tabbables.length<=min) +element.focus();else +tabbables[tabbables.length-skip-1].focus();}} +saveFocus(element){if(element) +{element['mudblazor_savedFocus']=document.activeElement;}} +restoreFocus(element){if(element) +{let previous=element['mudblazor_savedFocus'];delete element['mudblazor_savedFocus'] +if(previous) +previous.focus();}} +selectRange(element,pos1,pos2){if(element) +{if(element.createTextRange){let selRange=element.createTextRange();selRange.collapse(true);selRange.moveStart('character',pos1);selRange.moveEnd('character',pos2);selRange.select();}else if(element.setSelectionRange){element.setSelectionRange(pos1,pos2);}else if(element.selectionStart){element.selectionStart=pos1;element.selectionEnd=pos2;} +element.focus();}} +select(element){if(element) +{element.select();}} +getBoundingClientRect(element){if(!element)return;var rect=JSON.parse(JSON.stringify(element.getBoundingClientRect()));rect.scrollY=window.scrollY||document.documentElement.scrollTop;rect.scrollX=window.scrollX||document.documentElement.scrollLeft;rect.windowHeight=window.innerHeight;rect.windowWidth=window.innerWidth;return rect;} +changeCss(element,css){if(element) +{element.className=css;}} +removeEventListener(element,event,eventId){element.removeEventListener(event,this.eventListeners[eventId]);delete this.eventListeners[eventId];} +addDefaultPreventingHandler(element,eventName){let listener=function(e){if(!e.defaultPrevented){e.preventDefault();}};element.addEventListener(eventName,listener,{passive:false});this.eventListeners[++this.listenerId]=listener;return this.listenerId;} +removeDefaultPreventingHandler(element,eventName,listenerId){this.removeEventListener(element,eventName,listenerId);} +addDefaultPreventingHandlers(element,eventNames){let listeners=[];for(const eventName of eventNames){let listenerId=this.addDefaultPreventingHandler(element,eventName);listeners.push(listenerId);} +return listeners;} +removeDefaultPreventingHandlers(element,eventNames,listenerIds){for(let index=0;index<eventNames.length;++index){const eventName=eventNames[index];const listenerId=listenerIds[index];this.removeDefaultPreventingHandler(element,eventName,listenerId);}} +addOnBlurEvent(element,dotNetReference){function onFocusOut(e){e.preventDefault();element.blur();if(dotNetReference){dotNetReference.invokeMethodAsync('CallOnBlurredAsync');} +else{console.error("No dotNetReference found for iosKeyboardFocus");}} +element.addEventListener('blur',onFocusOut);}};window.mudElementRef=new MudElementReference();const darkThemeMediaQuery=window.matchMedia("(prefers-color-scheme: dark)");window.darkModeChange=()=>{return darkThemeMediaQuery.matches;};function darkModeChangeListener(e){dotNetHelperTheme.invokeMethodAsync('SystemPreferenceChanged',e.matches);} +function watchDarkThemeMedia(dotNetHelper){dotNetHelperTheme=dotNetHelper;darkThemeMediaQuery.addEventListener('change',darkModeChangeListener);} +function stopWatchingDarkThemeMedia(){darkThemeMediaQuery.removeEventListener('change',darkModeChangeListener);} +class MudScrollManager{scrollToYear(elementId,offset){let element=document.getElementById(elementId);if(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;if(parent){parent.scrollTop=element.offsetTop;}}} +scrollTo(selector,left,top,behavior){let element=document.querySelector(selector)||document.documentElement;element.scrollTo({left,top,behavior});} +scrollIntoView(selector,behavior){let element=document.querySelector(selector)||document.documentElement;if(element) +element.scrollIntoView({behavior,block:'center',inline:'start'});} +scrollToBottom(selector,behavior){let element=document.querySelector(selector);if(element){element.scrollTo({top:element.scrollHeight,behavior:behavior});}else{window.scrollTo({top:document.body.scrollHeight,behavior:behavior});}} +lockScroll(selector,lockclass){let element=document.querySelector(selector)||document.body;let hasScrollBar=window.innerWidth>document.body.clientWidth;if(hasScrollBar){element.classList.add(lockclass);}else{let lockClassNoPadding=lockclass+"-no-padding";element.classList.add(lockClassNoPadding);}} +unlockScroll(selector,lockclass){let element=document.querySelector(selector)||document.body;element.classList.remove(lockclass);element.classList.remove(lockclass+"-no-padding");}};window.mudScrollManager=new MudScrollManager();window.getTabbableElements=(element)=>{return element.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))?[]:{};if(!spec){spec="*";} +for(let i in data){let currentMember=data[i];if(typeof currentMember==='function'||currentMember===null){continue;} +let currentMemberSpec;if(spec!="*"){currentMemberSpec=Array.isArray(data)?spec:spec[i];if(!currentMemberSpec){continue;}}else{currentMemberSpec="*"} +if(typeof currentMember==='object'){if(Array.isArray(currentMember)||currentMember.length){res[i]=[];for(let j=0;j<currentMember.length;j++){const arrayItem=currentMember[j];if(typeof arrayItem==='object'){res[i].push(this.serializeParameter(arrayItem,currentMemberSpec));}else{res[i].push(arrayItem);}}}else{if(currentMember.length===0){res[i]=[];}else{res[i]=this.serializeParameter(currentMember,currentMemberSpec);}}}else{if(currentMember===Infinity){currentMember="Infinity";} +if(currentMember!==null){res[i]=currentMember;}}} +return res;};window.mudGetSvgBBox=(svgElement)=>{const bbox=svgElement.getBBox();return{x:bbox.x,y:bbox.y,width:bbox.width,height:bbox.height};};window.mudObserveElementSize=(dotNetReference,element,functionName='OnElementSizeChanged',debounceMillis=200)=>{if(!element)return;let lastNotifiedTime=0;let scheduledCall=null;const throttledNotify=(width,height)=>{const now=Date.now();const timeSinceLast=now-lastNotifiedTime;if(timeSinceLast>=debounceMillis){lastNotifiedTime=now;try{dotNetReference.invokeMethodAsync(functionName,{width,height});} +catch(error){this.logger("[MudBlazor] Error in mudObserveElementSize:",{error});}}else{if(scheduledCall!==null){clearTimeout(scheduledCall);} +scheduledCall=setTimeout(()=>{lastNotifiedTime=Date.now();scheduledCall=null;try{dotNetReference.invokeMethodAsync(functionName,{width,height});} +catch(error){this.logger("[MudBlazor] Error in mudObserveElementSize:",{error});}},debounceMillis-timeSinceLast);}};const resizeObserver=new ResizeObserver(entries=>{let width=element.clientWidth;let height=element.clientHeight;for(const entry of entries){width=entry.contentRect.width;height=entry.contentRect.height;} +width=Math.floor(width);height=Math.floor(height);throttledNotify(width,height);});resizeObserver.observe(element);let mutationObserver=null;const parent=element.parentNode;if(parent){mutationObserver=new MutationObserver(mutations=>{for(const mutation of mutations){for(const removedNode of mutation.removedNodes){if(removedNode===element){cleanup();}}}});mutationObserver.observe(parent,{childList:true});} +function cleanup(){resizeObserver.disconnect();if(mutationObserver){mutationObserver.disconnect();} +if(scheduledCall!==null){clearTimeout(scheduledCall);}} +return{width:element.clientWidth,height:element.clientHeight};};window.mudDragAndDrop={initDropZone:(id)=>{const elem=document.getElementById(id);elem.addEventListener('dragover',()=>event.preventDefault());elem.addEventListener('dragstart',()=>event.dataTransfer.setData('',event.target.id));},makeDropZonesNotRelative:()=>{var firstDropItems=Array.from(document.getElementsByClassName('mud-drop-item')).filter(x=>x.getAttribute('index')=="-1");for(let dropItem of firstDropItems){dropItem.style.position='static';} +const dropZones=document.getElementsByClassName('mud-drop-zone');for(let dropZone of dropZones){dropZone.style.position='unset';}},getDropZoneIdentifierOnPosition:(x,y)=>{const elems=document.elementsFromPoint(x,y);const dropZones=elems.filter(e=>e.classList.contains('mud-drop-zone')) +const dropZone=dropZones[0];if(dropZone){return dropZone.getAttribute('identifier')||"";} +return"";},getDropIndexOnPosition:(x,y,id)=>{const elems=document.elementsFromPoint(x,y);const dropItems=elems.filter(e=>e.classList.contains('mud-drop-item')&&e.id!=id) +const dropItem=dropItems[0];if(dropItem){return dropItem.getAttribute('index')||"";} +return"";},makeDropZonesRelative:()=>{const dropZones=document.getElementsByClassName('mud-drop-zone');for(let dropZone of dropZones){dropZone.style.position='relative';} +var firstDropItems=Array.from(document.getElementsByClassName('mud-drop-item')).filter(x=>x.getAttribute('index')=="-1");for(let dropItem of firstDropItems){dropItem.style.position='relative';}},moveItemByDifference:(id,dx,dy)=>{const elem=document.getElementById(id);var tx=(parseFloat(elem.getAttribute('data-x'))||0)+dx;var ty=(parseFloat(elem.getAttribute('data-y'))||0)+dy;elem.style.webkitTransform=elem.style.transform='translate3d('+tx+'px, '+ty+'px, 10px)';elem.setAttribute('data-x',tx);elem.setAttribute('data-y',ty);},resetItem:(id)=>{const elem=document.getElementById(id);if(elem){elem.style.webkitTransform=elem.style.transform='';elem.setAttribute('data-x',0);elem.setAttribute('data-y',0);}}};class MudWindow{copyToClipboard(text){navigator.clipboard.writeText(text);} +changeCssById(id,css){var element=document.getElementById(id);if(element){element.className=css;}} +updateStyleProperty(elementId,propertyName,value){const element=document.getElementById(elementId);if(element){element.style.setProperty(propertyName,value);}} +changeGlobalCssVariable(name,newValue){document.documentElement.style.setProperty(name,newValue);} +open(args){window.open(args);}} +window.mudWindow=new MudWindow();class MudJsEventFactory{connect(dotNetRef,elementId,options){if(!elementId) throw"[MudBlazor | JsEvent] elementId: expected element id!";var element=document.getElementById(elementId);if(!element) throw"[MudBlazor | JsEvent] no element found for id: "+elementId;if(!element.mudJsEvent) element.mudJsEvent=new MudJsEvent(dotNetRef,options);element.mudJsEvent.connect(element);} @@ -85,25 +125,144 @@ self.detachHandlers(element);}}}} eventHandler(e){var self=this.mudJsEvent;var eventName=e.type;self.logger('[MudBlazor | JsEvent] "'+eventName+'"',e);self["on"+eventName](self,e);} onkeyup(self,e){const caretPosition=e.target.selectionStart;const invoke=self._subscribedEvents["keyup"];if(invoke){self._dotNetRef.invokeMethodAsync('OnCaretPositionChanged',caretPosition);}} onclick(self,e){const caretPosition=e.target.selectionStart;const invoke=self._subscribedEvents["click"];if(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);}} +onpaste(self,e){const invoke=self._subscribedEvents["paste"];if(invoke){e.preventDefault();e.stopPropagation();const clipboardData=((e.originalEvent||e).clipboardData||window.clipboardData);if(!clipboardData){self.logger('[MudBlazor | JsEvent] clipboardData is null',e);return;} +const text=clipboardData.getData('text/plain');self._dotNetRef.invokeMethodAsync('OnPaste',text);}} onselect(self,e){const invoke=self._subscribedEvents["select"];if(invoke){const start=e.target.selectionStart;const end=e.target.selectionEnd;if(start===end) return;self._dotNetRef.invokeMethodAsync('OnSelect',start,end);}}} -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,false);let projector=null;if(projection){const parts=projection.split('.');let functionPointer=window;let functionReferenceFound=true;if(parts.length==0||parts.length==1){functionPointer=functionPointer[projection];} -else{for(let i=0;i<parts.length;i++){functionPointer=functionPointer[parts[i]];if(!functionPointer){functionReferenceFound=false;break;}}} -if(functionReferenceFound===true){projector=functionPointer;}} -this.mapper[key]={eventName:eventName,handler:handlerRef,delay:throotleInterval,timerId:-1,reference:dotnetReference,elementId:elementId,properties:properties,projection:projector,};}} -subscribeGlobal(eventName,throotleInterval,key,properties,dotnetReference){let handlerRef=throotleInterval>0?this.throttleEventHandler.bind(this,key):this.eventHandler.bind(this,key);document.addEventListener(eventName,handlerRef,false);this.mapper[key]={eventName:eventName,handler:handlerRef,delay:throotleInterval,timerId:-1,reference:dotnetReference,elementId:document,properties:properties,projection:null,};} -throttleEventHandler(key,event){const entry=this.mapper[key];if(!entry){return;} -clearTimeout(entry.timerId);entry.timerId=window.setTimeout(this.eventHandler.bind(this,key,event),entry.delay);} -eventHandler(key,event){const entry=this.mapper[key];if(!entry){return;} -var elem=document.getElementById(entry.elementId);if(elem!=event.srcElement&&entry.elementId!=document){return;} -const eventEntry={};for(var i=0;i<entry.properties.length;i++){eventEntry[entry.properties[i]]=event[entry.properties[i]];} -if(entry.projection){if(typeof entry.projection==="function"){entry.projection.apply(null,[eventEntry,event]);}} -entry.reference.invokeMethodAsync('OnEventOccur',key,JSON.stringify(eventEntry));} -unsubscribe(key){const entry=this.mapper[key];if(!entry){return;} -entry.reference=null;if(document==entry.elementId){document.removeEventListener(entry.eventName,entry.handler,false);}else{const elem=document.getElementById(entry.elementId);if(elem){elem.removeEventListener(entry.eventName,entry.handler,false);}} -delete this.mapper[key];}};window.mudThrottledEventManager=new MudThrottledEventManager();window.mudEventProjections={correctOffset:function(eventEntry,event){var target=event.target.getBoundingClientRect();eventEntry.offsetX=event.clientX-target.x;eventEntry.offsetY=event.clientY-target.y;}};class MudKeyInterceptorFactory{connect(dotNetRef,elementId,options){if(!elementId) +window.mudTimePicker={initPointerEvents:(clock,dotNetHelper)=>{let isPointerDown=false;const startHandler=(event)=>{if(event.button!==0){return;} +isPointerDown=true;event.target.releasePointerCapture(event.pointerId);if(event.target.classList.contains('mud-hour')||event.target.classList.contains('mud-minute')){let attributeValue=event.target.getAttribute('data-stick-value');let stickValue=attributeValue?parseInt(attributeValue):-1;dotNetHelper.invokeMethodAsync('SelectTimeFromStick',stickValue,false);} +event.preventDefault();};const endHandler=(event)=>{if(event.button!==0){return;} +isPointerDown=false;if(event.target.classList.contains('mud-hour')||event.target.classList.contains('mud-minute')){let attributeValue=event.target.getAttribute('data-stick-value');let stickValue=attributeValue?parseInt(attributeValue):-1;dotNetHelper.invokeMethodAsync('OnStickClick',stickValue);} +event.preventDefault();};const moveHandler=(event)=>{if(!isPointerDown||(!event.target.classList.contains('mud-hour')&&!event.target.classList.contains('mud-minute'))){return;} +let attributeValue=event.target.getAttribute('data-stick-value');let stickValue=attributeValue?parseInt(attributeValue):-1;dotNetHelper.invokeMethodAsync('SelectTimeFromStick',stickValue,true);event.preventDefault();};clock.addEventListener('pointerdown',startHandler);clock.addEventListener('pointerup',endHandler);clock.addEventListener('pointercancel',endHandler);clock.addEventListener('pointerover',moveHandler);clock.destroy=()=>{clock.removeEventListener('pointerdown',startHandler);clock.removeEventListener('pointerup',endHandler);clock.removeEventListener('pointercancel',endHandler);clock.removeEventListener('pointerover',moveHandler);};},destroyPointerEvents:(container)=>{if(container==null){return;} +if(typeof container.destroy==='function'){container.destroy();}}};class MudResizeObserverFactory{constructor(){this._maps={};} +connect(id,dotNetRef,elements,elementIds,options){var existingEntry=this._maps[id];if(!existingEntry){var observer=new MudResizeObserver(dotNetRef,options);this._maps[id]=observer;} +var result=this._maps[id].connect(elements,elementIds);return result;} +disconnect(id,element){var existingEntry=this._maps[id];if(existingEntry){existingEntry.disconnect(element);}} +cancelListener(id){var existingEntry=this._maps[id];if(existingEntry){existingEntry.cancelListener();delete this._maps[id];}}} +class MudResizeObserver{constructor(dotNetRef,options){this.logger=options.enableLogging?console.log:(message)=>{};this.options=options;this._dotNetRef=dotNetRef +var delay=(this.options||{}).reportRate||200;this.throttleResizeHandlerId=-1;var observervedElements=[];this._observervedElements=observervedElements;this.logger('[MudBlazor | ResizeObserver] Observer initialized');this._resizeObserver=new ResizeObserver(entries=>{var changes=[];this.logger('[MudBlazor | ResizeObserver] changes detected');for(let entry of entries){var target=entry.target;var affectedObservedElement=observervedElements.find((x)=>x.element==target);if(affectedObservedElement){var size=entry.target.getBoundingClientRect();if(affectedObservedElement.isInitialized==true){changes.push({id:affectedObservedElement.id,size:size});} +else{affectedObservedElement.isInitialized=true;}}} +if(changes.length>0){if(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=[];this.logger('[MudBlazor | ResizeObserver] Start observing elements...');for(var i=0;i<elements.length;i++){var newEntry={element:elements[i],id:ids[i],isInitialized:false,};this.logger("[MudBlazor | ResizeObserver] Start observing element:",{newEntry});result.push(elements[i].getBoundingClientRect());this._observervedElements.push(newEntry);this._resizeObserver.observe(elements[i]);} +return result;} +disconnect(elementId){this.logger('[MudBlazor | ResizeObserver] Try to unobserve element with id',{elementId});var affectedObservedElement=this._observervedElements.find((x)=>x.id==elementId);if(affectedObservedElement){var element=affectedObservedElement.element;this._resizeObserver.unobserve(element);this.logger('[MudBlazor | ResizeObserver] Element found. Ubobserving size changes of element',{element});var 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();window.mudpopoverHelper={debounce:function(func,wait){let timeout;return function executedFunction(...args){const later=()=>{clearTimeout(timeout);func(...args);};clearTimeout(timeout);timeout=setTimeout(later,wait);};},rafThrottle:function(func){let ticking=false;return function(...args){if(!ticking){window.requestAnimationFrame(()=>{func.apply(this,args);ticking=false;});ticking=true;}};},calculatePopoverPosition:function(list,boundingRect,selfRect){let top=0;let left=0;if(list.indexOf('mud-popover-anchor-top-left')>=0){left=boundingRect.left;top=boundingRect.top;}else if(list.indexOf('mud-popover-anchor-top-center')>=0){left=boundingRect.left+boundingRect.width/2;top=boundingRect.top;}else if(list.indexOf('mud-popover-anchor-top-right')>=0){left=boundingRect.left+boundingRect.width;top=boundingRect.top;}else if(list.indexOf('mud-popover-anchor-center-left')>=0){left=boundingRect.left;top=boundingRect.top+boundingRect.height/2;}else if(list.indexOf('mud-popover-anchor-center-center')>=0){left=boundingRect.left+boundingRect.width/2;top=boundingRect.top+boundingRect.height/2;}else if(list.indexOf('mud-popover-anchor-center-right')>=0){left=boundingRect.left+boundingRect.width;top=boundingRect.top+boundingRect.height/2;}else if(list.indexOf('mud-popover-anchor-bottom-left')>=0){left=boundingRect.left;top=boundingRect.top+boundingRect.height;}else if(list.indexOf('mud-popover-anchor-bottom-center')>=0){left=boundingRect.left+boundingRect.width/2;top=boundingRect.top+boundingRect.height;}else if(list.indexOf('mud-popover-anchor-bottom-right')>=0){left=boundingRect.left+boundingRect.width;top=boundingRect.top+boundingRect.height;} +let offsetX=0;let offsetY=0;if(list.indexOf('mud-popover-top-left')>=0){offsetX=0;offsetY=0;}else if(list.indexOf('mud-popover-top-center')>=0){offsetX=-selfRect.width/2;offsetY=0;}else if(list.indexOf('mud-popover-top-right')>=0){offsetX=-selfRect.width;offsetY=0;} +else if(list.indexOf('mud-popover-center-left')>=0){offsetX=0;offsetY=-selfRect.height/2;}else if(list.indexOf('mud-popover-center-center')>=0){offsetX=-selfRect.width/2;offsetY=-selfRect.height/2;}else if(list.indexOf('mud-popover-center-right')>=0){offsetX=-selfRect.width;offsetY=-selfRect.height/2;} +else if(list.indexOf('mud-popover-bottom-left')>=0){offsetX=0;offsetY=-selfRect.height;}else if(list.indexOf('mud-popover-bottom-center')>=0){offsetX=-selfRect.width/2;offsetY=-selfRect.height;}else if(list.indexOf('mud-popover-bottom-right')>=0){offsetX=-selfRect.width;offsetY=-selfRect.height;} +return{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,basePopoverZIndex:parseInt(getComputedStyle(document.documentElement).getPropertyValue('--mud-zindex-popover'))||1200,baseTooltipZIndex:parseInt(getComputedStyle(document.documentElement).getPropertyValue('--mud-zindex-tooltip'))||1600,getPositionForFlippedPopver:function(inputArray,selector,boundingRect,selfRect){const classList=[];for(var i=0;i<inputArray.length;i++){const item=inputArray[i];const replacments=window.mudpopoverHelper.flipClassReplacements[selector][item];if(replacments){classList.push(replacments);} +else{classList.push(item);}} +return window.mudpopoverHelper.calculatePopoverPosition(classList,boundingRect,selfRect);},placePopover:function(popoverNode,classSelector){if(popoverNode&&popoverNode.parentNode){const id=popoverNode.id.substr(8);const popoverContentNode=document.getElementById('popovercontent-'+id);if(!popoverContentNode){return;} +const classList=popoverContentNode.classList;if(classList.contains('mud-popover-open')==false){return;} +if(classSelector){if(classList.contains(classSelector)==false){return;}} +let boundingRect=popoverNode.parentNode.getBoundingClientRect();popoverContentNode.style['max-width']='none';popoverContentNode.style['min-width']='none';if(classList.contains('mud-popover-relative-width')){popoverContentNode.style['max-width']=(boundingRect.width)+'px';} +else if(classList.contains('mud-popover-adaptive-width')){popoverContentNode.style['min-width']=(boundingRect.width)+'px';} +const selfRect=popoverContentNode.getBoundingClientRect();const classListArray=Array.from(classList);const postion=window.mudpopoverHelper.calculatePopoverPosition(classListArray,boundingRect,selfRect);let left=postion.left;let top=postion.top;let offsetX=postion.offsetX;let offsetY=postion.offsetY;if(classList.contains('mud-popover-position-override')){left=parseInt(popoverContentNode.style['left'])||left;top=parseInt(popoverContentNode.style['top'])||top;offsetX=0;offsetY=0;boundingRect={left:left,top:top,right:left+selfRect.width,bottom:top+selfRect.height,width:selfRect.width,height:selfRect.height};} +if(classList.contains('mud-popover-overflow-flip-onopen')||classList.contains('mud-popover-overflow-flip-always')){const appBarElements=document.getElementsByClassName("mud-appbar mud-appbar-fixed-top");let appBarOffset=0;if(appBarElements.length>0){appBarOffset=appBarElements[0].getBoundingClientRect().height;} +const graceMargin=window.mudpopoverHelper.flipMargin;const deltaToLeft=left+offsetX;const deltaToRight=window.innerWidth-left-selfRect.width;const deltaTop=top-selfRect.height-appBarOffset;const spaceToTop=top-appBarOffset;const deltaBottom=window.innerHeight-top-selfRect.height;let selector=popoverContentNode.mudPopoverFliped;if(!selector){if(classList.contains('mud-popover-top-left')){if(deltaBottom<graceMargin&&deltaToRight<graceMargin&&spaceToTop>=selfRect.height&&deltaToLeft>=selfRect.width){selector='top-and-left';}else if(deltaBottom<graceMargin&&spaceToTop>=selfRect.height){selector='top';}else if(deltaToRight<graceMargin&&deltaToLeft>=selfRect.width){selector='left';}}else if(classList.contains('mud-popover-top-center')){if(deltaBottom<graceMargin&&spaceToTop>=selfRect.height){selector='top';}}else if(classList.contains('mud-popover-top-right')){if(deltaBottom<graceMargin&&deltaToLeft<graceMargin&&spaceToTop>=selfRect.height&&deltaToRight>=selfRect.width){selector='top-and-right';}else if(deltaBottom<graceMargin&&spaceToTop>=selfRect.height){selector='top';}else if(deltaToLeft<graceMargin&&deltaToRight>=selfRect.width){selector='right';}} +else if(classList.contains('mud-popover-center-left')){if(deltaToRight<graceMargin&&deltaToLeft>=selfRect.width){selector='left';}} +else if(classList.contains('mud-popover-center-right')){if(deltaToLeft<graceMargin&&deltaToRight>=selfRect.width){selector='right';}} +else if(classList.contains('mud-popover-bottom-left')){if(deltaTop<graceMargin&&deltaToRight<graceMargin&&deltaBottom>=0&&deltaToLeft>=selfRect.width){selector='bottom-and-left';}else if(deltaTop<graceMargin&&deltaBottom>=0){selector='bottom';}else if(deltaToRight<graceMargin&&deltaToLeft>=selfRect.width){selector='left';}}else if(classList.contains('mud-popover-bottom-center')){if(deltaTop<graceMargin&&deltaBottom>=0){selector='bottom';}}else if(classList.contains('mud-popover-bottom-right')){if(deltaTop<graceMargin&&deltaToLeft<graceMargin&&deltaBottom>=0&&deltaToRight>=selfRect.width){selector='bottom-and-right';}else if(deltaTop<graceMargin&&deltaBottom>=0){selector='bottom';}else if(deltaToLeft<graceMargin&&deltaToRight>=selfRect.width){selector='right';}}} +if(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{if(left+offsetX<0&&Math.abs(left+offsetX)<selfRect.width){left=Math.max(0,left+offsetX);offsetX=0;} +if(top+offsetY<appBarOffset&&appBarElements.length>0){this.updatePopoverZIndex(popoverContentNode,appBarElements[0]);} +if(top+offsetY<0&&Math.abs(top+offsetY)<selfRect.height){top=Math.max(0,top+offsetY);offsetY=0;} +const list=popoverContentNode.querySelector('.mud-list');const listPadding=24;const listMaxHeight=(window.innerHeight-top-offsetY);if(list&&list.offsetHeight>listMaxHeight){list.style.maxHeight=(listMaxHeight-listPadding)+'px';} +popoverContentNode.removeAttribute('data-mudpopover-flip');} +if(classList.contains('mud-popover-overflow-flip-onopen')){if(!popoverContentNode.mudPopoverFliped){popoverContentNode.mudPopoverFliped=selector||'none';}}} +if(window.getComputedStyle(popoverNode).position=='fixed'){popoverContentNode.style['position']='fixed';} +else if(!classList.contains('mud-popover-fixed')){offsetX+=window.scrollX;offsetY+=window.scrollY} +if(classList.contains('mud-popover-position-override')){offsetX=0;offsetY=0;} +popoverContentNode.style['left']=(left+offsetX)+'px';popoverContentNode.style['top']=(top+offsetY)+'px';this.updatePopoverZIndex(popoverContentNode,popoverNode.parentNode);if(window.getComputedStyle(popoverNode).getPropertyValue('z-index')!='auto'){popoverContentNode.style['z-index']=Math.max(window.getComputedStyle(popoverNode).getPropertyValue('z-index'),popoverContentNode.style['z-index']);popoverContentNode.skipZIndex=true;}} +else{}},popoverScrollListener:function(node){let currentNode=node.parentNode;while(currentNode){const isScrollable=(currentNode.scrollHeight>currentNode.clientHeight)||(currentNode.scrollWidth>currentNode.clientWidth);if(isScrollable){currentNode.addEventListener('scroll',()=>{window.mudpopoverHelper.placePopoverByClassSelector('mud-popover-fixed');window.mudpopoverHelper.placePopoverByClassSelector('mud-popover-overflow-flip-always');});} +if(currentNode.tagName==="BODY"){break;} +currentNode=currentNode.parentNode;}},placePopoverByClassSelector:function(classSelector=null){var items=window.mudPopover.getAllObservedContainers();for(let i=0;i<items.length;i++){const popoverNode=document.getElementById('popover-'+items[i]);window.mudpopoverHelper.placePopover(popoverNode,classSelector);}},placePopoverByNode:function(target){const id=target.id.substr(15);const popoverNode=document.getElementById('popover-'+id);window.mudpopoverHelper.placePopover(popoverNode);},countProviders:function(){return document.querySelectorAll(".mud-popover-provider").length;},updatePopoverOverlay:function(popoverContentNode){const provider=popoverContentNode.closest('.mud-popover-provider');if(provider&&popoverContentNode.classList.contains("mud-popover")){const overlay=provider.querySelector('.mud-overlay');if(overlay&&!overlay.classList.contains('mud-skip-overlay-positioning')){if(popoverContentNode&&overlay.style['z-index']!==popoverContentNode.style['z-index']){overlay.style['z-index']=popoverContentNode.style['z-index'];}}}},updatePopoverZIndex:function(popoverContentNode,parentNode){const parentPopover=parentNode.closest('.mud-popover');const parentOfPopover=popoverContentNode.parentNode;let newZIndex=window.mudpopoverHelper.basePopoverZIndex+1;const origZIndex=parseInt(popoverContentNode.style['z-index'])||1;const contentZIndex=popoverContentNode.style['z-index'];if(parentPopover){const computedStyle=window.getComputedStyle(parentPopover);const parentZIndexValue=computedStyle.getPropertyValue('z-index');if(parentZIndexValue!=='auto'){newZIndex=parseInt(parentZIndexValue)+1;} +popoverContentNode.style['z-index']=newZIndex;} +else if(parentOfPopover){const computedStyle=window.getComputedStyle(parentOfPopover);const tooltipZIndexValue=computedStyle.getPropertyValue('z-index');if(tooltipZIndexValue!=='auto'){newZIndex=parseInt(tooltipZIndexValue)+1;} +popoverContentNode.style['z-index']=Math.max(newZIndex,window.mudpopoverHelper.baseTooltipZIndex+1,origZIndex);} +else if(parentNode&&parentNode.classList.contains("mud-tooltip-root")){const computedStyle=window.getComputedStyle(parentNode);const tooltipZIndexValue=computedStyle.getPropertyValue('z-index');if(tooltipZIndexValue!=='auto'){newZIndex=parseInt(tooltipZIndexValue)+1;} +popoverContentNode.style['z-index']=Math.max(newZIndex,window.mudpopoverHelper.baseTooltipZIndex+1);} +else if(parentNode&&parentNode.classList.contains("mud-appbar")){const computedStyle=window.getComputedStyle(parentNode);const appBarZIndexValue=computedStyle.getPropertyValue('z-index');if(appBarZIndexValue!=='auto'){newZIndex=parseInt(appBarZIndexValue)+1;} +popoverContentNode.style['z-index']=newZIndex;} +else if(!contentZIndex||parseInt(contentZIndex)<1){popoverContentNode.style['z-index']=newZIndex;}},} +class MudPopover{constructor(){this.map={};this.contentObserver=null;this.mainContainerClass=null;} +callback(id,mutationsList,observer){for(const mutation of mutationsList){if(mutation.type==='attributes'){const target=mutation.target +if(mutation.attributeName=='class'){if(target.classList.contains('mud-popover-overflow-flip-onopen')&&target.classList.contains('mud-popover-open')==false){target.mudPopoverFliped=null;target.removeAttribute('data-mudpopover-flip');} +window.mudpopoverHelper.placePopoverByNode(target);} +else if(mutation.attributeName=='data-ticks'){const tickAttribute=target.getAttribute('data-ticks');const tickValues=[];let max=-1;if(parent&&parent.children){for(let i=0;i<parent.children.length;i++){const childNode=parent.children[i];const tickValue=parseInt(childNode.getAttribute('data-ticks'));if(tickValue==0){continue;} +if(tickValues.indexOf(tickValue)>=0){continue;} +tickValues.push(tickValue);if(tickValue>max){max=tickValue;}}} +let highestTickItem=null;let highestTickValue=-1;for(const mapItem of Object.values(this.map)){const popoverContentNode=mapItem.popoverContentNode;if(popoverContentNode){const tickValue=Number(popoverContentNode.getAttribute('data-ticks'));if(tickValue>highestTickValue){highestTickValue=tickValue;highestTickItem=popoverContentNode;}}} +if(highestTickItem){window.mudpopoverHelper.updatePopoverOverlay(highestTickItem);} +if(tickValues.length==0){continue;} +const sortedTickValues=tickValues.sort((x,y)=>x-y);continue;for(let i=0;i<parent.children.length;i++){const childNode=parent.children[i];const tickValue=parseInt(childNode.getAttribute('data-ticks'));if(tickValue==0){continue;} +if(childNode.skipZIndex==true){continue;} +const newIndex=window.mudpopoverHelper.basePopoverZIndex+sortedTickValues.indexOf(tickValue)+3;childNode.style['z-index']=newIndex;}}}}} +initialize(containerClass,flipMargin){const mainContent=document.getElementsByClassName(containerClass);if(mainContent.length==0){return;} +if(flipMargin){window.mudpopoverHelper.flipMargin=flipMargin;} +this.mainContainerClass=containerClass;if(!mainContent[0].mudPopoverMark){mainContent[0].mudPopoverMark="mudded";if(this.contentObserver!=null){this.contentObserver.disconnect();this.contentObserver=null;} +this.contentObserver=new ResizeObserver(entries=>{window.mudpopoverHelper.placePopoverByClassSelector();});this.contentObserver.observe(mainContent[0]);}} +connect(id){this.initialize(this.mainContainerClass);const popoverNode=document.getElementById('popover-'+id);mudpopoverHelper.popoverScrollListener(popoverNode);const popoverContentNode=document.getElementById('popovercontent-'+id);if(popoverNode&&popoverNode.parentNode&&popoverContentNode){window.mudpopoverHelper.placePopover(popoverNode);const config={attributeFilter:['class','data-ticks']};const observer=new MutationObserver(this.callback.bind(this,id));observer.observe(popoverContentNode,config);const throttledResize=window.mudpopoverHelper.rafThrottle(entries=>{for(let entry of entries){const target=entry.target;for(let childNode of target.childNodes){if(childNode.id&&childNode.id.startsWith('popover-')){window.mudpopoverHelper.placePopover(childNode);}}}});const resizeObserver=new ResizeObserver(throttledResize);resizeObserver.observe(popoverNode.parentNode);const throttledContent=window.mudpopoverHelper.rafThrottle(entries=>{for(let entry of entries){window.mudpopoverHelper.placePopoverByNode(entry.target);}});const contentNodeObserver=new ResizeObserver(throttledContent);contentNodeObserver.observe(popoverContentNode);this.map[id]={popoverContentNode:popoverContentNode,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();const debouncedResize=window.mudpopoverHelper.debounce(()=>{window.mudpopoverHelper.placePopoverByClassSelector();},100);const throttledScroll=window.mudpopoverHelper.rafThrottle(()=>{window.mudpopoverHelper.placePopoverByClassSelector('mud-popover-fixed');window.mudpopoverHelper.placePopoverByClassSelector('mud-popover-overflow-flip-always');});window.addEventListener('resize',debouncedResize,{passive:true});window.addEventListener('scroll',throttledScroll,{passive:true});class MudScrollListener{constructor(){this.throttleScrollHandlerId=-1;this.handlerRef=null;} +listenForScroll(dotnetReference,selector){let element=selector?document.querySelector(selector):document;this.handlerRef=this.throttleScrollHandler.bind(this,dotnetReference);element.addEventListener('scroll',this.handlerRef,false);} +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;let scrollTop=element.scrollTop;let scrollHeight=element.scrollHeight;let scrollWidth=element.scrollWidth;let scrollLeft=element.scrollLeft;let nodeName=element.nodeName;let firstChild=element.firstElementChild;let 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;element.removeEventListener('scroll',this.handlerRef);}};window.mudScrollListener=new MudScrollListener();window.mudInputAutoGrow={initAutoGrow:(elem,maxLines)=>{const compStyle=getComputedStyle(elem);const lineHeight=parseFloat(compStyle.getPropertyValue('line-height'));const paddingTop=parseFloat(compStyle.getPropertyValue('padding-top'));let maxHeight=0;elem.updateParameters=function(newMaxLines){if(newMaxLines>0){maxHeight=lineHeight*newMaxLines+paddingTop;}else{maxHeight=0;}} +elem.adjustAutoGrowHeight=function(didReflow=false){const scrollTops=[];let curElem=elem;while(curElem&&curElem.parentNode&&curElem.parentNode instanceof Element){if(curElem.parentNode.scrollTop){scrollTops.push([curElem.parentNode,curElem.parentNode.scrollTop]);} +curElem=curElem.parentNode;} +elem.style.height=0;if(didReflow){elem.style.textAlign=null;} +let minHeight=lineHeight*elem.rows+paddingTop;let newHeight=Math.max(minHeight,elem.scrollHeight);let initialOverflowY=elem.style.overflowY;if(maxHeight>0&&newHeight>maxHeight){elem.style.overflowY='auto';newHeight=maxHeight;}else{elem.style.overflowY='hidden';} +elem.style.height=newHeight+"px";scrollTops.forEach(([node,scrollTop])=>{node.style.scrollBehavior='auto';node.scrollTop=scrollTop;node.style.scrollBehavior=null;});if(!didReflow&&initialOverflowY!==elem.style.overflowY&&elem.style.overflowY==='hidden'){elem.style.textAlign='end';elem.adjustAutoGrowHeight(true);}} +elem.restoreToInitialState=function(){elem.removeEventListener('input',elem.adjustAutoGrowHeight);elem.style.overflowY=null;elem.style.height=null;} +elem.addEventListener('input',elem.adjustAutoGrowHeight);window.addEventListener('resize',elem.adjustAutoGrowHeight);elem.updateParameters(maxLines);elem.adjustAutoGrowHeight();},adjustHeight:(elem)=>{if(typeof elem.adjustAutoGrowHeight==='function'){elem.adjustAutoGrowHeight();}},updateParams:(elem,maxLines)=>{if(typeof elem.updateParameters==='function'){elem.updateParameters(maxLines);} +if(typeof elem.adjustAutoGrowHeight==='function'){elem.adjustAutoGrowHeight();}},destroy:(elem)=>{if(elem==null){return;} +window.removeEventListener('resize',elem.adjustAutoGrowHeight);if(typeof elem.restoreToInitialState==='function'){elem.restoreToInitialState();}}};class MudInput{resetValue(id){const input=document.getElementById(id);if(input){input.value='';}}} +window.mudInput=new MudInput();class MudFileUpload{openFilePicker(id){const element=document.getElementById(id);if(!element){return;} +try{element.showPicker();}catch(error){element.click();}}} +window.mudFileUpload=new MudFileUpload();class MudScrollSpy{constructor(){this.lastKnowElement=null;this.handlerRef=null;} +spying(dotnetReference,containerSelector,sectionClassSelector){this.lastKnowElement=null;this.handlerRef=this.handleScroll.bind(this,dotnetReference,containerSelector,sectionClassSelector);document.addEventListener('scroll',this.handlerRef,true);window.addEventListener('resize',this.handlerRef,true);} +handleScroll(dotnetReference,containerSelector,sectionClassSelector,event){const container=document.querySelector(containerSelector);if(container===null){return;} +const elements=document.getElementsByClassName(sectionClassSelector);if(elements.length===0){return;} +const containerTop=container.tagName==='HTML'?0:container.getBoundingClientRect().top;const containerHeight=container.clientHeight;const center=containerTop+containerHeight/2.0;let minDifference=Number.MAX_SAFE_INTEGER;let foundAbove=false;let elementId='';for(let i=0;i<elements.length;i++){const element=elements[i];const rect=element.getBoundingClientRect();const diff=Math.abs(rect.top-center);if(!foundAbove&&rect.top<center){foundAbove=true;minDifference=diff;elementId=element.id;continue;} +if(foundAbove&&rect.top>=center){continue;} +if(diff<minDifference){minDifference=diff;elementId=element.id;}} +if(elementId!==this.lastKnowElement){this.lastKnowElement=elementId;history.replaceState(null,'',window.location.pathname+"#"+elementId);dotnetReference.invokeMethodAsync('SectionChangeOccured',elementId);}} +activateSection(sectionId){const element=document.getElementById(sectionId);if(element){this.lastKnowElement=sectionId;history.replaceState(null,'',window.location.pathname+"#"+sectionId);}} +scrollToSection(sectionId){if(sectionId){let element=document.getElementById(sectionId);if(element){element.scrollIntoView({behavior:'smooth',block:'center',inline:'start'});}} +else{window.scrollTo({top:0,behavior:'smooth'});}} +unspy(){document.removeEventListener('scroll',this.handlerRef,true);window.removeEventListener('resize',this.handlerRef,true);}};window.mudScrollSpy=new MudScrollSpy();class MudResizeListener{constructor(id){this.logger=function(message){};this.options={};this.throttleResizeHandlerId=-1;this.dotnet=undefined;this.breakpoint=-1;this.id=id;this.handleResize=this.throttleResizeHandler.bind(this);} +listenForResize(dotnetRef,options){if(this.dotnet){this.options=options;return;} +this.options=options;this.dotnet=dotnetRef;this.logger=options.enableLogging?console.log:(message)=>{};this.logger(`[MudBlazor]Reporting resize events at rate of:${this.options.reportRate}ms`);window.addEventListener("resize",this.handleResize,false);if(!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);} +resizeHandler(){if(this.options.notifyOnBreakpointOnly){let bp=this.getBreakpoint(window.innerWidth);if(bp==this.breakpoint){return;} +this.breakpoint=bp;} +try{if(this.id){this.dotnet.invokeMethodAsync('RaiseOnResized',{height:window.innerHeight,width:window.innerWidth},this.getBreakpoint(window.innerWidth),this.id);} +else{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.handleResize);} +matchMedia(query){let m=window.matchMedia(query).matches;return m;} +getBrowserWindowSize(){return{height:window.innerHeight,width:window.innerWidth};} +getBreakpoint(width){if(width>=this.options.breakpointDefinitions["Xxl"]) +return 5;else if(width>=this.options.breakpointDefinitions["Xl"]) +return 4;else if(width>=this.options.breakpointDefinitions["Lg"]) +return 3;else if(width>=this.options.breakpointDefinitions["Md"]) +return 2;else if(width>=this.options.breakpointDefinitions["Sm"]) +return 1;else +return 0;}};window.mudResizeListener=new MudResizeListener();window.mudResizeListenerFactory={mapping:{},listenForResize:(dotnetRef,options,id)=>{var map=window.mudResizeListenerFactory.mapping;if(map[id]){return;} +var listener=new MudResizeListener(id);listener.listenForResize(dotnetRef,options);map[id]=listener;},cancelListener:(id)=>{var map=window.mudResizeListenerFactory.mapping;if(!map[id]){return;} +var listener=map[id];listener.cancelListener();delete map[id];},cancelListeners:(ids)=>{for(let i=0;i<ids.length;i++){window.mudResizeListenerFactory.cancelListener(ids[i]);}},dispose(){var map=window.mudResizeListenerFactory.mapping;for(var id in map){window.mudResizeListenerFactory.cancelListener(id);}}} +function setRippleOffset(event,target){const rect=target.getBoundingClientRect();const x=event.clientX-rect.left-rect.width/2;const y=event.clientY-rect.top-rect.height/2;target.style.setProperty("--mud-ripple-offset-x",`${x}px`);target.style.setProperty("--mud-ripple-offset-y",`${y}px`);} +document.addEventListener("click",function(event){const target=event.target.closest(".mud-ripple");if(target){setRippleOffset(event,target);}});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;if(!element.mudKeyInterceptor) element.mudKeyInterceptor=new MudKeyInterceptor(dotNetRef,options);element.mudKeyInterceptor.connect(element);} @@ -140,7 +299,8 @@ return true;var shift=args.shiftKey;var ctrl=args.ctrlKey;var alt=args.altKey;va return true;if(!any&&option.includes("key+none")) return true;if(!any) return false;var combi=`key${shift?"+shift":""}${ctrl?"+ctrl":""}${alt?"+alt":""}${meta?"+meta":""}`;return option.includes(combi);} -onKeyDown(args){var self=this.mudKeyInterceptor;var key=args.key.toLowerCase();self.logger('[MudBlazor | KeyInterceptor] down "'+key+'"',args);var invoke=false;if(self._keyOptions.hasOwnProperty(key)){var keyOptions=self._keyOptions[key];self.logger('[MudBlazor | KeyInterceptor] options for "'+key+'"',keyOptions);self.processKeyDown(args,keyOptions);if(keyOptions.subscribeDown) +onKeyDown(args){var self=this.mudKeyInterceptor;if(!args.key){self.logger('[MudBlazor | KeyInterceptor] key is undefined',args);return;} +var key=args.key.toLowerCase();self.logger('[MudBlazor | KeyInterceptor] down "'+key+'"',args);var invoke=false;if(self._keyOptions.hasOwnProperty(key)){var keyOptions=self._keyOptions[key];self.logger('[MudBlazor | KeyInterceptor] options for "'+key+'"',keyOptions);self.processKeyDown(args,keyOptions);if(keyOptions.subscribeDown) invoke=true;} for(const keyOptions of self._regexOptions){if(keyOptions.regex.test(key)){self.logger('[MudBlazor | KeyInterceptor] regex options for "'+key+'"',keyOptions);self.processKeyDown(args,keyOptions);if(keyOptions.subscribeDown) invoke=true;}} @@ -148,7 +308,8 @@ if(invoke){var eventArgs=self.toKeyboardEventArgs(args);eventArgs.Type="keydown" processKeyDown(args,keyOptions){if(this.matchesKeyCombination(keyOptions.preventDown,args)) args.preventDefault();if(this.matchesKeyCombination(keyOptions.stopDown,args)) args.stopPropagation();} -onKeyUp(args){var self=this.mudKeyInterceptor;var key=args.key.toLowerCase();self.logger('[MudBlazor | KeyInterceptor] up "'+key+'"',args);var invoke=false;if(self._keyOptions.hasOwnProperty(key)){var keyOptions=self._keyOptions[key];self.processKeyUp(args,keyOptions);if(keyOptions.subscribeUp) +onKeyUp(args){var self=this.mudKeyInterceptor;if(!args.key){self.logger('[MudBlazor | KeyInterceptor] key is undefined',args);return;} +var key=args.key.toLowerCase();self.logger('[MudBlazor | KeyInterceptor] up "'+key+'"',args);var invoke=false;if(self._keyOptions.hasOwnProperty(key)){var keyOptions=self._keyOptions[key];self.processKeyUp(args,keyOptions);if(keyOptions.subscribeUp) invoke=true;} for(const keyOptions of self._regexOptions){if(keyOptions.regex.test(key)){self.processKeyUp(args,keyOptions);if(keyOptions.subscribeUp) invoke=true;}} @@ -156,135 +317,4 @@ if(invoke){var eventArgs=self.toKeyboardEventArgs(args);eventArgs.Type="keyup";s processKeyUp(args,keyOptions){if(this.matchesKeyCombination(keyOptions.preventUp,args)) args.preventDefault();if(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};}} -class MudResizeListener{constructor(id){this.logger=function(message){};this.options={};this.throttleResizeHandlerId=-1;this.dotnet=undefined;this.breakpoint=-1;this.id=id;this.handleResize=this.throttleResizeHandler.bind(this);} -listenForResize(dotnetRef,options){if(this.dotnet){this.options=options;return;} -this.options=options;this.dotnet=dotnetRef;this.logger=options.enableLogging?console.log:(message)=>{};this.logger(`[MudBlazor]Reporting resize events at rate of:${this.options.reportRate}ms`);window.addEventListener("resize",this.handleResize,false);if(!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);} -resizeHandler(){if(this.options.notifyOnBreakpointOnly){let bp=this.getBreakpoint(window.innerWidth);if(bp==this.breakpoint){return;} -this.breakpoint=bp;} -try{if(this.id){this.dotnet.invokeMethodAsync('RaiseOnResized',{height:window.innerHeight,width:window.innerWidth},this.getBreakpoint(window.innerWidth),this.id);} -else{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.handleResize);} -matchMedia(query){let m=window.matchMedia(query).matches;return m;} -getBrowserWindowSize(){return{height:window.innerHeight,width:window.innerWidth};} -getBreakpoint(width){if(width>=this.options.breakpointDefinitions["Xxl"]) -return 5;else if(width>=this.options.breakpointDefinitions["Xl"]) -return 4;else if(width>=this.options.breakpointDefinitions["Lg"]) -return 3;else if(width>=this.options.breakpointDefinitions["Md"]) -return 2;else if(width>=this.options.breakpointDefinitions["Sm"]) -return 1;else -return 0;}};window.mudResizeListener=new MudResizeListener();window.mudResizeListenerFactory={mapping:{},listenForResize:(dotnetRef,options,id)=>{var map=window.mudResizeListenerFactory.mapping;if(map[id]){return;} -var listener=new MudResizeListener(id);listener.listenForResize(dotnetRef,options);map[id]=listener;},cancelListener:(id)=>{var map=window.mudResizeListenerFactory.mapping;if(!map[id]){return;} -var listener=map[id];listener.cancelListener();delete map[id];},cancelListeners:(ids)=>{for(let i=0;i<ids.length;i++){window.mudResizeListenerFactory.cancelListener(ids[i]);}},dispose(){var map=window.mudResizeListenerFactory.mapping;for(var id in map){window.mudResizeListenerFactory.cancelListener(id);}}} -function setRippleOffset(event,target){const rect=target.getBoundingClientRect();const x=event.clientX-rect.left-rect.width/2;const y=event.clientY-rect.top-rect.height/2;target.style.setProperty("--mud-ripple-offset-x",`${x}px`);target.style.setProperty("--mud-ripple-offset-y",`${y}px`);} -document.addEventListener("click",function(event){const target=event.target.closest(".mud-ripple");if(target){setRippleOffset(event,target);}});class MudElementReference{constructor(){this.listenerId=0;this.eventListeners={};} -focus(element){if(element) -{element.focus();}} -blur(element){if(element){element.blur();}} -focusFirst(element,skip=0,min=0){if(element) -{let tabbables=getTabbableElements(element);if(tabbables.length<=min) -element.focus();else -tabbables[skip].focus();}} -focusLast(element,skip=0,min=0){if(element) -{let tabbables=getTabbableElements(element);if(tabbables.length<=min) -element.focus();else -tabbables[tabbables.length-skip-1].focus();}} -saveFocus(element){if(element) -{element['mudblazor_savedFocus']=document.activeElement;}} -restoreFocus(element){if(element) -{let previous=element['mudblazor_savedFocus'];delete element['mudblazor_savedFocus'] -if(previous) -previous.focus();}} -selectRange(element,pos1,pos2){if(element) -{if(element.createTextRange){let selRange=element.createTextRange();selRange.collapse(true);selRange.moveStart('character',pos1);selRange.moveEnd('character',pos2);selRange.select();}else if(element.setSelectionRange){element.setSelectionRange(pos1,pos2);}else if(element.selectionStart){element.selectionStart=pos1;element.selectionEnd=pos2;} -element.focus();}} -select(element){if(element) -{element.select();}} -getBoundingClientRect(element){if(!element)return;var rect=JSON.parse(JSON.stringify(element.getBoundingClientRect()));rect.scrollY=window.scrollY||document.documentElement.scrollTop;rect.scrollX=window.scrollX||document.documentElement.scrollLeft;rect.windowHeight=window.innerHeight;rect.windowWidth=window.innerWidth;return rect;} -changeCss(element,css){if(element) -{element.className=css;}} -removeEventListener(element,event,eventId){element.removeEventListener(event,this.eventListeners[eventId]);delete this.eventListeners[eventId];} -addDefaultPreventingHandler(element,eventName){let listener=function(e){e.preventDefault();} -element.addEventListener(eventName,listener,{passive:false});this.eventListeners[++this.listenerId]=listener;return this.listenerId;} -removeDefaultPreventingHandler(element,eventName,listenerId){this.removeEventListener(element,eventName,listenerId);} -addDefaultPreventingHandlers(element,eventNames){let listeners=[];for(const eventName of eventNames){let listenerId=this.addDefaultPreventingHandler(element,eventName);listeners.push(listenerId);} -return listeners;} -removeDefaultPreventingHandlers(element,eventNames,listenerIds){for(let index=0;index<eventNames.length;++index){const eventName=eventNames[index];const listenerId=listenerIds[index];this.removeDefaultPreventingHandler(element,eventName,listenerId);}}};window.mudElementRef=new MudElementReference();window.mudTimePicker={initPointerEvents:(clock,dotNetHelper)=>{let isPointerDown=false;const startHandler=(event)=>{if(event.button!==0){return;} -isPointerDown=true;event.target.releasePointerCapture(event.pointerId);if(event.target.classList.contains('mud-hour')||event.target.classList.contains('mud-minute')){let attributeValue=event.target.getAttribute('data-stick-value');let stickValue=attributeValue?parseInt(attributeValue):-1;dotNetHelper.invokeMethodAsync('SelectTimeFromStick',stickValue,false);} -event.preventDefault();};const endHandler=(event)=>{if(event.button!==0){return;} -isPointerDown=false;if(event.target.classList.contains('mud-hour')||event.target.classList.contains('mud-minute')){let attributeValue=event.target.getAttribute('data-stick-value');let stickValue=attributeValue?parseInt(attributeValue):-1;dotNetHelper.invokeMethodAsync('OnStickClick',stickValue);} -event.preventDefault();};const moveHandler=(event)=>{if(!isPointerDown||(!event.target.classList.contains('mud-hour')&&!event.target.classList.contains('mud-minute'))){return;} -let attributeValue=event.target.getAttribute('data-stick-value');let stickValue=attributeValue?parseInt(attributeValue):-1;dotNetHelper.invokeMethodAsync('SelectTimeFromStick',stickValue,true);event.preventDefault();};clock.addEventListener('pointerdown',startHandler);clock.addEventListener('pointerup',endHandler);clock.addEventListener('pointercancel',endHandler);clock.addEventListener('pointerover',moveHandler);clock.destroy=()=>{clock.removeEventListener('pointerdown',startHandler);clock.removeEventListener('pointerup',endHandler);clock.removeEventListener('pointercancel',endHandler);clock.removeEventListener('pointerover',moveHandler);};},destroyPointerEvents:(container)=>{if(container==null){return;} -if(typeof container.destroy==='function'){container.destroy();}}};window.mudInputAutoGrow={initAutoGrow:(elem,maxLines)=>{const compStyle=getComputedStyle(elem);const lineHeight=parseFloat(compStyle.getPropertyValue('line-height'));let maxHeight=0;elem.updateParameters=function(newMaxLines){if(newMaxLines>0){maxHeight=lineHeight*newMaxLines;}else{maxHeight=0;}} -elem.adjustAutoGrowHeight=function(didReflow=false){const scrollTops=[];let curElem=elem;while(curElem&&curElem.parentNode&&curElem.parentNode instanceof Element){if(curElem.parentNode.scrollTop){scrollTops.push([curElem.parentNode,curElem.parentNode.scrollTop]);} -curElem=curElem.parentNode;} -elem.style.height=0;if(didReflow){elem.style.textAlign=null;} -let minHeight=lineHeight*elem.rows;let newHeight=Math.max(minHeight,elem.scrollHeight);let initialOverflowY=elem.style.overflowY;if(maxHeight>0&&newHeight>maxHeight){elem.style.overflowY='auto';newHeight=maxHeight;}else{elem.style.overflowY='hidden';} -elem.style.height=newHeight+"px";scrollTops.forEach(([node,scrollTop])=>{node.style.scrollBehavior='auto';node.scrollTop=scrollTop;node.style.scrollBehavior=null;});if(!didReflow&&initialOverflowY!==elem.style.overflowY&&elem.style.overflowY==='hidden'){elem.style.textAlign='end';elem.adjustAutoGrowHeight(true);}} -elem.restoreToInitialState=function(){elem.removeEventListener('input',elem.adjustAutoGrowHeight);elem.style.overflowY=null;elem.style.height=null;} -elem.addEventListener('input',elem.adjustAutoGrowHeight);window.addEventListener('resize',elem.adjustAutoGrowHeight);elem.updateParameters(maxLines);elem.adjustAutoGrowHeight();},adjustHeight:(elem)=>{if(typeof elem.adjustAutoGrowHeight==='function'){elem.adjustAutoGrowHeight();}},updateParams:(elem,maxLines)=>{if(typeof elem.updateParameters==='function'){elem.updateParameters(maxLines);} -if(typeof elem.adjustAutoGrowHeight==='function'){elem.adjustAutoGrowHeight();}},destroy:(elem)=>{if(elem==null){return;} -window.removeEventListener('resize',elem.adjustAutoGrowHeight);if(typeof elem.restoreToInitialState==='function'){elem.restoreToInitialState();}}};class MudScrollSpy{constructor(){this.lastKnowElement=null;this.handlerRef=null;} -spying(dotnetReference,containerSelector,sectionClassSelector){this.lastKnowElement=null;this.handlerRef=this.handleScroll.bind(this,dotnetReference,containerSelector,sectionClassSelector);document.addEventListener('scroll',this.handlerRef,true);window.addEventListener('resize',this.handlerRef,true);} -handleScroll(dotnetReference,containerSelector,sectionClassSelector,event){const container=document.querySelector(containerSelector);if(container===null){return;} -const elements=document.getElementsByClassName(sectionClassSelector);if(elements.length===0){return;} -const containerTop=container.tagName==='HTML'?0:container.getBoundingClientRect().top;const containerHeight=container.clientHeight;const center=containerTop+containerHeight/2.0;let minDifference=Number.MAX_SAFE_INTEGER;let foundAbove=false;let elementId='';for(let i=0;i<elements.length;i++){const element=elements[i];const rect=element.getBoundingClientRect();const diff=Math.abs(rect.top-center);if(!foundAbove&&rect.top<center){foundAbove=true;minDifference=diff;elementId=element.id;continue;} -if(foundAbove&&rect.top>=center){continue;} -if(diff<minDifference){minDifference=diff;elementId=element.id;}} -if(elementId!==this.lastKnowElement){this.lastKnowElement=elementId;history.replaceState(null,'',window.location.pathname+"#"+elementId);dotnetReference.invokeMethodAsync('SectionChangeOccured',elementId);}} -activateSection(sectionId){const element=document.getElementById(sectionId);if(element){this.lastKnowElement=sectionId;history.replaceState(null,'',window.location.pathname+"#"+sectionId);}} -scrollToSection(sectionId){if(sectionId){let element=document.getElementById(sectionId);if(element){element.scrollIntoView({behavior:'smooth',block:'center',inline:'start'});}} -else{window.scrollTo({top:0,behavior:'smooth'});}} -unspy(){document.removeEventListener('scroll',this.handlerRef,true);window.removeEventListener('resize',this.handlerRef,true);}};window.mudScrollSpy=new MudScrollSpy();class MudResizeObserverFactory{constructor(){this._maps={};} -connect(id,dotNetRef,elements,elementIds,options){var existingEntry=this._maps[id];if(!existingEntry){var observer=new MudResizeObserver(dotNetRef,options);this._maps[id]=observer;} -var result=this._maps[id].connect(elements,elementIds);return result;} -disconnect(id,element){var existingEntry=this._maps[id];if(existingEntry){existingEntry.disconnect(element);}} -cancelListener(id){var existingEntry=this._maps[id];if(existingEntry){existingEntry.cancelListener();delete this._maps[id];}}} -class MudResizeObserver{constructor(dotNetRef,options){this.logger=options.enableLogging?console.log:(message)=>{};this.options=options;this._dotNetRef=dotNetRef -var delay=(this.options||{}).reportRate||200;this.throttleResizeHandlerId=-1;var observervedElements=[];this._observervedElements=observervedElements;this.logger('[MudBlazor | ResizeObserver] Observer initialized');this._resizeObserver=new ResizeObserver(entries=>{var changes=[];this.logger('[MudBlazor | ResizeObserver] changes detected');for(let entry of entries){var target=entry.target;var affectedObservedElement=observervedElements.find((x)=>x.element==target);if(affectedObservedElement){var size=entry.target.getBoundingClientRect();if(affectedObservedElement.isInitialized==true){changes.push({id:affectedObservedElement.id,size:size});} -else{affectedObservedElement.isInitialized=true;}}} -if(changes.length>0){if(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=[];this.logger('[MudBlazor | ResizeObserver] Start observing elements...');for(var i=0;i<elements.length;i++){var newEntry={element:elements[i],id:ids[i],isInitialized:false,};this.logger("[MudBlazor | ResizeObserver] Start observing element:",{newEntry});result.push(elements[i].getBoundingClientRect());this._observervedElements.push(newEntry);this._resizeObserver.observe(elements[i]);} -return result;} -disconnect(elementId){this.logger('[MudBlazor | ResizeObserver] Try to unobserve element with id',{elementId});var affectedObservedElement=this._observervedElements.find((x)=>x.id==elementId);if(affectedObservedElement){var element=affectedObservedElement.element;this._resizeObserver.unobserve(element);this.logger('[MudBlazor | ResizeObserver] Element found. Ubobserving size changes of element',{element});var 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();window.mudDragAndDrop={initDropZone:(id)=>{const elem=document.getElementById(id);elem.addEventListener('dragover',()=>event.preventDefault());elem.addEventListener('dragstart',()=>event.dataTransfer.setData('',event.target.id));},makeDropZonesNotRelative:()=>{var firstDropItems=Array.from(document.getElementsByClassName('mud-drop-item')).filter(x=>x.getAttribute('index')=="-1");for(let dropItem of firstDropItems){dropItem.style.position='static';} -const dropZones=document.getElementsByClassName('mud-drop-zone');for(let dropZone of dropZones){dropZone.style.position='unset';}},getDropZoneIdentifierOnPosition:(x,y)=>{const elems=document.elementsFromPoint(x,y);const dropZones=elems.filter(e=>e.classList.contains('mud-drop-zone')) -const dropZone=dropZones[0];if(dropZone){return dropZone.getAttribute('identifier')||"";} -return"";},getDropIndexOnPosition:(x,y,id)=>{const elems=document.elementsFromPoint(x,y);const dropItems=elems.filter(e=>e.classList.contains('mud-drop-item')&&e.id!=id) -const dropItem=dropItems[0];if(dropItem){return dropItem.getAttribute('index')||"";} -return"";},makeDropZonesRelative:()=>{const dropZones=document.getElementsByClassName('mud-drop-zone');for(let dropZone of dropZones){dropZone.style.position='relative';} -var firstDropItems=Array.from(document.getElementsByClassName('mud-drop-item')).filter(x=>x.getAttribute('index')=="-1");for(let dropItem of firstDropItems){dropItem.style.position='relative';}},moveItemByDifference:(id,dx,dy)=>{const elem=document.getElementById(id);var tx=(parseFloat(elem.getAttribute('data-x'))||0)+dx;var ty=(parseFloat(elem.getAttribute('data-y'))||0)+dy;elem.style.webkitTransform=elem.style.transform='translate3d('+tx+'px, '+ty+'px, 10px)';elem.setAttribute('data-x',tx);elem.setAttribute('data-y',ty);},resetItem:(id)=>{const elem=document.getElementById(id);if(elem){elem.style.webkitTransform=elem.style.transform='';elem.setAttribute('data-x',0);elem.setAttribute('data-y',0);}}};class MudScrollListener{constructor(){this.throttleScrollHandlerId=-1;this.handlerRef=null;} -listenForScroll(dotnetReference,selector){let element=selector?document.querySelector(selector):document;this.handlerRef=this.throttleScrollHandler.bind(this,dotnetReference);element.addEventListener('scroll',this.handlerRef,false);} -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;let scrollTop=element.scrollTop;let scrollHeight=element.scrollHeight;let scrollWidth=element.scrollWidth;let scrollLeft=element.scrollLeft;let nodeName=element.nodeName;let firstChild=element.firstElementChild;let 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;element.removeEventListener('scroll',this.handlerRef);}};window.mudScrollListener=new MudScrollListener();const darkThemeMediaQuery=window.matchMedia("(prefers-color-scheme: dark)");window.darkModeChange=()=>{return darkThemeMediaQuery.matches;};function darkModeChangeListener(e){dotNetHelperTheme.invokeMethodAsync('SystemPreferenceChanged',e.matches);} -function watchDarkThemeMedia(dotNetHelper){dotNetHelperTheme=dotNetHelper;darkThemeMediaQuery.addEventListener('change',darkModeChangeListener);} -function stopWatchingDarkThemeMedia(){darkThemeMediaQuery.removeEventListener('change',darkModeChangeListener);} -class MudWindow{copyToClipboard(text){navigator.clipboard.writeText(text);} -changeCssById(id,css){var element=document.getElementById(id);if(element){element.className=css;}} -updateStyleProperty(elementId,propertyName,value){const element=document.getElementById(elementId);if(element){element.style.setProperty(propertyName,value);}} -changeGlobalCssVariable(name,newValue){document.documentElement.style.setProperty(name,newValue);} -open(args){window.open(args);}} -window.mudWindow=new MudWindow();class MudScrollManager{scrollToYear(elementId,offset){let element=document.getElementById(elementId);if(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;if(parent){parent.scrollTop=element.offsetTop;}}} -scrollTo(selector,left,top,behavior){let element=document.querySelector(selector)||document.documentElement;element.scrollTo({left,top,behavior});} -scrollIntoView(selector,behavior){let element=document.querySelector(selector)||document.documentElement;if(element) -element.scrollIntoView({behavior,block:'center',inline:'start'});} -scrollToBottom(selector,behavior){let element=document.querySelector(selector);if(element){element.scrollTo({top:element.scrollHeight,behavior:behavior});}else{window.scrollTo({top:document.body.scrollHeight,behavior:behavior});}} -lockScroll(selector,lockclass){let element=document.querySelector(selector)||document.body;let hasScrollBar=window.innerWidth>document.body.clientWidth;if(hasScrollBar){element.classList.add(lockclass);}else{let lockClassNoPadding=lockclass+"-no-padding";element.classList.add(lockClassNoPadding);}} -unlockScroll(selector,lockclass){let element=document.querySelector(selector)||document.body;element.classList.remove(lockclass);element.classList.remove(lockclass+"-no-padding");}};window.mudScrollManager=new MudScrollManager();class MudInput{resetValue(id){const input=document.getElementById(id);if(input){input.value='';}}} -window.mudInput=new MudInput();window.getTabbableElements=(element)=>{return element.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))?[]:{};if(!spec){spec="*";} -for(let i in data){let currentMember=data[i];if(typeof currentMember==='function'||currentMember===null){continue;} -let currentMemberSpec;if(spec!="*"){currentMemberSpec=Array.isArray(data)?spec:spec[i];if(!currentMemberSpec){continue;}}else{currentMemberSpec="*"} -if(typeof currentMember==='object'){if(Array.isArray(currentMember)||currentMember.length){res[i]=[];for(let j=0;j<currentMember.length;j++){const arrayItem=currentMember[j];if(typeof arrayItem==='object'){res[i].push(this.serializeParameter(arrayItem,currentMemberSpec));}else{res[i].push(arrayItem);}}}else{if(currentMember.length===0){res[i]=[];}else{res[i]=this.serializeParameter(currentMember,currentMemberSpec);}}}else{if(currentMember===Infinity){currentMember="Infinity";} -if(currentMember!==null){res[i]=currentMember;}}} -return res;};class MudFileUpload{openFilePicker(id){const element=document.getElementById(id);if(!element){return;} -try{element.showPicker();}catch(error){element.click();}}} -window.mudFileUpload=new MudFileUpload(); \ No newline at end of file +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};}} \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js.br b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js.br index 77f784735ecaedf1152694cfe95090a6deb54d88..1d27d3857b1273d9b24b5272cf110561afd150ca 100644 GIT binary patch literal 11117 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 literal 10451 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 J_q1VI>NX-WU$p=L diff --git a/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js.gz b/app/MindWork AI Studio/wwwroot/system/MudBlazor/MudBlazor.min.js.gz index dea7cb1eafae60db5cc8963f602d669f86c0a58b..330ca2648fb3b6889483d915f4d59cb538eb3b4e 100644 GIT binary patch literal 12851 zcmV-3GR(~%iwFP!000006XkttcjHEm=y(4LS$B>}j%khEvwP1yQnPdVIpa+_?%VCm zq}S_{P-01DOp#oYvZYA+?|T5$lPpS<yEEC@{bGw%C=`Htp-?E)(Ig4WviE)wUEdX1 zRV6HX`@qubeVB$bR;(vkT2{qkQe}nft*g7Z9L&Q!XGO5yj<!eTVq8v&c+6Y|rM?g6 z%x4Lkv$VR5{JhA1VUsG(Qop(@vaCwjWm>V~Ax!*xwu1be6;;eiKgz0<RUg@u6)c@F zk1Fong=v(q;v<^|Sa-#VL>m7}nS*hhMlNInQg4*7ss}U#Q8rlsC4(8O-V#x-R+o`0 z3G_zs6u-PR{2hc5G5=j$RxD+O#*`w&pN2`vs2a{-Rs`uHNdTK-S+J0YMO6kWeNg5} zT)ED`Aso|1is>J+7-SPX#%Yv28d*{-@3KW21y!+NSQlU(BrKg(cR_Hz*_a6z-nx#v z_I;zMx*ctgSW>d}G%H-FI}XlA@pB#HC_X*yfD%gF#J9IV;c+cj6|b>`G98Tz7T%Ax z+wD<2bz2|<WZzpW(bwu2ZMR2SKfSqUtJ`2LTXNWF)1lV35lh0=u+dqoc+QH;Xn1zv z7lNE&t;?!@KQu-F@8LtOvn#O=B^&-02$$pOFG)5I6RiUtJb<7Pjp1XKe{udz*AX>D zK(=GZ$&q%@2>P8{Nf5oikzjB``yAPX<w8Rsxnjh#v?^9XojV*4nB}btRxOHjv^|<6 zEG(|$Im;H6i<tw?g*P%j`Lr-7StY>tv<j!mCp0KB4+i<yBK;vO_Dr)_adWag4zS8W zSxh+i$w>|NSR&PBMHE8Ww@BuCJA&B?2%*`Eu&6dPCN4f3Q|1b~R#1n(iEl?H*x$lr z!HC`)3p7f`gvFJ>TPree^eS%y1Da2|y?E;0^s8(!xht!%sQNyA%(Dk3ezP<ZKPO>2 zVM+gX5T}!55wVg+*`QkG%sV;Zm{{5O`;)scow4XzCRAZDW0m;UQ0P>8JLrE|6ya(x zEwZ`ExQ~_M92~rG*Kx$sDxSuy7^;kcO7+W0!C3mEp39SX*5_u{XMd8!EUk=EJc(x+ zrFfE`hcjlB!30b;;4#79dY)JeyS5@OSh9ae1t6Zf&?ecmSI-NApfA>~zPGMt55hc8 zRxZvvH;M=vtG6ChNJZp4H;B`R?4G@6)m;|7ELZ8ob*@sJr>-WGMd9F-@Nb{4z8{oT z5vQ|wx^fj}WO<P)bq=QW!{>w=QBo@sqd5rblfqig9tDH$URyl~TB(-!%~t}kjBK%~ zIIT~akhu2ubON?V5ldLbdJQ3Mw<A7r&s#L?AZ3rO>bL7@#WCZ9>?38co@7PACe_t+ zTC!>=`jghIVseKml14tCd+7rN^a`}9IGw%5vGS2kD%Tq+41)}j|H#Yn!FI;WFPo5` z4am;|as{H0dkx+ya#gl%GZNkgmr-y|sshuSrlbwXG@C3+q0!@r6TgqJRe=<O!FC!a zi^2*mfe`{>vDmw~C@TTwm-lfVocr@Q4bE$ofx1<N<8e4nSQ)?^%Re};ib&{o5|S@b z&x3iKdPjANp=TdS*c+(+R%Zu)ei#1tp|D=+4Cpz#Fo-V02lj4%v)wrJMKn&rU$f#T zC=y{A=T;5xa8kt&f_lJQu(HaEoycj|#vbBqQ3iWz8u3xR2Mp$Zfzmq?zYLC9!Y0*6 zSc+vs<ym<Ff1cF{R3C#$!NQ7Nvn3TJmA+&Neg!R1t~U}OgGrVoVO}y9w@fM>=DAOx zXt>VgE-b=H#R>;0ssX)CqdLel4TSgt9)%Voh$>n22{T~>N5r>gxk?l^L>v_9)v@U5 z0iYN)^4_Kq<UGUWyfGJW>UYl_ipA}beYVugABzvZBEq~2GjxCpZypvUbL(p`uc&1z z_Ph}w00k&ZlFxD*K%bk991P+I9}XPiI?MI)Kbqx#+*|%THmwK&75poUXLpsr5~nFE zC`kwUdmL4F1`MW*NGK=}Q0GxKeO=0t>QBnDr4?}DK$U$`mNe2WYc)rM%LM%e1w-Jl z7C}(U;zCN-WpwL_NnjVyXnPb!(Hk}m7fJP@z~nfciCvaK80yzJlEnfi4Hz!tooEml zs2FfDfQf~r6|V(*r0nrKw%wu@f1QVA89%TgYAsv7{jPCzdRkk1Zv*jLG+zy1BpRbT z`;sPT9z?gdIqSuCOT26rE=`%2!Obmh9<@y+fb~FEZz*#bkrI4ZQ;%eogM3lmxh4}_ zrV?haG;OSDf+;;^z)K^xgl#eWf3Bd#rug&}bEK9p00ISigAig*tjR&EP{3&I__Uq? z!#a$jtMpZ}D6lI?_$aHsH*8yC#PqTh7vU?go>&J-O|8SdNDWyn!M2ln9VQ78RxnC) z<Q@@(lO=4xiXtoA{`Xn0hOjq<dA&Eyie8+R-?G&>3ky;n`m~j68^sP#?f8mG9Q4|b zK&sJV7g1NNU5__j6c+c_cWlnyvnUS#|AG}OF+<P8YI29kZXXnxDJ#meNtR^ASvi3s zLoDs}<z@sv-)9kfjZ=8wdch062ej2g6|i!&9m#exF{m*wTH~)Q$ytGjZ0+%BRaR{N zL2fh&P2~7YR0ho>YkP#WHwI;{UXP{LKu;OjxN5c*t!R#KXU?Fgtg`&?KvkU1YJ_=f zTWz)(vO|S($Mp%9b8)I8l!MPKl%w)8@@WT0vmQ@9;1I>wM&)4vV?2wP(nO@nO7&c4 z`I!a0nMnvp&-mk?QFY@efz`{3%{6Migm~N>ASIGi`V@N%I&?u;`oD`gJjf9FE-8{( z;U{cb`Bj$tV|Eul#97fo@_$0Rlct;%vbfi-vMK#n)VXfdwS`VW`Il*x{VisXin6ax zkgm&_#L3FnqEdgHWRv@$GXaICaQrw;;*<>?G>AGH-PhTxtg5p4m(p$Rwn}tWmJe+m zP}VloWr{0-p<4?al8kW{tvX=Z9)TQaxN4myo804AesbGD^?0aw7nX$mRai8Y^cN<* zWW^!%J)XLHStT?i42B}iiLN4*iv@M4Y;yk^mH6yK7{MkdkZ`B{vot%)DY-vt$7&)# zSuN7vP+Cn&XcpF4+z(^2S6ji2X<01dMxrtSS}Zn!?7?aU78DswzDyFgAKu&*Y<fFP zv&sca4QYtZ*@biK`Tf&=Sg?H{<3&}$ff!^*aS60Uw_YoFoaT$F6Esg;<t%XS;wWM% zM?tOAxyFhuE8wF$iPHkk8{4uYR)uj=w&u&UcA4Ewvb2I(F^Vgo1`n|9;LtrpbC;}$ z!zBKdeF%X<IBR#KunPS$XA@{|b-Dn_LC{~M5u3&-i~5@lCGo>3-ZRh|k4F_oxuBme z=3`d$H=9~ISt;u2{c)BhEQE6lsq|IhXnO=>tzc!~(iu@);(sLC^S-&c9j>={YJd!^ z;cw9YV;_yUe9O{{2^o#s38>p?^_~HB0i?qLog&}N4+2N1SI%Zr&m%!VOT;OjyEQ8K zl(PvS2fB`dFmK(+4=kL00|kcghf{alD5h7;Pb(Uj`+w}~P1E2l8-v~7K?{LNg#qf- zSm(PvXev0c6x&|l{+Hl<^viP_^yn9LU>ZUlpkoCF<jpU7ODG_nQmT@+y|_JWc4=3Z z^qW!>3y6+K!ox&L+40mAfpmZY3%Fui#}%}ZV<57S)LLl}1efVFPU8yB&5WGB$bhb1 zFL$iQC=zC5q6R6gX0U-$E5~10_32^u>Q%N3-11?@R|J?BsNKfnY#FEwv@gEOmM+*6 z0pWT%1dzefU(t`1{|L)Gec(_34)qjDq2F7BhO2SO3Tc7=6#vSC`u1A*TlivZqKN^H zCRHK1dyCjOTci{AK2DOj44$2z^LegrS4EW~EUWJ`JWY<kB_cS-WZ1Gsi-bk6XQu;5 z5{U5Kh_KKqaCIJ)+|ukZcoSA^kY<l^_Y6)LpW<}F;H)J`v&XY~?Kl{8s273Bjkj(P zoMw-ss#tX}K<L8r*E->-7*Aj)>7oHb9G+z}&>i|W?-$W4JhHg$y@h<3VXZAU?E7oP zfJ&(7<AyY4Up2f|3=mS&^%l?^R?tq+kb)*`OWXZ7l~1j!o*7M#Iv#bLf|c>FjAJ7O z@1v1~C(JP`K{BlBA?fO9N7KGhbtmh)na%C*nlTejW6_XFs67%0KYHiN2%Ij^C?5%| zjcm#oZI7t@`>?tjOp`1tXy|yNq?W-))2KGs%&|7w!X%_iVUW=ebpi?O&KFe(t*XSQ zMzeLB4)z0mkKROp3bvW(3Mgm;B}I`6f|L+sT@_6WdVU0T>M#Q>osKiKgdh+U(;!M0 zIU4e}TW?e+R?399@z;~PIEi43F$4v2YuJ+{vUN?cQCv>4G^I1Fcq*9{08Js8MR3J> z!Ym-xE$VwiOOF<-i>)`C%gmc1oV`q=H$|2QYgkF)*S}{e8@h3%X6~K7A2B%8S$%w+ zs0e4-1K1p3f+FvQx*d6EVKPx@r9m&eF2b~&vI5RK--K1@I*xDnUc?b7IQ~4mXM&&d z`>guNk`Ruyhd5ip0pb)~5C8<!o>F(fvM^h|TG2K+oHG{=tk0q%%g^G9%^lAhOydO9 zoMrH0358x(RS}OD6>}ZjhB#gj^v^E(o>USeUN3ZUlMrt$@&;wKO4uOJ${2l{z-Cj$ z6G!^&MS{PeJH@|dDRWFZ00qz?(Gdyovq8clEm`HjOg&?=zg$Z9v#az22OYXge`R(e zjZEG-%XdXKM;|eS9@W{xQbM>ac)>J#0L-XioR$sVyqa_ZiSOndm22^>_F014TGL6k z9B;GfgPKVN;HTjK656-MwqGAUhj324@j%Y0AD*1BK^z?iaiq%t_YV@YCIeLWbs1o% zvv%Jm`^NY(2iNb`ISWn(jF5lM5w3Bt^<jAfs8_2u@l^O-yK&@4OFvp2FhQf6+A@F@ zuVn9%ETkjA8Xqvbo-G~E+icFg(`ZS>R-KBiWHB=DamF6m_&%;^%Fc>;pk-Au(ZQcd zSg}7xu5(%~Pn~?}_ngyeMZYf2^QGr-yf%{kYU#CRuN=Pu4{g6-CBsvV1D7|`oAD6F zcG7&lljL($UzBIx-*MGmPqKV<oxM)t91lBPFw1%CG<=9>VU-oI*i+8nv53igiC}cc z5Y8F-g$Q@^UB^0_6b!3=!+m6tM`6W2fgC<?PhRa9On3G5AHc&`9+H3Ap%@9iWR<Mc zQWelgBA`1UugmgpVG)Dn&`kj>Wsm4~tohD1oOc=(nI%Wtqbz5s8x}L%9-yYBQh)@d zeo>PO<1~H2&R8`0zm=#Hy$iw6yjlz0QSREb3t?H#)o5)`e;Ijrui{bLjP*7>j`dc^ z{4yH$*fM96ibW!=7e~i^9R7zjj5H_gtT@eNJ=zI=H0<?HB|04&$ch(M$6YE-2#|kj z@)1%QH46=dH08!<d!*^-+Og-;rLfspIpC%i3r)2Rf_4W`HnisI^gq6-cOlLb7M85X z#nl_LX;!eFkQf-(Ej?vmxm8*B&$o*DAJ_*hwCGMx#sp#?0DQi%%p`_4cypML1?MN3 z!Cf^zvMD(s{lozS{(rMsZ%3NdN2Cu}3X|%0*=!c4vu}hSPm;}s?wplnIAgH-8f9I_ z-p-e4T#+p~a{M)~K=|1GBt=ELNA9{_AKExl3=U)iG;;VR5*0zw18sT3-lQyhBw$zq z<hbgi!IDr)Q-E=|OT$9uavT0GvOy2s9@P@3v)-Gl_h_Ax1Fq=NdRO+UtcO;P-eX+d zak3p>te?JCv6QXo@BF{$0y`}}2$Q96vN<<Bd$nSEuZ5g?wlK{YB>3x4=tm_vS^B2Q z#xED+s$fjmZw#c-Yk)0Sif0x2ByV&K(N>~obdbM7r5Uw2o?e(n<oYM>iuRm_FpT-W zE?+RoDWe#*UN-I7d4sMRmjgIdo!m)}Ml4iYNsRTwK8ncw7Vl$Ot|f}5lg%?auv71< zkFH=_*cLNo%XUp4wR|26E2}JOv%R^TKD{q!NbAjhs!iXAc7Xi?qYK{MJIcD*QAjqm zRmLhlGL<$4vA8U1c>7-AX(cq+)nh8uW%Pb+>2{vp2D|#?kv#P6&@jXYOpnwoT654W z;*E%@9j@Mu3&GrcYZvhV?EzO)F0<$7d~h}a@!(Ys(%o&c?lK`U!K<b7ncTKI?YA>* zom`$o7OXv-n%}MKJXs7ai%UxrYgVJ<AdqdXuaWAU1W53e)&O!TS;8Z9s6p45Z~@3Z z;qEzhfeQ7b7oj@n$1Y(M>4z>2zpRs!rmL1TP@3~H`luMRUWYS~^kyS)RFn_|RyYst z7ES9@yV}B$$4fgejU%M5%T3jho66v(Hm)>oz=d7wec;8tvrlMO4e-u7Tqv9F8JvA> zia2%pj!*a5rZ@d8?W?R?@aCIBCUo9=wp!#Og`03DVZkb41qTA?G{(G7#?9Px(9EUM z7_WUq-$yewL3(Qfl^YWKt?bu23DWt&APhT6mQIp*a{t>gfarfy2J*11SdD=_L}3w= zDBHb`0l3h^q#Mp~&`4hmX<CF+x4?DTAS>cooQ4V3u-PzgV8CoPe5-1t()QR)T6gHE zMu}crqSqaE*IFP8Fn0z9G^`|aR0w&0%9Aio9qQ(Lo8$vX&GESn6-3W(E*>O%Dq{+t z3gQ{(p5DgN$O7>;Mbil(fB*oIR9HK4MlP(5j|hAyj&4!fwfcC@KE#uIh)D&f!#oZU z@icTN;EC%S*FCtiMO<>wH`!y#HB^mTKAi=$(sEBEI>IG4*kkTt#+%hdhdTu0z_(y% z4B|kq!@OD)T(uwMlqd|xda<_iw7YD9=Y5@k=W)8I;LH&jm-|#LyonYPpl;?bt9WvM zhSq5wvkFtFu!-v%JcGGRE7wf-hG!Qey$!6lda$LTIpNUp6Vw6CE~=8@7HGAxT!>Wt z@XOkcy2Ah7hPX;m_^*>%3v`e@C@xmv9~&axY~14mgnM#we3*2#ru`@G@N{jzUE(ma zS$tCXWD;eMDW5jwzF<$0Mee{1+ZCJw5gk;79Bs5-B1%N8tcq+!mkBA!dgpB~bGu5} z`P)^ZoyA?HEL?6!;53Ll))y%1!n7`df3WyA-S-X8eF-Dwrn|qBzqyf5Zf45VZh9eV zXLt25EI-Y|yk@Y5ll}VPUa3y`N@b}>ZGRb;a0!@Vb}5`Uam0fN=>SxwX1=XaYdbnK z@dg3`HwYH2TqMFCD1ho`YdQ-;TjM27gKQiL$Zj0g7&Jb0+nT;Xq<$wmRvdkWs%kjR z&;|+(Xjd)$q|?dFmz=WHj&4S+M?KiA7}PG{=6rS7;|&UyXGQfftk`Dr?3{-W5<aQK z5+9hCQE+yFyHe3*9+<dAjX?rTbElqZN!wxRGX;6u6Tf<~c622A@gZ)*Ks!G_k@R+= zKpeV6timH9&7rC3LaaxSqPT?kfszZSQ$)Z~3u)K{G?+q&LU-wbdy+8I2ZRe%-xgfl zq5wAx^y*s!ShZss#HDsvC!&dRS&*r79Y@2~(vc5T4B-#D;G(B|x4Ljkz@wXr3hA!O z3yRgWtDC+6ebsQe-32WzfNh<=C7dL6yk<N}POe9xH(`dN=oK2YV98s9&wh)Sy=@?* z+8q#S5hiUZ>WdMvYm?YFQ1m6Sqiq+*e+x<SCV-VT^Cm$37`OCeh{B<*ItLBP`eCWS zIv7B_;99s#k*9~bgzS_(@(7t6L^xT)6(c{6hB3tLxb=<h$&W0}<L>@bhy?)&63Eqm zkyJFaG&))%9<@)oghQaVPnPwo1W=V0X~njlYhE<n8|u1P!EyB><@HHJE*@RS;07S^ zZoQrJWIMn5Y#B%L@&Gpz?3^pb<k~hhndjv-8A`5{PSRa6Z*@<aLGOpL>L36p*By0S zs$|6_MR#J`<sy!*+9a@}3qkbl33CyHe__+L4(SE2ldJ^B%=AI;jXX;VlSHT%(wV7j zS?FyCtxETi*LzLx8nbG<#;km8RJlCMVVgp`(_k$wG^sF>@WX!$V;&d-t~g~22=s*m zNnSl+OEy_lEP5x(4F&`9E97B=LcF?6+d6&uqW>NSg^`7DTWf>jKlJ-#h?ywF?Nt#@ zMHEew3&FtT9s&=Lb*ILLq8d-=2voX87VJM4tgK$9@f?lK@8G^D-Dd*?JX|ZTl*ENu z*H$HP9bmNeCt)&K01F?eA*5%%Bng5e`C~ps!sO_K!4!UQhO(SrdW1M1up~^ej2s?l z6XETA7N(QCtT?N({0zVy4>bxbsn;=plo6mdQY(mOB7*aEs)Psf*j3G`k%Bjc{`Bl? z)Lp<OqC>0x(u#@UCkof3hptBb>Dl46e^se}Euy|&b9^yHV~id16&vaBx_|Q~I-I26 zwt=`2Rzwn}DN95P-ZN{}rYnU*mG8i9V?Gji&cuu=g?unxU3M*Kb)-l8u{I}?Cfllp zLk59ulGrbbFRJSh@z^TrAg|__-Y>5%9N5O|;nF&wrZ16|+~Q!=DTw(6@)%+SFpg`; z|MTz9{QEO#Bhw_#(PQKz%ad?IYU*(9R9Wr}*Y+VfY;6U<ZS+}-h>&0V=gi?AWusXy ziPTyxW%*m*A#OTxsc`zOV|Lg+4y-&H5LOm-?0&1%_i)MaH`%mREZMiRX)DoAqlJlG zT-qdMFtelIZGDHn>wLD$sfE*B9j~>=HG8C$(Ovz12d7%!+xjpv&%!j~EFCgLn>Y^Y z8g_xV(z09fiWUuxm7G0-5#-QR_C73TaXLKr$LMi^VE>L+poj9n7JTHgc@BG5yb0*G zU8nQFR3-d7@nqI@&dz{<UvV}Ubl~06i)ZIl>vfhTRh<8JwN_LC)%t(W&*7%G*hId| zig!tz=Pde=<qxb-n@SAHhBu6T6+qFx#}xil{H$HXj#36lh0F5N4qQkM6oh(Pr@$44 z&QMy+5d-UTbR!79y#eHS;H4o0^SE#eKtrLPC!_V6Ab>}UR?%ytr){(DN_;Is9BqAM zfR|J4!105Rr;kWPs6MnnXt^gR+J_eCM9LXr+$(@M!s}yI;r>725y!J%Q)m~AL(+CT z%;B&+49uBx%J0-3H<2`+W>P(+39MW;09%{?h8WOr6%}r(lgE#70N#|91(^xdz(e~H zy}=9-YQbpR&X+6<;+@+YXC5xkP*Zbm11E(z0lR?Xv<}=sI^yy@FY0;gZsfSlJ)8$O z*C7mn&{6l*9Y$f^xo(ZSU3GJxJ3eG=ou{oCYW)r;8a;f1%uz$3M7P<ek8_$jTL!zd z#qoN`lpt(%A`#3=`i5Af^KWB&Z03FL(mh0!hBNpo;)r{j0aaoVYHu@KMsK~%MjAmn z6oO3xlmW(UJ9J~Dt<}Cn>{M_~$D~tpx8u{I4?w52{SJ>-SA*v<g=(<iywYXXd0@pf z$sW&O^*PH@nuRu-!^(xpW4J0o<~)F6p1%qU={2w~qDLPvhj~5@i=O&<HjS4o0!61! zy^OHZ%THuOG3(I|mJLu7>gK%l7*1^~iH%tiP8g|GJ6CN25piNzQiazUydn}{^NKER zWPfbDDS`o_P^GJHe~p590GeN|vCnjVg+Ff|PS|xON?0HeBL$YWyl#RTW_`oWU*n-i zNG*e7z5wM5Qb84Cbb-9wvvRc<zYtub@wwI<Cnvfb%^bz}i=aloEC#Kk<<i`|mYkUz z4Q0(}rDjK+HMDhXRu(!^$*GeFyU12pc6LkmAbt+2pWAynH7@Xfc-x{pyEHD5@*B5q zlZUQk3i7%uDuxkNN%(7Yu|sKSH1j`J5{7wHCnE1Ui)fwUMR49(UUkDjqd(-ks%c{S zJ*SJBEqI?8cXM%Qt(FdCZ@ZRm)oi-G-K=4a`TC9b6~+KXr{w7;C*s#J-%JS=EM<@K z!d#o~vcq^%SN`|dO-86|YjvsvMLkhhmi2U@A_?`mnfKYcqikMdP&}e$>i7=)%hA)5 zn?vAKLetBhpP!syG}mxk8X4a6dTSt)2s;m#?zwM3Yr6pQTF-Kx_xZW5e4U)MYOUz~ zLUFnb`<-PQ;y099uUW0mnU=0GCKfShD2*{4*f_{juVUG>Kl6<V2Rhstz&c_p3LoMv zjA#F%CB6@r{FyzsMH7|e@I$4O6Fgd?WP*EPVDi=oKw-h=3cmq_<cY^M#NOP(8C`tX z*V();*>jN>P6wUZYJR8#!Aye9u-R}U3!gdE!y2YZRx<{9D(GS0;3mx3W%3ZfV9z0F z&9-v9PZ%7(Jp4PYJ=Z9@UoHJ}CrMk)0@m~NqkZOqz?>VXuk0}o1jeYNB8QCe79;4W zYcn>D>A#-wh?vKL6E3Q3XTu8MTQxO&X|;Zb+U%CbdvUBF+{tJ%-);p;dO=2bG%BNW zie_8w=?gRlL#iG@`|&PLn0ThZFg5enfAAF(9l&_k=!Kr4M|Ji#8%rU2cBokf)3JT^ zYUSe!2-&=5MmQ-L^SW)V*Ddng_M&EL%YYnxF(SK(2pj|TCn1n08H^$5zq)$!x$mvV z1q<(C!O_}GFQGLZbb)r7R7Wrj<ouc$p6g%$TE#BMgO?<eM7Y_$7PrgbC0+S=3mpjo z0?TQTHYoNUKESC1h5!c7?JlC<ahTGS2mmQT@T({4EJa4=7RM+T|5`go>C8iPIQ4K| zG|3kD&ig|gv7%I@su0N5cdYP<r-3o!a~yq7G|1LBX4|U=RwUu7aVTXR@^IccF8k3= zR<g3<N>06Y2gk7ZlBZeLvmv!~p&68e_N6TqzTnE2z-HC5I1ts#KTb}L`LEWy!}wA; z2a=0roX)s5(j@!jM4+tC+Q&iAWo}=$mG4p-<F1&^$&Z?Mw5H!YKBN?m0gU}STUBbW z1b8)-1)CIW(-O=NDSPCLR@<OxoYkLR@Y*1P2QS>=I6_Hyvk@5hfu=yxLB8@G2~Ltc z57!s_pj8PliW)*A8t5{)fozwupvcjR9|ux%QPNccs)Ku{7dw?Z)&C?mO?$1i_*2B8 z3X6AjbRUT)NTgYQw@8}s-DM*6K8e@g)sYSNkJAfZbz!d|RDR5_k3IW@$mu^TvaC|G z;vr2yi_HHv>3@O9>HO`>g-te!C(F7~e7C3@;9oZOkB#Ybvyt@}>E82;Zd)j=imk6* zHs`a0Eeydt%pnK?{^pgM&jN9%IF-sN1)bxM9!|m}8Hba5xV+yM$gWcqI_(V|3|<C- z7gXF=X>#Our4=ZCgRZY4)`?Q2?mH+3df;zQn3LVclarIK#Z508UaDa|A@PbBMqO<` z-L_27KZFjh^|w|TVRdkqN|SUvxt9b5?Ll35Dfyxs53+)n=JB<ua0#IR<P0HZhrvX~ zBsI4>wQS3#2eWXyP=i&@a4N2h8dIXw4lZc^m1Xg6xO&@C&r_ErRT!TaHFyn}9&1zq ze{@tY=Hb#?gPdd%TGH@ovUqmK%IZ3v+~Yeg*lB7RMC;jw9_}%eZ;$Y3nizG52hf~{ zxtw<`PHepJpqYiO*t(Zda{C@1KDDWmT}A(*&Y!n#aIB<Nmy(5YZknt?%A1Id@nqZ3 zHA*-7gm@y;><8RgA}cC*n@<i9tsLaJ{Kcf@8NCNYrT>Y>hC-rQ(nKJLx-?Suc<8RB zE<no&JpD68c5PiB#qx;VL0-~Vv4L=L(_Ec}Sj7t1@&th4YGfj#=iyXwy^rV)n0lT2 z9f1PPCy0lnuq@IhCFm%lQ375{YE^n47WXg<?Z^&5bBpvK_cfK_n47$8d6rAqR)vFe z)5zNutK}(nM6?oG2^DwrO<5R0DIjhTmeu-DOCx-Nm8;2*%?xeYxxSujatB{&o7Jhk z_qH47q%C0@&jJ<h{~bn89^P;j&ex}-TM-$r!;=I;N!0?c;46WRcLyw%9U@AqH{$(G z>WZzCmv&`d>!$5tfDGl<2m~a`$Y~9OyK_ZUq|x<yHS@*M$%+0oz<_S$-{a~|>tkNW zrjnS%lbT)MV6923^>xy=GpL%(#r*rVgnoc3tv3lp=`qY-0MkhjoCR9nYXx`oLOxN= z!yKcqSvG@1OV_QxKsprt9iBqd$QzoUzJ<1-C2b26q7lAL1zX~j8h2Loj3Y=H?0zB@ zL3Td73IH}i8c=#LHeNd?JkLtz((VJ#Xdp6?)Q{IXXEN;5lh?HNgB~s-71XGO9zEPo zY>B+1Zw-a@m<KHp16e*Z$zzi2o5chiMdWzmBI{qApErgwtzex-@;}XqBS+mlJEcCX zo?+)=_t$w?mhfsOf48O;fjE4viLZe`8hlIz!Djans0h*s+K2f(CKtrV;XN3<SQz+l zQ4t7JnCcJGD-Ud(ZF!g^k@}7Oa7{Xyc|!rvsK1?FZ9T71quzYmB~7Cq6$aT_SA$;) z!n-4MTuromerOYXOW?S&8^4?y8f)-Wd<V)QoSfcNdh}j$!bdFN+%F$m6e(Ih_jxiw z_~Ypc3cU_$K<WW@`o`-FCI}?aDOVPetxDvJ1kA<vRq@dcnU6_a&&8Y?VDoN9pfX!8 zM%6@V3qJfYj7xTvQu{jodRLXc;*$To&T?NDA^)J4y#>$ywjP5|3;(G{*3v@m8C_!N zn4$K}KwV#LB#XANhV*S2hCq-uOPe#9SkP)4AbncD#GA2;D*H>3JyPI$@ioM#YyLc3 zeiy?-!tx1NI5D7ehsJ>ezWgek2vf#;yY?imENnSyfD&iq{|NRIaaxJ4fH1B)qTwaL zM-k9)t12huoSu>8_NovfXjQBz1Ld5=9^VU=K|#~L!68&(QvCf<gE>|7lB=;+;+%Y> z@CEl@7NwLl&z2-aarBYFswr&Z+#)8ryfhY17U*t@qgeS%LDI<y|6y!Dn`yl`Ei35H z*;GW#qs>tRQq5-GT2Vp@)=d-K--Q7^V+HX|Ks3S27lNrn(CsoQ8RL0jcy8il63<e( z_(GG%X|tiQP?0?v&BWaTIJ7+ClL#=(vN2Orr{cy8uyz7TpY>;rh2Dc#C1nqIaei_l zYXUpA@QbyT<OgdbMVc(YdzQV_T^vO$b*w^^xK8`|vOm(=aherx!^xfN-oUh}rq^2- z_vo6(U-QL`SL`l)h`|Y-(`YnrpccONlGIdmt6Mhf$w^(P#}sa|&L+J))L=f4?6-6f zhoupJXWBLfU5a%thH1gdDl6D^#sidos=|t?amwqk&es@n!0}sa63<!J7(l65+Ku`( z#}*x2*Is3NAD#9268bdFkvoJ5+ZoEB1X@vee0d&1zI{40L&@)~MS36seWhjLs@2z+ z{VjFv;8+iV|CQ+H@$n4_!OuqUeHjYU(&sufW{q%r2e(je1*}K&M`Z$b-mIdf7;GHk z#h-k!_r-Js^49o|PT=5Cc=MSZtV1X^_@O`D`z}t{4|$S>(Hf4G;gjCv(MZ|%G_eRZ zA%p8n*~1n<D%^M3BS&4=F4dc8@N8E7oghV`;6kP7tdP?7DYrg{kc4IRZJIrb*uBd4 zpt%z*^HrSA8rvFq*dbI>zoeIvjNSYp^=aQk{EiJ+$J$4-k-Be8X$s#v<JpUCk8}o} zC^Wg*l}1l`NTX#d&_Ig)PkVo(J_i{6c>i5~yJXdSe(D_7IAp6)59_*m&qKL~JAb`? z|DE&A`A}uH-Q|b7W;LvQu2f}pPkjN5w;dJCb(Wvj5d7)cfZ{pM<Md5D<;}$p)(7uj z{`k|Um+#*Gbou@D+rPa1NPAnL@Z~srU_3mowtKsbVB#^)lC5FR%^5|D^(~G56SYU* z9X=$Ar_(^*4TFLpFMidNW+X-O$%z1X&H>gMKX@I(lmuWG8_Y|!?T;gMbWX>rmMUHZ zq7D-la6UJx@zz~yCHDfEbsPk?d8TFdk;O)LF)T|fcxeMHlC&zpXz?9Kc;+S9guHn2 zu)2fS$4~qJr+=!&Fz;Zc_{4`0#tgrjOcn(^HK^f$H-INq{18@*!-`>d*?Hkn1+>B0 zA_58f1tQSu+X^Gtb!H(SZ@0=X-O6zwE2g#TGOe<|#q7~tkNKux=#=v;tL_|s438TP z9TA%@PGJ)_bnsx#Au|kafs7ky*O`l9C(r!`LMpOI%Y5Z}Yf1JYrWSKy*{OiFtSwDT z&8K{28fiWOef9T|td?ncrp_O_k-HM{oK5{P8}Ys40UCPk8i#`x=N(h=_7A=*B?03o zh<PsY%FjpIYf%b;r<=$LMlH7LB_DA>Mp>NU`s+MOKeOfPJjohHU;IQ6kIVnFW<C6f z&;3BOed-7F!fe?Kt6mXSa1uTIgTaCJK+twx{@kv#^a){K?^yg)gqz{zgU$kVxybW^ zmH4y<BICj{A4`!Zbz1Y{H>_1M$+!T_FT^RkztO_(L9fGn#kXNRzeTdm7h+Vm63}T@ z#naVQs#v~ClNC*M<GiCp;;B2%`8uY=sc#=@f*$95Pa(*WLz?>O4s$ul3SRf%p{ANw zw0UHz2BBNO6FUS2dm%p4{&yh^=Fu(>>S)G%qxtLa=2&0dXv~2-X8rcT39_35sqa}7 zhc0UU)Tv~2r$#oVFfpt3=5!kV3XGN@0w@Kq0m*xKPY|>~sYw}wDc~h$xCR>-qeFGs zHy{nXkyhUHe_SU0Tk(i)?_Wp4Yx)orI);CF3Wo1y8iqeV1;hJD!|?1W7(UH43>Sz& ze4U$%zPX&6kEB?SXUr`AeoC;Ohj|{Sv*CK{*A~%Xa}@>WE&f0oTwmCOe86#&-I}|l z$SDkvB)iFnDMNq^_Al`x;iV(W;F~1+m>jxKX5e@a2g1Qc(%benq4b2Q(N+R+Xko0~ zKaR|O;y#)i?=157qPD(ryg8JA=@=8i9EeUa2a`d@EBVMy$*PZWo+pgrrqIi}zIk~W zx4e7a#UsciKSQT2|Bq+5-^6Hpg&xtKfL8|aX9B_KWk#TW@$5I9IH;pRw@*Qf3nZV1 zE;(EF{h$A^UT*W{&)$JWS6FmKMYl)ob}Ih7y)X51!#E^-7|mye>B=izqo!*6WV+>& z-q{Z1ZzpyT-?G&uz97r;D$`$BMK7$z1FDyip?nJ?=w;-gzW3Od3Bw*+=J@QDd~+<0 zj{Ep<*1qkb`GA<TwDKy_OkzZHL~jbqcr@&3yLP=Ch{<HrJ8I1mvzD1^d&{*IMg7HA zXn#5_xMwTH8^>h6gLariHk(~M@;R-YPDK<arS-wN-;G4WBhavucWE~Dpjb<P@AOiv z?O|8(benB6`4zT}=5uZ)&9^=6!+4j~U-LRKU`M?d(vx92*;4+EoWVU?m14XZiNjt9 z(Z#^?_gl8Qq8vHY`xaC*?U3_+9ix^v>`ls&f+Y9A1ZCnhU&^bk*BTb_8ebFt0rIUs z82RSvz4i<sPB-Fpz$znGa(YjZs8{a<`da<sdc;pPYjEumz#V?~S^6fM^H)CWZwFdN z1OU{bgio|ViLb5*l>B*3<O!B2^o8`x#keY%bc{5RM(B)Huv9%md@nnOG%Ed6uo+v5 zRPL5bOPqv8SNvu##C|J*HXHRD@^?LhSZ~)^1_zA~VG>7BYmZkm>^Z)~sofRhJMxlM zvZuQWj^}o&xK>$RO0;%2#54dE?8UivKt))*S(T2JLg8q)+mzU~g9zI>kv@>Q*ux4Q zkmNh(lCCz8wb(8+XiKB{L@2#yCnsjQe#PQXa9h~SW@)4{y|v0jR{5oY+1q7atB#`O zz<K9|ZzJUFLcZ*3GzGdbX`O_O9!K?-yfJZB*>~9^D_)17px*{E6P2LHySQQ)r&cGo z{~!NR_Wk~>?~N3$yg&`^P4<`ut~GhH=|jx8z9;Pbu0rqk`<_Wk6ZH?d1@RC0lhKw{ zme<J@X<vlYB$QGPM5t?H^eYnG6JJ=z-$A2k4Nyz-j;P>f(|x!iN?2j2Xm1+E35$j} zU!)oAm1eL_fWsu-D~)kw5`Vw~#|w&TrQ+Zl7*UJR6);_c5G%1zA-Y$tFlqq|#540@ z8j)FCJY%gMq0M$YKdV+xa6D+8;Oa{jpIRekoyCr<v)cjd4V8!X70iIB5e+%E*{PBj zajC)=XBYaZJ33UitoD@I^l7+ft0;R+`Ern@-?9}9L~mDtMXrPYkhd-SG&M?@S!H>E z%&2^u%!pp=+1ef++sbrhGic#{ikB+gW$<Eo90XDfx~}H7Me=~z2I9K%yIl1)9o2PP zfVJzkonnG0Afd@>FwhB@cKcB|De>qW<WXrPsem1ZYH);f)&`HZ7v4<=HPqLnq}C-B zC0lNOXXUqS^*Wo6;}mJ&+hKYn87Dn4wez(h2>5~{?6~A10)gBlK$xynK6+eWbKk|& zDgeX-{P`_gVfv&h5=w?&A~j4nY?w&MIjcfSgkKUeT?L46vjGH~O_)@h4M1R6o^*9` zqDZ@EtJ5ZVz^4W{h|@{3h*;?&Jn?HSQIi6)1Hue`zGtgHtdXp5`ltB6KkWCne^>*J z-}F!6A5RGrfC&=;0i=J^KZSpo^0PSbs8fek(U9Xq-lcZiH@c8|kR$FQu%~oZ=Hs#_ z&wd>Kn6|Mcy=N<Gq=ud_>RuDfXT8323i5aQq8@sA9uC;JV-f`ypX$oW;4Un$9#d(e z1Qtmm+TN^Q2$a{`1IXhO5$=aID)oI0BFl?x!pc%_9Ro<;6TrdrxSSO6nBnYw#5tu1 zvf9+4O2F(vtQgxIW2*rNzB9HQRA4tHVRYxy*i`)kxkVQ!O5qkbSiN2rGv0Jn_AOhD zv#_Am8#1Wtk0jvW8e%`e0EWKQCkmB4%XUzEC5DlMvEtRPFphkQ7x#F3IMr@1+vZqJ z2--e|`nY$5V@IU3X}C!6igH(sVyj`GgG3k+;f&zrr13-kKW55U<iF2^q51+BW|uzy zL;hQj@2^AFR~?9py!$ZxAwOUcS~xs-2>y_N#R2$(iOe?qS|ul(7rteyp%@hYYlzH1 zN)p^b`i^@oQj+jt^gptkg%u?h_}hO?Iu$QVAO0t<e^IK?#{8G4YEdGoUH*Ggv?z^h RT@bF}zW`UcEcKS+004#tuc-h4 literal 11710 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 UU~VmlsIN!=A2A)-9MabS06r?AivR!s diff --git a/metadata.txt b/metadata.txt index cd554b78..aab10105 100644 --- a/metadata.txt +++ b/metadata.txt @@ -4,6 +4,6 @@ 9.0.104 (commit 2750432faa) 9.0.3 (commit 831d23e561) 1.85.0 (commit 4d91de4e4) -8.3.0 +8.4.0 1.8.1 -c67f17cf41e, release +820294c14db, dev debug From 97454c59e958bd512664015789a74413c4a09904 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Mon, 17 Mar 2025 19:19:19 +0100 Subject: [PATCH 104/110] Updated v0.9.38 metadata (#369) --- .github/workflows/build-and-release.yml | 2 +- app/MindWork AI Studio/Components/Changelog.Logs.cs | 2 +- app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md | 4 ++-- metadata.txt | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index a3791923..f6d32eff 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -347,7 +347,7 @@ jobs: cargo tauri build --target ${{ matrix.rust_target }} --bundles ${{ matrix.tauri_bundle }} - name: Upload artifact (macOS) - if: startsWith(matrix.platform, 'macos') + if: startsWith(matrix.platform, 'macos') && startsWith(github.ref, 'refs/tags/v') uses: actions/upload-artifact@v4 with: name: MindWork AI Studio (macOS ${{ matrix.dotnet_runtime }}) diff --git a/app/MindWork AI Studio/Components/Changelog.Logs.cs b/app/MindWork AI Studio/Components/Changelog.Logs.cs index 2cc4064f..11627ab6 100644 --- a/app/MindWork AI Studio/Components/Changelog.Logs.cs +++ b/app/MindWork AI Studio/Components/Changelog.Logs.cs @@ -13,7 +13,7 @@ public partial class Changelog public static readonly Log[] LOGS = [ - new (213, "v0.9.38, build 213 (2025-03-17 17:07 UTC)", "v0.9.38.md"), + new (213, "v0.9.38, build 213 (2025-03-17 18:18 UTC)", "v0.9.38.md"), new (212, "v0.9.37, build 212 (2025-03-16 20:32 UTC)", "v0.9.37.md"), new (211, "v0.9.36, build 211 (2025-03-15 10:42 UTC)", "v0.9.36.md"), new (210, "v0.9.35, build 210 (2025-03-13 08:44 UTC)", "v0.9.35.md"), diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md index c26ef9bd..9766008f 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.38.md @@ -1,4 +1,4 @@ -# v0.9.38, build 213 (2025-03-17 17:07 UTC) +# v0.9.38, build 213 (2025-03-17 18:18 UTC) - Added the "stop generation" button to all assistants. - Upgraded MudBlazor to v8.4.0, which fixes some bugs we were experiencing. -- Updated the ERI v1 specification for the ERI server assistant & fixed spelling of the `UNKNOWN` role. \ No newline at end of file +- Upgraded the ERI v1 specification for the ERI server assistant & fixed spelling of the `UNKNOWN` role. \ No newline at end of file diff --git a/metadata.txt b/metadata.txt index aab10105..8e6b5896 100644 --- a/metadata.txt +++ b/metadata.txt @@ -1,9 +1,9 @@ 0.9.38 -2025-03-17 17:07:00 UTC +2025-03-17 18:18:00 UTC 213 9.0.104 (commit 2750432faa) 9.0.3 (commit 831d23e561) 1.85.0 (commit 4d91de4e4) 8.4.0 1.8.1 -820294c14db, dev debug +820294c14db, release From ee2a73ccd848e9b0efa7dcf3eb92269a5122a546 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 22 Mar 2025 21:12:14 +0100 Subject: [PATCH 105/110] Added plugin architecture (#322) --- app/MindWork AI Studio/Chat/Workspace.cs | 12 - .../Layout/MainLayout.razor.cs | 4 + .../MindWork AI Studio.csproj | 3 +- app/MindWork AI Studio/Pages/About.razor | 1 + .../contentHome.lua | 3 + .../plugin.lua | 39 ++ .../contentHome.lua | 3 + .../plugin.lua | 41 ++ app/MindWork AI Studio/Program.cs | 4 + .../Settings/DataModel/PreviewFeatures.cs | 2 + .../DataModel/PreviewFeaturesExtensions.cs | 1 + .../DataModel/PreviewVisibilityExtensions.cs | 1 + app/MindWork AI Studio/Tools/CommonTools.cs | 22 + .../Tools/PluginSystem/ForbiddenPlugins.cs | 99 ++++ .../Tools/PluginSystem/ILanguagePlugin.cs | 21 + .../Tools/PluginSystem/InternalPlugin.cs | 7 + .../Tools/PluginSystem/InternalPluginData.cs | 8 + .../PluginSystem/InternalPluginExtensions.cs | 12 + .../Tools/PluginSystem/NoModuleLoader.cs | 20 + .../Tools/PluginSystem/NoPlugin.cs | 9 + .../Tools/PluginSystem/PluginBase.cs | 521 ++++++++++++++++++ .../Tools/PluginSystem/PluginCategory.cs | 33 ++ .../PluginSystem/PluginCategoryExtensions.cs | 38 ++ .../Tools/PluginSystem/PluginCheckResult.cs | 8 + .../Tools/PluginSystem/PluginFactory.cs | 125 +++++ .../Tools/PluginSystem/PluginLanguage.cs | 48 ++ .../Tools/PluginSystem/PluginLoader.cs | 48 ++ .../Tools/PluginSystem/PluginTargetGroup.cs | 20 + .../PluginTargetGroupExtensions.cs | 25 + .../Tools/PluginSystem/PluginType.cs | 11 + .../PluginSystem/PluginTypeExtensions.cs | 24 + .../Tools/PluginSystem/PluginVersion.cs | 90 +++ app/MindWork AI Studio/packages.lock.json | 6 + .../wwwroot/changelog/v0.9.39.md | 3 + .../UsageAnalyzers/EmptyStringAnalyzer.cs | 20 + 35 files changed, 1319 insertions(+), 13 deletions(-) delete mode 100644 app/MindWork AI Studio/Chat/Workspace.cs create mode 100644 app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/contentHome.lua create mode 100644 app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua create mode 100644 app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/contentHome.lua create mode 100644 app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua create mode 100644 app/MindWork AI Studio/Tools/CommonTools.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/ForbiddenPlugins.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/ILanguagePlugin.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/InternalPlugin.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/InternalPluginData.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/InternalPluginExtensions.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/NoModuleLoader.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/NoPlugin.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginBase.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginCategory.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginCategoryExtensions.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginCheckResult.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginLanguage.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginLoader.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginTargetGroup.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginTargetGroupExtensions.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginType.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginTypeExtensions.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginVersion.cs create mode 100644 app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md diff --git a/app/MindWork AI Studio/Chat/Workspace.cs b/app/MindWork AI Studio/Chat/Workspace.cs deleted file mode 100644 index 0dad2b9b..00000000 --- a/app/MindWork AI Studio/Chat/Workspace.cs +++ /dev/null @@ -1,12 +0,0 @@ -namespace AIStudio.Chat; - -/// <summary> -/// Data about a workspace. -/// </summary> -/// <param name="name">The name of the workspace.</param> -public sealed class Workspace(string name) -{ - public string Name { get; set; } = name; - - public List<ChatThread> Threads { get; set; } = new(); -} \ No newline at end of file diff --git a/app/MindWork AI Studio/Layout/MainLayout.razor.cs b/app/MindWork AI Studio/Layout/MainLayout.razor.cs index b302b23e..32d9e981 100644 --- a/app/MindWork AI Studio/Layout/MainLayout.razor.cs +++ b/app/MindWork AI Studio/Layout/MainLayout.razor.cs @@ -1,6 +1,7 @@ using AIStudio.Dialogs; using AIStudio.Settings; using AIStudio.Settings.DataModel; +using AIStudio.Tools.PluginSystem; using AIStudio.Tools.Rust; using AIStudio.Tools.Services; @@ -81,6 +82,9 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, IDis // Ensure that all settings are loaded: await this.SettingsManager.LoadSettings(); + // Ensure that all internal plugins are present: + await PluginFactory.EnsureInternalPlugins(); + // Register this component with the message bus: this.MessageBus.RegisterComponent(this); this.MessageBus.ApplyFilters(this, [], [ Event.UPDATE_AVAILABLE, Event.USER_SEARCH_FOR_UPDATE, Event.CONFIGURATION_CHANGED, Event.COLOR_THEME_CHANGED ]); diff --git a/app/MindWork AI Studio/MindWork AI Studio.csproj b/app/MindWork AI Studio/MindWork AI Studio.csproj index bdfe8287..90069618 100644 --- a/app/MindWork AI Studio/MindWork AI Studio.csproj +++ b/app/MindWork AI Studio/MindWork AI Studio.csproj @@ -41,8 +41,8 @@ </ItemGroup> <ItemGroup> - <!-- Embed all files in wwwroot folder --> <EmbeddedResource Include="wwwroot\**" CopyToOutputDirectory="PreserveNewest" /> + <EmbeddedResource Include="Plugins\**" CopyToOutputDirectory="PreserveNewest" /> </ItemGroup> <ItemGroup> @@ -52,6 +52,7 @@ <PackageReference Include="MudBlazor" Version="8.4.0" /> <PackageReference Include="MudBlazor.Markdown" Version="8.0.0" /> <PackageReference Include="ReverseMarkdown" Version="4.6.0" /> + <PackageReference Include="LuaCSharp" Version="0.4.2" /> </ItemGroup> <ItemGroup> diff --git a/app/MindWork AI Studio/Pages/About.razor b/app/MindWork AI Studio/Pages/About.razor index 74492c4a..282e5e72 100644 --- a/app/MindWork AI Studio/Pages/About.razor +++ b/app/MindWork AI Studio/Pages/About.razor @@ -108,6 +108,7 @@ <ThirdPartyComponent Name="base64" Developer="Marshall Pierce, Alice Maz & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/marshallpierce/rust-base64/blob/master/LICENSE-MIT" RepositoryUrl="https://github.com/marshallpierce/rust-base64" UseCase="For some data transfers, we need to encode the data in base64. This Rust library is great for this purpose."/> <ThirdPartyComponent Name="Rust Crypto" Developer="Artyom Pavlov, Tony Arcieri, Brian Warner, Arthur Gautier, Vlad Filippov, Friedel Ziegelmayer, Nicolas Stalder & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/RustCrypto/traits/blob/master/cipher/LICENSE-MIT" RepositoryUrl="https://github.com/RustCrypto" UseCase="When transferring sensitive data between Rust runtime and .NET app, we encrypt the data. We use some libraries from the Rust Crypto project for this purpose: cipher, aes, cbc, pbkdf2, hmac, and sha2. We are thankful for the great work of the Rust Crypto project."/> <ThirdPartyComponent Name="rcgen" Developer="RustTLS developers, est31 & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/rustls/rcgen/blob/main/LICENSE" RepositoryUrl="https://github.com/rustls/rcgen" UseCase="For the secure communication between the user interface and the runtime, we need to create certificates. This Rust library is great for this purpose."/> + <ThirdPartyComponent Name="Lua-CSharp" Developer="Yusuke Nakada & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/nuskey8/Lua-CSharp/blob/main/LICENSE" RepositoryUrl="https://github.com/nuskey8/Lua-CSharp" UseCase="We use Lua as the language for plugins. Lua-CSharp lets Lua scripts communicate with AI Studio and vice versa. Thank you, Yusuke Nakada, for this great library." /> <ThirdPartyComponent Name="HtmlAgilityPack" Developer="ZZZ Projects & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/zzzprojects/html-agility-pack/blob/master/LICENSE" RepositoryUrl="https://github.com/zzzprojects/html-agility-pack" UseCase="We use the HtmlAgilityPack to extract content from the web. This is necessary, e.g., when you provide a URL as input for an assistant."/> <ThirdPartyComponent Name="ReverseMarkdown" Developer="Babu Annamalai & Open Source Community" LicenseName="MIT" LicenseUrl="https://github.com/mysticmind/reversemarkdown-net/blob/master/LICENSE" RepositoryUrl="https://github.com/mysticmind/reversemarkdown-net" UseCase="This library is used to convert HTML to Markdown. This is necessary, e.g., when you provide a URL as input for an assistant."/> <ThirdPartyComponent Name="wikEd diff" Developer="Cacycle & Open Source Community" LicenseName="None (public domain)" LicenseUrl="https://en.wikipedia.org/wiki/User:Cacycle/diff#License" RepositoryUrl="https://en.wikipedia.org/wiki/User:Cacycle/diff" UseCase="This library is used to display the differences between two texts. This is necessary, e.g., for the grammar and spelling assistant."/> diff --git a/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/contentHome.lua b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/contentHome.lua new file mode 100644 index 00000000..f26d9aff --- /dev/null +++ b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/contentHome.lua @@ -0,0 +1,3 @@ +CONTENT_HOME = { + LetsGetStarted = "Lass uns anfangen", +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua new file mode 100644 index 00000000..4801b782 --- /dev/null +++ b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua @@ -0,0 +1,39 @@ +-- The ID for this plugin: +ID = "43065dbc-78d0-45b7-92be-f14c2926e2dc" + +-- The name of the plugin: +NAME = "MindWork AI Studio - German / Deutsch" + +-- The description of the plugin: +DESCRIPTION = "Dieses Plugin bietet deutsche Sprachunterstützung für MindWork AI Studio." + +-- The version of the plugin: +VERSION = "1.0.0" + +-- The type of the plugin: +TYPE = "LANGUAGE" + +-- The authors of the plugin: +AUTHORS = {"MindWork AI Community"} + +-- The support contact for the plugin: +SUPPORT_CONTACT = "MindWork AI Community" + +-- The source URL for the plugin: +SOURCE_URL = "https://github.com/MindWorkAI/AI-Studio" + +-- The categories for the plugin: +CATEGORIES = { "CORE" } + +-- The target groups for the plugin: +TARGET_GROUPS = { "EVERYONE" } + +-- The flag for whether the plugin is maintained: +IS_MAINTAINED = true + +-- When the plugin is deprecated, this message will be shown to users: +DEPRECATION_MESSAGE = nil + +UI_TEXT_CONTENT = { + HOME = CONTENT_HOME, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/contentHome.lua b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/contentHome.lua new file mode 100644 index 00000000..d1805fd0 --- /dev/null +++ b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/contentHome.lua @@ -0,0 +1,3 @@ +CONTENT_HOME = { + LetsGetStarted = "Let's get started", +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua new file mode 100644 index 00000000..6e2fea50 --- /dev/null +++ b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua @@ -0,0 +1,41 @@ +require("contentHome") + +-- The ID for this plugin: +ID = "97dfb1ba-50c4-4440-8dfa-6575daf543c8" + +-- The name of the plugin: +NAME = "MindWork AI Studio - US English" + +-- The description of the plugin: +DESCRIPTION = "This plugin provides US English language support for MindWork AI Studio." + +-- The version of the plugin: +VERSION = "1.0.0" + +-- The type of the plugin: +TYPE = "LANGUAGE" + +-- The authors of the plugin: +AUTHORS = {"MindWork AI Community"} + +-- The support contact for the plugin: +SUPPORT_CONTACT = "MindWork AI Community" + +-- The source URL for the plugin: +SOURCE_URL = "https://github.com/MindWorkAI/AI-Studio" + +-- The categories for the plugin: +CATEGORIES = { "CORE" } + +-- The target groups for the plugin: +TARGET_GROUPS = { "EVERYONE" } + +-- The flag for whether the plugin is maintained: +IS_MAINTAINED = true + +-- When the plugin is deprecated, this message will be shown to users: +DEPRECATION_MESSAGE = nil + +UI_TEXT_CONTENT = { + HOME = CONTENT_HOME, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Program.cs b/app/MindWork AI Studio/Program.cs index 61261b16..cc37d9cd 100644 --- a/app/MindWork AI Studio/Program.cs +++ b/app/MindWork AI Studio/Program.cs @@ -22,6 +22,7 @@ internal sealed class Program public static Encryption ENCRYPTION = null!; public static string API_TOKEN = null!; public static IServiceProvider SERVICE_PROVIDER = null!; + public static ILoggerFactory LOGGER_FACTORY = null!; public static async Task Main(string[] args) { @@ -147,6 +148,9 @@ internal sealed class Program // Execute the builder to get the app: var app = builder.Build(); + // Get the logging factory for e.g., static classes: + LOGGER_FACTORY = app.Services.GetRequiredService<ILoggerFactory>(); + // Get a program logger: var programLogger = app.Services.GetRequiredService<ILogger<Program>>(); programLogger.LogInformation("Starting the AI Studio server."); diff --git a/app/MindWork AI Studio/Settings/DataModel/PreviewFeatures.cs b/app/MindWork AI Studio/Settings/DataModel/PreviewFeatures.cs index 825e8037..ff642a0a 100644 --- a/app/MindWork AI Studio/Settings/DataModel/PreviewFeatures.cs +++ b/app/MindWork AI Studio/Settings/DataModel/PreviewFeatures.cs @@ -8,4 +8,6 @@ public enum PreviewFeatures // PRE_WRITER_MODE_2024, PRE_RAG_2024, + + PRE_PLUGINS_2025, } \ No newline at end of file diff --git a/app/MindWork AI Studio/Settings/DataModel/PreviewFeaturesExtensions.cs b/app/MindWork AI Studio/Settings/DataModel/PreviewFeaturesExtensions.cs index 133d6538..2eb25587 100644 --- a/app/MindWork AI Studio/Settings/DataModel/PreviewFeaturesExtensions.cs +++ b/app/MindWork AI Studio/Settings/DataModel/PreviewFeaturesExtensions.cs @@ -6,6 +6,7 @@ public static class PreviewFeaturesExtensions { PreviewFeatures.PRE_WRITER_MODE_2024 => "Writer Mode: Experiments about how to write long texts using AI", PreviewFeatures.PRE_RAG_2024 => "RAG: Preview of our RAG implementation where you can refer your files or integrate enterprise data within your company", + PreviewFeatures.PRE_PLUGINS_2025 => "Plugins: Preview of our plugin system where you can extend the functionality of the app", _ => "Unknown preview feature" }; diff --git a/app/MindWork AI Studio/Settings/DataModel/PreviewVisibilityExtensions.cs b/app/MindWork AI Studio/Settings/DataModel/PreviewVisibilityExtensions.cs index f80939f6..b0f07716 100644 --- a/app/MindWork AI Studio/Settings/DataModel/PreviewVisibilityExtensions.cs +++ b/app/MindWork AI Studio/Settings/DataModel/PreviewVisibilityExtensions.cs @@ -25,6 +25,7 @@ public static class PreviewVisibilityExtensions if (visibility >= PreviewVisibility.EXPERIMENTAL) { features.Add(PreviewFeatures.PRE_WRITER_MODE_2024); + features.Add(PreviewFeatures.PRE_PLUGINS_2025); } return features; diff --git a/app/MindWork AI Studio/Tools/CommonTools.cs b/app/MindWork AI Studio/Tools/CommonTools.cs new file mode 100644 index 00000000..26150880 --- /dev/null +++ b/app/MindWork AI Studio/Tools/CommonTools.cs @@ -0,0 +1,22 @@ +using System.Text; + +namespace AIStudio.Tools; + +public static class CommonTools +{ + /// <summary> + /// Get all the values (the names) of an enum as a string, separated by commas. + /// </summary> + /// <typeparam name="TEnum">The enum type to get the values of.</typeparam> + /// <param name="exceptions">The values to exclude from the result.</param> + /// <returns>The values of the enum as a string, separated by commas.</returns> + public static string GetAllEnumValues<TEnum>(params TEnum[] exceptions) where TEnum : struct, Enum + { + var sb = new StringBuilder(); + foreach (var value in Enum.GetValues<TEnum>()) + if(!exceptions.Contains(value)) + sb.Append(value).Append(", "); + + return sb.ToString(); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/ForbiddenPlugins.cs b/app/MindWork AI Studio/Tools/PluginSystem/ForbiddenPlugins.cs new file mode 100644 index 00000000..b38459d6 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/ForbiddenPlugins.cs @@ -0,0 +1,99 @@ +namespace AIStudio.Tools.PluginSystem; + +/// <summary> +/// Checks if a plugin is forbidden. +/// </summary> +public static class ForbiddenPlugins +{ + private const string ID_PATTERN = "ID = \""; + private static readonly int ID_PATTERN_LEN = ID_PATTERN.Length; + + /// <summary> + /// Checks if the given code represents a forbidden plugin. + /// </summary> + /// <param name="code">The code to check.</param> + /// <returns>The result of the check.</returns> + public static PluginCheckResult Check(ReadOnlySpan<char> code) + { + var endIndex = 0; + var foundAnyId = false; + var id = ReadOnlySpan<char>.Empty; + while (true) + { + // Create a slice of the code starting at the end index. + // This way we can search for all IDs in the code: + code = code[endIndex..]; + + // Read the next ID as a string: + if (!TryGetId(code, out id, out endIndex)) + { + // When no ID was found at all, we block this plugin. + // When another ID was found previously, we allow this plugin. + if(foundAnyId) + return new PluginCheckResult(false, null); + + return new PluginCheckResult(true, "No ID was found."); + } + + // Try to parse the ID as a GUID: + if (!Guid.TryParse(id, out var parsedGuid)) + { + // Again, when no ID was found at all, we block this plugin. + if(foundAnyId) + return new PluginCheckResult(false, null); + + return new PluginCheckResult(true, "The ID is not a valid GUID."); + } + + // Check if the GUID is forbidden: + if (FORBIDDEN_PLUGINS.TryGetValue(parsedGuid, out var reason)) + return new PluginCheckResult(true, reason); + + foundAnyId = true; + } + } + + private static bool TryGetId(ReadOnlySpan<char> code, out ReadOnlySpan<char> id, out int endIndex) + { + // + // Please note: the code variable is a slice of the original code. + // That means the indices are relative to the slice, not the original code. + // + + id = ReadOnlySpan<char>.Empty; + endIndex = 0; + + // Find the next ID: + var idStartIndex = code.IndexOf(ID_PATTERN); + if (idStartIndex < 0) + return false; + + // Find the start index of the value (Guid): + var valueStartIndex = idStartIndex + ID_PATTERN_LEN; + + // Find the end index of the value. In order to do that, + // we create a slice of the code starting at the value + // start index. That means that the end index is relative + // to the inner slice, not the original code nor the outer slice. + var valueEndIndex = code[valueStartIndex..].IndexOf('"'); + if (valueEndIndex < 0) + return false; + + // From the perspective of the start index is the end index + // the length of the value: + endIndex = valueStartIndex + valueEndIndex; + id = code.Slice(valueStartIndex, valueEndIndex); + return true; + } + + /// <summary> + /// The forbidden plugins. + /// </summary> + /// <remarks> + /// A dictionary that maps the GUID of a plugin to the reason why it is forbidden. + /// </remarks> + // ReSharper disable once CollectionNeverUpdated.Local + private static readonly Dictionary<Guid, string> FORBIDDEN_PLUGINS = + [ + ]; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/ILanguagePlugin.cs b/app/MindWork AI Studio/Tools/PluginSystem/ILanguagePlugin.cs new file mode 100644 index 00000000..a33bf3f5 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/ILanguagePlugin.cs @@ -0,0 +1,21 @@ +namespace AIStudio.Tools.PluginSystem; + +/// <summary> +/// Represents a contract for a language plugin. +/// </summary> +public interface ILanguagePlugin +{ + /// <summary> + /// Tries to get a text from the language plugin. + /// </summary> + /// <remarks> + /// When the key does not exist, the value will be an empty string. + /// Please note that the key is case-sensitive. Furthermore, the keys + /// are in the format "root::key". That means that the keys are + /// hierarchical and separated by "::". + /// </remarks> + /// <param name="key">The key to use to get the text.</param> + /// <param name="value">The desired text.</param> + /// <returns>True if the key exists, false otherwise.</returns> + public bool TryGetText(string key, out string value); +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/InternalPlugin.cs b/app/MindWork AI Studio/Tools/PluginSystem/InternalPlugin.cs new file mode 100644 index 00000000..1cbd8ca7 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/InternalPlugin.cs @@ -0,0 +1,7 @@ +namespace AIStudio.Tools.PluginSystem; + +public enum InternalPlugin +{ + LANGUAGE_EN_US, + LANGUAGE_DE_DE, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/InternalPluginData.cs b/app/MindWork AI Studio/Tools/PluginSystem/InternalPluginData.cs new file mode 100644 index 00000000..d7595f2a --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/InternalPluginData.cs @@ -0,0 +1,8 @@ +namespace AIStudio.Tools.PluginSystem; + +public readonly record struct InternalPluginData(PluginType Type, Guid Id, string ShortName) +{ + public string ResourcePath => $"{this.Type.GetDirectory()}/{this.ShortName.ToLowerInvariant()}-{this.Id}"; + + public string ResourceName => $"{this.ShortName.ToLowerInvariant()}-{this.Id}"; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/InternalPluginExtensions.cs b/app/MindWork AI Studio/Tools/PluginSystem/InternalPluginExtensions.cs new file mode 100644 index 00000000..3a25aa18 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/InternalPluginExtensions.cs @@ -0,0 +1,12 @@ +namespace AIStudio.Tools.PluginSystem; + +public static class InternalPluginExtensions +{ + public static InternalPluginData MetaData(this InternalPlugin plugin) => plugin switch + { + InternalPlugin.LANGUAGE_EN_US => new (PluginType.LANGUAGE, new("97dfb1ba-50c4-4440-8dfa-6575daf543c8"), "en-us"), + InternalPlugin.LANGUAGE_DE_DE => new(PluginType.LANGUAGE, new("43065dbc-78d0-45b7-92be-f14c2926e2dc"), "de-de"), + + _ => new InternalPluginData(PluginType.NONE, Guid.Empty, "unknown") + }; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/NoModuleLoader.cs b/app/MindWork AI Studio/Tools/PluginSystem/NoModuleLoader.cs new file mode 100644 index 00000000..d40d2237 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/NoModuleLoader.cs @@ -0,0 +1,20 @@ +using Lua; + +namespace AIStudio.Tools.PluginSystem; + +/// <summary> +/// This Lua module loader does not load any modules. +/// </summary> +public sealed class NoModuleLoader : ILuaModuleLoader +{ + #region Implementation of ILuaModuleLoader + + public bool Exists(string moduleName) => false; + + public ValueTask<LuaModule> LoadAsync(string moduleName, CancellationToken cancellationToken = default) + { + return ValueTask.FromResult(new LuaModule()); + } + + #endregion +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/NoPlugin.cs b/app/MindWork AI Studio/Tools/PluginSystem/NoPlugin.cs new file mode 100644 index 00000000..a21ab819 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/NoPlugin.cs @@ -0,0 +1,9 @@ +using Lua; + +namespace AIStudio.Tools.PluginSystem; + +/// <summary> +/// Represents a plugin that could not be loaded. +/// </summary> +/// <param name="parsingError">The error message that occurred while parsing the plugin.</param> +public sealed class NoPlugin(string parsingError) : PluginBase(string.Empty, LuaState.Create(), PluginType.NONE, parsingError); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginBase.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginBase.cs new file mode 100644 index 00000000..4f719d18 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginBase.cs @@ -0,0 +1,521 @@ +using Lua; +using Lua.Standard; + +// ReSharper disable MemberCanBePrivate.Global +namespace AIStudio.Tools.PluginSystem; + +/// <summary> +/// Represents the base of any AI Studio plugin. +/// </summary> +public abstract class PluginBase +{ + private readonly IReadOnlyCollection<string> baseIssues; + protected readonly LuaState state; + + protected readonly List<string> pluginIssues = []; + + /// <summary> + /// The type of this plugin. + /// </summary> + public PluginType Type { get; } + + /// <summary> + /// The ID of this plugin. + /// </summary> + public Guid Id { get; } + + /// <summary> + /// The name of this plugin. + /// </summary> + public string Name { get; } = string.Empty; + + /// <summary> + /// The description of this plugin. + /// </summary> + public string Description { get; } = string.Empty; + + /// <summary> + /// The version of this plugin. + /// </summary> + public PluginVersion Version { get; } + + /// <summary> + /// The authors of this plugin. + /// </summary> + public string[] Authors { get; } = []; + + /// <summary> + /// The support contact for this plugin. + /// </summary> + public string SupportContact { get; } = string.Empty; + + /// <summary> + /// The source URL of this plugin. + /// </summary> + public string SourceURL { get; } = string.Empty; + + /// <summary> + /// The categories of this plugin. + /// </summary> + public PluginCategory[] Categories { get; } = []; + + /// <summary> + /// The target groups of this plugin. + /// </summary> + public PluginTargetGroup[] TargetGroups { get; } = []; + + /// <summary> + /// True, when the plugin is maintained. + /// </summary> + public bool IsMaintained { get; } + + /// <summary> + /// The message that should be displayed when the plugin is deprecated. + /// </summary> + public string? DeprecationMessage { get; } + + /// <summary> + /// The issues that occurred during the initialization of this plugin. + /// </summary> + public IEnumerable<string> Issues => this.baseIssues.Concat(this.pluginIssues); + + /// <summary> + /// True, when the plugin is valid. + /// </summary> + /// <remarks> + /// False means that there were issues during the initialization of the plugin. + /// Please check the Issues property for more information. + /// </remarks> + public bool IsValid => this is not NoPlugin && this.baseIssues.Count == 0 && this.pluginIssues.Count == 0; + + protected PluginBase(string path, LuaState state, PluginType type, string parseError = "") + { + this.state = state; + this.Type = type; + + // For security reasons, we don't want to allow the plugin to load modules: + this.state.ModuleLoader = new NoModuleLoader(); + + // Add some useful libraries: + this.state.OpenModuleLibrary(); + this.state.OpenStringLibrary(); + this.state.OpenTableLibrary(); + this.state.OpenMathLibrary(); + this.state.OpenBitwiseLibrary(); + this.state.OpenCoroutineLibrary(); + + // Add the module loader so that the plugin can load other Lua modules: + this.state.ModuleLoader = new PluginLoader(path); + + var issues = new List<string>(); + if(!string.IsNullOrWhiteSpace(parseError)) + issues.Add(parseError); + + if(this.TryInitId(out var issue, out var id)) + this.Id = id; + else if(this is not NoPlugin) + issues.Add(issue); + + if(this.TryInitName(out issue, out var name)) + this.Name = name; + else if(this is not NoPlugin) + issues.Add(issue); + + if(this.TryInitDescription(out issue, out var description)) + this.Description = description; + else if(this is not NoPlugin) + issues.Add(issue); + + if(this.TryInitVersion(out issue, out var version)) + this.Version = version; + else if(this is not NoPlugin) + issues.Add(issue); + + if(this.TryInitAuthors(out issue, out var authors)) + this.Authors = authors; + else if(this is not NoPlugin) + issues.Add(issue); + + if(this.TryInitSupportContact(out issue, out var contact)) + this.SupportContact = contact; + else if(this is not NoPlugin) + issues.Add(issue); + + if(this.TryInitSourceURL(out issue, out var url)) + this.SourceURL = url; + else if(this is not NoPlugin) + issues.Add(issue); + + if(this.TryInitCategories(out issue, out var categories)) + this.Categories = categories; + else if(this is not NoPlugin) + issues.Add(issue); + + if(this.TryInitTargetGroups(out issue, out var targetGroups)) + this.TargetGroups = targetGroups; + else if(this is not NoPlugin) + issues.Add(issue); + + if(this.TryInitIsMaintained(out issue, out var isMaintained)) + this.IsMaintained = isMaintained; + else if(this is not NoPlugin) + issues.Add(issue); + + if(this.TryInitDeprecationMessage(out issue, out var deprecationMessage)) + this.DeprecationMessage = deprecationMessage; + else if(this is not NoPlugin) + issues.Add(issue); + + this.baseIssues = issues; + } + + #region Initialization-related methods + + /// <summary> + /// Tries to read the ID of the plugin. + /// </summary> + /// <param name="message">The error message, when the ID could not be read.</param> + /// <param name="id">The read ID.</param> + /// <returns>True, when the ID could be read successfully.</returns> + private bool TryInitId(out string message, out Guid id) + { + if (!this.state.Environment["ID"].TryRead<string>(out var idText)) + { + message = "The field ID does not exist or is not a valid string."; + id = Guid.Empty; + return false; + } + + if (!Guid.TryParse(idText, out id)) + { + message = "The field ID is not a valid GUID / UUID. The ID must be formatted in the 8-4-4-4-12 format (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)."; + id = Guid.Empty; + return false; + } + + if(id == Guid.Empty) + { + message = "The field ID is empty. The ID must be formatted in the 8-4-4-4-12 format (XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX)."; + return false; + } + + message = string.Empty; + return true; + } + + /// <summary> + /// Tries to read the name of the plugin. + /// </summary> + /// <param name="message">The error message, when the name could not be read.</param> + /// <param name="name">The read name.</param> + /// <returns>True, when the name could be read successfully.</returns> + private bool TryInitName(out string message, out string name) + { + if (!this.state.Environment["NAME"].TryRead(out name)) + { + message = "The field NAME does not exist or is not a valid string."; + name = string.Empty; + return false; + } + + if(string.IsNullOrWhiteSpace(name)) + { + message = "The field NAME is empty. The name must be a non-empty string."; + return false; + } + + message = string.Empty; + return true; + } + + /// <summary> + /// Tries to read the description of the plugin. + /// </summary> + /// <param name="message">The error message, when the description could not be read.</param> + /// <param name="description">The read description.</param> + /// <returns>True, when the description could be read successfully.</returns> + private bool TryInitDescription(out string message, out string description) + { + if (!this.state.Environment["DESCRIPTION"].TryRead(out description)) + { + message = "The field DESCRIPTION does not exist or is not a valid string."; + description = string.Empty; + return false; + } + + if(string.IsNullOrWhiteSpace(description)) + { + message = "The field DESCRIPTION is empty. The description must be a non-empty string."; + return false; + } + + message = string.Empty; + return true; + } + + /// <summary> + /// Tries to read the version of the plugin. + /// </summary> + /// <param name="message">The error message, when the version could not be read.</param> + /// <param name="version">The read version.</param> + /// <returns>True, when the version could be read successfully.</returns> + private bool TryInitVersion(out string message, out PluginVersion version) + { + if (!this.state.Environment["VERSION"].TryRead<string>(out var versionText)) + { + message = "The field VERSION does not exist or is not a valid string."; + version = PluginVersion.NONE; + return false; + } + + if (!PluginVersion.TryParse(versionText, out version)) + { + message = "The field VERSION is not a valid version number. The version number must be formatted as string in the major.minor.patch format (X.X.X)."; + version = PluginVersion.NONE; + return false; + } + + if(version == PluginVersion.NONE) + { + message = "The field VERSION is empty. The version number must be formatted as string in the major.minor.patch format (X.X.X)."; + return false; + } + + message = string.Empty; + return true; + } + + /// <summary> + /// Tries to read the authors of the plugin. + /// </summary> + /// <param name="message">The error message, when the authors could not be read.</param> + /// <param name="authors">The read authors.</param> + /// <returns>True, when the authors could be read successfully.</returns> + private bool TryInitAuthors(out string message, out string[] authors) + { + if (!this.state.Environment["AUTHORS"].TryRead<LuaTable>(out var authorsTable)) + { + authors = []; + message = "The table AUTHORS does not exist or is using an invalid syntax."; + return false; + } + + var authorList = new List<string>(); + foreach(var author in authorsTable.GetArraySpan()) + if(author.TryRead<string>(out var authorName)) + authorList.Add(authorName); + + authors = authorList.ToArray(); + if(authorList.Count == 0) + { + message = "The table AUTHORS is empty. At least one author must be specified."; + return false; + } + + message = string.Empty; + return true; + } + + /// <summary> + /// Tries to read the support contact for the plugin. + /// </summary> + /// <param name="message">The error message, when the support contact could not be read.</param> + /// <param name="contact">The read support contact.</param> + /// <returns>True, when the support contact could be read successfully.</returns> + private bool TryInitSupportContact(out string message, out string contact) + { + if (!this.state.Environment["SUPPORT_CONTACT"].TryRead(out contact)) + { + contact = string.Empty; + message = "The field SUPPORT_CONTACT does not exist or is not a valid string."; + return false; + } + + if(string.IsNullOrWhiteSpace(contact)) + { + message = "The field SUPPORT_CONTACT is empty. The support contact must be a non-empty string."; + return false; + } + + message = string.Empty; + return true; + } + + /// <summary> + /// Try to read the source URL of the plugin. + /// </summary> + /// <param name="message">The error message, when the source URL could not be read.</param> + /// <param name="url">The read source URL.</param> + /// <returns>True, when the source URL could be read successfully.</returns> + private bool TryInitSourceURL(out string message, out string url) + { + if (!this.state.Environment["SOURCE_URL"].TryRead(out url)) + { + url = string.Empty; + message = "The field SOURCE_URL does not exist or is not a valid string."; + return false; + } + + if (!url.StartsWith("http://", StringComparison.InvariantCultureIgnoreCase) && !url.StartsWith("https://", StringComparison.InvariantCultureIgnoreCase)) + { + url = string.Empty; + message = "The field SOURCE_URL is not a valid URL. The URL must start with 'http://' or 'https://'."; + return false; + } + + message = string.Empty; + return true; + } + + /// <summary> + /// Tries to read the categories of the plugin. + /// </summary> + /// <param name="message">The error message, when the categories could not be read.</param> + /// <param name="categories">The read categories.</param> + /// <returns>True, when the categories could be read successfully.</returns> + private bool TryInitCategories(out string message, out PluginCategory[] categories) + { + if (!this.state.Environment["CATEGORIES"].TryRead<LuaTable>(out var categoriesTable)) + { + categories = []; + message = "The table CATEGORIES does not exist or is using an invalid syntax."; + return false; + } + + var categoryList = new List<PluginCategory>(); + foreach(var luaCategory in categoriesTable.GetArraySpan()) + if(luaCategory.TryRead<string>(out var categoryName)) + if(Enum.TryParse<PluginCategory>(categoryName, out var category) && category != PluginCategory.NONE) + categoryList.Add(category); + + categories = categoryList.ToArray(); + if(categoryList.Count == 0) + { + message = $"The table CATEGORIES is empty. At least one category is necessary. Valid categories are: {CommonTools.GetAllEnumValues(PluginCategory.NONE)}."; + return false; + } + + message = string.Empty; + return true; + } + + /// <summary> + /// Tries to read the intended target groups for the plugin. + /// </summary> + /// <param name="message">The error message, when the target groups could not be read.</param> + /// <param name="targetGroups">The read target groups.</param> + /// <returns>True, when the target groups could be read successfully.</returns> + private bool TryInitTargetGroups(out string message, out PluginTargetGroup[] targetGroups) + { + if (!this.state.Environment["TARGET_GROUPS"].TryRead<LuaTable>(out var targetGroupsTable)) + { + targetGroups = []; + message = "The table TARGET_GROUPS does not exist or is using an invalid syntax."; + return false; + } + + var targetGroupList = new List<PluginTargetGroup>(); + foreach(var luaTargetGroup in targetGroupsTable.GetArraySpan()) + if(luaTargetGroup.TryRead<string>(out var targetGroupName)) + if(Enum.TryParse<PluginTargetGroup>(targetGroupName, out var targetGroup) && targetGroup != PluginTargetGroup.NONE) + targetGroupList.Add(targetGroup); + + targetGroups = targetGroupList.ToArray(); + if(targetGroups.Length == 0) + { + message = "The table TARGET_GROUPS is empty or is not a valid table of strings. Valid target groups are: {CommonTools.GetAllEnumValues(PluginTargetGroup.NONE)}."; + return false; + } + + message = string.Empty; + return true; + } + + /// <summary> + /// Tries to read the maintenance status of the plugin. + /// </summary> + /// <param name="message">The error message, when the maintenance status could not be read.</param> + /// <param name="isMaintained">The read maintenance status.</param> + /// <returns>True, when the maintenance status could be read successfully.</returns> + private bool TryInitIsMaintained(out string message, out bool isMaintained) + { + if (!this.state.Environment["IS_MAINTAINED"].TryRead(out isMaintained)) + { + isMaintained = false; + message = "The field IS_MAINTAINED does not exist or is not a valid boolean."; + return false; + } + + message = string.Empty; + return true; + } + + /// <summary> + /// Tries to read the deprecation message of the plugin. + /// </summary> + /// <param name="message">The error message, when the deprecation message could not be read.</param> + /// <param name="deprecationMessage">The read deprecation message.</param> + /// <returns>True, when the deprecation message could be read successfully.</returns> + private bool TryInitDeprecationMessage(out string message, out string? deprecationMessage) + { + if (!this.state.Environment["DEPRECATION_MESSAGE"].TryRead(out deprecationMessage)) + { + deprecationMessage = null; + message = "The field DEPRECATION_MESSAGE does not exist, is not a valid string. This field is optional: use nil to indicate that the plugin is not deprecated."; + return false; + } + + message = string.Empty; + return true; + } + + /// <summary> + /// Tries to initialize the UI text content of the plugin. + /// </summary> + /// <param name="message">The error message, when the UI text content could not be read.</param> + /// <param name="pluginContent">The read UI text content.</param> + /// <returns>True, when the UI text content could be read successfully.</returns> + protected bool TryInitUITextContent(out string message, out Dictionary<string, string> pluginContent) + { + if (!this.state.Environment["UI_TEXT_CONTENT"].TryRead<LuaTable>(out var textTable)) + { + message = "The UI_TEXT_CONTENT table does not exist or is not a valid table."; + pluginContent = []; + return false; + } + + this.ReadTextTable("root", textTable, out pluginContent); + + message = string.Empty; + return true; + } + + /// <summary> + /// Reads a flat or hierarchical text table. + /// </summary> + /// <param name="parent">The parent key(s).</param> + /// <param name="table">The table to read.</param> + /// <param name="tableContent">The read table content.</param> + protected void ReadTextTable(string parent, LuaTable table, out Dictionary<string, string> tableContent) + { + tableContent = []; + var lastKey = LuaValue.Nil; + while (table.TryGetNext(lastKey, out var pair)) + { + var keyText = pair.Key.ToString(); + if (pair.Value.TryRead<string>(out var value)) + tableContent[$"{parent}::{keyText}"] = value; + + else if (pair.Value.TryRead<LuaTable>(out var t)) + { + this.ReadTextTable($"{parent}::{keyText}", t, out var subContent); + foreach (var (k, v) in subContent) + tableContent[k] = v; + } + + lastKey = pair.Key; + } + } + + #endregion +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginCategory.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginCategory.cs new file mode 100644 index 00000000..00afcd0e --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginCategory.cs @@ -0,0 +1,33 @@ +namespace AIStudio.Tools.PluginSystem; + +public enum PluginCategory +{ + NONE, + CORE, + + BUSINESS, + INDUSTRY, + UTILITY, + SOFTWARE_DEVELOPMENT, + GAMING, + EDUCATION, + ENTERTAINMENT, + SOCIAL, + SHOPPING, + TRAVEL, + HEALTH, + FITNESS, + FOOD, + PARTY, + SPORTS, + NEWS, + WEATHER, + MUSIC, + POLITICAL, + SCIENCE, + TECHNOLOGY, + ART, + FICTION, + WRITING, + CONTENT_CREATION, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginCategoryExtensions.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginCategoryExtensions.cs new file mode 100644 index 00000000..35303c06 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginCategoryExtensions.cs @@ -0,0 +1,38 @@ +namespace AIStudio.Tools.PluginSystem; + +public static class PluginCategoryExtensions +{ + public static string GetName(this PluginCategory type) => type switch + { + PluginCategory.NONE => "None", + PluginCategory.CORE => "AI Studio Core", + + PluginCategory.BUSINESS => "Business", + PluginCategory.INDUSTRY => "Industry", + PluginCategory.UTILITY => "Utility", + PluginCategory.SOFTWARE_DEVELOPMENT => "Software Development", + PluginCategory.GAMING => "Gaming", + PluginCategory.EDUCATION => "Education", + PluginCategory.ENTERTAINMENT => "Entertainment", + PluginCategory.SOCIAL => "Social", + PluginCategory.SHOPPING => "Shopping", + PluginCategory.TRAVEL => "Travel", + PluginCategory.HEALTH => "Health", + PluginCategory.FITNESS => "Fitness", + PluginCategory.FOOD => "Food", + PluginCategory.PARTY => "Party", + PluginCategory.SPORTS => "Sports", + PluginCategory.NEWS => "News", + PluginCategory.WEATHER => "Weather", + PluginCategory.MUSIC => "Music", + PluginCategory.POLITICAL => "Political", + PluginCategory.SCIENCE => "Science", + PluginCategory.TECHNOLOGY => "Technology", + PluginCategory.ART => "Art", + PluginCategory.FICTION => "Fiction", + PluginCategory.WRITING => "Writing", + PluginCategory.CONTENT_CREATION => "Content Creation", + + _ => "Unknown plugin category", + }; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginCheckResult.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginCheckResult.cs new file mode 100644 index 00000000..f390a47d --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginCheckResult.cs @@ -0,0 +1,8 @@ +namespace AIStudio.Tools.PluginSystem; + +/// <summary> +/// Represents the result of a plugin check. +/// </summary> +/// <param name="IsForbidden">In case the plugin is forbidden, this is true.</param> +/// <param name="Message">The message that describes why the plugin is forbidden.</param> +public readonly record struct PluginCheckResult(bool IsForbidden, string? Message); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs new file mode 100644 index 00000000..e20d80f4 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs @@ -0,0 +1,125 @@ +using System.Reflection; + +using AIStudio.Settings; + +using Lua; + +using Microsoft.Extensions.FileProviders; + +namespace AIStudio.Tools.PluginSystem; + +public static class PluginFactory +{ + private static readonly ILogger LOG = Program.LOGGER_FACTORY.CreateLogger("PluginFactory"); + private static readonly string DATA_DIR = SettingsManager.DataDirectory!; + + public static async Task EnsureInternalPlugins() + { + LOG.LogInformation("Start ensuring internal plugins."); + foreach (var plugin in Enum.GetValues<InternalPlugin>()) + { + LOG.LogInformation($"Ensure plugin: {plugin}"); + await EnsurePlugin(plugin); + } + } + + private static async Task EnsurePlugin(InternalPlugin plugin) + { + try + { + #if DEBUG + var basePath = Path.Join(Environment.CurrentDirectory, "Plugins"); + var resourceFileProvider = new PhysicalFileProvider(basePath); + #else + var resourceFileProvider = new ManifestEmbeddedFileProvider(Assembly.GetAssembly(type: typeof(Program))!, "Plugins"); + #endif + + var metaData = plugin.MetaData(); + var mainResourcePath = $"{metaData.ResourcePath}/plugin.lua"; + var resourceInfo = resourceFileProvider.GetFileInfo(mainResourcePath); + + if(!resourceInfo.Exists) + { + LOG.LogError($"The plugin {plugin} does not exist. This should not happen, since the plugin is an integral part of AI Studio."); + return; + } + + // Ensure that the additional resources exist: + foreach (var content in resourceFileProvider.GetDirectoryContents(metaData.ResourcePath)) + { + if(content.IsDirectory) + { + LOG.LogError("The plugin contains a directory. This is not allowed."); + continue; + } + + await CopyPluginFile(content, metaData); + } + } + catch + { + LOG.LogError($"Was not able to ensure the plugin: {plugin}"); + } + } + + private static async Task CopyPluginFile(IFileInfo resourceInfo, InternalPluginData metaData) + { + await using var inputStream = resourceInfo.CreateReadStream(); + + var pluginsRoot = Path.Join(DATA_DIR, "plugins"); + var pluginTypeBasePath = Path.Join(pluginsRoot, metaData.Type.GetDirectory()); + + if (!Directory.Exists(pluginsRoot)) + Directory.CreateDirectory(pluginsRoot); + + if (!Directory.Exists(pluginTypeBasePath)) + Directory.CreateDirectory(pluginTypeBasePath); + + var pluginPath = Path.Join(pluginTypeBasePath, metaData.ResourceName); + if (!Directory.Exists(pluginPath)) + Directory.CreateDirectory(pluginPath); + + var pluginFilePath = Path.Join(pluginPath, resourceInfo.Name); + + await using var outputStream = File.Create(pluginFilePath); + await inputStream.CopyToAsync(outputStream); + } + + public static async Task LoadAll() + { + + } + + public static async Task<PluginBase> Load(string path, string code, CancellationToken cancellationToken = default) + { + if(ForbiddenPlugins.Check(code) is { IsForbidden: true } forbiddenState) + return new NoPlugin($"This plugin is forbidden: {forbiddenState.Message}"); + + var state = LuaState.Create(); + + try + { + await state.DoStringAsync(code, cancellationToken: cancellationToken); + } + catch (LuaParseException e) + { + return new NoPlugin($"Was not able to parse the plugin: {e.Message}"); + } + + if (!state.Environment["TYPE"].TryRead<string>(out var typeText)) + return new NoPlugin("TYPE does not exist or is not a valid string."); + + if (!Enum.TryParse<PluginType>(typeText, out var type)) + return new NoPlugin($"TYPE is not a valid plugin type. Valid types are: {CommonTools.GetAllEnumValues<PluginType>()}"); + + if(type is PluginType.NONE) + return new NoPlugin($"TYPE is not a valid plugin type. Valid types are: {CommonTools.GetAllEnumValues<PluginType>()}"); + + return type switch + { + PluginType.LANGUAGE => new PluginLanguage(path, state, type), + + _ => new NoPlugin("This plugin type is not supported yet. Please try again with a future version of AI Studio.") + }; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginLanguage.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginLanguage.cs new file mode 100644 index 00000000..e1676e49 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginLanguage.cs @@ -0,0 +1,48 @@ +using Lua; + +namespace AIStudio.Tools.PluginSystem; + +public sealed class PluginLanguage : PluginBase, ILanguagePlugin +{ + private readonly Dictionary<string, string> content = []; + + private ILanguagePlugin? baseLanguage; + + public PluginLanguage(string path, LuaState state, PluginType type) : base(path, state, type) + { + if (this.TryInitUITextContent(out var issue, out var readContent)) + this.content = readContent; + else + this.pluginIssues.Add(issue); + } + + /// <summary> + /// Sets the base language plugin. This plugin will be used to fill in missing keys. + /// </summary> + /// <param name="baseLanguagePlugin">The base language plugin to use.</param> + public void SetBaseLanguage(ILanguagePlugin baseLanguagePlugin) => this.baseLanguage = baseLanguagePlugin; + + /// <summary> + /// Tries to get a text from the language plugin. + /// </summary> + /// <remarks> + /// When the key neither in the base language nor in this language exist, + /// the value will be an empty string. Please note that the key is case-sensitive. + /// Furthermore, the keys are in the format "root::key". That means that + /// the keys are hierarchical and separated by "::". + /// </remarks> + /// <param name="key">The key to use to get the text.</param> + /// <param name="value">The desired text.</param> + /// <returns>True if the key exists, false otherwise.</returns> + public bool TryGetText(string key, out string value) + { + if (this.content.TryGetValue(key, out value!)) + return true; + + if(this.baseLanguage is not null && this.baseLanguage.TryGetText(key, out value)) + return true; + + value = string.Empty; + return false; + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginLoader.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginLoader.cs new file mode 100644 index 00000000..ec81f73c --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginLoader.cs @@ -0,0 +1,48 @@ +using System.Text; + +using AIStudio.Settings; + +using Lua; + +namespace AIStudio.Tools.PluginSystem; + +/// <summary> +/// Loads Lua modules from a plugin directory. +/// </summary> +/// <remarks> +/// Any plugin can load Lua modules from its own directory. This class is used to load these modules. +/// Loading other modules outside the plugin directory is not allowed. +/// </remarks> +/// <param name="pluginDirectory">The directory where the plugin is located.</param> +public sealed class PluginLoader(string pluginDirectory) : ILuaModuleLoader +{ + private static readonly string PLUGIN_BASE_PATH = Path.Join(SettingsManager.DataDirectory, "plugins"); + + #region Implementation of ILuaModuleLoader + + /// <inheritdoc /> + public bool Exists(string moduleName) + { + // Ensure that the user doesn't try to escape the plugin directory: + if (moduleName.Contains("..") || pluginDirectory.Contains("..")) + return false; + + // Ensure that the plugin directory is nested in the plugin base path: + if (!pluginDirectory.StartsWith(PLUGIN_BASE_PATH, StringComparison.OrdinalIgnoreCase)) + return false; + + var path = Path.Join(pluginDirectory, $"{moduleName}.lua"); + return File.Exists(path); + } + + /// <inheritdoc /> + public async ValueTask<LuaModule> LoadAsync(string moduleName, CancellationToken cancellationToken = default) + { + var path = Path.Join(pluginDirectory, $"{moduleName}.lua"); + var code = await File.ReadAllTextAsync(path, Encoding.UTF8, cancellationToken); + + return new(moduleName, code); + } + + #endregion +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginTargetGroup.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginTargetGroup.cs new file mode 100644 index 00000000..102aa857 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginTargetGroup.cs @@ -0,0 +1,20 @@ +namespace AIStudio.Tools.PluginSystem; + +public enum PluginTargetGroup +{ + NONE, + + EVERYONE, + CHILDREN, + TEENAGERS, + STUDENTS, + ADULTS, + + INDUSTRIAL_WORKERS, + OFFICE_WORKERS, + BUSINESS_PROFESSIONALS, + SOFTWARE_DEVELOPERS, + SCIENTISTS, + TEACHERS, + ARTISTS, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginTargetGroupExtensions.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginTargetGroupExtensions.cs new file mode 100644 index 00000000..7a14123f --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginTargetGroupExtensions.cs @@ -0,0 +1,25 @@ +namespace AIStudio.Tools.PluginSystem; + +public static class PluginTargetGroupExtensions +{ + public static string Name(this PluginTargetGroup group) => group switch + { + PluginTargetGroup.NONE => "No target group", + + PluginTargetGroup.EVERYONE => "Everyone", + PluginTargetGroup.CHILDREN => "Children", + PluginTargetGroup.TEENAGERS => "Teenagers", + PluginTargetGroup.STUDENTS => "Students", + PluginTargetGroup.ADULTS => "Adults", + + PluginTargetGroup.INDUSTRIAL_WORKERS => "Industrial workers", + PluginTargetGroup.OFFICE_WORKERS => "Office workers", + PluginTargetGroup.BUSINESS_PROFESSIONALS => "Business professionals", + PluginTargetGroup.SOFTWARE_DEVELOPERS => "Software developers", + PluginTargetGroup.SCIENTISTS => "Scientists", + PluginTargetGroup.TEACHERS => "Teachers", + PluginTargetGroup.ARTISTS => "Artists", + + _ => "Unknown target group", + }; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginType.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginType.cs new file mode 100644 index 00000000..5730e62f --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginType.cs @@ -0,0 +1,11 @@ +namespace AIStudio.Tools.PluginSystem; + +public enum PluginType +{ + NONE, + + LANGUAGE, + ASSISTANT, + CONFIGURATION, + THEME, +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginTypeExtensions.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginTypeExtensions.cs new file mode 100644 index 00000000..b65eb502 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginTypeExtensions.cs @@ -0,0 +1,24 @@ +namespace AIStudio.Tools.PluginSystem; + +public static class PluginTypeExtensions +{ + public static string GetName(this PluginType type) => type switch + { + PluginType.LANGUAGE => "Language plugin", + PluginType.ASSISTANT => "Assistant plugin", + PluginType.CONFIGURATION => "Configuration plugin", + PluginType.THEME => "Theme plugin", + + _ => "Unknown plugin type", + }; + + public static string GetDirectory(this PluginType type) => type switch + { + PluginType.LANGUAGE => "languages", + PluginType.ASSISTANT => "assistants", + PluginType.CONFIGURATION => "configurations", + PluginType.THEME => "themes", + + _ => "unknown", + }; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginVersion.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginVersion.cs new file mode 100644 index 00000000..d5507a56 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginVersion.cs @@ -0,0 +1,90 @@ +// ReSharper disable MemberCanBePrivate.Global +namespace AIStudio.Tools.PluginSystem; + +/// <summary> +/// Represents a version number for a plugin. +/// </summary> +/// <param name="Major">The major version number.</param> +/// <param name="Minor">The minor version number.</param> +/// <param name="Patch">The patch version number.</param> +public readonly record struct PluginVersion(int Major, int Minor, int Patch) : IComparable<PluginVersion> +{ + /// <summary> + /// Represents no version number. + /// </summary> + public static readonly PluginVersion NONE = new(0, 0, 0); + + /// <summary> + /// Tries to parse the input string as a plugin version number. + /// </summary> + /// <param name="input">The input string to parse.</param> + /// <param name="version">The parsed version number.</param> + /// <returns>True when the input string was successfully parsed; otherwise, false.</returns> + public static bool TryParse(string input, out PluginVersion version) + { + try + { + version = Parse(input); + return true; + } + catch + { + version = NONE; + return false; + } + } + + /// <summary> + /// Parses the input string as a plugin version number. + /// </summary> + /// <param name="input">The input string to parse.</param> + /// <returns>The parsed version number.</returns> + /// <exception cref="FormatException">The input string is not in the correct format.</exception> + public static PluginVersion Parse(string input) + { + var segments = input.Split('.'); + if (segments.Length != 3) + throw new FormatException("The input string must be in the format 'major.minor.patch'."); + + var major = int.Parse(segments[0]); + var minor = int.Parse(segments[1]); + var patch = int.Parse(segments[2]); + + if(major < 0 || minor < 0 || patch < 0) + throw new FormatException("The major, minor, and patch numbers must be greater than or equal to 0."); + + return new PluginVersion(major, minor, patch); + } + + /// <summary> + /// Converts the plugin version number to a string in the format 'major.minor.patch'. + /// </summary> + /// <returns>The plugin version number as a string.</returns> + public override string ToString() => $"{this.Major}.{this.Minor}.{this.Patch}"; + + /// <summary> + /// Compares the plugin version number to another plugin version number. + /// </summary> + /// <param name="other">The other plugin version number to compare to.</param> + /// <returns>A value indicating the relative order of the plugin version numbers.</returns> + public int CompareTo(PluginVersion other) + { + var majorCompare = this.Major.CompareTo(other.Major); + if (majorCompare != 0) + return majorCompare; + + var minorCompare = this.Minor.CompareTo(other.Minor); + if (minorCompare != 0) + return minorCompare; + + return this.Patch.CompareTo(other.Patch); + } + + public static bool operator >(PluginVersion left, PluginVersion right) => left.CompareTo(right) > 0; + + public static bool operator <(PluginVersion left, PluginVersion right) => left.CompareTo(right) < 0; + + public static bool operator >=(PluginVersion left, PluginVersion right) => left.CompareTo(right) >= 0; + + public static bool operator <=(PluginVersion left, PluginVersion right) => left.CompareTo(right) <= 0; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/packages.lock.json b/app/MindWork AI Studio/packages.lock.json index 37a21d8a..8020366c 100644 --- a/app/MindWork AI Studio/packages.lock.json +++ b/app/MindWork AI Studio/packages.lock.json @@ -22,6 +22,12 @@ "resolved": "1.12.0", "contentHash": "VHtVZmfoYhQyA/POvZRLuTpCz1zhzIDrdYRJIRV73e9wKAzjW71biYNOHOWx8MxEX3TE4TWVfx1QDRoZcj2AWw==" }, + "LuaCSharp": { + "type": "Direct", + "requested": "[0.4.2, )", + "resolved": "0.4.2", + "contentHash": "wS0hp7EFx+llJ/U/7Ykz4FSmQf8DH4mNejwo5/h1KuFyguzGZbKhTO22X54pXnuqa5cIKfEfQ29dluHHnCX05Q==" + }, "Microsoft.Extensions.FileProviders.Embedded": { "type": "Direct", "requested": "[9.0.3, )", diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md new file mode 100644 index 00000000..4fb08d00 --- /dev/null +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md @@ -0,0 +1,3 @@ +# v0.9.39, build 214 (2025-03-xx xx:xx UTC) +- Added a feature flag for the plugin system. This flag is disabled by default and can be enabled inside the app settings. Please note that this feature is still in development; there are no plugins available yet. +- Added the Lua library we use for the plugin system to the about page. \ No newline at end of file diff --git a/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/EmptyStringAnalyzer.cs b/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/EmptyStringAnalyzer.cs index f6cc65b7..5092d436 100644 --- a/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/EmptyStringAnalyzer.cs +++ b/app/SourceCodeRules/SourceCodeRules/UsageAnalyzers/EmptyStringAnalyzer.cs @@ -46,6 +46,9 @@ public sealed class EmptyStringAnalyzer : DiagnosticAnalyzer if (IsInConstContext(stringLiteral)) return; + if (IsInParameterDefaultValue(stringLiteral)) + return; + var diagnostic = Diagnostic.Create(RULE, stringLiteral.GetLocation()); context.ReportDiagnostic(diagnostic); } @@ -65,4 +68,21 @@ public sealed class EmptyStringAnalyzer : DiagnosticAnalyzer _ => false }; } + + private static bool IsInParameterDefaultValue(LiteralExpressionSyntax stringLiteral) + { + // Prüfen, ob das String-Literal Teil eines Parameter-Defaults ist + var parameter = stringLiteral.FirstAncestorOrSelf<ParameterSyntax>(); + if (parameter is null) + return false; + + // Überprüfen, ob das String-Literal im Default-Wert des Parameters verwendet wird + if (parameter.Default is not null && + parameter.Default.Value == stringLiteral) + { + return true; + } + + return false; + } } \ No newline at end of file From e2b371f9a1ce8f565c749287acdc825db90c9cd4 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 23 Mar 2025 09:18:06 +0100 Subject: [PATCH 106/110] Upgraded to Rust 1.85.1 (#370) --- app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md | 3 ++- metadata.txt | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md index 4fb08d00..a3f49df3 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md @@ -1,3 +1,4 @@ # v0.9.39, build 214 (2025-03-xx xx:xx UTC) - Added a feature flag for the plugin system. This flag is disabled by default and can be enabled inside the app settings. Please note that this feature is still in development; there are no plugins available yet. -- Added the Lua library we use for the plugin system to the about page. \ No newline at end of file +- Added the Lua library we use for the plugin system to the about page. +- Upgraded to Rust 1.85.1 \ No newline at end of file diff --git a/metadata.txt b/metadata.txt index 8e6b5896..ff758381 100644 --- a/metadata.txt +++ b/metadata.txt @@ -3,7 +3,7 @@ 213 9.0.104 (commit 2750432faa) 9.0.3 (commit 831d23e561) -1.85.0 (commit 4d91de4e4) +1.85.1 (commit 4eb161250) 8.4.0 1.8.1 820294c14db, release From 3f8f399cd94f4914b49df7f7a522ad140cc33d30 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 23 Mar 2025 12:19:03 +0100 Subject: [PATCH 107/110] Add PowerShell error handling to artifact deletion in pipeline (#371) --- .github/workflows/build-and-release.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-and-release.yml b/.github/workflows/build-and-release.yml index f6d32eff..9a9a8100 100644 --- a/.github/workflows/build-and-release.yml +++ b/.github/workflows/build-and-release.yml @@ -304,14 +304,14 @@ jobs: - name: Delete previous artifact, which may exist due to caching (Windows - MSI) if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'msi') run: | - rm -Force "runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio_*.msi" - rm -Force "runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio*msi.zip*" + rm -Force "runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio_*.msi" -ErrorAction SilentlyContinue + rm -Force "runtime/target/${{ matrix.rust_target }}/release/bundle/msi/MindWork AI Studio*msi.zip*" -ErrorAction SilentlyContinue - name: Delete previous artifact, which may exist due to caching (Windows - NSIS) if: startsWith(matrix.platform, 'windows') && contains(matrix.tauri_bundle, 'nsis') run: | - rm -Force "runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio_*.exe" - rm -Force "runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio*nsis.zip*" + rm -Force "runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio_*.exe" -ErrorAction SilentlyContinue + rm -Force "runtime/target/${{ matrix.rust_target }}/release/bundle/nsis/MindWork AI Studio*nsis.zip*" -ErrorAction SilentlyContinue - name: Delete previous artifact, which may exist due to caching (Linux - Debian Package) if: startsWith(matrix.platform, 'ubuntu') && contains(matrix.tauri_bundle, 'deb') From b632854cd46497a96ad0fd4da24029f035435bb0 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sat, 29 Mar 2025 18:40:17 +0100 Subject: [PATCH 108/110] Start the plugin system (#372) --- .../Assistants/ERI/AssistantERI.razor | 36 ++-- .../Components/PreviewAlpha.razor | 2 +- .../Components/PreviewAlpha.razor.cs | 8 +- .../Components/PreviewBeta.razor | 2 +- .../Components/PreviewBeta.razor.cs | 8 +- .../Components/PreviewExperimental.razor | 2 +- .../Components/PreviewExperimental.razor.cs | 8 +- .../Components/PreviewPrototype.razor | 2 +- .../Components/PreviewPrototype.razor.cs | 8 +- .../Components/PreviewReleaseCandidate.razor | 2 +- .../PreviewReleaseCandidate.razor.cs | 8 +- .../Settings/SettingsPanelEmbeddings.razor | 24 +-- .../Settings/SettingsPanelProfiles.razor | 18 +- .../Settings/SettingsPanelProviders.razor | 24 +-- .../Settings/SettingsDialogDataSources.razor | 20 ++- .../Layout/MainLayout.razor.cs | 62 +++---- app/MindWork AI Studio/Pages/Plugins.razor | 77 +++++++++ app/MindWork AI Studio/Pages/Plugins.razor.cs | 56 +++++++ app/MindWork AI Studio/Pages/Writer.razor | 5 +- .../icon.lua | 11 ++ .../plugin.lua | 10 +- .../icon.lua | 12 ++ .../plugin.lua | 8 +- app/MindWork AI Studio/Routes.razor.cs | 1 + .../Settings/DataModel/Data.cs | 5 + .../Settings/SettingsManager.cs | 3 + .../Tools/PluginSystem/IPluginMetadata.cs | 74 +++++++++ .../Tools/PluginSystem/NoPlugin.cs | 2 +- .../Tools/PluginSystem/PluginBase.Icon.cs | 45 +++++ .../Tools/PluginSystem/PluginBase.cs | 92 ++++------- .../PluginSystem/PluginFactory.Internal.cs | 79 +++++++++ .../Tools/PluginSystem/PluginFactory.cs | 156 ++++++++++-------- .../Tools/PluginSystem/PluginLanguage.cs | 2 +- .../Tools/PluginSystem/PluginMetadata.cs | 50 ++++++ app/MindWork AI Studio/wwwroot/app.css | 14 ++ .../wwwroot/changelog/v0.9.39.md | 2 + 36 files changed, 705 insertions(+), 233 deletions(-) create mode 100644 app/MindWork AI Studio/Pages/Plugins.razor create mode 100644 app/MindWork AI Studio/Pages/Plugins.razor.cs create mode 100644 app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/icon.lua create mode 100644 app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/icon.lua create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/IPluginMetadata.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginBase.Icon.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Internal.cs create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginMetadata.cs diff --git a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor index 83eda3ec..86dfd241 100644 --- a/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor +++ b/app/MindWork AI Studio/Assistants/ERI/AssistantERI.razor @@ -228,18 +228,20 @@ else <HeaderContent> <MudTh>Name</MudTh> <MudTh>Type</MudTh> - <MudTh Style="text-align: left;">Actions</MudTh> + <MudTh>Actions</MudTh> </HeaderContent> <RowTemplate> <MudTd>@context.EmbeddingName</MudTd> <MudTd>@context.EmbeddingType</MudTd> - <MudTd Style="text-align: left;"> - <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" Class="ma-2" OnClick="() => this.EditEmbedding(context)"> - Edit - </MudButton> - <MudButton Variant="Variant.Filled" Color="Color.Error" StartIcon="@Icons.Material.Filled.Delete" Class="ma-2" OnClick="() => this.DeleteEmbedding(context)"> - Delete - </MudButton> + <MudTd> + <MudStack Row="true" Class="mb-2 mt-2" Wrap="Wrap.Wrap"> + <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" OnClick="() => this.EditEmbedding(context)"> + Edit + </MudButton> + <MudButton Variant="Variant.Filled" Color="Color.Error" StartIcon="@Icons.Material.Filled.Delete" OnClick="() => this.DeleteEmbedding(context)"> + Delete + </MudButton> + </MudStack> </MudTd> </RowTemplate> </MudTable> @@ -274,17 +276,19 @@ else </ColGroup> <HeaderContent> <MudTh>Name</MudTh> - <MudTh Style="text-align: left;">Actions</MudTh> + <MudTh>Actions</MudTh> </HeaderContent> <RowTemplate> <MudTd>@context.Name</MudTd> - <MudTd Style="text-align: left;"> - <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" Class="ma-2" OnClick="() => this.EditRetrievalProcess(context)"> - Edit - </MudButton> - <MudButton Variant="Variant.Filled" Color="Color.Error" StartIcon="@Icons.Material.Filled.Delete" Class="ma-2" OnClick="() => this.DeleteRetrievalProcess(context)"> - Delete - </MudButton> + <MudTd> + <MudStack Row="true" Class="mb-2 mt-2" Wrap="Wrap.Wrap"> + <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" OnClick="() => this.EditRetrievalProcess(context)"> + Edit + </MudButton> + <MudButton Variant="Variant.Filled" Color="Color.Error" StartIcon="@Icons.Material.Filled.Delete" OnClick="() => this.DeleteRetrievalProcess(context)"> + Delete + </MudButton> + </MudStack> </MudTd> </RowTemplate> </MudTable> diff --git a/app/MindWork AI Studio/Components/PreviewAlpha.razor b/app/MindWork AI Studio/Components/PreviewAlpha.razor index 99f9d844..b1b629d8 100644 --- a/app/MindWork AI Studio/Components/PreviewAlpha.razor +++ b/app/MindWork AI Studio/Components/PreviewAlpha.razor @@ -1,4 +1,4 @@ -<MudTooltip Placement="Placement.Bottom" Arrow="@true"> +<MudTooltip Placement="Placement.Bottom" Arrow="@true" Class="@this.Classes"> <ChildContent> <MudChip T="string" Icon="@Icons.Material.Filled.FirstPage" Color="Color.Error" Class="mb-3"> Alpha diff --git a/app/MindWork AI Studio/Components/PreviewAlpha.razor.cs b/app/MindWork AI Studio/Components/PreviewAlpha.razor.cs index 62466852..deb962c4 100644 --- a/app/MindWork AI Studio/Components/PreviewAlpha.razor.cs +++ b/app/MindWork AI Studio/Components/PreviewAlpha.razor.cs @@ -2,4 +2,10 @@ using Microsoft.AspNetCore.Components; namespace AIStudio.Components; -public partial class PreviewAlpha : ComponentBase; \ No newline at end of file +public partial class PreviewAlpha : ComponentBase +{ + [Parameter] + public bool ApplyInnerScrollingFix { get; set; } + + private string Classes => this.ApplyInnerScrollingFix ? "InnerScrollingFix" : string.Empty; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/PreviewBeta.razor b/app/MindWork AI Studio/Components/PreviewBeta.razor index cd6b3c65..dd54225e 100644 --- a/app/MindWork AI Studio/Components/PreviewBeta.razor +++ b/app/MindWork AI Studio/Components/PreviewBeta.razor @@ -1,4 +1,4 @@ -<MudTooltip Placement="Placement.Bottom" Arrow="@true"> +<MudTooltip Placement="Placement.Bottom" Arrow="@true" Class="@this.Classes"> <ChildContent> <MudChip T="string" Icon="@Icons.Material.Filled.HourglassTop" Color="Color.Info" Class="mb-3"> Beta diff --git a/app/MindWork AI Studio/Components/PreviewBeta.razor.cs b/app/MindWork AI Studio/Components/PreviewBeta.razor.cs index a5064b60..d8fee758 100644 --- a/app/MindWork AI Studio/Components/PreviewBeta.razor.cs +++ b/app/MindWork AI Studio/Components/PreviewBeta.razor.cs @@ -2,4 +2,10 @@ using Microsoft.AspNetCore.Components; namespace AIStudio.Components; -public partial class PreviewBeta : ComponentBase; \ No newline at end of file +public partial class PreviewBeta : ComponentBase +{ + [Parameter] + public bool ApplyInnerScrollingFix { get; set; } + + private string Classes => this.ApplyInnerScrollingFix ? "InnerScrollingFix" : string.Empty; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/PreviewExperimental.razor b/app/MindWork AI Studio/Components/PreviewExperimental.razor index 59e6651a..bedc9e4f 100644 --- a/app/MindWork AI Studio/Components/PreviewExperimental.razor +++ b/app/MindWork AI Studio/Components/PreviewExperimental.razor @@ -1,4 +1,4 @@ -<MudTooltip Placement="Placement.Bottom" Arrow="@true"> +<MudTooltip Placement="Placement.Bottom" Arrow="@true" Class="@this.Classes"> <ChildContent> <MudChip T="string" Icon="@Icons.Material.Filled.Science" Color="Color.Error" Class="mb-3"> Experimental diff --git a/app/MindWork AI Studio/Components/PreviewExperimental.razor.cs b/app/MindWork AI Studio/Components/PreviewExperimental.razor.cs index c66fa730..0588d489 100644 --- a/app/MindWork AI Studio/Components/PreviewExperimental.razor.cs +++ b/app/MindWork AI Studio/Components/PreviewExperimental.razor.cs @@ -2,4 +2,10 @@ using Microsoft.AspNetCore.Components; namespace AIStudio.Components; -public partial class PreviewExperimental : ComponentBase; \ No newline at end of file +public partial class PreviewExperimental : ComponentBase +{ + [Parameter] + public bool ApplyInnerScrollingFix { get; set; } + + private string Classes => this.ApplyInnerScrollingFix ? "InnerScrollingFix" : string.Empty; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/PreviewPrototype.razor b/app/MindWork AI Studio/Components/PreviewPrototype.razor index f645e0ca..9aa8bbc0 100644 --- a/app/MindWork AI Studio/Components/PreviewPrototype.razor +++ b/app/MindWork AI Studio/Components/PreviewPrototype.razor @@ -1,4 +1,4 @@ -<MudTooltip Placement="Placement.Bottom" Arrow="@true"> +<MudTooltip Placement="Placement.Bottom" Arrow="@true" Class="@this.Classes"> <ChildContent> <MudChip T="string" Icon="@Icons.Material.Filled.HourglassBottom" Color="Color.Error" Class="mb-3"> Prototype diff --git a/app/MindWork AI Studio/Components/PreviewPrototype.razor.cs b/app/MindWork AI Studio/Components/PreviewPrototype.razor.cs index 573e2fd0..3ceab4d1 100644 --- a/app/MindWork AI Studio/Components/PreviewPrototype.razor.cs +++ b/app/MindWork AI Studio/Components/PreviewPrototype.razor.cs @@ -2,4 +2,10 @@ using Microsoft.AspNetCore.Components; namespace AIStudio.Components; -public partial class PreviewPrototype : ComponentBase; \ No newline at end of file +public partial class PreviewPrototype : ComponentBase +{ + [Parameter] + public bool ApplyInnerScrollingFix { get; set; } + + private string Classes => this.ApplyInnerScrollingFix ? "InnerScrollingFix" : string.Empty; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/PreviewReleaseCandidate.razor b/app/MindWork AI Studio/Components/PreviewReleaseCandidate.razor index 44b51084..86954ddd 100644 --- a/app/MindWork AI Studio/Components/PreviewReleaseCandidate.razor +++ b/app/MindWork AI Studio/Components/PreviewReleaseCandidate.razor @@ -1,4 +1,4 @@ -<MudTooltip Placement="Placement.Bottom" Arrow="@true"> +<MudTooltip Placement="Placement.Bottom" Arrow="@true" Class="@this.Classes"> <ChildContent> <MudChip T="string" Icon="@Icons.Material.Filled.VerifiedUser" Color="Color.Success" Class="mb-3"> Release Candidate diff --git a/app/MindWork AI Studio/Components/PreviewReleaseCandidate.razor.cs b/app/MindWork AI Studio/Components/PreviewReleaseCandidate.razor.cs index 1d22d17e..249f1f35 100644 --- a/app/MindWork AI Studio/Components/PreviewReleaseCandidate.razor.cs +++ b/app/MindWork AI Studio/Components/PreviewReleaseCandidate.razor.cs @@ -2,4 +2,10 @@ using Microsoft.AspNetCore.Components; namespace AIStudio.Components; -public partial class PreviewReleaseCandidate : ComponentBase; \ No newline at end of file +public partial class PreviewReleaseCandidate : ComponentBase +{ + [Parameter] + public bool ApplyInnerScrollingFix { get; set; } + + private string Classes => this.ApplyInnerScrollingFix ? "InnerScrollingFix" : string.Empty; +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelEmbeddings.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelEmbeddings.razor index ea82ce7a..7203ff78 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelEmbeddings.razor +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelEmbeddings.razor @@ -36,7 +36,7 @@ <MudTh>Name</MudTh> <MudTh>Provider</MudTh> <MudTh>Model</MudTh> - <MudTh Style="text-align: left;">Actions</MudTh> + <MudTh>Actions</MudTh> </HeaderContent> <RowTemplate> <MudTd>@context.Num</MudTd> @@ -44,16 +44,18 @@ <MudTd>@context.UsedLLMProvider</MudTd> <MudTd>@this.GetEmbeddingProviderModelName(context)</MudTd> - <MudTd Style="text-align: left;"> - <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.OpenInBrowser" Class="ma-2" Href="@context.UsedLLMProvider.GetDashboardURL()" Target="_blank" Disabled="@(!context.UsedLLMProvider.HasDashboard())"> - Open Dashboard - </MudButton> - <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" Class="ma-2" OnClick="() => this.EditEmbeddingProvider(context)"> - Edit - </MudButton> - <MudButton Variant="Variant.Filled" Color="Color.Error" StartIcon="@Icons.Material.Filled.Delete" Class="ma-2" OnClick="() => this.DeleteEmbeddingProvider(context)"> - Delete - </MudButton> + <MudTd> + <MudStack Row="true" Class="mb-2 mt-2" Wrap="Wrap.Wrap"> + <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.OpenInBrowser" Href="@context.UsedLLMProvider.GetDashboardURL()" Target="_blank" Disabled="@(!context.UsedLLMProvider.HasDashboard())"> + Open Dashboard + </MudButton> + <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" OnClick="() => this.EditEmbeddingProvider(context)"> + Edit + </MudButton> + <MudButton Variant="Variant.Filled" Color="Color.Error" StartIcon="@Icons.Material.Filled.Delete" OnClick="() => this.DeleteEmbeddingProvider(context)"> + Delete + </MudButton> + </MudStack> </MudTd> </RowTemplate> </MudTable> diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelProfiles.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelProfiles.razor index 924eb773..e49390f0 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelProfiles.razor +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelProfiles.razor @@ -23,18 +23,20 @@ <HeaderContent> <MudTh>#</MudTh> <MudTh>Profile Name</MudTh> - <MudTh Style="text-align: left;">Actions</MudTh> + <MudTh>Actions</MudTh> </HeaderContent> <RowTemplate> <MudTd>@context.Num</MudTd> <MudTd>@context.Name</MudTd> - <MudTd Style="text-align: left;"> - <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" Class="ma-2" OnClick="() => this.EditProfile(context)"> - Edit - </MudButton> - <MudButton Variant="Variant.Filled" Color="Color.Error" StartIcon="@Icons.Material.Filled.Delete" Class="ma-2" OnClick="() => this.DeleteProfile(context)"> - Delete - </MudButton> + <MudTd> + <MudStack Row="true" Class="mb-2 mt-2" Wrap="Wrap.Wrap"> + <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" OnClick="() => this.EditProfile(context)"> + Edit + </MudButton> + <MudButton Variant="Variant.Filled" Color="Color.Error" StartIcon="@Icons.Material.Filled.Delete" OnClick="() => this.DeleteProfile(context)"> + Delete + </MudButton> + </MudStack> </MudTd> </RowTemplate> </MudTable> diff --git a/app/MindWork AI Studio/Components/Settings/SettingsPanelProviders.razor b/app/MindWork AI Studio/Components/Settings/SettingsPanelProviders.razor index cd1b4ffb..51db26b4 100644 --- a/app/MindWork AI Studio/Components/Settings/SettingsPanelProviders.razor +++ b/app/MindWork AI Studio/Components/Settings/SettingsPanelProviders.razor @@ -24,7 +24,7 @@ <MudTh>Instance Name</MudTh> <MudTh>Provider</MudTh> <MudTh>Model</MudTh> - <MudTh Style="text-align: left;">Actions</MudTh> + <MudTh>Actions</MudTh> </HeaderContent> <RowTemplate> <MudTd>@context.Num</MudTd> @@ -44,16 +44,18 @@ @("as selected by provider") } </MudTd> - <MudTd Style="text-align: left;"> - <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.OpenInBrowser" Class="ma-2" Href="@context.UsedLLMProvider.GetDashboardURL()" Target="_blank" Disabled="@(!context.UsedLLMProvider.HasDashboard())"> - Open Dashboard - </MudButton> - <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" Class="ma-2" OnClick="() => this.EditLLMProvider(context)"> - Edit - </MudButton> - <MudButton Variant="Variant.Filled" Color="Color.Error" StartIcon="@Icons.Material.Filled.Delete" Class="ma-2" OnClick="() => this.DeleteLLMProvider(context)"> - Delete - </MudButton> + <MudTd> + <MudStack Row="true" Class="mb-2 mt-2" Wrap="Wrap.Wrap"> + <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.OpenInBrowser" Href="@context.UsedLLMProvider.GetDashboardURL()" Target="_blank" Disabled="@(!context.UsedLLMProvider.HasDashboard())"> + Open Dashboard + </MudButton> + <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" OnClick="() => this.EditLLMProvider(context)"> + Edit + </MudButton> + <MudButton Variant="Variant.Filled" Color="Color.Error" StartIcon="@Icons.Material.Filled.Delete" OnClick="() => this.DeleteLLMProvider(context)"> + Delete + </MudButton> + </MudStack> </MudTd> </RowTemplate> </MudTable> diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor index 5ec517a7..17c05fc2 100644 --- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor +++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogDataSources.razor @@ -29,7 +29,7 @@ <MudTh>Name</MudTh> <MudTh>Type</MudTh> <MudTh>Embedding</MudTh> - <MudTh Style="text-align: left;">Actions</MudTh> + <MudTh>Actions</MudTh> </HeaderContent> <RowTemplate> <MudTd>@context.Num</MudTd> @@ -37,14 +37,16 @@ <MudTd>@context.Type.GetDisplayName()</MudTd> <MudTd>@this.GetEmbeddingName(context)</MudTd> - <MudTd Style="text-align: left;"> - <MudIconButton Variant="Variant.Filled" Color="Color.Info" Icon="@Icons.Material.Filled.Info" Class="ma-2" OnClick="() => this.ShowInformation(context)"/> - <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" Class="ma-2" OnClick="() => this.EditDataSource(context)"> - Edit - </MudButton> - <MudButton Variant="Variant.Filled" Color="Color.Error" StartIcon="@Icons.Material.Filled.Delete" Class="ma-2" OnClick="() => this.DeleteDataSource(context)"> - Delete - </MudButton> + <MudTd> + <MudStack Row="true" Class="mb-2 mt-2" Wrap="Wrap.Wrap"> + <MudIconButton Variant="Variant.Filled" Color="Color.Info" Icon="@Icons.Material.Filled.Info" OnClick="() => this.ShowInformation(context)"/> + <MudButton Variant="Variant.Filled" Color="Color.Info" StartIcon="@Icons.Material.Filled.Edit" OnClick="() => this.EditDataSource(context)"> + Edit + </MudButton> + <MudButton Variant="Variant.Filled" Color="Color.Error" StartIcon="@Icons.Material.Filled.Delete" OnClick="() => this.DeleteDataSource(context)"> + Delete + </MudButton> + </MudStack> </MudTd> </RowTemplate> </MudTable> diff --git a/app/MindWork AI Studio/Layout/MainLayout.razor.cs b/app/MindWork AI Studio/Layout/MainLayout.razor.cs index 32d9e981..b689569b 100644 --- a/app/MindWork AI Studio/Layout/MainLayout.razor.cs +++ b/app/MindWork AI Studio/Layout/MainLayout.razor.cs @@ -82,8 +82,19 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, IDis // Ensure that all settings are loaded: await this.SettingsManager.LoadSettings(); - // Ensure that all internal plugins are present: - await PluginFactory.EnsureInternalPlugins(); + // + // We cannot process the plugins before the settings are loaded, + // and we know our data directory. + // + if(PreviewFeatures.PRE_PLUGINS_2025.IsEnabled(this.SettingsManager)) + { + // Ensure that all internal plugins are present: + await PluginFactory.EnsureInternalPlugins(); + + // Load (but not start) all plugins, without waiting for them: + var pluginLoadingTimeout = new CancellationTokenSource(TimeSpan.FromSeconds(5)); + _ = PluginFactory.LoadAll(pluginLoadingTimeout.Token); + } // Register this component with the message bus: this.MessageBus.RegisterComponent(this); @@ -106,33 +117,7 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, IDis private void LoadNavItems() { - var palette = this.ColorTheme.GetCurrentPalette(this.SettingsManager); - var isWriterModePreviewEnabled = PreviewFeatures.PRE_WRITER_MODE_2024.IsEnabled(this.SettingsManager); - if (!isWriterModePreviewEnabled) - { - this.navItems = new List<NavBarItem> - { - new("Home", Icons.Material.Filled.Home, palette.DarkLighten, palette.GrayLight, Routes.HOME, true), - new("Chat", Icons.Material.Filled.Chat, palette.DarkLighten, palette.GrayLight, Routes.CHAT, false), - new("Assistants", Icons.Material.Filled.Apps, palette.DarkLighten, palette.GrayLight, Routes.ASSISTANTS, false), - new("Supporters", Icons.Material.Filled.Favorite, palette.Error.Value, "#801a00", Routes.SUPPORTERS, false), - new("About", Icons.Material.Filled.Info, palette.DarkLighten, palette.GrayLight, Routes.ABOUT, false), - new("Settings", Icons.Material.Filled.Settings, palette.DarkLighten, palette.GrayLight, Routes.SETTINGS, false), - }; - } - else - { - this.navItems = new List<NavBarItem> - { - new("Home", Icons.Material.Filled.Home, palette.DarkLighten, palette.GrayLight, Routes.HOME, true), - new("Chat", Icons.Material.Filled.Chat, palette.DarkLighten, palette.GrayLight, Routes.CHAT, false), - new("Assistants", Icons.Material.Filled.Apps, palette.DarkLighten, palette.GrayLight, Routes.ASSISTANTS, false), - new("Writer", Icons.Material.Filled.Create, palette.DarkLighten, palette.GrayLight, Routes.WRITER, false), - new("Supporters", Icons.Material.Filled.Favorite, palette.Error.Value, "#801a00", Routes.SUPPORTERS, false), - new("About", Icons.Material.Filled.Info, palette.DarkLighten, palette.GrayLight, Routes.ABOUT, false), - new("Settings", Icons.Material.Filled.Settings, palette.DarkLighten, palette.GrayLight, Routes.SETTINGS, false), - }; - } + this.navItems = new List<NavBarItem>(this.GetNavItems()); } #endregion @@ -185,6 +170,25 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, IDis } #endregion + + private IEnumerable<NavBarItem> GetNavItems() + { + var palette = this.ColorTheme.GetCurrentPalette(this.SettingsManager); + + yield return new("Home", Icons.Material.Filled.Home, palette.DarkLighten, palette.GrayLight, Routes.HOME, true); + yield return new("Chat", Icons.Material.Filled.Chat, palette.DarkLighten, palette.GrayLight, Routes.CHAT, false); + yield return new("Assistants", Icons.Material.Filled.Apps, palette.DarkLighten, palette.GrayLight, Routes.ASSISTANTS, false); + + if (PreviewFeatures.PRE_WRITER_MODE_2024.IsEnabled(this.SettingsManager)) + yield return new("Writer", Icons.Material.Filled.Create, palette.DarkLighten, palette.GrayLight, Routes.WRITER, false); + + if (PreviewFeatures.PRE_PLUGINS_2025.IsEnabled(this.SettingsManager)) + yield return new("Plugins", Icons.Material.TwoTone.Extension, palette.DarkLighten, palette.GrayLight, Routes.PLUGINS, false); + + yield return new("Supporters", Icons.Material.Filled.Favorite, palette.Error.Value, "#801a00", Routes.SUPPORTERS, false); + yield return new("About", Icons.Material.Filled.Info, palette.DarkLighten, palette.GrayLight, Routes.ABOUT, false); + yield return new("Settings", Icons.Material.Filled.Settings, palette.DarkLighten, palette.GrayLight, Routes.SETTINGS, false); + } private async Task DismissUpdate() { diff --git a/app/MindWork AI Studio/Pages/Plugins.razor b/app/MindWork AI Studio/Pages/Plugins.razor new file mode 100644 index 00000000..6d5bf8ce --- /dev/null +++ b/app/MindWork AI Studio/Pages/Plugins.razor @@ -0,0 +1,77 @@ +@using AIStudio.Tools.PluginSystem +@attribute [Route(Routes.PLUGINS)] + +<div class="inner-scrolling-context"> + <MudText Typo="Typo.h3" Class="mb-2"> + Plugins + </MudText> + <PreviewExperimental ApplyInnerScrollingFix="true"/> + + <InnerScrolling> + + <MudTable Items="@PluginFactory.AvailablePlugins" Hover="@true" GroupBy="@this.groupConfig" Class="border-dashed border rounded-lg"> + <ColGroup> + <col style="width: 2em;" /> + <col style="width: 2.1em; "/> + <col/> + <col style="width: 12em;"/> + </ColGroup> + <HeaderContent> + <MudTh colspan="2">Plugins</MudTh> + <MudTh>Actions</MudTh> + </HeaderContent> + <GroupHeaderTemplate> + <MudTh Class="mud-table-cell-custom-group" colspan="3"> + @switch (context.Key) + { + case GROUP_ENABLED: + <MudText Typo="Typo.h6" Class="mb-2"> + Enabled Plugins + </MudText> + break; + + case GROUP_DISABLED: + <MudText Typo="Typo.h6" Class="mb-2"> + Disabled Plugins + </MudText> + break; + + case GROUP_INTERNAL: + <MudText Typo="Typo.h6" Class="mb-2"> + Internal Plugins + </MudText> + break; + } + </MudTh> + </GroupHeaderTemplate> + <RowTemplate> + <MudTd> + <MudAvatar Size="Size.Medium" Style="width: 2em; height: 2em;" Class="align-content-stretch"> + <div class="plugin-icon-container"> + @((MarkupString)context.IconSVG) + </div> + </MudAvatar> + </MudTd> + <MudTd> + <MudStack Spacing="0"> + <MudText Typo="Typo.h6" Class="mb-0 pb-0 gap-0"> + @context.Name + </MudText> + <MudText Typo="Typo.body1"> + @context.Description + </MudText> + </MudStack> + </MudTd> + <MudTd> + @if (!context.IsInternal) + { + var isEnabled = this.SettingsManager.IsPluginEnabled(context); + <MudTooltip Text="@(isEnabled ? "Disable plugin" : "Enable plugin")"> + <MudSwitch T="bool" Value="@isEnabled" ValueChanged="@(_ => this.PluginActivationStateChanged(context))"/> + </MudTooltip> + } + </MudTd> + </RowTemplate> + </MudTable> + </InnerScrolling> +</div> \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Plugins.razor.cs b/app/MindWork AI Studio/Pages/Plugins.razor.cs new file mode 100644 index 00000000..f2dc83d9 --- /dev/null +++ b/app/MindWork AI Studio/Pages/Plugins.razor.cs @@ -0,0 +1,56 @@ +using AIStudio.Settings; +using AIStudio.Tools.PluginSystem; + +using Microsoft.AspNetCore.Components; + +namespace AIStudio.Pages; + +public partial class Plugins : ComponentBase +{ + private const string GROUP_ENABLED = "Enabled"; + private const string GROUP_DISABLED = "Disabled"; + private const string GROUP_INTERNAL = "Internal"; + + [Inject] + private MessageBus MessageBus { get; init; } = null!; + + [Inject] + private SettingsManager SettingsManager { get; init; } = null!; + + private TableGroupDefinition<IPluginMetadata> groupConfig = null!; + + #region Overrides of ComponentBase + + protected override async Task OnInitializedAsync() + { + this.groupConfig = new TableGroupDefinition<IPluginMetadata> + { + Expandable = true, + IsInitiallyExpanded = true, + Selector = pluginMeta => + { + if (pluginMeta.IsInternal) + return GROUP_INTERNAL; + + return this.SettingsManager.IsPluginEnabled(pluginMeta) + ? GROUP_ENABLED + : GROUP_DISABLED; + } + }; + + await base.OnInitializedAsync(); + } + + #endregion + + private async Task PluginActivationStateChanged(IPluginMetadata pluginMeta) + { + if (this.SettingsManager.IsPluginEnabled(pluginMeta)) + this.SettingsManager.ConfigurationData.EnabledPlugins.Remove(pluginMeta.Id); + else + this.SettingsManager.ConfigurationData.EnabledPlugins.Add(pluginMeta.Id); + + await this.SettingsManager.StoreSettings(); + await this.MessageBus.SendMessage<bool>(this, Event.CONFIGURATION_CHANGED); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Pages/Writer.razor b/app/MindWork AI Studio/Pages/Writer.razor index 6108647b..790e3e07 100644 --- a/app/MindWork AI Studio/Pages/Writer.razor +++ b/app/MindWork AI Studio/Pages/Writer.razor @@ -2,11 +2,10 @@ @inherits MSGComponentBase <div class="inner-scrolling-context"> - <MudText Typo="Typo.h3" Class="mb-2 mr-3"> + <MudText Typo="Typo.h3" Class="mb-2"> Writer </MudText> - - <PreviewExperimental/> + <PreviewExperimental ApplyInnerScrollingFix="true"/> <ProviderSelection @bind-ProviderSettings="@this.providerSettings"/> <InnerScrolling> diff --git a/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/icon.lua b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/icon.lua new file mode 100644 index 00000000..c10dd294 --- /dev/null +++ b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/icon.lua @@ -0,0 +1,11 @@ +SVG = [[<svg viewBox="0 0 600 600" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2"> + <path style="fill:none" d="M0 0h600v600H0z"/> + <clipPath id="a"> + <path d="M0 0h600v600H0z"/> + </clipPath> + <g clip-path="url(#a)"> + <path d="M17.467 200C58.688 83.529 169.851 0 300.369 0S542.05 83.529 583.271 200c11.072 31.284 17.098 64.944 17.098 100s-6.026 68.716-17.098 100C542.05 516.471 430.887 600 300.369 600S58.688 516.471 17.467 400C6.395 368.716.369 335.056.369 300s6.026-68.716 17.098-100Z"/> + <path d="M583.271 200c11.072 31.284 17.098 64.944 17.098 100s-6.026 68.716-17.098 100C542.05 516.471 430.887 600 300.369 600S58.688 516.471 17.467 400C6.395 368.716.369 335.056.369 300s6.026-68.716 17.098-100h565.804Z" style="fill:#d00"/> + <path d="M583.271 400C542.05 516.471 430.887 600 300.369 600S58.688 516.471 17.467 400h565.804Z" style="fill:#ffce00"/> + </g> + </svg>]] \ No newline at end of file diff --git a/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua index 4801b782..ab05f0bc 100644 --- a/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua +++ b/app/MindWork AI Studio/Plugins/languages/de-de-43065dbc-78d0-45b7-92be-f14c2926e2dc/plugin.lua @@ -1,6 +1,12 @@ +require("contentHome") +require("icon") + -- The ID for this plugin: ID = "43065dbc-78d0-45b7-92be-f14c2926e2dc" +-- The icon for the plugin: +ICON_SVG = SVG + -- The name of the plugin: NAME = "MindWork AI Studio - German / Deutsch" @@ -32,8 +38,8 @@ TARGET_GROUPS = { "EVERYONE" } IS_MAINTAINED = true -- When the plugin is deprecated, this message will be shown to users: -DEPRECATION_MESSAGE = nil +DEPRECATION_MESSAGE = "" UI_TEXT_CONTENT = { HOME = CONTENT_HOME, -} \ No newline at end of file +} diff --git a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/icon.lua b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/icon.lua new file mode 100644 index 00000000..75320473 --- /dev/null +++ b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/icon.lua @@ -0,0 +1,12 @@ +SVG = [[<svg viewBox="0 0 650 650" style="fill-rule:evenodd;clip-rule:evenodd"> + <path style="fill:none" d="M0 0h650v650H0z"/> + <clipPath id="a"> + <path d="M0 0h650v650H0z"/> + </clipPath> + <g clip-path="url(#a)"> + <path d="M208.018 21.723C244.323 7.694 283.77 0 325 0c44.15 0 86.256 8.823 124.649 24.8a319.796 319.796 0 0 1 9.251 4.02A324.269 324.269 0 0 1 494 47.402 326.269 326.269 0 0 1 532.582 75c33.111 27.531 60.675 61.509 80.757 100a322.631 322.631 0 0 1 32.831 100 326.842 326.842 0 0 1 3.83 50c0 17.002-1.308 33.7-3.83 50a322.631 322.631 0 0 1-32.831 100c-20.082 38.491-47.646 72.469-80.757 100-56.319 46.827-128.686 75-207.582 75-78.896 0-151.263-28.173-207.582-75-33.111-27.531-60.675-61.509-80.757-100A322.631 322.631 0 0 1 3.83 375a325.032 325.032 0 0 1-2.881-25A328.869 328.869 0 0 1 0 325c0-17.002 1.308-33.7 3.83-50a322.493 322.493 0 0 1 31.196-96.822 323.44 323.44 0 0 1 8.553-15.752C62.893 129.089 87.96 99.493 117.418 75A325.476 325.476 0 0 1 191.1 28.82a324.203 324.203 0 0 1 16.918-7.097Z" style="fill:#b31942;fill-rule:nonzero"/> + <path d="M0 75h1235m0 100H0m0 100h1235m0 100H0m0 100h1235m0 100H0" style="fill-rule:nonzero;stroke:#fff;stroke-width:50px"/> + <path d="M208.018 21.723C244.323 7.694 283.77 0 325 0c44.15 0 86.256 8.823 124.649 24.8a319.796 319.796 0 0 1 9.251 4.02A324.269 324.269 0 0 1 494 47.402V350H.949A328.869 328.869 0 0 1 0 325c0-17.002 1.308-33.7 3.83-50a322.493 322.493 0 0 1 31.196-96.822 323.44 323.44 0 0 1 8.553-15.752C62.893 129.089 87.96 99.493 117.418 75A325.476 325.476 0 0 1 191.1 28.82a324.203 324.203 0 0 1 16.918-7.097Z" style="fill:#0a3161;fill-rule:nonzero"/> + <path d="M30.895 186.613A317.843 317.843 0 0 1 36.661 175a323.44 323.44 0 0 1 6.918-12.574l2.078 6.394h14.531l-11.756 8.541 4.49 13.819-11.755-8.541-11.756 8.541 1.484-4.567ZM41.167 225l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L41.167 225ZM41.167 295l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L41.167 295ZM82.333 120l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L82.333 120ZM82.333 190l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L82.333 190ZM82.333 260l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L82.333 260ZM123.5 85l11.756 36.18-30.777-22.36h38.042l-30.777 22.36L123.5 85ZM123.5 155l11.756 36.18-30.777-22.36h38.042l-30.777 22.36L123.5 155ZM123.5 225l11.756 36.18-30.777-22.36h38.042l-30.777 22.36L123.5 225ZM123.5 295l11.756 36.18-30.777-22.36h38.042l-30.777 22.36L123.5 295ZM164.667 50l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L164.667 50ZM164.667 120l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L164.667 120ZM164.667 190l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L164.667 190ZM164.667 260l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L164.667 260ZM198.568 37.361l-10.096-7.336c.874-.405 1.75-.807 2.628-1.205h10.243l1.66-5.111a334.886 334.886 0 0 1 5.015-1.986l2.306 7.097h14.53l-11.755 8.541 4.49 13.819-11.756-8.541-11.755 8.541 4.49-13.819ZM205.833 85l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L205.833 85ZM205.833 155l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L205.833 155ZM205.833 225l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L205.833 225ZM205.833 295l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L205.833 295ZM247 50l11.756 36.18-30.777-22.36h38.042l-30.777 22.36L247 50ZM247 120l11.756 36.18-30.777-22.36h38.042l-30.777 22.36L247 120ZM247 190l11.756 36.18-30.777-22.36h38.042l-30.777 22.36L247 190ZM247 260l11.756 36.18-30.777-22.36h38.042l-30.777 22.36L247 260ZM288.167 15l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L288.167 15ZM288.167 85l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L288.167 85ZM288.167 155l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L288.167 155ZM288.167 225l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L288.167 225ZM288.167 295l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L288.167 295ZM329.333 50l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L329.333 50ZM329.333 120l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L329.333 120ZM329.333 190l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L329.333 190ZM329.333 260l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L329.333 260ZM370.5 15l11.756 36.18-30.777-22.36h38.042l-30.777 22.36L370.5 15ZM370.5 85l11.756 36.18-30.777-22.36h38.042l-30.777 22.36L370.5 85ZM370.5 155l11.756 36.18-30.777-22.36h38.042l-30.777 22.36L370.5 155ZM370.5 225l11.756 36.18-30.777-22.36h38.042l-30.777 22.36L370.5 225ZM370.5 295l11.756 36.18-30.777-22.36h38.042l-30.777 22.36L370.5 295ZM411.667 50l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L411.667 50ZM411.667 120l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L411.667 120ZM411.667 190l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L411.667 190ZM411.667 260l11.755 36.18-30.776-22.36h38.042l-30.777 22.36L411.667 260ZM448.343 28.82l1.306-4.02a319.796 319.796 0 0 1 7.405 3.19l.27.83h1.576a320.481 320.481 0 0 1 7.869 3.695l-6.67 4.846 4.49 13.819-11.756-8.541-11.755 8.541 4.49-13.819-11.756-8.541h14.531ZM452.833 85l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L452.833 85ZM452.833 155l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L452.833 155ZM452.833 225l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L452.833 225ZM452.833 295l11.756 36.18-30.777-22.36h38.042l-30.776 22.36L452.833 295Z" style="fill:#fff;fill-rule:nonzero"/> + </g> + </svg>]] \ No newline at end of file diff --git a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua index 6e2fea50..d6c98d49 100644 --- a/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua +++ b/app/MindWork AI Studio/Plugins/languages/en-us-97dfb1ba-50c4-4440-8dfa-6575daf543c8/plugin.lua @@ -1,8 +1,12 @@ require("contentHome") +require("icon") -- The ID for this plugin: ID = "97dfb1ba-50c4-4440-8dfa-6575daf543c8" +-- The icon for the plugin: +ICON_SVG = SVG + -- The name of the plugin: NAME = "MindWork AI Studio - US English" @@ -34,8 +38,8 @@ TARGET_GROUPS = { "EVERYONE" } IS_MAINTAINED = true -- When the plugin is deprecated, this message will be shown to users: -DEPRECATION_MESSAGE = nil +DEPRECATION_MESSAGE = "" UI_TEXT_CONTENT = { HOME = CONTENT_HOME, -} \ No newline at end of file +} diff --git a/app/MindWork AI Studio/Routes.razor.cs b/app/MindWork AI Studio/Routes.razor.cs index 98326821..b6318820 100644 --- a/app/MindWork AI Studio/Routes.razor.cs +++ b/app/MindWork AI Studio/Routes.razor.cs @@ -9,6 +9,7 @@ public sealed partial class Routes public const string SETTINGS = "/settings"; public const string SUPPORTERS = "/supporters"; public const string WRITER = "/writer"; + public const string PLUGINS = "/plugins"; // ReSharper disable InconsistentNaming public const string ASSISTANT_TRANSLATION = "/assistant/translation"; diff --git a/app/MindWork AI Studio/Settings/DataModel/Data.cs b/app/MindWork AI Studio/Settings/DataModel/Data.cs index b7139c72..b47eba49 100644 --- a/app/MindWork AI Studio/Settings/DataModel/Data.cs +++ b/app/MindWork AI Studio/Settings/DataModel/Data.cs @@ -36,6 +36,11 @@ public sealed class Data /// </summary> public List<Profile> Profiles { get; init; } = []; + /// <summary> + /// List of enabled plugins. + /// </summary> + public List<Guid> EnabledPlugins { get; set; } = []; + /// <summary> /// The next provider number to use. /// </summary> diff --git a/app/MindWork AI Studio/Settings/SettingsManager.cs b/app/MindWork AI Studio/Settings/SettingsManager.cs index 0930c9a5..ec74cab8 100644 --- a/app/MindWork AI Studio/Settings/SettingsManager.cs +++ b/app/MindWork AI Studio/Settings/SettingsManager.cs @@ -4,6 +4,7 @@ using System.Text.Json.Serialization; using AIStudio.Provider; using AIStudio.Settings.DataModel; +using AIStudio.Tools.PluginSystem; // ReSharper disable NotAccessedPositionalProperty.Local @@ -142,6 +143,8 @@ public sealed class SettingsManager(ILogger<SettingsManager> logger) return minimumLevel; } + public bool IsPluginEnabled(IPluginMetadata plugin) => this.ConfigurationData.EnabledPlugins.Contains(plugin.Id); + [SuppressMessage("Usage", "MWAIS0001:Direct access to `Providers` is not allowed")] public Provider GetPreselectedProvider(Tools.Components component, string? currentProviderId = null, bool usePreselectionBeforeCurrentProvider = false) { diff --git a/app/MindWork AI Studio/Tools/PluginSystem/IPluginMetadata.cs b/app/MindWork AI Studio/Tools/PluginSystem/IPluginMetadata.cs new file mode 100644 index 00000000..95d26b34 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/IPluginMetadata.cs @@ -0,0 +1,74 @@ +namespace AIStudio.Tools.PluginSystem; + +public interface IPluginMetadata +{ + /// <summary> + /// The icon of this plugin. + /// </summary> + public string IconSVG { get; } + + /// <summary> + /// The type of this plugin. + /// </summary> + public PluginType Type { get; } + + /// <summary> + /// The ID of this plugin. + /// </summary> + public Guid Id { get; } + + /// <summary> + /// The name of this plugin. + /// </summary> + public string Name { get; } + + /// <summary> + /// The description of this plugin. + /// </summary> + public string Description { get; } + + /// <summary> + /// The version of this plugin. + /// </summary> + public PluginVersion Version { get; } + + /// <summary> + /// The authors of this plugin. + /// </summary> + public string[] Authors { get; } + + /// <summary> + /// The support contact for this plugin. + /// </summary> + public string SupportContact { get; } + + /// <summary> + /// The source URL of this plugin. + /// </summary> + public string SourceURL { get; } + + /// <summary> + /// The categories of this plugin. + /// </summary> + public PluginCategory[] Categories { get; } + + /// <summary> + /// The target groups of this plugin. + /// </summary> + public PluginTargetGroup[] TargetGroups { get; } + + /// <summary> + /// True, when the plugin is maintained. + /// </summary> + public bool IsMaintained { get; } + + /// <summary> + /// The message that should be displayed when the plugin is deprecated. + /// </summary> + public string DeprecationMessage { get; } + + /// <summary> + /// True, when the plugin is AI Studio internal. + /// </summary> + public bool IsInternal { get; } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/NoPlugin.cs b/app/MindWork AI Studio/Tools/PluginSystem/NoPlugin.cs index a21ab819..3d9b74d1 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/NoPlugin.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/NoPlugin.cs @@ -6,4 +6,4 @@ namespace AIStudio.Tools.PluginSystem; /// Represents a plugin that could not be loaded. /// </summary> /// <param name="parsingError">The error message that occurred while parsing the plugin.</param> -public sealed class NoPlugin(string parsingError) : PluginBase(string.Empty, LuaState.Create(), PluginType.NONE, parsingError); \ No newline at end of file +public sealed class NoPlugin(string parsingError) : PluginBase(false, LuaState.Create(), PluginType.NONE, parsingError); \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginBase.Icon.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginBase.Icon.cs new file mode 100644 index 00000000..5c6140c8 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginBase.Icon.cs @@ -0,0 +1,45 @@ +namespace AIStudio.Tools.PluginSystem; + +public abstract partial class PluginBase +{ + private const string DEFAULT_ICON_SVG = + """ + <svg height="1.5em" width="1.5em" viewBox="0 0 24 24" fill="#1f1f1f"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M19 13h-2V7h-6V5c0-.28-.22-.5-.5-.5s-.5.22-.5.5v2H4l.01 2.12C5.76 9.8 7 11.51 7 13.5c0 1.99-1.25 3.7-3 4.38V20h2.12c.68-1.75 2.39-3 4.38-3 1.99 0 3.7 1.25 4.38 3H17v-6h2c.28 0 .5-.22.5-.5s-.22-.5-.5-.5z" opacity=".3"/><path d="M19 11V7c0-1.1-.9-2-2-2h-4c0-1.38-1.12-2.5-2.5-2.5S8 3.62 8 5H4c-1.1 0-1.99.9-1.99 2v3.8h.29c1.49 0 2.7 1.21 2.7 2.7s-1.21 2.7-2.7 2.7H2V20c0 1.1.9 2 2 2h3.8v-.3c0-1.49 1.21-2.7 2.7-2.7s2.7 1.21 2.7 2.7v.3H17c1.1 0 2-.9 2-2v-4c1.38 0 2.5-1.12 2.5-2.5S20.38 11 19 11zm0 3h-2v6h-2.12c-.68-1.75-2.39-3-4.38-3-1.99 0-3.7 1.25-4.38 3H4v-2.12c1.75-.68 3-2.39 3-4.38 0-1.99-1.24-3.7-2.99-4.38L4 7h6V5c0-.28.22-.5.5-.5s.5.22.5.5v2h6v6h2c.28 0 .5.22.5.5s-.22.5-.5.5z"/></svg> + """; + + #region Initialization-related methods + + /// <summary> + /// Tries to initialize the icon of the plugin. + /// </summary> + /// <remarks> + /// When no icon is specified, the default icon will be used. + /// </remarks> + /// <param name="message">The error message, when the icon could not be read.</param> + /// <param name="iconSVG">The read icon as SVG.</param> + /// <returns>True, when the icon could be read successfully.</returns> + + // ReSharper disable once OutParameterValueIsAlwaysDiscarded.Local + // ReSharper disable once UnusedMethodReturnValue.Local + private bool TryInitIconSVG(out string message, out string iconSVG) + { + if (!this.state.Environment["ICON_SVG"].TryRead(out iconSVG)) + { + iconSVG = DEFAULT_ICON_SVG; + message = "The field ICON_SVG does not exist or is not a valid string."; + return true; + } + + if (string.IsNullOrWhiteSpace(iconSVG)) + { + iconSVG = DEFAULT_ICON_SVG; + message = "The field ICON_SVG is empty. The icon must be a non-empty string."; + return true; + } + + message = string.Empty; + return true; + } + + #endregion +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginBase.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginBase.cs index 4f719d18..2674d4db 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginBase.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginBase.cs @@ -1,5 +1,4 @@ using Lua; -using Lua.Standard; // ReSharper disable MemberCanBePrivate.Global namespace AIStudio.Tools.PluginSystem; @@ -7,73 +6,55 @@ namespace AIStudio.Tools.PluginSystem; /// <summary> /// Represents the base of any AI Studio plugin. /// </summary> -public abstract class PluginBase +public abstract partial class PluginBase : IPluginMetadata { private readonly IReadOnlyCollection<string> baseIssues; protected readonly LuaState state; protected readonly List<string> pluginIssues = []; + + /// <inheritdoc /> + public string IconSVG { get; } - /// <summary> - /// The type of this plugin. - /// </summary> + /// <inheritdoc /> public PluginType Type { get; } - /// <summary> - /// The ID of this plugin. - /// </summary> + /// <inheritdoc /> public Guid Id { get; } - /// <summary> - /// The name of this plugin. - /// </summary> + /// <inheritdoc /> public string Name { get; } = string.Empty; - /// <summary> - /// The description of this plugin. - /// </summary> + /// <inheritdoc /> public string Description { get; } = string.Empty; - /// <summary> - /// The version of this plugin. - /// </summary> + /// <inheritdoc /> public PluginVersion Version { get; } - /// <summary> - /// The authors of this plugin. - /// </summary> + /// <inheritdoc /> public string[] Authors { get; } = []; - /// <summary> - /// The support contact for this plugin. - /// </summary> + /// <inheritdoc /> public string SupportContact { get; } = string.Empty; - /// <summary> - /// The source URL of this plugin. - /// </summary> + /// <inheritdoc /> public string SourceURL { get; } = string.Empty; - /// <summary> - /// The categories of this plugin. - /// </summary> + /// <inheritdoc /> public PluginCategory[] Categories { get; } = []; - /// <summary> - /// The target groups of this plugin. - /// </summary> + /// <inheritdoc /> public PluginTargetGroup[] TargetGroups { get; } = []; - /// <summary> - /// True, when the plugin is maintained. - /// </summary> + /// <inheritdoc /> public bool IsMaintained { get; } - /// <summary> - /// The message that should be displayed when the plugin is deprecated. - /// </summary> - public string? DeprecationMessage { get; } - + /// <inheritdoc /> + public string DeprecationMessage { get; } = string.Empty; + + /// <inheritdoc /> + public bool IsInternal { get; } + /// <summary> /// The issues that occurred during the initialization of this plugin. /// </summary> @@ -88,31 +69,24 @@ public abstract class PluginBase /// </remarks> public bool IsValid => this is not NoPlugin && this.baseIssues.Count == 0 && this.pluginIssues.Count == 0; - protected PluginBase(string path, LuaState state, PluginType type, string parseError = "") + protected PluginBase(bool isInternal, LuaState state, PluginType type, string parseError = "") { this.state = state; this.Type = type; - - // For security reasons, we don't want to allow the plugin to load modules: - this.state.ModuleLoader = new NoModuleLoader(); - - // Add some useful libraries: - this.state.OpenModuleLibrary(); - this.state.OpenStringLibrary(); - this.state.OpenTableLibrary(); - this.state.OpenMathLibrary(); - this.state.OpenBitwiseLibrary(); - this.state.OpenCoroutineLibrary(); - - // Add the module loader so that the plugin can load other Lua modules: - this.state.ModuleLoader = new PluginLoader(path); var issues = new List<string>(); if(!string.IsNullOrWhiteSpace(parseError)) issues.Add(parseError); + + // Notice: when no icon is specified, the default icon will be used. + this.TryInitIconSVG(out _, out var iconSVG); + this.IconSVG = iconSVG; if(this.TryInitId(out var issue, out var id)) + { this.Id = id; + this.IsInternal = isInternal; + } else if(this is not NoPlugin) issues.Add(issue); @@ -456,19 +430,19 @@ public abstract class PluginBase /// <param name="message">The error message, when the deprecation message could not be read.</param> /// <param name="deprecationMessage">The read deprecation message.</param> /// <returns>True, when the deprecation message could be read successfully.</returns> - private bool TryInitDeprecationMessage(out string message, out string? deprecationMessage) + private bool TryInitDeprecationMessage(out string message, out string deprecationMessage) { if (!this.state.Environment["DEPRECATION_MESSAGE"].TryRead(out deprecationMessage)) { - deprecationMessage = null; - message = "The field DEPRECATION_MESSAGE does not exist, is not a valid string. This field is optional: use nil to indicate that the plugin is not deprecated."; + deprecationMessage = string.Empty; + message = "The field DEPRECATION_MESSAGE does not exist, is not a valid string. This message is optional: use an empty string to indicate that the plugin is not deprecated."; return false; } message = string.Empty; return true; } - + /// <summary> /// Tries to initialize the UI text content of the plugin. /// </summary> diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Internal.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Internal.cs new file mode 100644 index 00000000..316376f6 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Internal.cs @@ -0,0 +1,79 @@ +using System.Reflection; + +using Microsoft.Extensions.FileProviders; + +namespace AIStudio.Tools.PluginSystem; + +public static partial class PluginFactory +{ + public static async Task EnsureInternalPlugins() + { + LOG.LogInformation("Start ensuring internal plugins."); + foreach (var plugin in Enum.GetValues<InternalPlugin>()) + { + LOG.LogInformation($"Ensure plugin: {plugin}"); + await EnsurePlugin(plugin); + } + } + + private static async Task EnsurePlugin(InternalPlugin plugin) + { + try + { + #if DEBUG + var basePath = Path.Join(Environment.CurrentDirectory, "Plugins"); + var resourceFileProvider = new PhysicalFileProvider(basePath); + #else + var resourceFileProvider = new ManifestEmbeddedFileProvider(Assembly.GetAssembly(type: typeof(Program))!, "Plugins"); + #endif + + var metaData = plugin.MetaData(); + var mainResourcePath = $"{metaData.ResourcePath}/plugin.lua"; + var resourceInfo = resourceFileProvider.GetFileInfo(mainResourcePath); + + if(!resourceInfo.Exists) + { + LOG.LogError($"The plugin {plugin} does not exist. This should not happen, since the plugin is an integral part of AI Studio."); + return; + } + + // Ensure that the additional resources exist: + foreach (var content in resourceFileProvider.GetDirectoryContents(metaData.ResourcePath)) + { + if(content.IsDirectory) + { + LOG.LogError("The plugin contains a directory. This is not allowed."); + continue; + } + + await CopyInternalPluginFile(content, metaData); + } + } + catch + { + LOG.LogError($"Was not able to ensure the plugin: {plugin}"); + } + } + + private static async Task CopyInternalPluginFile(IFileInfo resourceInfo, InternalPluginData metaData) + { + await using var inputStream = resourceInfo.CreateReadStream(); + + var pluginTypeBasePath = Path.Join(INTERNAL_PLUGINS_ROOT, metaData.Type.GetDirectory()); + + if (!Directory.Exists(INTERNAL_PLUGINS_ROOT)) + Directory.CreateDirectory(INTERNAL_PLUGINS_ROOT); + + if (!Directory.Exists(pluginTypeBasePath)) + Directory.CreateDirectory(pluginTypeBasePath); + + var pluginPath = Path.Join(pluginTypeBasePath, metaData.ResourceName); + if (!Directory.Exists(pluginPath)) + Directory.CreateDirectory(pluginPath); + + var pluginFilePath = Path.Join(pluginPath, resourceInfo.Name); + + await using var outputStream = File.Create(pluginFilePath); + await inputStream.CopyToAsync(outputStream); + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs index e20d80f4..81837f73 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs @@ -1,101 +1,110 @@ -using System.Reflection; +using System.Text; using AIStudio.Settings; using Lua; - -using Microsoft.Extensions.FileProviders; +using Lua.Standard; namespace AIStudio.Tools.PluginSystem; -public static class PluginFactory +public static partial class PluginFactory { private static readonly ILogger LOG = Program.LOGGER_FACTORY.CreateLogger("PluginFactory"); + private static readonly string DATA_DIR = SettingsManager.DataDirectory!; - public static async Task EnsureInternalPlugins() - { - LOG.LogInformation("Start ensuring internal plugins."); - foreach (var plugin in Enum.GetValues<InternalPlugin>()) - { - LOG.LogInformation($"Ensure plugin: {plugin}"); - await EnsurePlugin(plugin); - } - } + private static readonly string PLUGINS_ROOT = Path.Join(DATA_DIR, "plugins"); - private static async Task EnsurePlugin(InternalPlugin plugin) + private static readonly string INTERNAL_PLUGINS_ROOT = Path.Join(PLUGINS_ROOT, ".internal"); + + private static readonly List<IPluginMetadata> AVAILABLE_PLUGINS = []; + + /// <summary> + /// A list of all available plugins. + /// </summary> + public static IReadOnlyCollection<IPluginMetadata> AvailablePlugins => AVAILABLE_PLUGINS; + + /// <summary> + /// Try to load all plugins from the plugins directory. + /// </summary> + /// <remarks> + /// Loading plugins means:<br/> + /// - Parsing and checking the plugin code<br/> + /// - Check for forbidden plugins<br/> + /// - Creating a new instance of the allowed plugin<br/> + /// - Read the plugin metadata<br/> + /// <br/> + /// Loading a plugin does not mean to start the plugin, though. + /// </remarks> + public static async Task LoadAll(CancellationToken cancellationToken = default) { - try + LOG.LogInformation("Start loading plugins."); + if (!Directory.Exists(PLUGINS_ROOT)) { - #if DEBUG - var basePath = Path.Join(Environment.CurrentDirectory, "Plugins"); - var resourceFileProvider = new PhysicalFileProvider(basePath); - #else - var resourceFileProvider = new ManifestEmbeddedFileProvider(Assembly.GetAssembly(type: typeof(Program))!, "Plugins"); - #endif + LOG.LogInformation("No plugins found."); + return; + } + + // + // The easiest way to load all plugins is to find all `plugin.lua` files and load them. + // By convention, each plugin is enforced to have a `plugin.lua` file. + // + var pluginMainFiles = Directory.EnumerateFiles(PLUGINS_ROOT, "plugin.lua", SearchOption.AllDirectories); + foreach (var pluginMainFile in pluginMainFiles) + { + if (cancellationToken.IsCancellationRequested) + break; - var metaData = plugin.MetaData(); - var mainResourcePath = $"{metaData.ResourcePath}/plugin.lua"; - var resourceInfo = resourceFileProvider.GetFileInfo(mainResourcePath); + LOG.LogInformation($"Try to load plugin: {pluginMainFile}"); + var code = await File.ReadAllTextAsync(pluginMainFile, Encoding.UTF8, cancellationToken); + var pluginPath = Path.GetDirectoryName(pluginMainFile)!; + var plugin = await Load(pluginPath, code, cancellationToken); - if(!resourceInfo.Exists) + switch (plugin) { - LOG.LogError($"The plugin {plugin} does not exist. This should not happen, since the plugin is an integral part of AI Studio."); - return; - } - - // Ensure that the additional resources exist: - foreach (var content in resourceFileProvider.GetDirectoryContents(metaData.ResourcePath)) - { - if(content.IsDirectory) - { - LOG.LogError("The plugin contains a directory. This is not allowed."); + case NoPlugin noPlugin when noPlugin.Issues.Any(): + LOG.LogError($"Was not able to load plugin: '{pluginMainFile}'. Reason: {noPlugin.Issues.First()}"); continue; - } - await CopyPluginFile(content, metaData); + case NoPlugin: + LOG.LogError($"Was not able to load plugin: '{pluginMainFile}'. Reason: Unknown."); + continue; + + case { IsValid: false }: + LOG.LogError($"Was not able to load plugin '{pluginMainFile}', because the Lua code is not a valid AI Studio plugin. There are {plugin.Issues.Count()} issues to fix."); + #if DEBUG + foreach (var pluginIssue in plugin.Issues) + LOG.LogError($"Plugin issue: {pluginIssue}"); + #endif + continue; + + case { IsMaintained: false }: + LOG.LogWarning($"The plugin '{pluginMainFile}' is not maintained anymore. Please consider to disable it."); + break; } - } - catch - { - LOG.LogError($"Was not able to ensure the plugin: {plugin}"); - } - } - - private static async Task CopyPluginFile(IFileInfo resourceInfo, InternalPluginData metaData) - { - await using var inputStream = resourceInfo.CreateReadStream(); - - var pluginsRoot = Path.Join(DATA_DIR, "plugins"); - var pluginTypeBasePath = Path.Join(pluginsRoot, metaData.Type.GetDirectory()); - - if (!Directory.Exists(pluginsRoot)) - Directory.CreateDirectory(pluginsRoot); - - if (!Directory.Exists(pluginTypeBasePath)) - Directory.CreateDirectory(pluginTypeBasePath); - - var pluginPath = Path.Join(pluginTypeBasePath, metaData.ResourceName); - if (!Directory.Exists(pluginPath)) - Directory.CreateDirectory(pluginPath); - - var pluginFilePath = Path.Join(pluginPath, resourceInfo.Name); - await using var outputStream = File.Create(pluginFilePath); - await inputStream.CopyToAsync(outputStream); + LOG.LogInformation($"Successfully loaded plugin: '{pluginMainFile}' (Id='{plugin.Id}', Type='{plugin.Type}', Name='{plugin.Name}', Version='{plugin.Version}', Authors='{string.Join(", ", plugin.Authors)}')"); + AVAILABLE_PLUGINS.Add(new PluginMetadata(plugin)); + } } - public static async Task LoadAll() - { - - } - - public static async Task<PluginBase> Load(string path, string code, CancellationToken cancellationToken = default) + private static async Task<PluginBase> Load(string pluginPath, string code, CancellationToken cancellationToken = default) { if(ForbiddenPlugins.Check(code) is { IsForbidden: true } forbiddenState) return new NoPlugin($"This plugin is forbidden: {forbiddenState.Message}"); var state = LuaState.Create(); + + // Add the module loader so that the plugin can load other Lua modules: + state.ModuleLoader = new PluginLoader(pluginPath); + + // Add some useful libraries: + state.OpenModuleLibrary(); + state.OpenStringLibrary(); + state.OpenTableLibrary(); + state.OpenMathLibrary(); + state.OpenBitwiseLibrary(); + state.OpenCoroutineLibrary(); try { @@ -105,6 +114,10 @@ public static class PluginFactory { return new NoPlugin($"Was not able to parse the plugin: {e.Message}"); } + catch (LuaRuntimeException e) + { + return new NoPlugin($"Was not able to run the plugin: {e.Message}"); + } if (!state.Environment["TYPE"].TryRead<string>(out var typeText)) return new NoPlugin("TYPE does not exist or is not a valid string."); @@ -115,9 +128,10 @@ public static class PluginFactory if(type is PluginType.NONE) return new NoPlugin($"TYPE is not a valid plugin type. Valid types are: {CommonTools.GetAllEnumValues<PluginType>()}"); + var isInternal = pluginPath.StartsWith(INTERNAL_PLUGINS_ROOT, StringComparison.OrdinalIgnoreCase); return type switch { - PluginType.LANGUAGE => new PluginLanguage(path, state, type), + PluginType.LANGUAGE => new PluginLanguage(isInternal, state, type), _ => new NoPlugin("This plugin type is not supported yet. Please try again with a future version of AI Studio.") }; diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginLanguage.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginLanguage.cs index e1676e49..4c8cf30a 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginLanguage.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginLanguage.cs @@ -8,7 +8,7 @@ public sealed class PluginLanguage : PluginBase, ILanguagePlugin private ILanguagePlugin? baseLanguage; - public PluginLanguage(string path, LuaState state, PluginType type) : base(path, state, type) + public PluginLanguage(bool isInternal, LuaState state, PluginType type) : base(isInternal, state, type) { if (this.TryInitUITextContent(out var issue, out var readContent)) this.content = readContent; diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginMetadata.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginMetadata.cs new file mode 100644 index 00000000..2bfdab1e --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginMetadata.cs @@ -0,0 +1,50 @@ +namespace AIStudio.Tools.PluginSystem; + +public sealed class PluginMetadata(PluginBase plugin) : IPluginMetadata +{ + #region Implementation of IPluginMetadata + + /// <inheritdoc /> + public string IconSVG { get; } = plugin.IconSVG; + + /// <inheritdoc /> + public PluginType Type { get; } = plugin.Type; + + /// <inheritdoc /> + public Guid Id { get; } = plugin.Id; + + /// <inheritdoc /> + public string Name { get; } = plugin.Name; + + /// <inheritdoc /> + public string Description { get; } = plugin.Description; + + /// <inheritdoc /> + public PluginVersion Version { get; } = plugin.Version; + + /// <inheritdoc /> + public string[] Authors { get; } = plugin.Authors; + + /// <inheritdoc /> + public string SupportContact { get; } = plugin.SupportContact; + + /// <inheritdoc /> + public string SourceURL { get; } = plugin.SourceURL; + + /// <inheritdoc /> + public PluginCategory[] Categories { get; } = plugin.Categories; + + /// <inheritdoc /> + public PluginTargetGroup[] TargetGroups { get; } = plugin.TargetGroups; + + /// <inheritdoc /> + public bool IsMaintained { get; } = plugin.IsMaintained; + + /// <inheritdoc /> + public string DeprecationMessage { get; } = plugin.DeprecationMessage; + + /// <inheritdoc /> + public bool IsInternal { get; } = plugin.IsInternal; + + #endregion +} \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/app.css b/app/MindWork AI Studio/wwwroot/app.css index e62b4f83..af0e139a 100644 --- a/app/MindWork AI Studio/wwwroot/app.css +++ b/app/MindWork AI Studio/wwwroot/app.css @@ -35,6 +35,20 @@ margin-top: 4px; } +.plugin-icon-container { + width: var(--mud-icon-size-large); + height: var(--mud-icon-size-large); +} + +.plugin-icon-container svg { + width: 100%; + height: 100%; +} + +.mud-popover-open.InnerScrollingFix { + left: 0 !important; +} + :root { --confidence-color: #000000; } diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md index a3f49df3..94f9958e 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md @@ -1,4 +1,6 @@ # v0.9.39, build 214 (2025-03-xx xx:xx UTC) - Added a feature flag for the plugin system. This flag is disabled by default and can be enabled inside the app settings. Please note that this feature is still in development; there are no plugins available yet. - Added the Lua library we use for the plugin system to the about page. +- Added the plugin overview page. This page shows all installed plugins and allows you to enable or disable them. It is only available when the plugin preview feature is enabled. +- Fixed the preview tooltip component not showing the correct position when used inside a scrollable container. - Upgraded to Rust 1.85.1 \ No newline at end of file From d0074a6fc722d8e60231264381b6a4f0e56e9c27 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Sun, 30 Mar 2025 20:34:30 +0200 Subject: [PATCH 109/110] Added plugin hot reloading (#377) --- .../Layout/MainLayout.razor.cs | 3 ++ app/MindWork AI Studio/Pages/Plugins.razor.cs | 28 +++++++++++++++- app/MindWork AI Studio/Program.cs | 2 ++ app/MindWork AI Studio/Tools/Event.cs | 1 + .../PluginSystem/PluginFactory.HotReload.cs | 33 +++++++++++++++++++ .../PluginSystem/PluginFactory.Internal.cs | 2 -- .../Tools/PluginSystem/PluginFactory.cs | 9 +++++ .../wwwroot/changelog/v0.9.39.md | 1 + 8 files changed, 76 insertions(+), 3 deletions(-) create mode 100644 app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.HotReload.cs diff --git a/app/MindWork AI Studio/Layout/MainLayout.razor.cs b/app/MindWork AI Studio/Layout/MainLayout.razor.cs index b689569b..4c45a3b9 100644 --- a/app/MindWork AI Studio/Layout/MainLayout.razor.cs +++ b/app/MindWork AI Studio/Layout/MainLayout.razor.cs @@ -94,6 +94,9 @@ public partial class MainLayout : LayoutComponentBase, IMessageBusReceiver, IDis // Load (but not start) all plugins, without waiting for them: var pluginLoadingTimeout = new CancellationTokenSource(TimeSpan.FromSeconds(5)); _ = PluginFactory.LoadAll(pluginLoadingTimeout.Token); + + // Set up hot reloading for plugins: + PluginFactory.SetUpHotReloading(); } // Register this component with the message bus: diff --git a/app/MindWork AI Studio/Pages/Plugins.razor.cs b/app/MindWork AI Studio/Pages/Plugins.razor.cs index f2dc83d9..9504c0ff 100644 --- a/app/MindWork AI Studio/Pages/Plugins.razor.cs +++ b/app/MindWork AI Studio/Pages/Plugins.razor.cs @@ -5,7 +5,7 @@ using Microsoft.AspNetCore.Components; namespace AIStudio.Pages; -public partial class Plugins : ComponentBase +public partial class Plugins : ComponentBase, IMessageBusReceiver { private const string GROUP_ENABLED = "Enabled"; private const string GROUP_DISABLED = "Disabled"; @@ -23,6 +23,9 @@ public partial class Plugins : ComponentBase protected override async Task OnInitializedAsync() { + this.MessageBus.RegisterComponent(this); + this.MessageBus.ApplyFilters(this, [], [ Event.PLUGINS_RELOADED ]); + this.groupConfig = new TableGroupDefinition<IPluginMetadata> { Expandable = true, @@ -53,4 +56,27 @@ public partial class Plugins : ComponentBase await this.SettingsManager.StoreSettings(); await this.MessageBus.SendMessage<bool>(this, Event.CONFIGURATION_CHANGED); } + + #region Implementation of IMessageBusReceiver + + public string ComponentName => nameof(Plugins); + + public Task ProcessMessage<T>(ComponentBase? sendingComponent, Event triggeredEvent, T? data) + { + switch (triggeredEvent) + { + case Event.PLUGINS_RELOADED: + this.InvokeAsync(this.StateHasChanged); + break; + } + + return Task.CompletedTask; + } + + public Task<TResult?> ProcessMessageWithResult<TPayload, TResult>(ComponentBase? sendingComponent, Event triggeredEvent, TPayload? data) + { + return Task.FromResult<TResult?>(default); + } + + #endregion } \ No newline at end of file diff --git a/app/MindWork AI Studio/Program.cs b/app/MindWork AI Studio/Program.cs index cc37d9cd..8283a481 100644 --- a/app/MindWork AI Studio/Program.cs +++ b/app/MindWork AI Studio/Program.cs @@ -1,5 +1,6 @@ using AIStudio.Agents; using AIStudio.Settings; +using AIStudio.Tools.PluginSystem; using AIStudio.Tools.Services; using Microsoft.AspNetCore.Server.Kestrel.Core; @@ -209,6 +210,7 @@ internal sealed class Program await serverTask; RUST_SERVICE.Dispose(); + PluginFactory.Dispose(); programLogger.LogInformation("The AI Studio server was stopped."); } } \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/Event.cs b/app/MindWork AI Studio/Tools/Event.cs index 45005fd1..38235c8e 100644 --- a/app/MindWork AI Studio/Tools/Event.cs +++ b/app/MindWork AI Studio/Tools/Event.cs @@ -8,6 +8,7 @@ public enum Event STATE_HAS_CHANGED, CONFIGURATION_CHANGED, COLOR_THEME_CHANGED, + PLUGINS_RELOADED, // Update events: USER_SEARCH_FOR_UPDATE, diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.HotReload.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.HotReload.cs new file mode 100644 index 00000000..c2d75bf3 --- /dev/null +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.HotReload.cs @@ -0,0 +1,33 @@ +namespace AIStudio.Tools.PluginSystem; + +public static partial class PluginFactory +{ + public static void SetUpHotReloading() + { + LOG.LogInformation($"Start hot reloading plugins for path '{HOT_RELOAD_WATCHER.Path}'."); + try + { + var messageBus = Program.SERVICE_PROVIDER.GetRequiredService<MessageBus>(); + + HOT_RELOAD_WATCHER.IncludeSubdirectories = true; + HOT_RELOAD_WATCHER.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName; + HOT_RELOAD_WATCHER.Filter = "*.lua"; + HOT_RELOAD_WATCHER.Changed += async (_, args) => + { + LOG.LogInformation($"File changed: {args.FullPath}"); + await LoadAll(); + await messageBus.SendMessage<bool>(null, Event.PLUGINS_RELOADED); + }; + + HOT_RELOAD_WATCHER.EnableRaisingEvents = true; + } + catch (Exception e) + { + LOG.LogError(e, "Error while setting up hot reloading."); + } + finally + { + LOG.LogInformation("Hot reloading plugins set up."); + } + } +} \ No newline at end of file diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Internal.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Internal.cs index 316376f6..272d5af3 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Internal.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Internal.cs @@ -1,5 +1,3 @@ -using System.Reflection; - using Microsoft.Extensions.FileProviders; namespace AIStudio.Tools.PluginSystem; diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs index 81837f73..0cb87178 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.cs @@ -16,6 +16,8 @@ public static partial class PluginFactory private static readonly string PLUGINS_ROOT = Path.Join(DATA_DIR, "plugins"); private static readonly string INTERNAL_PLUGINS_ROOT = Path.Join(PLUGINS_ROOT, ".internal"); + + private static readonly FileSystemWatcher HOT_RELOAD_WATCHER = new(PLUGINS_ROOT); private static readonly List<IPluginMetadata> AVAILABLE_PLUGINS = []; @@ -45,6 +47,8 @@ public static partial class PluginFactory return; } + AVAILABLE_PLUGINS.Clear(); + // // The easiest way to load all plugins is to find all `plugin.lua` files and load them. // By convention, each plugin is enforced to have a `plugin.lua` file. @@ -136,4 +140,9 @@ public static partial class PluginFactory _ => new NoPlugin("This plugin type is not supported yet. Please try again with a future version of AI Studio.") }; } + + public static void Dispose() + { + HOT_RELOAD_WATCHER.Dispose(); + } } \ No newline at end of file diff --git a/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md b/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md index 94f9958e..9f573df3 100644 --- a/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md +++ b/app/MindWork AI Studio/wwwroot/changelog/v0.9.39.md @@ -2,5 +2,6 @@ - Added a feature flag for the plugin system. This flag is disabled by default and can be enabled inside the app settings. Please note that this feature is still in development; there are no plugins available yet. - Added the Lua library we use for the plugin system to the about page. - Added the plugin overview page. This page shows all installed plugins and allows you to enable or disable them. It is only available when the plugin preview feature is enabled. +- Added hot reloading for plugins. When any plugin is changed, the app will automatically reload the plugin without needing to restart the app. - Fixed the preview tooltip component not showing the correct position when used inside a scrollable container. - Upgraded to Rust 1.85.1 \ No newline at end of file From ff61df047ae26f4eac818a72026a8bd71f1190a2 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer <SommerEngineering@users.noreply.github.com> Date: Tue, 1 Apr 2025 18:49:19 +0200 Subject: [PATCH 110/110] Fixed release builds (#378) --- .../Tools/PluginSystem/PluginFactory.Internal.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Internal.cs b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Internal.cs index 272d5af3..2c14adb6 100644 --- a/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Internal.cs +++ b/app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Internal.cs @@ -1,5 +1,9 @@ using Microsoft.Extensions.FileProviders; +#if RELEASE +using System.Reflection; +#endif + namespace AIStudio.Tools.PluginSystem; public static partial class PluginFactory